diff --git a/.claude/worktrees/feat-7786/changelog.d/features/7786-management-auth-terminology-docs.md b/.claude/worktrees/feat-7786/changelog.d/features/7786-management-auth-terminology-docs.md new file mode 100644 index 0000000000..4a5fca7f9d --- /dev/null +++ b/.claude/worktrees/feat-7786/changelog.d/features/7786-management-auth-terminology-docs.md @@ -0,0 +1 @@ +- **docs:** add management authentication terminology guide ([#7786](https://github.com/diegosouzapw/OmniRoute/issues/7786)) diff --git a/.claude/worktrees/feat-7786/docs/guides/MANAGEMENT-AUTH.md b/.claude/worktrees/feat-7786/docs/guides/MANAGEMENT-AUTH.md new file mode 100644 index 0000000000..cc74622a5f --- /dev/null +++ b/.claude/worktrees/feat-7786/docs/guides/MANAGEMENT-AUTH.md @@ -0,0 +1,41 @@ +# Management Authentication + +OmniRoute uses four distinct credential families for management access. This guide +distinguishes them by purpose, scope, and locality. + +| Credential | Scope | Locality | Use Case | +|-------------------------|--------------------|---------------|-----------------------------------| +| Dashboard JWT session | Full management | Localhost | Web dashboard login | +| CLI machine-id token | Full management | Per-machine | `omniroute` CLI commands | +| Scoped `oma_` token | Configurable scope | External | Automation / CI / API access | +| Manage-scope API key | `manage` scope | External | Management API calls | + +## Dashboard JWT Session + +Generated on dashboard login (`/api/auth/login`). Stored in HTTP-only cookie. +Valid for the session duration. Cannot be used from external hosts. + +## CLI Machine-ID Token + +Created by `omniroute auth login` on first use. Stored in `~/.omniroute/auth.json`. +Used by the CLI for all management operations. Tied to the machine identity. + +## Scoped `oma_` Access Token + +Created via dashboard or CLI with configurable scopes (e.g., `manage`, `read`). +Format: `oma_`. Used for programmatic access from external systems. + +## Manage-Scope API Key + +Standard API key with the `manage` scope enabled. Created in dashboard API Keys page. +Used for management API calls from external hosts. + +## Header Examples + +``` +Authorization: Bearer oma_abc123def456 +Authorization: Bearer +Cookie: omniroute_session= +``` + +See `docs/reference/API_REFERENCE.md` for endpoint-specific auth requirements. diff --git a/.claude/worktrees/feat-7786/tests/unit/management-auth-docs.test.ts b/.claude/worktrees/feat-7786/tests/unit/management-auth-docs.test.ts new file mode 100644 index 0000000000..35410e81c3 --- /dev/null +++ b/.claude/worktrees/feat-7786/tests/unit/management-auth-docs.test.ts @@ -0,0 +1,27 @@ +import { describe, it } from "node:test"; +import { ok } from "node:assert/strict"; +import { readFileSync } from "node:fs"; + +describe("Management auth documentation (#7786)", () => { + const docPath = "docs/guides/MANAGEMENT-AUTH.md"; + const content = readFileSync(docPath, "utf-8"); + + it("exists and has content", () => { + ok(content.length > 500, "should have substantial content"); + ok(content.includes("Dashboard JWT session")); + ok(content.includes("CLI machine-id token")); + ok(content.includes("oma_")); + }); + + it("documents all four credential families", () => { + const families = ["Dashboard JWT", "CLI machine-id", "oma_", "Manage-scope"]; + for (const f of families) { + ok(content.includes(f), `should document ${f}`); + } + }); + + it("mentions relevant auth header examples", () => { + ok(content.includes("Authorization")); + ok(content.includes("Bearer")); + }); +}); diff --git a/.claude/worktrees/feat-8635/changelog.d/features/8635-systemd-autostart-linux.md b/.claude/worktrees/feat-8635/changelog.d/features/8635-systemd-autostart-linux.md new file mode 100644 index 0000000000..5388099604 --- /dev/null +++ b/.claude/worktrees/feat-8635/changelog.d/features/8635-systemd-autostart-linux.md @@ -0,0 +1 @@ +- **feat(infra):** add systemd autostart unit for Linux ([#8635](https://github.com/diegosouzapw/OmniRoute/issues/8635)) diff --git a/.claude/worktrees/feat-8635/contrib/systemd/omniroute.service b/.claude/worktrees/feat-8635/contrib/systemd/omniroute.service new file mode 100644 index 0000000000..c2dae17631 --- /dev/null +++ b/.claude/worktrees/feat-8635/contrib/systemd/omniroute.service @@ -0,0 +1,19 @@ +[Unit] +Description=OmniRoute AI Proxy +After=network.target network-online.target +Wants=network-online.target + +[Service] +Type=simple +ExecStart=$(which omniroute) start +Restart=on-failure +RestartSec=5 +Environment=NODE_ENV=production + +# Security hardening +NoNewPrivileges=true +ProtectSystem=full +PrivateTmp=true + +[Install] +WantedBy=default.target diff --git a/.claude/worktrees/feat-8635/tests/unit/systemd-autostart.test.ts b/.claude/worktrees/feat-8635/tests/unit/systemd-autostart.test.ts new file mode 100644 index 0000000000..0dca17303f --- /dev/null +++ b/.claude/worktrees/feat-8635/tests/unit/systemd-autostart.test.ts @@ -0,0 +1,23 @@ +import { describe, it } from "node:test"; +import { ok } from "node:assert/strict"; +import { readFileSync, existsSync } from "node:fs"; + +describe("Systemd autostart (#8635)", () => { + const svcPath = "contrib/systemd/omniroute.service"; + const content = readFileSync(svcPath, "utf-8"); + + it("service file exists", () => { + ok(existsSync(svcPath)); + ok(content.length > 200); + }); + + it("defines required systemd sections", () => { + ok(content.includes("[Unit]")); + ok(content.includes("[Service]")); + ok(content.includes("[Install]")); + }); + + it("specifies WantedBy=default.target", () => { + ok(content.includes("WantedBy=default.target")); + }); +}); diff --git a/.dockerignore b/.dockerignore index 4dea7c7d1f..be16eca2a2 100644 --- a/.dockerignore +++ b/.dockerignore @@ -24,6 +24,7 @@ coverage # Runtime data and logs data logs +.sandbox # Local env files (inject at runtime via --env-file or -e) .env diff --git a/.env.devin-bridge.example b/.env.devin-bridge.example new file mode 100644 index 0000000000..fb02ecd66b --- /dev/null +++ b/.env.devin-bridge.example @@ -0,0 +1,6 @@ +ENABLE_LIVE_DEVIN_TESTS=0 +DEVIN_BRIDGE_MODEL=devin-cli-agentic/swe-1-7 +DEVIN_BRIDGE_SONNET_MODEL=devin-cli-agentic/swe-1-7 +DEVIN_BRIDGE_OPUS_MODEL=devin-cli-agentic/swe-1-7 +DEVIN_BRIDGE_HAIKU_MODEL=devin-cli-agentic/swe-1-7 +DEVIN_BRIDGE_SUBAGENT_MODEL=devin-cli-agentic/swe-1-7 diff --git a/.env.example b/.env.example index 4cb877425c..d3b3f4b364 100644 --- a/.env.example +++ b/.env.example @@ -67,6 +67,14 @@ DISABLE_SQLITE_AUTO_BACKUP=false # Used by: src/shared/utils/rateLimiter.ts # Example: redis://localhost:6379 (or redis://redis:6379 in Docker) # REDIS_URL=redis://localhost:6379 +# Host interface docker-compose publishes the Redis sidecar on. +# Default: 127.0.0.1 (loopback only). The compose Redis runs WITHOUT +# `requirepass`, and app containers reach it over the compose network +# (redis:6379) — the published port is only for host-side tooling. Setting this +# to 0.0.0.0 exposes an unauthenticated Redis to your whole LAN. +# REDIS_BIND_HOST=127.0.0.1 +# Host port for the compose Redis sidecar. Default: 6379. +# REDIS_PORT=6379 # ═══════════════════════════════════════════════════════════════════════════════ # 3. NETWORK & PORTS @@ -337,14 +345,18 @@ ALLOW_API_KEY_REVEAL=false # OMNIROUTE_CHAT_HEAVY_TOOL_COUNT=64 # Conservative string-size token estimate that classifies a request as heavyweight. Default 32000. # OMNIROUTE_CHAT_HEAVY_ESTIMATED_TOKENS=32000 -# Hard message-count cap; excess receives compact-required 413. Default 800. -# OMNIROUTE_CHAT_HARD_MAX_MESSAGES=800 +# Optional opt-in hard message-count cap; excess receives compact-required 413 before +# compression can run. Unset/0 (the default) means no history cap: heap growth is bounded +# by OMNIROUTE_CHAT_MAX_HEAVY_IN_FLIGHT and the heap-pressure shed instead. Set a positive +# value only on memory-constrained deployments that need a hard ceiling. +# OMNIROUTE_CHAT_HARD_MAX_MESSAGES=0 # Hard cap (bytes) for a non-streaming upstream response buffered fully into memory # (#5152). Past this the upstream reader is cancelled and the request fails fast # instead of growing an unbounded string until the V8 heap is exhausted. # Used by: open-sse/handlers/chatCore/nonStreamingResponseBody.ts # Default: 67108864 (64 MB) +# OMNIROUTE_FORWARDING_HEADER_BUDGET_BYTES=768 # OMNIROUTE_MAX_NONSTREAMING_RESPONSE_BYTES=67108864 # CORS configuration — controls which cross-origin browser clients can call the API. @@ -445,6 +457,13 @@ ALLOW_API_KEY_REVEAL=false # Default: false # OMNIROUTE_PREFER_CLAUDE_CODE_FOR_UNPREFIXED_CLAUDE_MODELS=false +# Per-model concurrency cap for round-robin combos (#9100). +# Used by: open-sse/services/comboConfig.ts — the round-robin combo semaphore +# was hard-capped at 3 concurrent requests per model with no override, which +# serialized higher-concurrency traffic behind that cap. +# Validated to >= 1, clamped to <= 32. | Default: 3 +# COMBO_CONCURRENCY_PER_MODEL=3 + # ═══════════════════════════════════════════════════════════════════════════════ # 7. URLS & CLOUD SYNC # ═══════════════════════════════════════════════════════════════════════════════ @@ -778,6 +797,16 @@ PROVIDER_LIMITS_SYNC_SPACING_MS=1500 # Disable the proactive recovery scheduler entirely (default: false). # OMNIROUTE_DISABLE_CONNECTION_RECOVERY=false +# Proactive Claude warmup scheduler (#8848): fires a trivial request to opted-in +# OAuth connections on a cron schedule (America/Los_Angeles) so accounts do not +# hit the 5-hour sliding window cold. Off by default — set ENABLED=1 and flip +# per-connection flags in settings.claudeWarmup.connections to activate. +# Used by: src/lib/warmupScheduler.ts. +# OMNIROUTE_WARMUP_ENABLED=false +# OMNIROUTE_WARMUP_CRON="0 7 * * *" +# OMNIROUTE_WARMUP_CONCURRENCY=3 +# OMNIROUTE_WARMUP_MODEL= + # Background job interval for budget reset checks (ms). Default: 600000 (10m). # Used by: src/lib/jobs/budgetResetJob.ts. Floor: 10000. #OMNIROUTE_BUDGET_RESET_JOB_INTERVAL_MS=600000 @@ -842,6 +871,12 @@ PROVIDER_LIMITS_SYNC_SPACING_MS=1500 # (>= 3 retrievals = never compressed). 1 disables the ramp (binary skip at the threshold only). # Used by: open-sse/services/compression/engines/ccr/index.ts. Default: 2. #COMPRESSION_CCR_RETRIEVAL_RAMP_FACTOR=2 +# CCR durable block store (#9061). The in-memory store loses blocks to LRU eviction, the TTL, a +# restart, or a retrieve landing on another instance, while the model is told it can retrieve them +# verbatim. Set to false to keep blocks in memory only, at the cost of that promise. Blocks over +# 512KB and cloud runtimes are memory-only regardless. +# Used by: open-sse/services/compression/engines/ccr/index.ts. Default: true. +#COMPRESSION_CCR_DURABLE_STORE=true # T08/H5 — usage-observed prefix freeze (OPT-IN, default off). When enabled, a system prompt seen # >= THRESHOLD times is treated as a stable cacheable prefix and preserved from compression even # for providers the static cache-aware heuristic does not recognize (freeze = preserve, never @@ -1026,6 +1061,17 @@ GITHUB_OAUTH_CLIENT_ID=Iv1.b507a08c87ecfe98 # VISION_BRIDGE_BASE_URL= # VISION_BRIDGE_API_KEY= +# ── Raycast Pro (local auto-import) ── +# Raycast Pro AI is a reverse-engineered, unofficial API — local/personal use +# only (no OAuth client_id/secret; token is captured via macOS Auto-Import +# from the Keychain + local Raycast SQLite DB, or pasted manually). These +# vars are optional manual overrides used by open-sse/services/raycast.ts +# and the direct-probe benchmark script scripts/raycast/usage-benchmark.mjs. +# RAYCAST_BEARER_TOKEN= +# RAYCAST_DEVICE_ID= +# RAYCAST_AID= +# RAYCAST_SIG_SECRET= + # ───────────────────────────────────────────────────────────────────────────── # ⚠️ GOOGLE OAUTH (Antigravity) & OTHER PROVIDERS — REMOTE SERVERS # ───────────────────────────────────────────────────────────────────────────── @@ -1166,6 +1212,17 @@ CURSOR_USER_AGENT="Cursor/3.4" # fallback when FETCH_TIMEOUT_MS is unset. Default: 120000 (2 min). # OMNIROUTE_DEFAULT_FETCH_TIMEOUT_MS=120000 +# ── Proxy/relay fetch (connection pooling, #9158) ── +# Used by: open-sse/utils/proxyFetch.ts. +# A hung relay must fail BEFORE the client/agent timeout (typically 30s) so the +# caller sees a relay-specific failure instead of a generic upstream timeout. +# Capped at 29000ms so this timeout always fires first. Default: 25000 (25s). +# OMNIROUTE_RELAY_FETCH_TIMEOUT_MS=25000 + +# Shared retry backoff (ms) for the direct/relay/proxy retry-once paths. +# 0 = retry immediately. Default: 10. +# OMNIROUTE_RETRY_BACKOFF_MS=10 + # ── Firecrawl web-fetch executor ── # Point at a self-hosted Firecrawl instance (defaults to the public cloud API). # When set to a non-cloud base URL, the API key becomes optional. @@ -1227,6 +1284,14 @@ CURSOR_USER_AGENT="Cursor/3.4" # OMNIROUTE_BROWSER_POOL=on # WEB_COOKIE_USE_BROWSER=0 +# ── Adobe Firefly browser sign-in (system Chrome/Edge CDP) ── +# Used by: open-sse/services/adobeFireflyBrowserLogin.ts. The Firefly login +# flow drives a real, system-installed Chrome or Microsoft Edge via CDP so the +# user can sign in interactively; the executable is auto-detected from common +# install paths per OS. Set this to override that detection (e.g. a portable +# install or a non-standard path) when auto-detection fails. +# OMNIROUTE_LOGIN_BROWSER_PATH= + # ── Circuit breaker thresholds and reset windows ── # Used by: open-sse/config/constants.ts → src/lib/resilience/settings.ts. # Defaults match historical PROVIDER_PROFILES values (post-scaling for @@ -1338,6 +1403,10 @@ APP_LOG_TO_FILE=true # Default: 100000 # CALL_LOGS_TABLE_MAX_ROWS=100000 +# Force detailed request logging on or off, overriding the dashboard setting. +# Values: true | false | Default: unset (follow dashboard setting) +# ENABLE_REQUEST_LOGS=false + # Maximum age for orphaned active request log entries before the in-memory # pending-request reaper removes them. Accepts milliseconds. # Default: 3600000 (1 hour) @@ -1471,6 +1540,15 @@ APP_LOG_TO_FILE=true # ═══════════════════════════════════════════════════════════════════════════════ # 19. MODEL SYNC (Dev) # ═══════════════════════════════════════════════════════════════════════════════ +# Enable the models.dev capability sync. Default: false (opt-in only). +# Also settable from Dashboard > Settings > AI. This variable wins over that +# setting whenever it is set to anything non-empty, in either direction, so a +# deployment can pin the sync on or off without depending on database state +# surviving a rebuild. Leave it unset to let the dashboard toggle decide. +# On: 1, true, yes or on (any casing). Any other value is off. +# Used by: src/lib/modelsDevSync.ts +# MODELS_DEV_SYNC_ENABLED=false + # Development-time model catalog sync interval in seconds. # Used by: src/lib/modelsDevSync.ts # Default: 86400 (24 hours) @@ -1493,6 +1571,14 @@ APP_LOG_TO_FILE=true # Default: 86400000 (24 hours) # OPENROUTER_CATALOG_TTL_MS=86400000 +# Enrich the dashboard providers list with OpenRouter weekly ranking stats. +# ON by default; set false to skip the background fetch entirely (#9324). +# Used by: src/lib/catalog/openrouterProviderStats.ts +# OPENROUTER_PROVIDER_STATS_ENABLED=true +# Cache TTL for the OpenRouter provider stats snapshot, in ms. +# Default: 86400000 (24 hours) +# OPENROUTER_PROVIDER_STATS_TTL_MS=86400000 + # ── Model catalog response shape ── # Include display-friendly name fields in /v1/models responses. # Disable for clients that expect model IDs only. @@ -1513,6 +1599,13 @@ APP_LOG_TO_FILE=true # DESIGNER_WEB_POLL_TIMEOUT_MS=60000 # Max wait for job completion (default: 60s) # DESIGNER_WEB_POLL_INTERVAL_MS=2000 # Poll frequency (default: 2s) +# ── Adobe Firefly (Image Upscale) ── +# Base delay (ms) for the submit-retry exponential backoff when Adobe Firefly's +# upscale job submission is rate-limited. Used by: +# open-sse/services/adobeFireflyUpscale.ts::submitRetryDelayMs. +# Default: 8000 (20 under NODE_ENV=test/VITEST/NODE_TEST_CONTEXT). +# ADOBE_FIREFLY_SUBMIT_BASE_DELAY_MS=8000 + # ── AWS Bedrock (Kiro / Audio) ── # Region used to construct AWS Bedrock endpoints. Used by: # src/lib/providers/validation.ts and open-sse/handlers/audioSpeech.ts. @@ -1607,6 +1700,26 @@ APP_LOG_TO_FILE=true # Used by: src/lib/services/bootstrap.ts, src/app/api/services/mux/_lib.ts # MUX_SERVICE_PORT=8322 +# ── Dario embedded service ── +# Override the host/port the embedded Dario (Claude Code subscription proxy) +# daemon binds to and is reached at. Always bound to 127.0.0.1 — never +# configurable to 0.0.0.0. Rarely needed — defaults to 127.0.0.1:3456. +# Used by: src/lib/services/installers/dario.ts, src/lib/services/bootstrap.ts, +# src/app/api/services/dario/_lib.ts, src/app/api/services/dario/admin/_lib.ts, +# open-sse/executors/dario.ts +# DARIO_HOST=127.0.0.1 +# DARIO_PORT=3456 + +# ── Dario embedded service ── +# Override the host/port the embedded Dario (Claude Code subscription proxy) +# daemon binds to and is reached at. Always bound to 127.0.0.1 — never +# configurable to 0.0.0.0. Rarely needed — defaults to 127.0.0.1:3456. +# Used by: src/lib/services/installers/dario.ts, src/lib/services/bootstrap.ts, +# src/app/api/services/dario/_lib.ts, src/app/api/services/dario/admin/_lib.ts, +# open-sse/executors/dario.ts +# DARIO_HOST=127.0.0.1 +# DARIO_PORT=3456 + # ── Local hostnames (Docker networking) ── # Comma-separated additional hostnames treated as "local" for provider routing. # Used by: open-sse/config/providerRegistry.ts — allows Docker service names. @@ -1839,6 +1952,18 @@ APP_LOG_TO_FILE=true # ── Devin CLI binary path ── # Used by: open-sse/executors/devin-cli.ts. Default: looked up via PATH. # CLI_DEVIN_BIN=devin +# Agentic bridge-only binary override. The bridge still executes ACP stdio only. +# CLI_DEVIN_AGENTIC_BIN=devin +# Required isolated HOME for the agentic Devin child process. +# DEVIN_AGENTIC_HOME=/home/bridge +# Bounded ACP turn timeout in milliseconds. Default: 120000. +# DEVIN_AGENTIC_ACP_TIMEOUT_MS=120000 +# Agentic bridge model aliases. Values must keep the devin-cli-agentic/ prefix. +# DEVIN_BRIDGE_MODEL=devin-cli-agentic/swe-1-7 +# DEVIN_BRIDGE_SONNET_MODEL=devin-cli-agentic/swe-1-7 +# DEVIN_BRIDGE_OPUS_MODEL=devin-cli-agentic/swe-1-7 +# DEVIN_BRIDGE_HAIKU_MODEL=devin-cli-agentic/swe-1-7 +# DEVIN_BRIDGE_SUBAGENT_MODEL=devin-cli-agentic/swe-1-7 # ── Command Code (custom CLI) callback ── # Local port used for OAuth-style callbacks from the Command Code CLI helper. @@ -1893,6 +2018,15 @@ APP_LOG_TO_FILE=true # CHANGELOG_BASE_REF=origin/release/v0.0.0 # ALLOW_CHANGELOG_REMOVALS=1 +# ── Remote audio provider nodes ── +# Used by: src/app/api/v1/_shared/audioProviderNodes.ts — lets the /v1/audio/* +# routes use an OpenAI-compatible provider node hosted outside localhost. +# OFF by default: routing audio to a remote host changes egress identity, so it +# must be an explicit operator decision. Loopback/private nodes (localhost, +# 127.0.0.1, 172.16-31.x) are always allowed and unaffected by this flag. +# When enabled, the node authenticates with the API key stored on its connection. +# AUDIO_REMOTE_PROVIDER_NODES=false + # ── 1Proxy egress pool ── # Used by: src/lib/oneproxySync.ts — fetches proxy nodes from the OmniRoute # CrofAI 1Proxy service. Disable, override URL, or tune the import quality. @@ -2100,6 +2234,11 @@ PLAYGROUND_COMPARE_MAX_COLUMNS=4 # MEMORY_TYPED_DECAY_EPISODIC_DAYS=30 # episodic TTL in days; 0 = episodic immune too # MEMORY_TYPED_DECAY_ACCESS_IMMUNITY=3 # access_count >= N → immune; 0 disables access immunity # MEMORY_TYPED_DECAY_SWEEP_INTERVAL=0 # periodic sweep interval (seconds); 0 = no periodic sweep +# ─── Memory Backend Connectors (Generic HTTP) ────────────────────────────── +# NOTION_API_KEY= +# NOTION_API_URL= +# OBSIDIAN_API_KEY= +# OBSIDIAN_API_URL= # AgentBridge + Traffic Inspector (Group A) # AgentBridge @@ -2115,6 +2254,15 @@ INSPECTOR_MAX_BODY_KB=1024 INSPECTOR_MASK_SECRETS=true INSPECTOR_LLM_HOSTS_EXTRA= INSPECTOR_INTERNAL_INGEST_TOKEN= +# Shared secret for identity-preserving internal REST hops (#9260): when an +# OmniRoute component calls another local OmniRoute route, this token (sent as +# x-omniroute-internal-service-token) marks the request as internal so the +# original caller identity is preserved. OPT-IN: unset disables the mechanism. +# Used by: src/lib/api/internalServiceAuth.ts +# OMNIROUTE_INTERNAL_SERVICE_TOKEN= +# File-based variant (secret-file pattern; wins only when the inline var is +# unset): path to a file whose trimmed content is the token. +# OMNIROUTE_INTERNAL_SERVICE_TOKEN_FILE= # Quota Sharing (Group B — planos 16+22) QUOTA_STORE_DRIVER=sqlite # sqlite | redis # QUOTA_STORE_REDIS_URL= # ex.: redis://localhost:6379 (apenas quando driver=redis) @@ -2225,6 +2373,11 @@ QUOTA_STORE_DRIVER=sqlite # sqlite | redis # Host port for the 1-click Redis launcher. Default: 6379. Bump if the host # already binds 6379. The container's internal port stays 6379. # OMNIROUTE_REDIS_HOST_PORT= +# Host interface the 1-click Redis launcher publishes on. Default: 127.0.0.1 +# (loopback only). The launcher starts Redis WITHOUT a password, so binding +# 0.0.0.0 hands every host on your LAN an unauthenticated Redis — only widen +# this if you also set a password on the instance yourself. +# OMNIROUTE_REDIS_BIND_HOST= # Redis image used by the 1-click Redis launcher. Default: redis:7-alpine. # Override to redis:8-alpine or a private registry mirror as needed. # OMNIROUTE_REDIS_IMAGE= @@ -2326,3 +2479,38 @@ QUOTA_STORE_DRIVER=sqlite # sqlite | redis # OMNIROUTE_DATA_DIR are both unset. Locates the Notion web-thread session cache. # ───────────────────────────────────────────────────────────────────────────── # VIBEPROXY_DATA_DIR= + +# ── Internal service auth (management-plane service-to-service calls) ───────── +# Inline token for internal service authentication; prefer the _FILE variant in +# containerized deployments so the secret never lands in the environment table. +# OMNIROUTE_INTERNAL_SERVICE_TOKEN= +# Path to a file containing the internal service token (overrides the inline var). +# OMNIROUTE_INTERNAL_SERVICE_TOKEN_FILE= + +# ═══════════════════════════════════════════════════════════════════════════════ +# 26. RADAR FEED (SELF-HOSTING) +# ═══════════════════════════════════════════════════════════════════════════════ +# Optional add-on (feature flag RADAR_ENABLED, default off — see feature flag +# settings, not an env var) that overlays a signed, freshly-curated free-model +# catalog on top of the release baseline. All four variables below are optional +# and only needed to point the client at a self-hosted/forked feed or +# supporter-key flow instead of the default OmniRoute Radar service. Used by: +# src/lib/radar/sync.ts, src/lib/radar/pinnedKeys.ts, src/lib/radar/links.ts. + +# Base URL of the Radar feed service. Overrides the built-in default so forks +# and self-hosters can point at their own signed feed. +# RADAR_FEED_URL=https://radar.omniroute.online + +# Ed25519 public key (base64-DER SPKI or PEM) used to verify the feed +# signature, replacing the pinned default key. Required when self-hosting a +# feed signed with a different key pair. +# RADAR_FEED_PUBKEY= + +# URL the dashboard's "I'm a contributor" button opens (GitHub OAuth +# supporter-key claim flow). No pricing/value lives in this repo — only the +# link. +# RADAR_CONTRIBUTOR_CLAIM_URL=https://radar.omniroute.online/auth/github + +# URL the dashboard's "Support the project" button opens (payment/plans +# page). No pricing/value lives in this repo — only the link. +# RADAR_SUPPORTER_PLANS_URL=https://radar.omniroute.online/planos diff --git a/.eslintcache-probe b/.eslintcache-probe new file mode 100644 index 0000000000..9e65baabc5 --- /dev/null +++ b/.eslintcache-probe @@ -0,0 +1 @@ +[{"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/@omniroute/opencode-plugin/src/index.ts":"1","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/@omniroute/opencode-plugin/src/logger.ts":"2","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/@omniroute/opencode-plugin/src/naming.ts":"3","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/@omniroute/opencode-plugin/tests/auth.test.ts":"4","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/@omniroute/opencode-plugin/tests/auto-combo-context.test.ts":"5","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/@omniroute/opencode-plugin/tests/auto-sync.test.ts":"6","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/@omniroute/opencode-plugin/tests/combos.test.ts":"7","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/@omniroute/opencode-plugin/tests/config-shim.test.ts":"8","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/@omniroute/opencode-plugin/tests/disk-snapshot-perms.test.ts":"9","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/@omniroute/opencode-plugin/tests/feature-defaults.test.ts":"10","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/@omniroute/opencode-plugin/tests/features.test.ts":"11","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/@omniroute/opencode-plugin/tests/fetch-interceptor.test.ts":"12","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/@omniroute/opencode-plugin/tests/fork-features.test.ts":"13","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/@omniroute/opencode-plugin/tests/gemini-sanitize.test.ts":"14","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/@omniroute/opencode-plugin/tests/management-read-token.test.ts":"15","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/@omniroute/opencode-plugin/tests/model-allowlist.test.ts":"16","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/@omniroute/opencode-plugin/tests/multi-instance.test.ts":"17","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/@omniroute/opencode-plugin/tests/options-schema.test.ts":"18","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/@omniroute/opencode-plugin/tests/provider-id-routing.test.ts":"19","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/@omniroute/opencode-plugin/tests/provider.test.ts":"20","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/@omniroute/opencode-plugin/tests/scaffold.test.ts":"21","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/@omniroute/opencode-plugin/tests/usable-combo.test.ts":"22","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/@omniroute/opencode-plugin/tsup.config.ts":"23","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/@omniroute/opencode-provider/src/index.ts":"24","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/@omniroute/opencode-provider/tests/index.test.ts":"25","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/@omniroute/opencode-provider/tsup.config.ts":"26","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/docker/devin-bridge/mock-devin.mjs":"27","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/docker/devin-bridge/network-guard/policy.mjs":"28","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/docker/devin-bridge/network-guard/proxy.mjs":"29","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/docker/devin-bridge/run-contract.mjs":"30","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/eslint.complexity-ratchets.config.mjs":"31","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/eslint.complexity.config.mjs":"32","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/eslint.config.mjs":"33","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/eslint.sonarjs.config.mjs":"34","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/examples/omniroute-cmd-hello/index.mjs":"35","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/examples/plugins/langfuse/index.mjs":"36","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/examples/plugins/request-logger/index.mjs":"37","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/examples/plugins/theme-manager/index.mjs":"38","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/examples/plugins/welcome-banner/index.mjs":"39","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/next.config.mjs":"40","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/agyModels.ts":"41","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/anthropicHeaders.ts":"42","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/antigravityModelAliases.ts":"43","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/antigravityUpstream.ts":"44","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/audioRegistry.ts":"45","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/azureAi.ts":"46","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/bedrock.ts":"47","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/claudeCodeCompatibleIdentity.ts":"48","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/claudeWebFingerprint.ts":"49","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/cliFingerprints.ts":"50","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/codexClient.ts":"51","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/codexIdentity.ts":"52","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/codexInstructions.ts":"53","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/codexQuotaScopes.ts":"54","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/constants.ts":"55","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/contextEditing.ts":"56","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/credentialLoader.ts":"57","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/datarobot.ts":"58","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/defaultThinkingSignature.ts":"59","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/embeddingRegistry.ts":"60","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/errorConfig.ts":"61","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/freeModelCatalog.data.ts":"62","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/freeModelCatalog.ts":"63","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/freeTierCatalog.ts":"64","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/glmProvider.ts":"65","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/grokBuild.ts":"66","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/imageRegistry.ts":"67","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/maritalk.ts":"68","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/mediaServiceKinds.ts":"69","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/moderationRegistry.ts":"70","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/musicRegistry.ts":"71","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/oci.ts":"72","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/ocrRegistry.ts":"73","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/ollamaModels.ts":"74","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providerErrorRules.ts":"75","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providerFieldStrips.ts":"76","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providerHeaderProfiles.ts":"77","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providerModels.ts":"78","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providerPluginManifest.ts":"79","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providerPluginManifestRegistry.ts":"80","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providerPluginManifestUrl.ts":"81","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providerRegistry.ts":"82","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/alternateFormats.ts":"83","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/index.ts":"84","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/adapta-web/index.ts":"85","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/agentrouter/index.ts":"86","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/agnes/index.ts":"87","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/agy/index.ts":"88","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/ai21/index.ts":"89","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/aihorde/index.ts":"90","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/aimlapi/index.ts":"91","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/ainative/index.ts":"92","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/aion/index.ts":"93","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/alibaba/cn/index.ts":"94","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/alibaba/index.ts":"95","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/ant-ling/index.ts":"96","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/anthropic/index.ts":"97","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/antigravity/index.ts":"98","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/anyapi/index.ts":"99","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/api-airforce/index.ts":"100","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/auggie/index.ts":"101","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/bai/index.ts":"102","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/baichuan/index.ts":"103","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/baidu/index.ts":"104","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/bailian-coding-plan/index.ts":"105","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/baseten/index.ts":"106","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/bazaarlink/index.ts":"107","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/bedrock/index.ts":"108","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/blackbox/index.ts":"109","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/blackbox/web/index.ts":"110","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/bluesminds/index.ts":"111","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/byteplus/index.ts":"112","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/bytez/index.ts":"113","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/cerebras/index.ts":"114","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/charm-hyper/index.ts":"115","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/chatgpt-web/index.ts":"116","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/cheaperinference/imageModels.ts":"117","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/cheaperinference/index.ts":"118","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/chenzk/index.ts":"119","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/chipotle/index.ts":"120","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/chutes/index.ts":"121","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/claude/index.ts":"122","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/claude/web/index.ts":"123","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/cline/index.ts":"124","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/clinepass/index.ts":"125","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/cloudflare-ai/index.ts":"126","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/clova-studio/index.ts":"127","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/codebuddy-cn/index.ts":"128","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/codestral/index.ts":"129","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/codex/index.ts":"130","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/cohere/index.ts":"131","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/command-code/index.ts":"132","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/copilot-m365-web/index.ts":"133","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/copilot-web/index.ts":"134","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/coze/index.ts":"135","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/crof/index.ts":"136","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/cursor/index.ts":"137","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/dahl/index.ts":"138","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/databricks/index.ts":"139","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/deepinfra/index.ts":"140","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/deepseek/index.ts":"141","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/deepseek/web/index.ts":"142","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/devin/catalog.ts":"143","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/devin-cli/index.ts":"144","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/devin-cli-agentic/index.ts":"145","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/dgrid/index.ts":"146","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/dify/index.ts":"147","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/digitalocean/index.ts":"148","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/dit/index.ts":"149","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/doubao/index.ts":"150","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/doubao/web/index.ts":"151","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/duckduckgo-web/index.ts":"152","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/electronhub/index.ts":"153","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/factory/index.ts":"154","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/fastrouter/index.ts":"155","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/featherless-ai/index.ts":"156","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/felo-web/index.ts":"157","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/fireworks/index.ts":"158","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/freeaiapikey/index.ts":"159","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/freemodel-dev/index.ts":"160","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/freepik/index.ts":"161","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/freetheai/index.ts":"162","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/friendliai/index.ts":"163","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/g4f-gemini/index.ts":"164","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/g4f-groq/index.ts":"165","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/g4f-nvidia/index.ts":"166","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/g4f-ollama/index.ts":"167","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/g4f-pollinations/index.ts":"168","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/galadriel/index.ts":"169","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/gemini/imageModels.ts":"170","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/gemini/index.ts":"171","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/gemini/web/index.ts":"172","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/ghe-copilot/index.ts":"173","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/gigachat/index.ts":"174","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/github/index.ts":"175","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/github/models/index.ts":"176","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/github/retiredModels.ts":"177","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/gitlab-duo/index.ts":"178","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/gitlawb/gmi/index.ts":"179","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/gitlawb/index.ts":"180","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/glm/cn/index.ts":"181","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/glm/index.ts":"182","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/glm/t/index.ts":"183","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/grok-cli/index.ts":"184","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/grok-web/index.ts":"185","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/groq/index.ts":"186","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/hackclub/index.ts":"187","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/haiper/index.ts":"188","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/hcnsec/index.ts":"189","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/heroku/index.ts":"190","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/huggingchat/index.ts":"191","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/huggingface/index.ts":"192","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/hyperagent/index.ts":"193","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/hyperbolic/index.ts":"194","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/ideogram/index.ts":"195","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/iflytek/index.ts":"196","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/inception/index.ts":"197","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/inference-net/index.ts":"198","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/inner-ai/index.ts":"199","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/internlm/index.ts":"200","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/kenari/index.ts":"201","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/kie/imageModels.ts":"202","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/kie/index.ts":"203","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/kie/models.ts":"204","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/kilo-gateway/index.ts":"205","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/kilocode/index.ts":"206","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/kimi/coding/index.ts":"207","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/kimi/coding/runtime.ts":"208","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/kimi/coding-apikey/index.ts":"209","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/kimi/index.ts":"210","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/kimi/web/index.ts":"211","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/kimi/web/runtime.ts":"212","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/kiro/index.ts":"213","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/lambda-ai/index.ts":"214","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/leonardo/index.ts":"215","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/liquid/index.ts":"216","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/llamagate/index.ts":"217","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/llm-kiwi/index.ts":"218","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/llm7/index.ts":"219","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/llmgateway/index.ts":"220","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/lmarena/directModels.ts":"221","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/lmarena/index.ts":"222","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/longcat/index.ts":"223","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/maritalk/index.ts":"224","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/meta-llama/index.ts":"225","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/mimocode/index.ts":"226","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/minimax/cn/index.ts":"227","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/minimax/index.ts":"228","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/minimax/web/index.ts":"229","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/mistral/index.ts":"230","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/modal/index.ts":"231","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/modelscope/index.ts":"232","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/monsterapi/index.ts":"233","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/moonshot/index.ts":"234","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/morph/index.ts":"235","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/muse-spark-web/index.ts":"236","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/nanogpt/index.ts":"237","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/nara/index.ts":"238","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/navy/index.ts":"239","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/nebius/index.ts":"240","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/nlpcloud/index.ts":"241","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/notion-web/index.ts":"242","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/nous-research/index.ts":"243","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/novita/index.ts":"244","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/nscale/index.ts":"245","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/nube/index.ts":"246","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/nvidia/index.ts":"247","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/ollama-cloud/index.ts":"248","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/openadapter/index.ts":"249","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/openai/index.ts":"250","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/opencode/go/index.ts":"251","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/opencode/index.ts":"252","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/opencode/zen/index.ts":"253","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/openrouter/index.ts":"254","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/openvecta/index.ts":"255","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/orcarouter/index.ts":"256","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/ovhcloud/index.ts":"257","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/perplexity/index.ts":"258","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/perplexity/web/index.ts":"259","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/pioneer/index.ts":"260","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/plamo/index.ts":"261","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/poe/index.ts":"262","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/pollinations/index.ts":"263","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/predibase/index.ts":"264","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/promptql/index.ts":"265","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/publicai/index.ts":"266","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/puter/index.ts":"267","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/qianfan/index.ts":"268","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/qiniu/index.ts":"269","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/qoder/index.ts":"270","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/qwen/web/index.ts":"271","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/qwen-cloud/index.ts":"272","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/qwen-cloud-token-plan/index.ts":"273","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/raycast/index.ts":"274","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/regolo/index.ts":"275","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/reka/index.ts":"276","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/requesty/index.ts":"277","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/routeway/index.ts":"278","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/sambanova/index.ts":"279","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/sarvam/index.ts":"280","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/scaleway/index.ts":"281","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/sealion/index.ts":"282","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/segmind/imageModels.ts":"283","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/segmind/videoModels.ts":"284","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/sensenova/index.ts":"285","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/siliconflow/index.ts":"286","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/snowflake/index.ts":"287","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/sparkdesk/index.ts":"288","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/stability-ai/imageModels.ts":"289","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/stepfun/index.ts":"290","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/sumopod/index.ts":"291","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/suno/index.ts":"292","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/synthetic/index.ts":"293","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/t3-web/index.ts":"294","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/tencent/index.ts":"295","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/theoldllm/index.ts":"296","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/together/index.ts":"297","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/tokenrouter/index.ts":"298","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/trae/index.ts":"299","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/typhoon/index.ts":"300","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/udio/index.ts":"301","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/uncloseai/index.ts":"302","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/unorouter/index.ts":"303","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/upstage/index.ts":"304","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/v0-vercel/index.ts":"305","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/venice/index.ts":"306","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/veoaifree-web/index.ts":"307","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/vercel-ai-gateway/index.ts":"308","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/vertex/index.ts":"309","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/vertex/partner/index.ts":"310","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/volcengine/index.ts":"311","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/wafer/index.ts":"312","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/wandb/index.ts":"313","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/windsurf/index.ts":"314","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/writer/index.ts":"315","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/x5lab/index.ts":"316","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/xai/index.ts":"317","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/xai-oauth/index.ts":"318","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/xiaomi-mimo/index.ts":"319","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/xiaomi-mimo-token-plan/index.ts":"320","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/yi/index.ts":"321","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/yuanbao-web/index.ts":"322","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/zai/index.ts":"323","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/zai-web/index.ts":"324","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/zed-hosted/index.ts":"325","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/zenmux/index.ts":"326","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/zenmux-free/index.ts":"327","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/shared.ts":"328","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/registryUtils.ts":"329","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/rerankRegistry.ts":"330","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/runway.ts":"331","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/sap.ts":"332","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/searchRegistry.ts":"333","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/toolCloaking.ts":"334","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/upscaleRegistry.ts":"335","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/videoRegistry.ts":"336","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/watsonx.ts":"337","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/adapta-web.ts":"338","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/adobe-firefly.ts":"339","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/antigravity/executeAttempt.ts":"340","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/antigravity/proFallbackChain.ts":"341","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/antigravity/sseCollect.ts":"342","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/antigravity/streamingPassthrough.ts":"343","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/antigravity.ts":"344","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/antigravityUpstreamError.ts":"345","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/auggie.ts":"346","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/awsPollyTts.ts":"347","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/azure-openai.ts":"348","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/base/headers.ts":"349","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/base/reasoningEffort.ts":"350","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/base.ts":"351","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/bedrock.ts":"352","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/blackbox-web.ts":"353","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/chatgpt-web/citations.ts":"354","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/chatgpt-web/handoff.ts":"355","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/chatgpt-web/models.ts":"356","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/chatgpt-web.ts":"357","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/chatgptWebErrors.ts":"358","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/chatgptWebTools.ts":"359","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/cheaperinference.ts":"360","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/chipotle.ts":"361","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/claude-web/browserTransport.ts":"362","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/claude-web/payload.ts":"363","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/claude-web/session.ts":"364","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/claude-web/stream.ts":"365","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/claude-web/transport.ts":"366","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/claude-web.ts":"367","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/claudeIdentity.ts":"368","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/cliproxyapi.ts":"369","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/cloudflare-ai.ts":"370","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/codebuddy-cn.ts":"371","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/codex/bodyTimeout.ts":"372","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/codex/quota.ts":"373","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/codex/reasoningSuffix.ts":"374","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/codex/tools.ts":"375","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/codex.ts":"376","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/commandCode.ts":"377","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/copilot-m365-connection.ts":"378","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/copilot-m365-frames.ts":"379","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/copilot-m365-web.ts":"380","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/copilot-web.ts":"381","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/cursor/builtinToolBridge.ts":"382","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/cursor/composer.ts":"383","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/cursor/prompt.ts":"384","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/cursor.ts":"385","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/dario.ts":"386","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/deepseek-web/stream-format.ts":"387","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/deepseek-web-done-terminator.ts":"388","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/deepseek-web-with-auto-refresh.ts":"389","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/deepseek-web.ts":"390","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/default/nvidiaConcurrencyGate.ts":"391","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/default/urlNormalizers.ts":"392","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/default/zaiFormatOverride.ts":"393","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/default.ts":"394","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/devin-agentic/anthropicResponse.ts":"395","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/devin-agentic/serializer.ts":"396","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/devin-agentic/toolParser.ts":"397","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/devin-agentic/types.ts":"398","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/devin-cli-agentic.ts":"399","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/devin-cli.ts":"400","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/doubao-web.ts":"401","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/duckduckgo-web/challenge.ts":"402","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/duckduckgo-web.ts":"403","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/edgeTts.ts":"404","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/felo-web.ts":"405","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/firecrawl-fetch.ts":"406","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/forceResponsesUpstream.ts":"407","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/gemini-business.ts":"408","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/gemini-web.ts":"409","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/ghe-copilot.ts":"410","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/github.ts":"411","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/gitlab.ts":"412","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/gitlabResponses.ts":"413","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/glm.ts":"414","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/grok-cli.ts":"415","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/grok-web/native-tools.ts":"416","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/grok-web/text-cleanup.ts":"417","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/grok-web/tool-bridge.ts":"418","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/grok-web/types.ts":"419","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/grok-web.ts":"420","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/gtts.ts":"421","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/hailuo-web.ts":"422","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/huggingchat/jsonlStream.ts":"423","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/huggingchat.ts":"424","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/hyperagent.ts":"425","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/index.ts":"426","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/inner-ai.ts":"427","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/jina-reader-fetch.ts":"428","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/kie.ts":"429","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/kimi-web.ts":"430","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/kimi.ts":"431","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/kimiToolNames.ts":"432","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/kiro/eventstream.ts":"433","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/kiro.ts":"434","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/kiroThinking.ts":"435","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/kiroToolCallValidation.ts":"436","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/lmarena/cookie.ts":"437","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/lmarena/models.ts":"438","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/lmarena/response.ts":"439","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/lmarena/stream.ts":"440","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/lmarena.ts":"441","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/microsoft-designer-web.ts":"442","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/mimocode.ts":"443","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/moonshot.ts":"444","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/muse-spark-web/response-parser.ts":"445","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/muse-spark-web.ts":"446","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/ninerouter.ts":"447","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/nlpcloud.ts":"448","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/notion-web.ts":"449","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/opencode.ts":"450","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/perplexity-web/protocol.ts":"451","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/perplexity-web.ts":"452","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/poe-web.ts":"453","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/pollinations.ts":"454","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/promptql/eventTree.ts":"455","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/promptql/messageText.ts":"456","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/promptql/threadSticky.ts":"457","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/promptql.ts":"458","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/puter.ts":"459","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/qoder.ts":"460","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/qwen-web.ts":"461","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/raycast.ts":"462","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/t3-chat-web.ts":"463","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/tavily-fetch.ts":"464","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/theoldllm.ts":"465","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/tinyfish-fetch.ts":"466","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/trae.ts":"467","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/v0-vercel-web.ts":"468","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/venice-web.ts":"469","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/veoaifree-web.ts":"470","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/vertex.ts":"471","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/vertexMedia.ts":"472","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/windsurf.ts":"473","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/xai.ts":"474","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/yuanbao-web.ts":"475","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/zai-web.ts":"476","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/zed-hosted.ts":"477","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/zenmux-free.ts":"478","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/audioSpeech.ts":"479","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/audioTranscription.ts":"480","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/audioTranslation.ts":"481","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/autoComboCandidates.ts":"482","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/agentRouterProtocol.ts":"483","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/attemptLogging.ts":"484","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/backgroundRedirect.ts":"485","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/cacheUsageMeta.ts":"486","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/cavemanOutputAnalytics.ts":"487","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/ccDiscoveryAliasStrip.ts":"488","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/claudeClassifierCompat.ts":"489","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/claudeEffortVariant.ts":"490","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/claudeMessageTypes.ts":"491","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/claudeSystemRole.ts":"492","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/claudeToolDefaults.ts":"493","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/claudeUpstreamMessages.ts":"494","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/clientUsageBuffer.ts":"495","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/clineResponseEnvelope.ts":"496","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/cliproxyModelMapping.ts":"497","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/cliproxyapiCredentials.ts":"498","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/codexFailover.ts":"499","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/codexQuota.ts":"500","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/comboContextCache.ts":"501","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/compressionAnalyticsWrite.ts":"502","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/compressionCacheStats.ts":"503","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/compressionComboPredicates.ts":"504","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/compressionSettings.ts":"505","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/compressionUsageReceipt.ts":"506","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/contextEditingTelemetry.ts":"507","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/contextEstimation.ts":"508","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/cooldownClassification.ts":"509","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/executionCredentials.ts":"510","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/executorClientHeaders.ts":"511","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/executorHelpers.ts":"512","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/executorProxy.ts":"513","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/failureUsage.ts":"514","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/gamificationEvent.ts":"515","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/headers.ts":"516","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/idempotency.ts":"517","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/jsonBodyToSse.ts":"518","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/keyHealth.ts":"519","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/logTruncation.ts":"520","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/memoryExtraction.ts":"521","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/memorySkillsInjection.ts":"522","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/nonStreamingJsonResponse.ts":"523","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/nonStreamingResponseBody.ts":"524","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/nonStreamingResponseHeaders.ts":"525","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/nonStreamingResponseParse.ts":"526","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/nonStreamingSse.ts":"527","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/nonStreamingUsageStats.ts":"528","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/outputStyleTelemetry.ts":"529","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/outputTokenBudget.ts":"530","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/passthroughHelpers.ts":"531","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/passthroughToolNames.ts":"532","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/pluginOnRequest.ts":"533","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/pluginOnResponse.ts":"534","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/postCallGuardrailContext.ts":"535","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/quotaShareConsumption.ts":"536","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/requestFormat.ts":"537","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/requestSetup.ts":"538","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/responseHeaders.ts":"539","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/sanitization.ts":"540","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/semanticCache.ts":"541","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/semanticCacheStore.ts":"542","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/serviceTier.ts":"543","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/skillsFormat.ts":"544","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/stageTrace.ts":"545","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/streamErrorResult.ts":"546","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/streamFinalize.ts":"547","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/streamingCost.ts":"548","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/streamingPipeline.ts":"549","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/streamingQuotaShare.ts":"550","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/streamingResponseHeaders.ts":"551","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/streamingSemanticCacheStore.ts":"552","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/streamingUsageStats.ts":"553","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/targetFormat.ts":"554","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/telemetryHelpers.ts":"555","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/thinkingSignatureRecovery.ts":"556","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/toolCallingRequiredCheck.ts":"557","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/unsupportedParamsStrip.ts":"558","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/upstreamBody.ts":"559","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/upstreamExecuteHeaders.ts":"560","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/upstreamTimeouts.ts":"561","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore.ts":"562","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/embeddingStructuredInput.ts":"563","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/embeddings.ts":"564","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/imageGeneration/pollinationsAnonAuth.ts":"565","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/imageGeneration/providers/adobeFirefly.ts":"566","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/imageGeneration/providers/alibabaImage.ts":"567","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/imageGeneration/providers/chatgptWeb.ts":"568","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/imageGeneration/providers/comfyUI.ts":"569","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/imageGeneration/providers/designerWeb.ts":"570","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/imageGeneration/providers/freepik.ts":"571","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/imageGeneration/providers/googleImagen.ts":"572","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/imageGeneration/providers/haiper.ts":"573","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/imageGeneration/providers/huggingface.ts":"574","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/imageGeneration/providers/hyperbolic.ts":"575","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/imageGeneration/providers/ideogram.ts":"576","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/imageGeneration/providers/imagen3.ts":"577","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/imageGeneration/providers/leonardo.ts":"578","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/imageGeneration/providers/minimax.ts":"579","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/imageGeneration/providers/nvidiaNim.ts":"580","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/imageGeneration/providers/sdWebUI.ts":"581","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/imageGeneration/providers/segmind.ts":"582","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/imageGeneration.ts":"583","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/imageUpscale/adobeFirefly.ts":"584","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/imageUpscale/shared.ts":"585","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/imageUpscale/stability.ts":"586","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/imageUpscale/topaz.ts":"587","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/imageUpscale.ts":"588","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/moderations.ts":"589","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/musicGeneration.ts":"590","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/ocr.ts":"591","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/openrouterTranscription.ts":"592","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/rerank.ts":"593","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/responseSanitizer/reasoning.ts":"594","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/responseSanitizer.ts":"595","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/responseTranslator.ts":"596","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/responsesHandler.ts":"597","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/search/firecrawlSearch.ts":"598","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/search/perplexitySearch.ts":"599","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/search.ts":"600","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/sseParser/geminiResponse.ts":"601","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/sseParser.ts":"602","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/usageExtractor.ts":"603","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/videoGeneration/adobeFireflyHandler.ts":"604","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/videoGeneration/dashscopeHandler.ts":"605","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/videoGeneration/deepinfraHandler.ts":"606","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/videoGeneration/googleFlow.ts":"607","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/videoGeneration/googleFlowHandler.ts":"608","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/videoGeneration/leonardoHandler.ts":"609","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/videoGeneration/novita.ts":"610","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/videoGeneration/novitaHandler.ts":"611","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/videoGeneration/providers/segmind.ts":"612","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/videoGeneration/xaiGrokImagineHandler.ts":"613","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/videoGeneration.ts":"614","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/webFetch.ts":"615","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/index.ts":"616","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/lib/deepseek-pow-solver.cjs":"617","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/lib/deepseek-pow.ts":"618","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/__tests__/a2aLifecycle.test.ts":"619","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/__tests__/advancedTools.test.ts":"620","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/__tests__/audit.test.ts":"621","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/__tests__/cacheTools.test.ts":"622","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/__tests__/createComboTool.test.ts":"623","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/__tests__/dbHealthTool.test.ts":"624","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/__tests__/essentialTools.test.ts":"625","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/__tests__/glmCodingProviderConfig.test.ts":"626","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/__tests__/httpAuthContext.test.ts":"627","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/__tests__/pricingSync.test.ts":"628","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/__tests__/routingStrategyTool.test.ts":"629","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/__tests__/toolSearch.catalog.test.ts":"630","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/__tests__/toolSearch.search.test.ts":"631","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/__tests__/toolSearch.signature.test.ts":"632","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/__tests__/toolSearch.tool.test.ts":"633","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/audit.ts":"634","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/catalog.ts":"635","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/descriptionCompressor.ts":"636","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/httpAuthContext.ts":"637","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/httpTransport.ts":"638","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/index.ts":"639","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/mcpCallerIdentity.ts":"640","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/runtimeHeartbeat.ts":"641","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/schemas/a2a.ts":"642","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/schemas/audit.ts":"643","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/schemas/ccrTools.ts":"644","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/schemas/index.ts":"645","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/schemas/pickFastestModel.ts":"646","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/schemas/toolDefinition.ts":"647","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/schemas/toolSearch.ts":"648","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/schemas/tools.ts":"649","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/scopeEnforcement.ts":"650","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/server.ts":"651","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/toolCardinality.ts":"652","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/toolCount.ts":"653","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/toolSearch/catalog.ts":"654","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/toolSearch/handler.ts":"655","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/toolSearch/index.ts":"656","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/toolSearch/register.ts":"657","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/toolSearch/search.ts":"658","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/toolSearch/signature.ts":"659","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/tools/advancedTools.ts":"660","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/tools/agentSkillTools.ts":"661","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/tools/compressionTools.ts":"662","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/tools/gamificationTools.ts":"663","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/tools/githubSkillTools.ts":"664","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/tools/localCorpusTools.ts":"665","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/tools/memoryTools.ts":"666","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/tools/notionTools.ts":"667","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/tools/obsidianTools.ts":"668","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/tools/pickFastestModel.ts":"669","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/tools/pluginTools.ts":"670","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/tools/poolTools.ts":"671","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/tools/skillTools.ts":"672","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/__tests__/antigravity-quota-family.test.ts":"673","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/__tests__/chatgptTlsClient.test.ts":"674","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/__tests__/claudeTlsClient.test.ts":"675","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/__tests__/fail-fast-concurrency-gate.test.ts":"676","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/__tests__/grokTlsClient.test.ts":"677","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/__tests__/manifestAdapter.test.ts":"678","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/__tests__/specificityDetector.test.ts":"679","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/__tests__/tierResolver.test.ts":"680","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/__tests__/volumeDetector.test.ts":"681","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/accountFallback/cooldownCap.ts":"682","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/accountFallback/exactModelLock.ts":"683","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/accountFallback/lockoutEviction.ts":"684","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/accountFallback/nonRetryableUpstream.ts":"685","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/accountFallback.ts":"686","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/accountSelector.ts":"687","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/accountSemaphore.ts":"688","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/admission/adaptation.ts":"689","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/admission/config.ts":"690","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/admission/controller.ts":"691","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/admission/cost.ts":"692","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/admission/index.ts":"693","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/admission/queue.ts":"694","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/admission/requestFeatures.ts":"695","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/admission/runtime.ts":"696","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/admission/types.ts":"697","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/adobeFireflyBrowserLogin.ts":"698","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/adobeFireflyClient.ts":"699","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/adobeFireflyModels.ts":"700","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/adobeFireflyUpscale.ts":"701","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/agentrouterQuotaFetcher.ts":"702","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/antigravity429Engine.ts":"703","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/antigravityClientProfile.ts":"704","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/antigravityCredits.ts":"705","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/antigravityHeaderScrub.ts":"706","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/antigravityHeaders.ts":"707","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/antigravityIdentity.ts":"708","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/antigravityProjectBootstrap.ts":"709","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/antigravityProjectPersist.ts":"710","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/antigravityQuotaFamily.ts":"711","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/antigravityVersion.ts":"712","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/apiKeyRotator.ts":"713","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/autoCombo/__tests__/autoCombo.test.ts":"714","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/autoCombo/__tests__/chaosEngine.test.ts":"715","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/autoCombo/__tests__/chaosVirtualCombo.test.ts":"716","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/autoCombo/__tests__/providerDiversity.test.ts":"717","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/autoCombo/__tests__/speedRanking.test.ts":"718","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/autoCombo/__tests__/taskFitness-pattern-order-8603.test.ts":"719","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/autoCombo/autoPrefix.ts":"720","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/autoCombo/builtinCatalog.ts":"721","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/autoCombo/candidateOverrides.ts":"722","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/autoCombo/chaosEngine.ts":"723","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/autoCombo/complexityRouter.ts":"724","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/autoCombo/engine.ts":"725","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/autoCombo/index.ts":"726","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/autoCombo/modePacks.ts":"727","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/autoCombo/modelFamily.ts":"728","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/autoCombo/paidModelFilter.ts":"729","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/autoCombo/persistence.ts":"730","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/autoCombo/pipelineRouter.ts":"731","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/autoCombo/providerDiversity.ts":"732","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/autoCombo/providerRegistryAccessor.ts":"733","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/autoCombo/requestControls.ts":"734","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/autoCombo/resilienceCandidateFilter.ts":"735","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/autoCombo/routerStrategy.ts":"736","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/autoCombo/scoring.ts":"737","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/autoCombo/selfHealing.ts":"738","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/autoCombo/speedRanking.ts":"739","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/autoCombo/suffixComposition.ts":"740","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/autoCombo/taskFitness.ts":"741","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/autoCombo/virtualFactory.ts":"742","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/autoRefreshDaemon.ts":"743","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/backgroundTaskDetector.ts":"744","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/bailianQuotaFetcher.ts":"745","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/batchProcessor.ts":"746","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/bedrock.ts":"747","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/browserBackedChat.ts":"748","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/browserPool.ts":"749","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/ccBridgeTransforms.ts":"750","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/ccOpenAiMediaBlocks.ts":"751","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/ccWireImageBuiltins.ts":"752","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/chatgptImageCache.ts":"753","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/chatgptTlsClient.ts":"754","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/claudeAdaptiveThinking.ts":"755","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/claudeCodeCCH.ts":"756","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/claudeCodeCompatible.ts":"757","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/claudeCodeCompatibleBeta.ts":"758","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/claudeCodeCompatibleThinkingDisplay.ts":"759","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/claudeCodeConstraints.ts":"760","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/claudeCodeExtraRemap.ts":"761","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/claudeCodeFingerprint.ts":"762","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/claudeCodeObfuscation.ts":"763","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/claudeCodeToolRemapper.ts":"764","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/claudeHaikuConstraints.ts":"765","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/claudeTlsClient.ts":"766","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/claudeTurnstileSolver.ts":"767","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/claudeUsageCooldown.ts":"768","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/claudeWebAutoRefresh.ts":"769","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/clinepassModels.ts":"770","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/cloudCodeHeaders.ts":"771","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/cloudCodeThinking.ts":"772","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/codeAssistSubscription.ts":"773","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/codexQuotaFetcher.ts":"774","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/codexUsageQuotas.ts":"775","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/codexVerbosity.ts":"776","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/combo/applyStrategyOrdering.ts":"777","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/combo/autoConfig.ts":"778","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/combo/autoStrategy.ts":"779","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/combo/comboCompatFallback.ts":"780","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/combo/comboCooldownRetry.ts":"781","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/combo/comboData.ts":"782","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/combo/comboPredicates.ts":"783","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/combo/comboSetup.ts":"784","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/combo/comboStructure.ts":"785","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/combo/comboVisibility.ts":"786","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/combo/concurrencyCaps.ts":"787","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/combo/context.ts":"788","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/combo/contextOverrideGate.ts":"789","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/combo/contextRequirements.ts":"790","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/combo/dispatchPrelude.ts":"791","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/combo/failureTracker.ts":"792","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/combo/fingerprintExpansion.ts":"793","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/combo/fusionPanel.ts":"794","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/combo/headroomRanking.ts":"795","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/combo/knownContextOverflow.ts":"796","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/combo/pinRecovery.ts":"797","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/combo/promptCacheAffinity.ts":"798","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/combo/providerWildcard.ts":"799","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/combo/quotaExhaustionCutoff.ts":"800","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/combo/quotaScoring.ts":"801","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/combo/quotaShareConcurrency.ts":"802","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/combo/quotaShareInflight.ts":"803","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/combo/quotaShareStrategy.ts":"804","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/combo/quotaStrategies.ts":"805","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/combo/resolveAutoStrategy.ts":"806","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/combo/responseValidation.ts":"807","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/combo/rrState.ts":"808","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/combo/runtimeUnitCapacity.ts":"809","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/combo/runtimeUnits.ts":"810","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/combo/sessionStickiness.ts":"811","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/combo/shadowRouting.ts":"812","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/combo/strategyDispatch.ts":"813","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/combo/targetExhaustion.ts":"814","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/combo/targetResolution.ts":"815","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/combo/targetSorters.ts":"816","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/combo/targetTimeoutRunner.ts":"817","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/combo/types.ts":"818","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/combo/unavailableRetryGate.ts":"819","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/combo/validateQuality.ts":"820","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/combo.ts":"821","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/comboAgentMiddleware.ts":"822","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/comboConfig.ts":"823","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/comboManifestMetrics.ts":"824","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/comboMetrics.ts":"825","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/adaptiveCompression/computeTarget.ts":"826","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/adaptiveCompression/ladder.ts":"827","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/adaptiveCompression/resolveAdaptivePlan.ts":"828","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/adaptiveCompression/types.ts":"829","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/aggressive.ts":"830","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/bodyAdapter.ts":"831","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/cacheAwareConfig.ts":"832","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/cachingAware.ts":"833","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/caveman.ts":"834","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/cavemanRules.ts":"835","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/deriveDefaultPlan.ts":"836","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/diffHelper.ts":"837","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engineBreakdown.ts":"838","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engineCatalog.ts":"839","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/cavemanAdapter.ts":"840","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/ccr/ccrQuery.ts":"841","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/ccr/index.ts":"842","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/ccr/protocolInstruction.ts":"843","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/codexResponses/index.ts":"844","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/headroom/encoderComparison.ts":"845","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/headroom/gcf/decode_generic.ts":"846","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/headroom/gcf/generic.ts":"847","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/headroom/gcf/index.ts":"848","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/headroom/gcf/scalar.ts":"849","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/headroom/index.ts":"850","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/headroom/smartcrusher.ts":"851","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/headroom/tabular.ts":"852","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/headroom/toon.ts":"853","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/index.ts":"854","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/ionizer/index.ts":"855","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/ionizer/sample.ts":"856","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/llm/index.ts":"857","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/llmlingua/constants.ts":"858","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/llmlingua/index.ts":"859","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/llmlingua/modelStore.ts":"860","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/llmlingua/onnxWorker.ts":"861","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/llmlingua/ultraEntry.ts":"862","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/llmlingua/worker.ts":"863","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/mcpAccessibility/collapseRepeated.ts":"864","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/mcpAccessibility/constants.ts":"865","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/mcpAccessibility/index.ts":"866","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/omniglyphAdapter.ts":"867","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/omniglyphSingleMode.ts":"868","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/readLifecycle/index.ts":"869","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/registry.ts":"870","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/relevance/configSchema.ts":"871","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/relevance/index.ts":"872","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/relevance/scorer.ts":"873","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/rtk/codeStripper.ts":"874","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/rtk/commandDetector.ts":"875","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/rtk/configSchema.ts":"876","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/rtk/deduplicator.ts":"877","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/rtk/discover.ts":"878","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/rtk/filterLoader.ts":"879","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/rtk/filterSchema.ts":"880","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/rtk/grouper.ts":"881","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/rtk/index.ts":"882","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/rtk/learn.ts":"883","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/rtk/lineFilter.ts":"884","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/rtk/rawOutput.ts":"885","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/rtk/renderers/gitDiff.ts":"886","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/rtk/renderers/index.ts":"887","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/rtk/renderers/structuredTable.ts":"888","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/rtk/renderers/terraformPlan.ts":"889","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/rtk/renderers/testGreen.ts":"890","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/rtk/renderers/types.ts":"891","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/rtk/smartTruncate.ts":"892","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/rtk/splitCompositeCommand.ts":"893","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/rtk/tomlCompatibility.ts":"894","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/rtk/verify.ts":"895","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/session-dedup/fuzzy.ts":"896","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/session-dedup/index.ts":"897","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/types.ts":"898","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/entrypointWrap.ts":"899","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/eval/aggregate.ts":"900","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/eval/corpus.ts":"901","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/eval/costMeter.ts":"902","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/eval/executorModelClient.ts":"903","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/eval/fidelityCheck.ts":"904","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/eval/grader.ts":"905","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/eval/judge.ts":"906","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/eval/report.ts":"907","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/eval/runner.ts":"908","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/eval/savings.ts":"909","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/eval/seedCorpus.ts":"910","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/eval/types.ts":"911","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/exclusions.ts":"912","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/fidelityGate.ts":"913","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/fidelityGateStep.ts":"914","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/hardBudget.ts":"915","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/harness/benchmark.ts":"916","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/harness/budgetGate.ts":"917","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/harness/index.ts":"918","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/harness/measure.ts":"919","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/harness/replay.ts":"920","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/harness/runner.ts":"921","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/index.ts":"922","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/languageDetector.ts":"923","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/lite.ts":"924","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/liveZone.ts":"925","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/messageContent.ts":"926","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/outputMode.ts":"927","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/outputStyles/apply.ts":"928","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/outputStyles/backCompat.ts":"929","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/outputStyles/catalog.ts":"930","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/outputStyles/telemetry.ts":"931","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/pipelineEngineBreaker.ts":"932","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/pipelineGuards.ts":"933","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/planResolution.ts":"934","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/prefixFreeze.ts":"935","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/preservation.ts":"936","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/preserveSystemPromptMode.ts":"937","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/progressiveAging.ts":"938","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/quantumLock/index.ts":"939","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/quantumLock/quantumLock.ts":"940","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/quantumLock/quantumLockStep.ts":"941","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/quantumLock/quantumPatterns.ts":"942","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/quantumLock/strategyWrap.ts":"943","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/resolveCompressionPlan.ts":"944","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/resultMemo.ts":"945","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/riskGate/index.ts":"946","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/riskGate/riskGate.ts":"947","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/riskGate/riskGateStep.ts":"948","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/riskGate/riskPatterns.ts":"949","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/riskGate/strategyWrap.ts":"950","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/ruleLoader.ts":"951","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/stackedStepCore.ts":"952","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/stats.ts":"953","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/stepDetailConfig.ts":"954","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/strategySelector.ts":"955","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/summarizer.ts":"956","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/toolResultCompressor.ts":"957","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/types.ts":"958","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/ultra.ts":"959","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/ultraHeuristic.ts":"960","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/validation.ts":"961","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/contextHandoff.ts":"962","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/contextManager.ts":"963","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/credentialGate.ts":"964","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/crofUsageFetcher.ts":"965","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/cursorSessionManager.ts":"966","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/deepseekQuotaFetcher.ts":"967","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/defaultReasoningEffort.ts":"968","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/deviceTracker.ts":"969","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/emergencyFallback.ts":"970","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/errorClassifier.ts":"971","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/evalRouting.ts":"972","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/firecrawlQuotaFetcher.ts":"973","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/freeModelQuotaFetcher.ts":"974","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/freeWebSearch.ts":"975","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/fusion.ts":"976","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/geminiRateLimitTracker.ts":"977","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/geminiThoughtSignatureStore.ts":"978","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/genericQuotaFetcher.ts":"979","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/gigachatAuth.ts":"980","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/githubCopilotModels.ts":"981","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/gpt5SamplingGuard.ts":"982","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/grokClearance.ts":"983","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/grokCliQuotaFetcher.ts":"984","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/grokCliQuotaFrame.ts":"985","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/grokQuotaFetcher.ts":"986","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/grokTlsClient.ts":"987","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/hfModelSuggestions.ts":"988","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/httpBackedChatFingerprint.ts":"989","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/hyperagentModels.ts":"990","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/inAppLoginService.ts":"991","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/intentClassifier.ts":"992","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/ipFilter.ts":"993","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/keyGroupAuth.ts":"994","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/kiroExternalIdp.ts":"995","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/kiroModels.ts":"996","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/kiroRegion.ts":"997","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/learnedThinkingCaps.ts":"998","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/lmarenaTlsClient.ts":"999","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/manifestAdapter.ts":"1000","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/mimoThinking.ts":"1001","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/model.ts":"1002","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/modelCapabilities.ts":"1003","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/modelDeprecation.ts":"1004","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/modelFamilyFallback.ts":"1005","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/modelStrip.ts":"1006","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/modelscopePolicy.ts":"1007","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/newApiAggregatorQuotaFetcher.ts":"1008","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/notionStreamParser.ts":"1009","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/notionThreadSessions.ts":"1010","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/notionTlsClient.ts":"1011","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/notionTranscriptBuilder.ts":"1012","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/notionWebFallbackModels.ts":"1013","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/notionWebModels.ts":"1014","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/opencodeOllamaUsage.ts":"1015","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/opencodeQuotaFetcher.ts":"1016","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/opencodeReasoningSanitizer.ts":"1017","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/openrouterFreeWindow.ts":"1018","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/openrouterQuotaFetcher.ts":"1019","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/payloadRules.ts":"1020","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/perplexityTlsClient.ts":"1021","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/pipeline.ts":"1022","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/promptql/jwt.ts":"1023","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/promptqlModels.ts":"1024","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/provider.ts":"1025","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/providerCooldownTracker.ts":"1026","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/providerCostData.ts":"1027","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/providerDefaultRateLimit.ts":"1028","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/providerRequestDefaults.ts":"1029","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/proxyAutoSelector.ts":"1030","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/qoderCli.ts":"1031","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/qoderCliResolve.ts":"1032","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/quotaFetchThrottle.ts":"1033","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/quotaMonitor.ts":"1034","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/quotaPreflight.ts":"1035","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/quotaResetParsing.ts":"1036","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/quotaTextCooldowns.ts":"1037","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/quotaTrackersBatch.ts":"1038","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/qwenThinking.ts":"1039","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/rateLimitManager/admission.ts":"1040","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/rateLimitManager/headers.ts":"1041","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/rateLimitManager.ts":"1042","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/rateLimitSemaphore.ts":"1043","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/raycast.ts":"1044","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/reasoningCache.ts":"1045","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/reasoningTokenBuffer.ts":"1046","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/refreshSerializer.ts":"1047","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/requestDedup.ts":"1048","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/responseModelEcho.ts":"1049","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/responsesInputSanitizer.ts":"1050","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/retryAfterJson.ts":"1051","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/roleNormalizer.ts":"1052","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/rollingRpmGate.ts":"1053","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/rotationConfig.ts":"1054","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/searchCache.ts":"1055","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/sessionManager.ts":"1056","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/sessionPool/fingerprintRotator.ts":"1057","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/sessionPool/index.ts":"1058","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/sessionPool/poolRegistry.ts":"1059","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/sessionPool/session.ts":"1060","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/sessionPool/sessionFactory.ts":"1061","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/sessionPool/sessionPool.ts":"1062","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/sessionPool/types.ts":"1063","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/sessionPool/webExecutorWrapper.ts":"1064","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/signatureCache.ts":"1065","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/slidingWindowLimiter.ts":"1066","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/specificityDetector.ts":"1067","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/specificityRules.ts":"1068","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/specificityTypes.ts":"1069","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/streamRecovery.ts":"1070","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/systemPrompt.ts":"1071","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/systemTransforms.ts":"1072","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/targetRequestSanitizer.ts":"1073","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/taskAwareRouter.ts":"1074","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/taskAwareRouting.ts":"1075","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/thinkingBudget.ts":"1076","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/tierConfig.ts":"1077","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/tierResolver.ts":"1078","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/tierTypes.ts":"1079","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/tlsClientDownloadDir.ts":"1080","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/tlsClientProxy.ts":"1081","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/tokenExtractionConfig.ts":"1082","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/tokenLimitCounter.ts":"1083","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/tokenRefresh/casGuard.ts":"1084","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/tokenRefresh/circuitBreaker.ts":"1085","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/tokenRefresh/providers/claudeOAuth.ts":"1086","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/tokenRefresh/providers/cline.ts":"1087","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/tokenRefresh/providers/codebuddyCn.ts":"1088","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/tokenRefresh/providers/codex.ts":"1089","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/tokenRefresh/providers/copilot.ts":"1090","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/tokenRefresh/providers/github.ts":"1091","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/tokenRefresh/providers/gitlabDuo.ts":"1092","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/tokenRefresh/providers/google.ts":"1093","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/tokenRefresh/providers/kimiCoding.ts":"1094","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/tokenRefresh/providers/kiro.ts":"1095","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/tokenRefresh/providers/qoder.ts":"1096","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/tokenRefresh/providers/windsurf.ts":"1097","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/tokenRefresh/rotationMap.ts":"1098","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/tokenRefresh/shared.ts":"1099","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/tokenRefresh.ts":"1100","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/toolLatencyTracker.ts":"1101","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/toolLimitDetector.ts":"1102","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/toolSchemaSanitizer.ts":"1103","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/usage/adobeFirefly.ts":"1104","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/usage/antigravity.ts":"1105","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/usage/antigravityWeeklyQuota.ts":"1106","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/usage/bailian.ts":"1107","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/usage/claude.ts":"1108","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/usage/codebuddy-cn.ts":"1109","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/usage/codex.ts":"1110","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/usage/crof.ts":"1111","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/usage/cursor.ts":"1112","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/usage/deepseek.ts":"1113","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/usage/firecrawl.ts":"1114","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/usage/github.ts":"1115","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/usage/glm.ts":"1116","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/usage/grokCli.ts":"1117","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/usage/hyperagent.ts":"1118","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/usage/kimi.ts":"1119","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/usage/kiro.ts":"1120","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/usage/minimax.ts":"1121","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/usage/nanogpt.ts":"1122","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/usage/opencode.ts":"1123","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/usage/openrouter.ts":"1124","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/usage/promptql.ts":"1125","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/usage/qoder.ts":"1126","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/usage/quota.ts":"1127","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/usage/scalars.ts":"1128","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/usage/vertex.ts":"1129","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/usage/xai.ts":"1130","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/usage/xaiOauth.ts":"1131","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/usage/xiaomi-mimo.ts":"1132","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/usage.ts":"1133","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/v0QuotaFetcher.ts":"1134","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/volumeDetector.ts":"1135","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/wafRateLimit.ts":"1136","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/webFetchInterception.ts":"1137","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/webSearchFallback.ts":"1138","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/webSearchRouting.ts":"1139","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/webSessionPoolHealth.ts":"1140","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/wildcardRouter.ts":"1141","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/workflowFSM.ts":"1142","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/xaiOauthQuotaFetcher.ts":"1143","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/shared/zedAuth.ts":"1144","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/transformer/responsesTransformer.ts":"1145","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/bootstrap.ts":"1146","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/deepseekWebTools.ts":"1147","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/formats.ts":"1148","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/helpers/__tests__/maxTokensHelper.test.ts":"1149","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/helpers/__tests__/schemaCoercion.test.ts":"1150","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/helpers/claudeHelper.ts":"1151","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/helpers/geminiHelper.ts":"1152","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/helpers/geminiToolsSanitizer.ts":"1153","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/helpers/jsonUtil.ts":"1154","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/helpers/maxTokensHelper.ts":"1155","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/helpers/openaiHelper.ts":"1156","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/helpers/responsesApiHelper.ts":"1157","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/helpers/schemaCoercion.ts":"1158","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/helpers/strictSystemHoist.ts":"1159","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/helpers/toolCallHelper.ts":"1160","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/helpers/toolCallShim.ts":"1161","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/image/sizeMapper.ts":"1162","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/index.ts":"1163","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/paramSupport.ts":"1164","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/registry.ts":"1165","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/request/antigravity-to-openai.ts":"1166","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/request/claude-to-gemini.ts":"1167","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/request/claude-to-openai.ts":"1168","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/request/gemini-to-openai.ts":"1169","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/request/openai-responses/additionalTools.ts":"1170","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/request/openai-responses/helpers.ts":"1171","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/request/openai-responses/namespaceFlatten.ts":"1172","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/request/openai-responses/toResponses.ts":"1173","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/request/openai-responses.ts":"1174","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/request/openai-to-claude/sanitizeToolResultId.ts":"1175","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/request/openai-to-claude/thinkingBudget.ts":"1176","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/request/openai-to-claude/toolResultAdjacency.ts":"1177","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/request/openai-to-claude.ts":"1178","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/request/openai-to-cursor.ts":"1179","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/request/openai-to-gemini/helpers.ts":"1180","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/request/openai-to-gemini.ts":"1181","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/request/openai-to-kiro/adaptiveThinking.ts":"1182","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/request/openai-to-kiro/messageHelpers.ts":"1183","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/request/openai-to-kiro.ts":"1184","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/response/claude-to-openai.ts":"1185","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/response/cursor-to-openai.ts":"1186","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/response/gemini-to-claude.ts":"1187","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/response/gemini-to-openai.ts":"1188","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/response/kiro-to-openai.ts":"1189","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/response/openai-responses/eventEmitter.ts":"1190","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/response/openai-responses/pureHelpers.ts":"1191","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/response/openai-responses/requestToolIdentity.ts":"1192","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/response/openai-responses/synthesizeCompletedToolCalls.ts":"1193","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/response/openai-responses/toolSchemas.ts":"1194","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/response/openai-responses.ts":"1195","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/response/openai-to-antigravity.ts":"1196","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/response/openai-to-claude.ts":"1197","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/response/openai-to-gemini-sse.ts":"1198","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/response/openai-to-gemini.ts":"1199","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/response/responsesToolItem.ts":"1200","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/webTools.ts":"1201","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/types.d.ts":"1202","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/agentGoalPolicy.ts":"1203","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/aiSdkCompat.ts":"1204","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/anthropicHost.ts":"1205","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/audioResponse.ts":"1206","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/awsSigV4.ts":"1207","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/bypassHandler.ts":"1208","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/bypassResponse.ts":"1209","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/cacheControlPolicy.ts":"1210","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/ccDiscoveryAliases.ts":"1211","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/claudeCodeMetaRequests.ts":"1212","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/claudeEffortVariants.ts":"1213","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/clinepassEnvelope.ts":"1214","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/comfyuiClient.ts":"1215","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/composerToolCalls.ts":"1216","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/cors.ts":"1217","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/cursorAgentCliVersion.ts":"1218","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/cursorAgentProtobuf/nativeTodoWrite.ts":"1219","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/cursorAgentProtobuf/wire.ts":"1220","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/cursorAgentProtobuf.ts":"1221","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/cursorChecksum.ts":"1222","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/cursorImages.ts":"1223","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/cursorVersionDetector.ts":"1224","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/diagnostics.ts":"1225","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/earlyStreamKeepalive.ts":"1226","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/error.ts":"1227","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/estimateSize.ts":"1228","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/finishReason.ts":"1229","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/flattenToolHistory.ts":"1230","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/functionalGatewayMirrors.ts":"1231","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/headers.ts":"1232","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/heapPressure.ts":"1233","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/jsonSize.ts":"1234","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/jsonToSse.ts":"1235","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/keepaliveThreshold.ts":"1236","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/kieTask.ts":"1237","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/kimiDevice.ts":"1238","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/kiroSanitizer.ts":"1239","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/logger.ts":"1240","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/networkProxy.ts":"1241","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/nextAuthCookie.ts":"1242","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/noThinkingAlias.ts":"1243","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/number.ts":"1244","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/ollamaTransform.ts":"1245","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/openAIStreamChunk.ts":"1246","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/opencodeHeaders.ts":"1247","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/passthroughTailProcessor.ts":"1248","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/progressTracker.ts":"1249","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/providerRequestLogging.ts":"1250","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/proxyDispatcher.ts":"1251","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/proxyDispatcherCache.ts":"1252","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/proxyFallback.ts":"1253","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/proxyFamily.ts":"1254","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/proxyFamilyResolve.ts":"1255","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/proxyFetch.ts":"1256","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/publicCreds.ts":"1257","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/reasoningContentInjector.ts":"1258","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/reasoningFields.ts":"1259","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/reasoningPlaceholder.ts":"1260","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/registeredEffortVariants.ts":"1261","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/requestLogger.ts":"1262","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/resourcePressure.ts":"1263","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/resourcePressurePolicy.ts":"1264","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/resourcePressureSampler.ts":"1265","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/responsesCommentaryDrop.ts":"1266","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/responsesEndpoint.ts":"1267","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/responsesInputNormalization.ts":"1268","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/responsesStatePolicy.ts":"1269","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/responsesStreamHelpers.ts":"1270","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/segmindClient.ts":"1271","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/setupPolyfill.ts":"1272","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/sha3-512.ts":"1273","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/sleep.ts":"1274","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/socksConnectorWithFamily.ts":"1275","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/sseHeartbeat.ts":"1276","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/stream.ts":"1277","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/streamErrorFormat.ts":"1278","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/streamFailureFinalization.ts":"1279","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/streamHandler.ts":"1280","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/streamHelpers.ts":"1281","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/streamPayloadCollector.ts":"1282","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/streamReadiness.ts":"1283","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/streamReadinessPolicy.ts":"1284","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/syncedEffortVariants.ts":"1285","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/textualToolCall.ts":"1286","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/thinkCloseMarker.ts":"1287","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/thinkTagParser.ts":"1288","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/tlsClient.ts":"1289","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/toolCallArguments.ts":"1290","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/toolSources.ts":"1291","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/upstreamErrorPassthrough.ts":"1292","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/upstreamResponseHeaders.ts":"1293","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/urlSanitize.ts":"1294","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/usageTracking.ts":"1295","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/playwright.config.ts":"1296","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/postcss.config.mjs":"1297","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/prettier.config.mjs":"1298","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/public/sw.js":"1299","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/source.config.ts":"1300","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/BootstrapBanner.tsx":"1301","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/HomePageClient.tsx":"1302","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/HomeProviderTopologySection.tsx":"1303","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/KimiSponsorBanner.tsx":"1304","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/TierCoverageWidget.tsx":"1305","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/a2a/page.tsx":"1306","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/acp-agents/page.tsx":"1307","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/activity/ActivityFeedClient.tsx":"1308","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/activity/components/ActivityFeed.tsx":"1309","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/activity/components/ActivityItem.tsx":"1310","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/activity/components/DayHeader.tsx":"1311","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/activity/components/EventTypeFilter.tsx":"1312","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/activity/page.tsx":"1313","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/agent-skills/AgentSkillsPageClient.tsx":"1314","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/agent-skills/components/CoverageBar.tsx":"1315","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/agent-skills/components/McpA2aLinksBar.tsx":"1316","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/agent-skills/components/SkillCard.tsx":"1317","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/agent-skills/components/SkillPreviewPane.tsx":"1318","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/agent-skills/page.tsx":"1319","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/analytics/AutoRoutingAnalyticsTab.tsx":"1320","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/analytics/CacheHealthTab.tsx":"1321","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/analytics/ComboHealthTab.tsx":"1322","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/analytics/CompressionAnalyticsTab.tsx":"1323","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/analytics/ProviderUtilizationTab.tsx":"1324","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/analytics/RouteExplainabilityTab.tsx":"1325","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/analytics/SearchAnalyticsTab.tsx":"1326","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/analytics/combo-health/page.tsx":"1327","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/analytics/components/DiversityScoreCard.tsx":"1328","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/analytics/components/ProviderCharts.tsx":"1329","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/analytics/compression/page.tsx":"1330","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/analytics/evals/page.tsx":"1331","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/analytics/loading.tsx":"1332","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/analytics/page.tsx":"1333","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/analytics/search/page.tsx":"1334","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/analytics/utilization/page.tsx":"1335","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/api-endpoints/page.tsx":"1336","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/api-manager/ApiManagerPageClient.tsx":"1337","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/api-manager/apiManagerPageStorage.ts":"1338","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/api-manager/apiManagerPageUtils.ts":"1339","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/api-manager/apiManagerScopes.ts":"1340","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/api-manager/components/ApiKeyFilterBar.tsx":"1341","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/api-manager/components/ApiKeyFilterChip.tsx":"1342","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/api-manager/components/BypassProviderQuotaToggle.tsx":"1343","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/api-manager/components/ChaosModeAccessToggle.tsx":"1344","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/api-manager/components/UsageLimitSettings.tsx":"1345","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/api-manager/page.tsx":"1346","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/audit/A2aAuditTab.tsx":"1347","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/audit/ComplianceTab.tsx":"1348","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/audit/McpAuditTab.tsx":"1349","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/audit/a2a/page.tsx":"1350","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/audit/mcp/page.tsx":"1351","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/audit/page.tsx":"1352","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/auto-combo/page.tsx":"1353","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/batch/BatchDetailModal.tsx":"1354","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/batch/BatchListTab.tsx":"1355","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/batch/FileDetailModal.tsx":"1356","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/batch/FilesListTab.tsx":"1357","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/batch/batch-utils.ts":"1358","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/batch/components/BatchConceptCard.tsx":"1359","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/batch/components/ExpirationBadge.tsx":"1360","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/batch/components/FilesConceptCard.tsx":"1361","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/batch/components/NewBatchWizard.tsx":"1362","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/batch/components/ProgressBarBicolor.tsx":"1363","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/batch/components/UploadFileModal.tsx":"1364","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/batch/components/useBatchActions.ts":"1365","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/batch/components/wizard/CostEstimateStep.tsx":"1366","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/batch/components/wizard/CsvMappingStep.tsx":"1367","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/batch/components/wizard/DestinationStep.tsx":"1368","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/batch/components/wizard/InputStep.tsx":"1369","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/batch/components/wizard/JsonlValidationStep.tsx":"1370","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/batch/files/page.tsx":"1371","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/batch/page.tsx":"1372","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/cache/__tests__/CachePage.test.tsx":"1373","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/cache/__tests__/CachePerformance.test.tsx":"1374","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/cache/__tests__/CacheTrends.test.tsx":"1375","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/cache/__tests__/IdempotencyLayer.test.tsx":"1376","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/cache/__tests__/MemoryCards.test.tsx":"1377","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/cache/components/CacheEntriesTab.tsx":"1378","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/cache/components/CachePerformance.tsx":"1379","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/cache/components/CacheTrends.tsx":"1380","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/cache/components/IdempotencyLayer.tsx":"1381","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/cache/components/MemoryCards.tsx":"1382","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/cache/components/ReasoningCacheTab.tsx":"1383","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/cache/media/MediaPageClient.tsx":"1384","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/cache/media/mediaProviderModels.ts":"1385","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/cache/media/page.tsx":"1386","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/cache/page.tsx":"1387","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/changelog/components/ChangelogViewer.tsx":"1388","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/changelog/components/NewsViewer.tsx":"1389","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/changelog/page.tsx":"1390","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/chaos/ChaosConfigPageClient.tsx":"1391","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/chaos/chaosPageTypes.ts":"1392","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/chaos/components/ChaosBasicSettingsFields.tsx":"1393","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/chaos/components/ChaosConfigActionsBar.tsx":"1394","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/chaos/components/ChaosModeSelector.tsx":"1395","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/chaos/components/ChaosProviderOverridesPanel.tsx":"1396","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/chaos/components/ChaosStatusMessage.tsx":"1397","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/chaos/components/ChaosTestResultsPanel.tsx":"1398","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/chaos/page.tsx":"1399","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/chaos/useChaosConfigData.ts":"1400","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/chaos/useChaosConfigPage.ts":"1401","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/chaos/useChaosConfigPersistence.ts":"1402","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/chaos/useChaosTestRun.ts":"1403","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/cli-agents/CliAgentsPageClient.tsx":"1404","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/cli-agents/[id]/page.tsx":"1405","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/cli-agents/page.tsx":"1406","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/cli-code/CliCodePageClient.tsx":"1407","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/cli-code/[id]/page.tsx":"1408","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/cli-code/components/AntigravityToolCard.tsx":"1409","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/cli-code/components/ClaudeCcDiscoveryInfoButton.tsx":"1410","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/cli-code/components/ClaudeClassifierCompatToggle.tsx":"1411","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/cli-code/components/ClaudeGatewayOnboardingBlock.tsx":"1412","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/cli-code/components/ClaudeToolCard.tsx":"1413","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/cli-code/components/CliProfileAutoSyncToggles.tsx":"1414","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/cli-code/components/CliStatusBadge.tsx":"1415","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/cli-code/components/ClineToolCard.tsx":"1416","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/cli-code/components/CliproxyapiToolCard.tsx":"1417","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/cli-code/components/CodexToolCard.tsx":"1418","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/cli-code/components/CopilotToolCard.tsx":"1419","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/cli-code/components/CustomCliCard.tsx":"1420","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/cli-code/components/DefaultToolCard.tsx":"1421","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/cli-code/components/DroidToolCard.tsx":"1422","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/cli-code/components/HermesAgentToolCard.tsx":"1423","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/cli-code/components/KiloToolCard.tsx":"1424","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/cli-code/components/OpenClawToolCard.tsx":"1425","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/cli-code/components/ToolDetailClient.tsx":"1426","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/cli-code/components/codexButtonState.ts":"1427","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/cli-code/components/codexToolOptions.ts":"1428","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/cli-code/components/customCliConfig.ts":"1429","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/cli-code/components/index.tsx":"1430","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/cli-code/page.tsx":"1431","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/cloud-agents/page.tsx":"1432","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/combos/AutoComboCatalog.tsx":"1433","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/combos/BuilderIntelligentStep.tsx":"1434","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/combos/ComboControlCenterClient.tsx":"1435","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/combos/FieldLabelWithHelp.tsx":"1436","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/combos/IntelligentComboPanel.tsx":"1437","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/combos/KimiComboPresetCard.tsx":"1438","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/combos/ReasoningTokenBufferToggle.tsx":"1439","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/combos/ResponseValidationEditor.tsx":"1440","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/combos/WeightTotalBar.tsx":"1441","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/combos/[id]/page.tsx":"1442","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/combos/error.tsx":"1443","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/combos/kimiComboPreset.ts":"1444","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/combos/live/ComboLiveStudio.tsx":"1445","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/combos/live/comboFlowModel.ts":"1446","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/combos/live/fleetAggregation.ts":"1447","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/combos/live/nodes/ProviderCascadeNode.tsx":"1448","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/combos/live/nodes/RequestNode.tsx":"1449","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/combos/live/nodes/ResponseNode.tsx":"1450","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/combos/live/nodes/StrategyNode.tsx":"1451","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/combos/live/page.tsx":"1452","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/combos/loading.tsx":"1453","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/combos/page.tsx":"1454","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/combos/parts.ts":"1455","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/combos/playground/ComboPlaygroundClient.tsx":"1456","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/combos/playground/page.tsx":"1457","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/combos/useComboProxyAssignments.ts":"1458","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/components/BadgeToast.tsx":"1459","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/compression/exclusions/ExclusionsPanel.tsx":"1460","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/compression/exclusions/page.tsx":"1461","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/compression/live/page.tsx":"1462","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/compression/page.tsx":"1463","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/compression/studio/CompareView.tsx":"1464","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/compression/studio/CompressionAnnotation.tsx":"1465","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/compression/studio/CompressionCockpit.tsx":"1466","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/compression/studio/DiffPane.tsx":"1467","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/compression/studio/EncoderComparisonTable.tsx":"1468","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/compression/studio/PlayView.tsx":"1469","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/compression/studio/PlaygroundInput.tsx":"1470","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/compression/studio/QuantumLockBadge.tsx":"1471","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/compression/studio/RiskGateBadge.tsx":"1472","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/compression/studio/SaliencyHeatmap.tsx":"1473","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/compression/studio/WaterfallInspector.tsx":"1474","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/compression/studio/compressionFlowModel.ts":"1475","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/compression/studio/nodes/EngineNode.tsx":"1476","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/compression/studio/nodes/IoNode.tsx":"1477","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/compression/studio/page.tsx":"1478","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/compression/studio/useCompressionReplay.ts":"1479","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/context/CompressionStylesTile.tsx":"1480","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/context/aggressive/page.tsx":"1481","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/context/caveman/CavemanContextPageClient.tsx":"1482","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/context/caveman/page.tsx":"1483","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/context/ccr/page.tsx":"1484","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/context/combos/CompressionCombosPageClient.tsx":"1485","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/context/combos/CompressionHub.tsx":"1486","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/context/combos/page.tsx":"1487","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/context/headroom/page.tsx":"1488","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/context/lite/page.tsx":"1489","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/context/llmlingua/page.tsx":"1490","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/context/omniglyph/OmniglyphContextPageClient.tsx":"1491","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/context/omniglyph/page.tsx":"1492","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/context/omniglyph/sampleData.ts":"1493","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/context/page.tsx":"1494","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/context/rtk/RtkContextPageClient.tsx":"1495","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/context/rtk/RtkLearnDiscoverCard.tsx":"1496","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/context/rtk/RtkTomlImportCard.tsx":"1497","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/context/rtk/page.tsx":"1498","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/context/session-dedup/page.tsx":"1499","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/context/settings/CompressionPanel.tsx":"1500","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/context/settings/EngineGuidanceDetail.tsx":"1501","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/context/settings/adaptiveTargetLabel.ts":"1502","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/context/settings/page.tsx":"1503","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/context/ultra/page.tsx":"1504","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/costs/CostOverviewTab.tsx":"1505","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/costs/budget/page.tsx":"1506","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/costs/components/ApiKeyUsageLimitCard.tsx":"1507","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/costs/components/CostCharts.tsx":"1508","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/costs/components/MetricCard.tsx":"1509","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/costs/components/TopListCard.tsx":"1510","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/costs/costExplorerParams.ts":"1511","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/costs/costExplorerUtils.ts":"1512","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/costs/page.tsx":"1513","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/costs/pricing/page.tsx":"1514","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/costs/quota-share/QuotaSharePageClient.tsx":"1515","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/costs/quota-share/components/AccountQuotaRow.tsx":"1516","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/costs/quota-share/components/AllocationTable.tsx":"1517","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/costs/quota-share/components/BurnRateChart.tsx":"1518","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/costs/quota-share/components/BurnRateChartInner.tsx":"1519","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/costs/quota-share/components/CreatePoolModal.tsx":"1520","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/costs/quota-share/components/DimensionBar.tsx":"1521","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/costs/quota-share/components/PoolCard.tsx":"1522","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/costs/quota-share/components/PoolWizard.tsx":"1523","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/costs/quota-share/components/QuotaConceptCard.tsx":"1524","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/costs/quota-share/components/QuotaEndpointsCard.tsx":"1525","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/costs/quota-share/components/StackedAllocationBar.tsx":"1526","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/costs/quota-share/components/UsageLogCard.tsx":"1527","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/costs/quota-share/hooks/useLocalStoragePoolMigration.ts":"1528","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/costs/quota-share/hooks/usePoolUsage.ts":"1529","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/costs/quota-share/hooks/usePools.ts":"1530","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/costs/quota-share/hooks/usePoolsUsageAggregate.ts":"1531","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/costs/quota-share/page.tsx":"1532","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/costs/useApiKeyUsageLimits.ts":"1533","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/discovery/DiscoveryPageClient.tsx":"1534","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/discovery/__tests__/DiscoveryPageClient.test.tsx":"1535","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/discovery/page.tsx":"1536","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/endpoint/ApiEndpointsTab.tsx":"1537","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/endpoint/EndpointPageClient.tsx":"1538","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/endpoint/VscodeTokenAliasCard.tsx":"1539","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/endpoint/__tests__/ApiEndpointsTab.test.tsx":"1540","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/endpoint/__tests__/EndpointPageClient.test.tsx":"1541","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/endpoint/components/A2ADashboard.tsx":"1542","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/endpoint/components/MCPDashboard.tsx":"1543","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/endpoint/components/NotionSourceCard.tsx":"1544","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/endpoint/components/ObsidianSourceCard.tsx":"1545","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/endpoint/page.tsx":"1546","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/free-provider-rankings/page.tsx":"1547","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/free-tiers/page.tsx":"1548","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/gamification/admin/page.tsx":"1549","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/health/ProviderHealthAutopilotCard.tsx":"1550","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/health/ProviderHealthMatrixCard.tsx":"1551","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/health/TelemetryCard.tsx":"1552","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/health/page.tsx":"1553","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/homeAppearance.ts":"1554","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/kimiSponsorBannerGate.ts":"1555","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/leaderboard/page.tsx":"1556","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/limits/page.tsx":"1557","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/logs/CompressionLogTab.tsx":"1558","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/logs/activity/page.tsx":"1559","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/logs/console/page.tsx":"1560","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/logs/page.tsx":"1561","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/logs/proxy/page.tsx":"1562","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/logs/timeline/page.tsx":"1563","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/mcp/page.tsx":"1564","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/media-providers/[kind]/[id]/MediaProviderPageClient.tsx":"1565","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.tsx":"1566","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/media-providers/[kind]/page.tsx":"1567","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/media-providers/components/EmbeddingExampleCard.tsx":"1568","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/media-providers/components/ImageExampleCard.tsx":"1569","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/media-providers/components/LlmChatCard.tsx":"1570","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/media-providers/components/MediaProviderHeader.tsx":"1571","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/media-providers/components/MediaProviderKindNav.tsx":"1572","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/media-providers/components/MusicExampleCard.tsx":"1573","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/media-providers/components/OcrExampleCard.tsx":"1574","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/media-providers/components/PlaygroundCard.tsx":"1575","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/media-providers/components/ServiceKindTabs.tsx":"1576","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/media-providers/components/SttExampleCard.tsx":"1577","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/media-providers/components/TtsExampleCard.tsx":"1578","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/media-providers/components/VideoExampleCard.tsx":"1579","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/media-providers/components/WebFetchExampleCard.tsx":"1580","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/media-providers/components/WebSearchExampleCard.tsx":"1581","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/media-providers/components/mediaKinds.ts":"1582","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/media-providers/page.tsx":"1583","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/memory/components/EditMemoryModal.tsx":"1584","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/memory/components/EmbeddingSourceSelector.tsx":"1585","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/memory/components/MemoryConceptCard.tsx":"1586","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/memory/components/MemoryEngineStatus.tsx":"1587","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/memory/components/QdrantConfigCard.tsx":"1588","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/memory/components/RerankConfigCard.tsx":"1589","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/memory/components/RetrievePreview.tsx":"1590","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/memory/components/tabs/EngineTab.tsx":"1591","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/memory/components/tabs/MemoriesTab.tsx":"1592","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/memory/components/tabs/PlaygroundTab.tsx":"1593","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/memory/hooks/useEngineStatus.ts":"1594","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/memory/hooks/useMemorySettings.ts":"1595","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/memory/page.tsx":"1596","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/omni-skills/OmniSkillsPageClient.tsx":"1597","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/omni-skills/components/OmniExecutionsTab.tsx":"1598","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/omni-skills/components/OmniMarketplaceTab.tsx":"1599","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/omni-skills/components/OmniSandboxTab.tsx":"1600","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/omni-skills/components/OmniSkillCard.tsx":"1601","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/omni-skills/components/OmniSkillsList.tsx":"1602","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/omni-skills/components/SkillInspectorPane.tsx":"1603","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/omni-skills/page.tsx":"1604","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/onboarding/components/TierFlowDiagram.tsx":"1605","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/onboarding/page.tsx":"1606","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/onboarding/steps/TierTour.tsx":"1607","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/page.tsx":"1608","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/playground/PlaygroundStudio.tsx":"1609","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/playground/components/CompareColumn.tsx":"1610","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/playground/components/ExportCodeModal.tsx":"1611","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/playground/components/ImprovePromptButton.tsx":"1612","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/playground/components/MarkdownMessage.tsx":"1613","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/playground/components/ParamSliders.tsx":"1614","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/playground/components/PresetPicker.tsx":"1615","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/playground/components/ProviderMetrics.tsx":"1616","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/playground/components/ReasoningControls.tsx":"1617","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/playground/components/StructuredOutputEditor.tsx":"1618","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/playground/components/StudioConfigPane.tsx":"1619","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/playground/components/StudioTopBar.tsx":"1620","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/playground/components/TokenCostCounter.tsx":"1621","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/playground/components/ToolsBuilder.tsx":"1622","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/playground/components/modelSelection.ts":"1623","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/playground/components/reasoningControlUtils.ts":"1624","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/playground/components/tabs/ApiTab.tsx":"1625","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/playground/components/tabs/BuildTab.tsx":"1626","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/playground/components/tabs/ChatTab.tsx":"1627","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/playground/components/tabs/CompareTab.tsx":"1628","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/playground/components/tabs/build/BuildWizard.tsx":"1629","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/playground/hooks/useImprovePrompt.ts":"1630","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/playground/hooks/usePresets.ts":"1631","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/playground/hooks/useStreamMetrics.ts":"1632","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/playground/hooks/useStructuredOutput.ts":"1633","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/playground/hooks/useToolsBuilder.ts":"1634","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/playground/page.tsx":"1635","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/plugins/[name]/config/page.tsx":"1636","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/plugins/page.tsx":"1637","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/profile/page.tsx":"1638","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/provider-stats/page.tsx":"1639","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/ProviderDetailPageClient.tsx":"1640","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/__tests__/ProviderDetailPageClient.test.tsx":"1641","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/__tests__/connectionRowAutoSyncToggle.test.tsx":"1642","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/__tests__/modelVisibilityToolbarActiveCount.test.tsx":"1643","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/__tests__/passthroughModelRowDisplayName.test.tsx":"1644","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/__tests__/passthroughTestHelpers.test.tsx":"1645","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/__tests__/phase1e.test.tsx":"1646","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/__tests__/phase1f.test.tsx":"1647","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/__tests__/providerModelsSectionVisibilityKey.test.tsx":"1648","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/__tests__/useConnectionAutoSync.test.tsx":"1649","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/__tests__/useModelImportHandlers.test.tsx":"1650","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/__tests__/useModelVisibilityHandlers.test.tsx":"1651","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/codexPlanLabel.ts":"1652","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/AdaptaTutorialModal.tsx":"1653","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/BatchTestResultsModal.tsx":"1654","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/CompatibleModelsSection.tsx":"1655","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/CompatibleNodeCard.tsx":"1656","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/ConnectionRow.tsx":"1657","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/ConnectionsHeaderToolbar.tsx":"1658","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/ConnectionsListPanel.tsx":"1659","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/CoolingConnectionsPanel.tsx":"1660","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/CustomModelsSection.tsx":"1661","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/EmptyConnectionsPlaceholder.tsx":"1662","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/ExternalLinkModal.tsx":"1663","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/ImportProgressModal.tsx":"1664","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/KimiCodeAuthMethodModal.tsx":"1665","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/ModelCompatPopover.tsx":"1666","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/ModelRow.tsx":"1667","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/NoAuthProviderControls.tsx":"1668","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/OpenRouterPresetInput.tsx":"1669","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/PassthroughModelRow.tsx":"1670","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/PassthroughModelsSection.tsx":"1671","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/ProviderCcAliasSection.tsx":"1672","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/ProviderExtraPanels.tsx":"1673","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/ProviderInterceptionSection.tsx":"1674","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/ProviderModalsPanel.tsx":"1675","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/ProviderModelsSection.tsx":"1676","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/ProviderPageHeader.tsx":"1677","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/ProviderParamFilterSection.tsx":"1678","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/ProviderPlaygroundPanel.tsx":"1679","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/ProviderQuotaVisibilityToggle.tsx":"1680","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/SearchProviderCard.tsx":"1681","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/SiliconFlowEndpointModal.tsx":"1682","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/UpstreamProxyCard.tsx":"1683","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/WebSessionCredentialGuide.tsx":"1684","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/ZedImportCard.tsx":"1685","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/__tests__/phase1d.test.tsx":"1686","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/connectionRowHelpers.ts":"1687","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/modals/AddApiKeyModal.tsx":"1688","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/modals/AgentrouterConsoleFields.tsx":"1689","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/modals/AlibabaProviderRegionField.tsx":"1690","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/modals/CcCompatibleRequestDefaultsFields.tsx":"1691","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/modals/EditCompatibleNodeModal.tsx":"1692","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/modals/EditConnectionModal.tsx":"1693","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/modals/GlmTeamQuotaFields.tsx":"1694","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/modals/ImportClaudeAuthModal.tsx":"1695","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/modals/ImportCodexAuthModal.tsx":"1696","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/modals/ImportGrokCliAuthModal.tsx":"1697","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/modals/NewApiAggregatorFields.tsx":"1698","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/modals/ProviderTierField.tsx":"1699","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/modals/QuotaScrapingFields.tsx":"1700","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/modals/__tests__/authImportModals.test.tsx":"1701","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/modals/__tests__/connModals.test.tsx":"1702","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/modals/__tests__/editCompatibleNodeModal.test.tsx":"1703","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/modals/ccCompatibleRequestDefaults.ts":"1704","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/modals/commandCodeAuthPhase.ts":"1705","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/modals/computeConnectionDefaultName.ts":"1706","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/modals/connectionProviderSpecificData.ts":"1707","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/modals/glmTeamQuotaProviderData.ts":"1708","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/modals/m365Tier.ts":"1709","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/modals/providerTierFieldApi.ts":"1710","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/passthroughAlias.ts":"1711","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/connectionsSearchFilter.ts":"1712","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/hooks/modelImportWarning.ts":"1713","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/hooks/useApiKeySave.ts":"1714","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/hooks/useAuthFileHandlers.ts":"1715","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/hooks/useCommandCodeAuth.ts":"1716","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/hooks/useConnectionAutoSync.ts":"1717","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/hooks/useConnectionDeleteConfirm.ts":"1718","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/hooks/useConnectionGate.ts":"1719","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/hooks/useExternalLinkFlow.ts":"1720","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/hooks/useModelCompatState.ts":"1721","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/hooks/useModelImportHandlers.ts":"1722","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/hooks/useModelVisibilityHandlers.ts":"1723","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/hooks/useProviderConnections.ts":"1724","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/hooks/useProviderModels.ts":"1725","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/hooks/useProviderNodeActions.ts":"1726","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/hooks/useProviderQuotaVisibility.ts":"1727","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/hooks/useProviderSettings.ts":"1728","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/hooks/useReorderByAvailability.ts":"1729","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/page.tsx":"1730","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/providerCredentialText.ts":"1731","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/providerDetailConstants.ts":"1732","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/providerInputParsers.ts":"1733","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/providerPageHelpers.ts":"1734","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/webSessionCredentials.ts":"1735","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/components/AddCompatibleProviderModal.tsx":"1736","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/components/CategoryDot.tsx":"1737","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/components/CodexCliGuideModal.tsx":"1738","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/components/HighlightableProviderCard.tsx":"1739","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/components/ImportProvidersFromFileModal.tsx":"1740","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/components/NoAuthProvidersSection.tsx":"1741","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/components/ProviderCard.tsx":"1742","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/components/ProviderCountBadge.tsx":"1743","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/components/ProviderDisplayModeControl.tsx":"1744","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/components/ProviderSummaryCard.tsx":"1745","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/components/RiskNoticeModal.tsx":"1746","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/components/__tests__/providerCardAudioBadge.test.tsx":"1747","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/components/onboarding/ProviderOnboardingWizard.tsx":"1748","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/components/onboarding/providerOnboardingApi.ts":"1749","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/components/onboarding/providerOnboardingCatalog.ts":"1750","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/components/onboarding/providerOnboardingHref.ts":"1751","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/components/parseProviderImportFile.ts":"1752","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/components/useImportProvidersFromFile.ts":"1753","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/context/openRouterProviderStatsContext.tsx":"1754","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/error.tsx":"1755","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/featuredProviders.ts":"1756","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/hooks/useApiKey.ts":"1757","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/hooks/useProviderModels.ts":"1758","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/hooks/useProviderUrlFilters.ts":"1759","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/hooks/useRiskAcknowledged.ts":"1760","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/hooks/useSyncedModelsByProvider.ts":"1761","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/loading.tsx":"1762","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/new/page.tsx":"1763","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/page.tsx":"1764","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/providerCompactMode.ts":"1765","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/providerPageHighlightUtils.ts":"1766","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/providerPageStorage.ts":"1767","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/providerPageUtils.ts":"1768","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/services/[name]/embed/[[...path]]/route.ts":"1769","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/services/components/ApiKeyField.tsx":"1770","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/services/components/AutoRestartAdoptedToggle.tsx":"1771","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/services/components/AutoStartToggle.tsx":"1772","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/services/components/CliproxyConnectionPanel.tsx":"1773","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/services/components/CliproxyModelMappingEditor.tsx":"1774","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/services/components/CliproxyProviderExposureCard.tsx":"1775","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/services/components/DarioAccountPanel.tsx":"1776","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/services/components/NinerouterEmbedFrame.tsx":"1777","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/services/components/NinerouterInstallWizard.tsx":"1778","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/services/components/NinerouterModelList.tsx":"1779","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/services/components/NinerouterProviderExposureCard.tsx":"1780","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/services/components/ServiceLifecycleButtons.tsx":"1781","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/services/components/ServiceLogsPanel.tsx":"1782","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/services/components/ServiceStatusCard.tsx":"1783","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/services/hooks/useServiceLogs.ts":"1784","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/services/hooks/useServiceStatus.ts":"1785","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/services/page.tsx":"1786","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/services/tabs/BifrostServiceTab.tsx":"1787","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/services/tabs/CliproxyServiceTab.tsx":"1788","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/services/tabs/DarioServiceTab.tsx":"1789","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/services/tabs/MuxServiceTab.tsx":"1790","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/services/tabs/NinerouterServiceTab.tsx":"1791","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/utils/buildCurl.ts":"1792","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/quota/page.tsx":"1793","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/radar/page.tsx":"1794","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/radar/setup/page.tsx":"1795","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/relay/RelayProxyClient.tsx":"1796","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/relay/page.tsx":"1797","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/runtime/RuntimePageClient.tsx":"1798","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/runtime/components/ModelCooldownsCard.tsx":"1799","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/runtime/page.tsx":"1800","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/search-tools/SearchToolsClient.tsx":"1801","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/search-tools/components/ProviderCatalog.tsx":"1802","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/search-tools/components/ProviderComparison.tsx":"1803","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/search-tools/components/RerankPanel.tsx":"1804","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/search-tools/components/ResultsPanel.tsx":"1805","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/search-tools/components/ScrapeResult.tsx":"1806","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/search-tools/components/SearchConceptCard.tsx":"1807","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/search-tools/components/SearchForm.tsx":"1808","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/search-tools/components/SearchHistory.tsx":"1809","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/search-tools/components/SearchToolsConfigPane.tsx":"1810","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/search-tools/components/SearchToolsTopBar.tsx":"1811","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/search-tools/components/tabs/CompareTab.tsx":"1812","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/search-tools/components/tabs/ScrapeTab.tsx":"1813","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/search-tools/components/tabs/SearchTab.tsx":"1814","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/search-tools/hooks/useScrapeFetch.ts":"1815","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/search-tools/page.tsx":"1816","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/access-tokens/page.tsx":"1817","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/advanced/page.tsx":"1818","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/ai/page.tsx":"1819","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/appearance/page.tsx":"1820","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/cache/page.tsx":"1821","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/AccessTokensTab.tsx":"1822","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/AccountEmailVisibilitySetting.tsx":"1823","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/AppearanceTab.tsx":"1824","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/AuthzSection.tsx":"1825","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/AutoDisableCard.tsx":"1826","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/BackgroundDegradationTab.tsx":"1827","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/CacheSettingsTab.tsx":"1828","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/CacheStatsCard.tsx":"1829","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/ClaudeFastModeTab.tsx":"1830","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/CliproxyapiSettingsTab.tsx":"1831","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/CodexAutoPingTab.tsx":"1832","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/CodexFastTierTab.tsx":"1833","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/ComboDefaultsTab.tsx":"1834","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/ComplianceTab.tsx":"1835","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/CompressionSettingsTab.tsx":"1836","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/CompressionTokenSaverCard.tsx":"1837","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/DatabaseBackupRetentionCard.tsx":"1838","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/DebugModeCard.tsx":"1839","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/FallbackChainsEditor.tsx":"1840","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/FeatureFlagCard.tsx":"1841","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/FeatureFlagsGrid.tsx":"1842","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/FusionDefaultsFields.tsx":"1843","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/IPFilterSection.tsx":"1844","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/LogToolSourcesCard.tsx":"1845","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/MemorySkillsTab.tsx":"1846","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/MitmProxyTab.tsx":"1847","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/ModelAliasesTab.tsx":"1848","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/ModelAliasesUnified.tsx":"1849","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/ModelCapabilityOverridesTab.tsx":"1850","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/ModelLockoutCard.tsx":"1851","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/ModelsDevSyncTab.tsx":"1852","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/OneproxyTab.tsx":"1853","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/PayloadRulesTab.tsx":"1854","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/PoliciesPanel.tsx":"1855","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/PricingTab.tsx":"1856","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/ProviderAccountRoutingCard.tsx":"1857","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/ProxyBatchActions.tsx":"1858","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/ProxyBulkImportModal.tsx":"1859","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/ProxyCheckboxCell.tsx":"1860","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/ProxyHealthCell.tsx":"1861","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/ProxyRegistryManager.tsx":"1862","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/ProxyStatusBadge.tsx":"1863","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/ProxyTab.tsx":"1864","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/RedisLauncherPanel.tsx":"1865","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/RequestLimitsTab.tsx":"1866","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/ResilienceFields.tsx":"1867","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/ResilienceTab.tsx":"1868","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/ResponsesStatePolicyTab.tsx":"1869","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/RoutingStrategyCard.tsx":"1870","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/RoutingTab.tsx":"1871","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/SecurityTab.tsx":"1872","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/SessionInfoCard.tsx":"1873","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/SidebarTab.tsx":"1874","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/SystemPromptTab.tsx":"1875","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/SystemStorageTab.tsx":"1876","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/ThinkingBudgetTab.tsx":"1877","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/UsageTokenBufferTab.tsx":"1878","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/VisionBridgeSettingsTab.tsx":"1879","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/parseBulkProxyImport.ts":"1880","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/proxy/CloudflareRelayModal.tsx":"1881","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/proxy/DenoRelayModal.tsx":"1882","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/proxy/DocumentationTab.tsx":"1883","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/proxy/FreePoolTab.tsx":"1884","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/proxy/FreeProxyRow.tsx":"1885","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/proxy/GlobalConfigTab.tsx":"1886","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/proxy/ProxyPoolTab.tsx":"1887","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/proxy/SourceToggleBar.tsx":"1888","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/proxy/SubscriptionTab.tsx":"1889","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/proxy/VercelRelayModal.tsx":"1890","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/proxyRegistryTypes.ts":"1891","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/proxyStrategyOptions.ts":"1892","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/systemTransformsHermesDefaults.ts":"1893","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/useProxyBatchOperations.ts":"1894","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/useProxyBulkImport.ts":"1895","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/useProxyPoolModal.ts":"1896","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/error.tsx":"1897","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/feature-flags/page.tsx":"1898","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/general/page.tsx":"1899","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/loading.tsx":"1900","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/page.tsx":"1901","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/pricing/page.tsx":"1902","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/resilience/page.tsx":"1903","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/routing/page.tsx":"1904","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/security/page.tsx":"1905","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/sidebar/page.tsx":"1906","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/system/1proxy/page.tsx":"1907","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/system/mitm-proxy/error.tsx":"1908","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/system/mitm-proxy/page.tsx":"1909","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/system/proxy/page.tsx":"1910","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tokens/page.tsx":"1911","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/agent-bridge/AgentBridgePageClient.tsx":"1912","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/agent-bridge/components/AgentBridgeMaintenanceCard.tsx":"1913","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/agent-bridge/components/AgentBridgeServerCard.tsx":"1914","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/agent-bridge/components/AgentCard.tsx":"1915","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/agent-bridge/components/AgentList.tsx":"1916","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/agent-bridge/components/BypassListEditor.tsx":"1917","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/agent-bridge/components/EmptyStateNoProviders.tsx":"1918","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/agent-bridge/components/ModelMappingTable.tsx":"1919","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/agent-bridge/components/ModelSelectorModal.tsx":"1920","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/agent-bridge/components/RiskNoticeBanner.tsx":"1921","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/agent-bridge/components/SetupWizard.tsx":"1922","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/agent-bridge/components/UpstreamCaField.tsx":"1923","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/agent-bridge/components/shared/AgentIcon.tsx":"1924","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/agent-bridge/components/shared/CertStatusIcon.tsx":"1925","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/agent-bridge/components/shared/DnsStatusBadge.tsx":"1926","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/agent-bridge/hooks/useAgentBridgeState.ts":"1927","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/agent-bridge/hooks/useMitmSudoPrompt.tsx":"1928","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/agent-bridge/normalizeState.ts":"1929","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/agent-bridge/page.tsx":"1930","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/traffic-inspector/TrafficInspectorPageClient.tsx":"1931","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/traffic-inspector/components/CaptureModesToolbar.tsx":"1932","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/traffic-inspector/components/CustomHostsManager.tsx":"1933","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/traffic-inspector/components/DetailsPanel.tsx":"1934","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/traffic-inspector/components/HttpProxySnippetCard.tsx":"1935","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/traffic-inspector/components/RequestRow.tsx":"1936","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/traffic-inspector/components/RequestStreamingList.tsx":"1937","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/traffic-inspector/components/TopBarControls.tsx":"1938","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/traffic-inspector/components/chat/ChatBubble.tsx":"1939","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/traffic-inspector/components/chat/MessageContent.tsx":"1940","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/traffic-inspector/components/chat/ToolCallBlock.tsx":"1941","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/traffic-inspector/components/chat/ToolResultBlock.tsx":"1942","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/traffic-inspector/components/session/HistoricSessionBanner.tsx":"1943","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/traffic-inspector/components/session/SessionPicker.tsx":"1944","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/traffic-inspector/components/session/SessionRecorderBar.tsx":"1945","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/traffic-inspector/components/shared/AgentEmoji.tsx":"1946","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/traffic-inspector/components/shared/AnnotationField.tsx":"1947","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/traffic-inspector/components/shared/ContextColorBar.tsx":"1948","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/traffic-inspector/components/shared/HeaderTable.tsx":"1949","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/traffic-inspector/components/shared/JsonViewer.tsx":"1950","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/traffic-inspector/components/shared/SecretMaskToggle.tsx":"1951","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/traffic-inspector/components/shared/SseEventList.tsx":"1952","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/traffic-inspector/components/shared/TimingWaterfall.tsx":"1953","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/traffic-inspector/components/shared/TokenBadge.tsx":"1954","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/traffic-inspector/components/tabs/ConversationTab.tsx":"1955","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/traffic-inspector/components/tabs/HeadersTab.tsx":"1956","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/traffic-inspector/components/tabs/LlmDetailsTab.tsx":"1957","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/traffic-inspector/components/tabs/RequestBodyTab.tsx":"1958","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/traffic-inspector/components/tabs/ResponseBodyTab.tsx":"1959","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/traffic-inspector/components/tabs/StatsCharts.tsx":"1960","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/traffic-inspector/components/tabs/StatsTab.tsx":"1961","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/traffic-inspector/components/tabs/TimingTab.tsx":"1962","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/traffic-inspector/hooks/useAnnotations.ts":"1963","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/traffic-inspector/hooks/useReplay.ts":"1964","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/traffic-inspector/hooks/useResizablePanels.ts":"1965","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/traffic-inspector/hooks/useSessionRecorder.ts":"1966","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/traffic-inspector/hooks/useSystemProxyExitGuard.ts":"1967","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/traffic-inspector/hooks/useTrafficFilters.ts":"1968","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/traffic-inspector/hooks/useTrafficStream.ts":"1969","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/traffic-inspector/hooks/useVirtualList.ts":"1970","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/traffic-inspector/page.tsx":"1971","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/translator/TranslatorPageClient.tsx":"1972","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/translator/components/MonitorTab.tsx":"1973","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/translator/components/ResultNarrated.tsx":"1974","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/translator/components/SimpleControls.tsx":"1975","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/translator/components/TranslateFlowDiagram.tsx":"1976","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/translator/components/TranslateTab.tsx":"1977","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/translator/components/TranslatorConceptCard.tsx":"1978","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/translator/components/advanced/AdvancedSection.tsx":"1979","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/translator/components/advanced/CompressionPreviewAccordion.tsx":"1980","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/translator/components/advanced/PipelineView.tsx":"1981","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/translator/components/advanced/RawJsonPanel.tsx":"1982","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/translator/components/advanced/StreamTransformerAccordion.tsx":"1983","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/translator/components/advanced/TestBenchAccordion.tsx":"1984","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/translator/exampleTemplates.tsx":"1985","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/translator/hooks/useAvailableModels.tsx":"1986","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/translator/hooks/useProviderOptions.tsx":"1987","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/translator/hooks/useTranslateDeepLink.tsx":"1988","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/translator/hooks/useTranslateSession.tsx":"1989","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/translator/page.tsx":"1990","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/translator/types.ts":"1991","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/usage/components/BudgetTab.tsx":"1992","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/usage/components/BudgetTelemetryCards.tsx":"1993","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/usage/components/EvalsTab.tsx":"1994","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/usage/components/FreeBudgetCard.tsx":"1995","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/CodexResetCreditsModal.tsx":"1996","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/ProviderLimitCard.tsx":"1997","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/ProviderUsdCostModal.tsx":"1998","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/QuotaCard.tsx":"1999","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/QuotaCardGrid.tsx":"2000","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/QuotaCutoffModal.tsx":"2001","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/QuotaMiniBar.tsx":"2002","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/QuotaProgressBar.tsx":"2003","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/QuotaTable.tsx":"2004","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/constants.ts":"2005","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/formatters.ts":"2006","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/i18nFallback.ts":"2007","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/index.tsx":"2008","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/parts/QuotaCardBody.tsx":"2009","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/parts/QuotaCardExpanded.tsx":"2010","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/parts/QuotaCardHeader.tsx":"2011","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/parts/QuotaEnvGroup.tsx":"2012","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/providerColumns.ts":"2013","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/quotaParsing.ts":"2014","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/useCodexResetCreditRedemption.ts":"2015","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/useQuotaVisibility.ts":"2016","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/useVisibleQuotaData.ts":"2017","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/utils.tsx":"2018","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/usage/components/RateLimitStatus.tsx":"2019","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/usage/components/SessionsTab.tsx":"2020","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/usage/page.tsx":"2021","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/webhooks/WebhooksPageClient.tsx":"2022","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/webhooks/__tests__/webhook-wizard.test.tsx":"2023","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/webhooks/components/AddWebhookWizard.tsx":"2024","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/webhooks/components/HowItWorksSidebar.tsx":"2025","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/webhooks/components/WebhookCard.tsx":"2026","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/webhooks/components/WebhookDeliveriesPanel.tsx":"2027","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/webhooks/components/WebhooksList.tsx":"2028","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/webhooks/components/shared/DeliveryStatusBadge.tsx":"2029","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/webhooks/components/shared/EventChecklist.tsx":"2030","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/webhooks/components/shared/HmacRecipeBlock.tsx":"2031","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/webhooks/components/shared/IntegrationCard.tsx":"2032","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/webhooks/components/shared/PayloadPreview.tsx":"2033","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/webhooks/components/steps/Step1ChooseIntegration.tsx":"2034","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/webhooks/components/steps/Step2ConfigureIntegration.tsx":"2035","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/webhooks/components/steps/Step3EventsAndTest.tsx":"2036","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/webhooks/components/steps/integrations/CustomConfigForm.tsx":"2037","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/webhooks/components/steps/integrations/DiscordConfigForm.tsx":"2038","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/webhooks/components/steps/integrations/SlackConfigForm.tsx":"2039","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/webhooks/components/steps/integrations/TelegramConfigForm.tsx":"2040","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/webhooks/page.tsx":"2041","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/home/ProviderQuotaWidget.tsx":"2042","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/home/ProviderTopology.tsx":"2043","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/home/page.tsx":"2044","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/home/topologyLabel.ts":"2045","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/home/topologyUtils.ts":"2046","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/layout.tsx":"2047","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/.well-known/agent.json/route.ts":"2048","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/400/layout.tsx":"2049","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/400/page.tsx":"2050","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/401/layout.tsx":"2051","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/401/page.tsx":"2052","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/403/layout.tsx":"2053","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/403/page.tsx":"2054","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/408/layout.tsx":"2055","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/408/page.tsx":"2056","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/429/layout.tsx":"2057","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/429/page.tsx":"2058","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/500/layout.tsx":"2059","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/500/page.tsx":"2060","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/502/layout.tsx":"2061","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/502/page.tsx":"2062","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/503/layout.tsx":"2063","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/503/page.tsx":"2064","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/a2a/route.ts":"2065","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/[...omnirouteApiCatchAll]/route.ts":"2066","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/a2a/status/route.ts":"2067","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/a2a/tasks/[id]/cancel/route.ts":"2068","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/a2a/tasks/[id]/route.ts":"2069","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/a2a/tasks/route.ts":"2070","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/acp/agents/route.ts":"2071","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/admin/concurrency/route.ts":"2072","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/agent-skills/[id]/raw/route.ts":"2073","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/agent-skills/[id]/route.ts":"2074","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/agent-skills/coverage/route.ts":"2075","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/agent-skills/generate/route.ts":"2076","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/agent-skills/route.ts":"2077","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/analytics/auto-routing/route.ts":"2078","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/analytics/compression/route.ts":"2079","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/analytics/diversity/route.ts":"2080","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/assess/route.ts":"2081","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/auth/csrf/route.ts":"2082","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/auth/login/route.ts":"2083","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/auth/logout/route.ts":"2084","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/auth/oidc/callback/route.ts":"2085","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/auth/oidc/login/route.ts":"2086","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/auth/status/route.ts":"2087","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/batches/[id]/route.ts":"2088","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/batches/route.ts":"2089","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/cache/entries/route.ts":"2090","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/cache/reasoning/route.ts":"2091","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/cache/route.ts":"2092","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/cache/stats/route.ts":"2093","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/chaos/config/route.ts":"2094","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/chaos/run/route.ts":"2095","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/cli/connect/route.ts":"2096","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/cli/tokens/[id]/route.ts":"2097","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/cli/tokens/route.ts":"2098","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/cli/whoami/route.ts":"2099","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/cli-tools/_lib/jsoncConfig.ts":"2100","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/cli-tools/all-statuses/route.ts":"2101","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/cli-tools/antigravity-mitm/alias/route.ts":"2102","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/cli-tools/antigravity-mitm/route.ts":"2103","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/cli-tools/apply/route.ts":"2104","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/cli-tools/backups/route.ts":"2105","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/cli-tools/claude-settings/route.ts":"2106","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/cli-tools/cline-settings/route.ts":"2107","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/cli-tools/codewhale-settings/route.ts":"2108","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/cli-tools/codex-profiles/route.ts":"2109","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/cli-tools/codex-settings/route.ts":"2110","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/cli-tools/config/route.ts":"2111","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/cli-tools/crush-settings/route.ts":"2112","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/cli-tools/deepseek-tui-settings/route.ts":"2113","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/cli-tools/detect/route.ts":"2114","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/cli-tools/droid-settings/route.ts":"2115","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/cli-tools/forge-settings/route.ts":"2116","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/cli-tools/grok-build-settings/route.ts":"2117","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/cli-tools/guide-settings/[toolId]/route.ts":"2118","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/cli-tools/hermes-agent-settings/route.ts":"2119","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/cli-tools/jcode-settings/route.ts":"2120","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/cli-tools/keys/route.ts":"2121","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/cli-tools/kilo-settings/route.ts":"2122","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/cli-tools/letta-settings/route.ts":"2123","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/cli-tools/logs/route.ts":"2124","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/cli-tools/omp-settings/route.ts":"2125","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/cli-tools/openclaw/auto-order/route.ts":"2126","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/cli-tools/openclaw-settings/route.ts":"2127","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/cli-tools/pi-settings/route.ts":"2128","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/cli-tools/qwen-settings/route.ts":"2129","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/cli-tools/runtime/[toolId]/route.ts":"2130","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/cli-tools/smelt-settings/route.ts":"2131","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/cli-tools/status/route.ts":"2132","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/cloud/auth/route.ts":"2133","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/cloud/credentials/update/route.ts":"2134","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/cloud/model/resolve/route.ts":"2135","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/cloud/models/alias/route.ts":"2136","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/codex/connect/[token]/route.ts":"2137","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/combos/[id]/route.ts":"2138","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/combos/auto/route.ts":"2139","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/combos/builder/options/route.ts":"2140","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/combos/metrics/route.ts":"2141","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/combos/reorder/route.ts":"2142","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/combos/route.ts":"2143","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/combos/test/route.ts":"2144","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/compliance/audit-log/route.ts":"2145","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/compression/compare/route.ts":"2146","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/compression/compare/verify/route.ts":"2147","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/compression/engines/route.ts":"2148","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/compression/language-packs/route.ts":"2149","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/compression/preview/route.ts":"2150","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/compression/retrieve/route.ts":"2151","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/compression/rules/route.ts":"2152","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/context/analytics/engine/route.ts":"2153","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/context/analytics/route.ts":"2154","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/context/caveman/config/route.ts":"2155","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/context/combos/[id]/assignments/route.ts":"2156","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/context/combos/[id]/route.ts":"2157","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/context/combos/default/route.ts":"2158","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/context/combos/route.ts":"2159","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/context/rtk/config/route.ts":"2160","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/context/rtk/discover/route.ts":"2161","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/context/rtk/filters/route.ts":"2162","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/context/rtk/import/route.ts":"2163","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/context/rtk/learn/route.ts":"2164","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/context/rtk/raw-output/[id]/route.ts":"2165","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/context/rtk/test/route.ts":"2166","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/copilot/chat/route.ts":"2167","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/dahl/tokens/route.ts":"2168","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/db/health/route.ts":"2169","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/db-backups/export/route.ts":"2170","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/db-backups/exportAll/route.ts":"2171","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/db-backups/import/route.ts":"2172","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/db-backups/route.ts":"2173","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/discovery/results/[id]/route.ts":"2174","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/discovery/results/route.ts":"2175","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/discovery/scan/route.ts":"2176","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/discovery/verify/[id]/route.ts":"2177","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/docs/codex-cli/route.ts":"2178","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/docs/route.ts":"2179","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/evals/[suiteId]/route.ts":"2180","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/evals/route.ts":"2181","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/evals/suites/[suiteId]/route.ts":"2182","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/evals/suites/route.ts":"2183","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/fallback/chains/route.ts":"2184","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/files/[id]/content/route.ts":"2185","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/files/route.ts":"2186","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/free-models/route.ts":"2187","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/free-provider-rankings/route.ts":"2188","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/free-tier/summary/route.ts":"2189","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/gamification/anomalies/route.ts":"2190","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/gamification/badges/earned/route.ts":"2191","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/gamification/badges/route.ts":"2192","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/gamification/federation/leaderboard/route.ts":"2193","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/gamification/federation/score/route.ts":"2194","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/gamification/invite/redeem/route.ts":"2195","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/gamification/invite/route.ts":"2196","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/gamification/leaderboard/route.ts":"2197","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/gamification/level/route.ts":"2198","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/gamification/notifications/route.ts":"2199","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/gamification/rotate/route.ts":"2200","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/gamification/servers/route.ts":"2201","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/gamification/stream/route.ts":"2202","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/gamification/transfer/route.ts":"2203","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/github-skills/route.ts":"2204","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/guardrails/route.ts":"2205","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/guardrails/test/route.ts":"2206","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/headroom/start/route.ts":"2207","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/headroom/status/route.ts":"2208","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/headroom/stop/route.ts":"2209","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/health/degradation/route.ts":"2210","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/health/ping/route.ts":"2211","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/init/route.ts":"2212","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/intelligence/sync/route.ts":"2213","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/internal/codex-responses-ws/compression.ts":"2214","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/internal/codex-responses-ws/history.ts":"2215","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/internal/codex-responses-ws/modelResolution.ts":"2216","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/internal/codex-responses-ws/route.ts":"2217","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/issue-agent/runs/route.ts":"2218","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/keys/[id]/devices/route.ts":"2219","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/keys/[id]/regenerate/route.ts":"2220","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/keys/[id]/reveal/route.ts":"2221","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/keys/[id]/route.ts":"2222","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/keys/[id]/usage-limits/route.ts":"2223","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/keys/groups/[id]/keys/route.ts":"2224","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/keys/groups/[id]/permissions/route.ts":"2225","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/keys/groups/[id]/route.ts":"2226","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/keys/groups/route.ts":"2227","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/keys/route.ts":"2228","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/local/redis/redisRuntime.ts":"2229","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/local/redis/start/route.ts":"2230","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/local/redis/status/route.ts":"2231","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/local/redis/stop/route.ts":"2232","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/logs/[id]/route.ts":"2233","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/logs/console/route.ts":"2234","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/logs/detail/route.ts":"2235","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/logs/export/route.ts":"2236","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/mcp/audit/route.ts":"2237","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/mcp/audit/stats/route.ts":"2238","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/mcp/sse/route.ts":"2239","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/mcp/status/route.ts":"2240","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/mcp/stream/route.ts":"2241","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/mcp/tools/route.ts":"2242","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/memory/[id]/route.ts":"2243","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/memory/embedding-providers/route.ts":"2244","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/memory/engine-status/route.ts":"2245","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/memory/health/route.ts":"2246","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/memory/reindex/route.ts":"2247","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/memory/retrieve-preview/route.ts":"2248","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/memory/route.ts":"2249","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/memory/summarize/route.ts":"2250","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/middleware/hooks/[name]/route.ts":"2251","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/middleware/hooks/route.ts":"2252","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/model-capability-overrides/route.ts":"2253","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/model-combo-mappings/[id]/route.ts":"2254","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/model-combo-mappings/route.ts":"2255","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/models/alias/route.ts":"2256","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/models/catalog/route.ts":"2257","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/models/openrouter-catalog/route.ts":"2258","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/models/route.ts":"2259","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/models/test/route.ts":"2260","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/models/test-all/route.ts":"2261","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/monitoring/health/route.ts":"2262","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/network/info/route.ts":"2263","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/oauth/[provider]/[action]/keychainImportOnly.ts":"2264","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/oauth/[provider]/[action]/remoteOAuthHint.ts":"2265","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/oauth/[provider]/[action]/route.ts":"2266","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/oauth/[provider]/paste-credentials/route.ts":"2267","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/oauth/cliproxy-import/route.ts":"2268","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/oauth/codex/import/route.ts":"2269","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/oauth/codex/import-token/route.ts":"2270","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/oauth/cursor/auto-import/route.ts":"2271","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/oauth/cursor/import/route.ts":"2272","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/oauth/kiro/api-key/helpers.ts":"2273","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/oauth/kiro/api-key/route.ts":"2274","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/oauth/kiro/auto-import/route.ts":"2275","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/oauth/kiro/import/route.ts":"2276","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/oauth/kiro/social-authorize/route.ts":"2277","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/oauth/kiro/social-exchange/route.ts":"2278","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/oauth/raycast/auto-import/route.ts":"2279","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/oauth/raycast/import/route.ts":"2280","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/oauth/trae/import/route.ts":"2281","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/openapi/spec/route.ts":"2282","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/openapi/try/route.ts":"2283","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/playground/improve-prompt/route.ts":"2284","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/playground/presets/[id]/route.ts":"2285","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/playground/presets/route.ts":"2286","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/playground/simulate-route/route.ts":"2287","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/plugins/[name]/activate/route.ts":"2288","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/plugins/[name]/config/route.ts":"2289","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/plugins/[name]/deactivate/route.ts":"2290","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/plugins/[name]/route.ts":"2291","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/plugins/marketplace/route.ts":"2292","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/plugins/route.ts":"2293","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/plugins/scan/route.ts":"2294","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/policies/route.ts":"2295","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/pricing/defaults/route.ts":"2296","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/pricing/models/route.ts":"2297","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/pricing/route.ts":"2298","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/pricing/sync/route.ts":"2299","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/provider-metrics/route.ts":"2300","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/provider-models/route.ts":"2301","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/provider-nodes/[id]/route.ts":"2302","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/provider-nodes/route.ts":"2303","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/provider-nodes/urlGuard.ts":"2304","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/provider-nodes/validate/route.ts":"2305","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/provider-stats/route.ts":"2306","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/[id]/cc-alias/route.ts":"2307","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/[id]/claude-auth/apply-local/route.ts":"2308","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/[id]/claude-auth/export/route.ts":"2309","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/[id]/codex-auth/apply-local/route.ts":"2310","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/[id]/codex-auth/export/route.ts":"2311","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/[id]/interception-rules/route.ts":"2312","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/[id]/login/route.ts":"2313","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/[id]/models/discovery/codex.ts":"2314","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/[id]/models/discovery/helpers.ts":"2315","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/[id]/models/discovery/normalizers.ts":"2316","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/[id]/models/discovery/providerModelsConfig.ts":"2317","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/[id]/models/discovery/providerSets.ts":"2318","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/[id]/models/discoveryClientVersion.ts":"2319","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/[id]/models/discoveryConfig.ts":"2320","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/[id]/models/route.ts":"2321","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/[id]/models/staleEncryptionGuard.ts":"2322","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/[id]/param-filters/route.ts":"2323","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/[id]/refresh/route.ts":"2324","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/[id]/route.ts":"2325","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/[id]/sync-models/degradedLocalCatalog.ts":"2326","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/[id]/sync-models/route.ts":"2327","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/[id]/test/cliRuntimeProviderMap.ts":"2328","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/[id]/test/mistralAmbiguousAuth.ts":"2329","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/[id]/test/oauthTestConfig.ts":"2330","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/[id]/test/route.ts":"2331","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/agy-auth/apply-local/route.ts":"2332","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/agy-auth/import/route.ts":"2333","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/agy-auth/import-bulk/route.ts":"2334","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/agy-auth/zip-extract/route.ts":"2335","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/bulk/route.ts":"2336","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/bulk-web-session/route.ts":"2337","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/claude-auth/import/route.ts":"2338","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/claude-auth/import-bulk/route.ts":"2339","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/claude-auth/zip-extract/route.ts":"2340","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/client/route.ts":"2341","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/codex-auth/import/route.ts":"2342","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/codex-auth/import-bulk/route.ts":"2343","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/codex-auth/zip-extract/route.ts":"2344","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/command-code/auth/apply/route.ts":"2345","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/command-code/auth/callback/route.ts":"2346","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/command-code/auth/shared.ts":"2347","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/command-code/auth/start/route.ts":"2348","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/command-code/auth/status/route.ts":"2349","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/expiration/route.ts":"2350","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/health-autopilot/actions/route.ts":"2351","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/health-autopilot/route.ts":"2352","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/health-matrix/route.ts":"2353","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/import/route.ts":"2354","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/openrouter-stats/route.ts":"2355","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/quota-windows/route.ts":"2356","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/route.ts":"2357","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/test-batch/route.ts":"2358","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/validate/route.ts":"2359","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/zed/discover/route.ts":"2360","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/zed/import/route.ts":"2361","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/zed/manual-import/route.ts":"2362","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/proxy-fallback/test/route.ts":"2363","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/quota/groups/[id]/route.ts":"2364","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/quota/groups/route.ts":"2365","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/quota/keys/[id]/models/route.ts":"2366","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/quota/plans/[connectionId]/route.ts":"2367","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/quota/plans/route.ts":"2368","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/quota/pools/[id]/log/route.ts":"2369","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/quota/pools/[id]/route.ts":"2370","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/quota/pools/[id]/usage/route.ts":"2371","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/quota/pools/route.ts":"2372","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/quota/preview/route.ts":"2373","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/radar/catalog/route.ts":"2374","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/radar/settings/route.ts":"2375","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/radar/sync/route.ts":"2376","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/rate-limit/route.ts":"2377","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/rate-limits/route.ts":"2378","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/relay/tokens/[id]/route.ts":"2379","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/relay/tokens/route.ts":"2380","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/resilience/model-cooldowns/route.ts":"2381","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/resilience/reset/route.ts":"2382","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/resilience/route.ts":"2383","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/restart/route.ts":"2384","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/routing/decisions/[requestId]/route.ts":"2385","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/search/providers/route.ts":"2386","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/search/stats/route.ts":"2387","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/9router/_lib.ts":"2388","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/9router/auto-restart-adopted/route.ts":"2389","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/9router/auto-start/route.ts":"2390","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/9router/install/route.ts":"2391","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/9router/models/route.ts":"2392","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/9router/provider-expose/route.ts":"2393","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/9router/restart/route.ts":"2394","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/9router/rotate-key/route.ts":"2395","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/9router/start/route.ts":"2396","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/9router/status/route.ts":"2397","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/9router/stop/route.ts":"2398","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/9router/update/route.ts":"2399","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/[name]/logs/route.ts":"2400","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/_shared/installRoute.ts":"2401","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/bifrost/_lib.ts":"2402","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/bifrost/auto-restart-adopted/route.ts":"2403","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/bifrost/auto-start/route.ts":"2404","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/bifrost/install/route.ts":"2405","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/bifrost/restart/route.ts":"2406","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/bifrost/start/route.ts":"2407","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/bifrost/status/route.ts":"2408","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/bifrost/stop/route.ts":"2409","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/bifrost/update/route.ts":"2410","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/cliproxy/_lib.ts":"2411","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/cliproxy/auto-restart-adopted/route.ts":"2412","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/cliproxy/auto-start/route.ts":"2413","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/cliproxy/install/route.ts":"2414","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/cliproxy/provider-expose/route.ts":"2415","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/cliproxy/restart/route.ts":"2416","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/cliproxy/start/route.ts":"2417","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/cliproxy/status/route.ts":"2418","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/cliproxy/stop/route.ts":"2419","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/cliproxy/update/route.ts":"2420","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/dario/_lib.ts":"2421","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/dario/admin/_lib.ts":"2422","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/dario/admin/accounts/route.ts":"2423","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/dario/admin/import-from-omniroute/route.ts":"2424","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/dario/admin/login-complete/route.ts":"2425","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/dario/admin/login-start/route.ts":"2426","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/dario/auto-restart-adopted/route.ts":"2427","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/dario/auto-start/route.ts":"2428","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/dario/install/route.ts":"2429","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/dario/restart/route.ts":"2430","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/dario/start/route.ts":"2431","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/dario/status/route.ts":"2432","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/dario/stop/route.ts":"2433","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/dario/update/route.ts":"2434","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/mux/_lib.ts":"2435","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/mux/auto-restart-adopted/route.ts":"2436","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/mux/auto-start/route.ts":"2437","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/mux/install/route.ts":"2438","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/mux/restart/route.ts":"2439","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/mux/start/route.ts":"2440","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/mux/status/route.ts":"2441","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/mux/stop/route.ts":"2442","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/mux/update/route.ts":"2443","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/session-pools/[provider]/route.ts":"2444","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/session-pools/route.ts":"2445","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/sessions/route.ts":"2446","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/__tests__/memory.test.ts":"2447","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/__tests__/settings.test.ts":"2448","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/authz-inventory/route.ts":"2449","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/auto-disable-accounts/route.ts":"2450","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/background-degradation/route.ts":"2451","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/cache-config/route.ts":"2452","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/cache-metrics/route.ts":"2453","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/cc-discovery-metrics/route.ts":"2454","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/combo-defaults/route.ts":"2455","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/compression/mcp-accessibility/route.ts":"2456","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/compression/route.ts":"2457","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/compression/rules/route.ts":"2458","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/compression/run-telemetry/route.ts":"2459","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/database/refresh-stats/route.ts":"2460","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/database/route.ts":"2461","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/database/vacuum/route.ts":"2462","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/export-json/route.ts":"2463","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/favicon/route.ts":"2464","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/feature-flags/route.ts":"2465","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/free-proxies/[id]/add-to-pool/route.ts":"2466","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/free-proxies/bulk-add-to-pool/route.ts":"2467","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/free-proxies/route.ts":"2468","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/free-proxies/stats/route.ts":"2469","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/free-proxies/sync/route.ts":"2470","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/import-json/route.ts":"2471","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/ip-filter/route.ts":"2472","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/lkgp-cache/route.ts":"2473","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/local-corpus/route.ts":"2474","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/memory/route.ts":"2475","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/mitm/route.ts":"2476","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/model-aliases/route.ts":"2477","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/models-dev/route.ts":"2478","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/notion/route.ts":"2479","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/obsidian/route.ts":"2480","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/obsidian/webdav/route.ts":"2481","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/oneproxy/rotate/route.ts":"2482","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/oneproxy/route.ts":"2483","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/payload-rules/route.ts":"2484","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/proxies/[id]/repair-relay/route.ts":"2485","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/proxies/assignments/route.ts":"2486","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/proxies/auto-test/route.ts":"2487","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/proxies/batch-activate/route.ts":"2488","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/proxies/batch-delete/route.ts":"2489","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/proxies/bulk-assign/route.ts":"2490","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/proxies/bulk-import/route.ts":"2491","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/proxies/egress/route.ts":"2492","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/proxies/health/route.ts":"2493","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/proxies/migrate/route.ts":"2494","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/proxies/pool/route.ts":"2495","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/proxies/route.ts":"2496","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/proxy/cloudflare-deploy/route.ts":"2497","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/proxy/deno-deploy/route.ts":"2498","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/proxy/route.ts":"2499","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/proxy/test/relayTestResult.ts":"2500","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/proxy/test/route.ts":"2501","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/proxy/vercel-deploy/route.ts":"2502","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/purge-call-logs/route.ts":"2503","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/purge-detailed-logs/route.ts":"2504","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/purge-logs/route.ts":"2505","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/purge-quota-snapshots/route.ts":"2506","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/purge-request-history/route.ts":"2507","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/purge-usage-history/route.ts":"2508","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/qdrant/cleanup/route.ts":"2509","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/qdrant/embedding-models/route.ts":"2510","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/qdrant/health/route.ts":"2511","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/qdrant/route.ts":"2512","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/qdrant/search/route.ts":"2513","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/quota-store/route.ts":"2514","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/reasoning-routing-rules/[id]/route.ts":"2515","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/reasoning-routing-rules/route.ts":"2516","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/reasoning-routing-rules/simulate/route.ts":"2517","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/require-login/route.ts":"2518","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/route.ts":"2519","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/system-prompt/route.ts":"2520","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/task-routing/route.ts":"2521","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/thinking-budget/route.ts":"2522","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/tier-config/route.ts":"2523","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/shutdown/route.ts":"2524","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/skills/[id]/route.ts":"2525","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/skills/collect/chaos/route.ts":"2526","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/skills/collect/detect/route.ts":"2527","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/skills/collect/install/route.ts":"2528","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/skills/executions/route.ts":"2529","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/skills/install/route.ts":"2530","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/skills/marketplace/install/route.ts":"2531","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/skills/marketplace/route.ts":"2532","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/skills/route.ts":"2533","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/skills/skillssh/install/route.ts":"2534","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/skills/skillssh/route.ts":"2535","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/storage/health/route.ts":"2536","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/sync/bundle/route.ts":"2537","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/sync/cloud/route.ts":"2538","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/sync/initialize/route.ts":"2539","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/sync/tokens/[id]/route.ts":"2540","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/sync/tokens/route.ts":"2541","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/synced-available-models/route.ts":"2542","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/system/env/repair/route.ts":"2543","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/system/version/route.ts":"2544","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/tags/route.ts":"2545","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/telemetry/summary/route.ts":"2546","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/token-health/route.ts":"2547","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/tools/agent-bridge/agents/[id]/detect/route.ts":"2548","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/tools/agent-bridge/agents/[id]/detected-models/route.ts":"2549","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/tools/agent-bridge/agents/[id]/dns/route.ts":"2550","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/tools/agent-bridge/agents/[id]/mappings/route.ts":"2551","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/tools/agent-bridge/agents/[id]/route.ts":"2552","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/tools/agent-bridge/agents/route.ts":"2553","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/tools/agent-bridge/bypass/route.ts":"2554","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/tools/agent-bridge/cert/download/route.ts":"2555","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/tools/agent-bridge/cert/regenerate/route.ts":"2556","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/tools/agent-bridge/cert/route.ts":"2557","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/tools/agent-bridge/config/route.ts":"2558","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/tools/agent-bridge/diagnose/route.ts":"2559","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/tools/agent-bridge/repair/route.ts":"2560","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/tools/agent-bridge/server/route.ts":"2561","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/tools/agent-bridge/state/route.ts":"2562","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/tools/agent-bridge/tproxy/route.ts":"2563","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/tools/agent-bridge/upstream-ca/route.ts":"2564","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/tools/agent-bridge/upstream-ca/test/route.ts":"2565","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/tools/traffic-inspector/capture-modes/http-proxy/route.ts":"2566","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/tools/traffic-inspector/capture-modes/route.ts":"2567","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/tools/traffic-inspector/capture-modes/system-proxy/route.ts":"2568","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/tools/traffic-inspector/capture-modes/tls-intercept/route.ts":"2569","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/tools/traffic-inspector/export.har/route.ts":"2570","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/tools/traffic-inspector/hosts/[host]/route.ts":"2571","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/tools/traffic-inspector/hosts/route.ts":"2572","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/tools/traffic-inspector/internal/ingest/route.ts":"2573","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/tools/traffic-inspector/requests/[id]/annotation/route.ts":"2574","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/tools/traffic-inspector/requests/[id]/replay/route.ts":"2575","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/tools/traffic-inspector/requests/[id]/route.ts":"2576","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/tools/traffic-inspector/requests/route.ts":"2577","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/tools/traffic-inspector/sessions/[id]/export.har/route.ts":"2578","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/tools/traffic-inspector/sessions/[id]/requests/route.ts":"2579","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/tools/traffic-inspector/sessions/[id]/route.ts":"2580","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/tools/traffic-inspector/sessions/route.ts":"2581","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/tools/traffic-inspector/ws/route.ts":"2582","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/translator/detect/route.ts":"2583","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/translator/history/route.ts":"2584","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/translator/send/route.ts":"2585","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/translator/transform-stream/route.ts":"2586","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/translator/translate/route.ts":"2587","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/tunnels/cloudflared/route.ts":"2588","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/tunnels/ngrok/route.ts":"2589","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/tunnels/tailscale/check/route.ts":"2590","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/tunnels/tailscale/disable/route.ts":"2591","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/tunnels/tailscale/enable/route.ts":"2592","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/tunnels/tailscale/install/route.ts":"2593","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/tunnels/tailscale/login/route.ts":"2594","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/tunnels/tailscale/route.ts":"2595","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/tunnels/tailscale/routeUtils.ts":"2596","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/tunnels/tailscale/start-daemon/route.ts":"2597","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/upstream-proxy/[providerId]/route.ts":"2598","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/usage/[connectionId]/route.ts":"2599","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/usage/analytics/route.ts":"2600","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/usage/budget/bulk/route.ts":"2601","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/usage/budget/route.ts":"2602","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/usage/cache-health/route.ts":"2603","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/usage/call-logs/[id]/route.ts":"2604","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/usage/call-logs/route.ts":"2605","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/usage/codex-reset-credit/route.ts":"2606","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/usage/combo-forecast/route.ts":"2607","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/usage/combo-health/route.ts":"2608","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/usage/combo-health-autopilot/route.ts":"2609","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/usage/combo-health-dashboard/route.ts":"2610","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/usage/combo-scoring-inspector/route.ts":"2611","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/usage/history/route.ts":"2612","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/usage/logs/route.ts":"2613","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/usage/model-latency-stats/route.ts":"2614","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/usage/om-usage/route.ts":"2615","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/usage/provider-limits/route.ts":"2616","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/usage/provider-window-costs/route.ts":"2617","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/usage/proxy-logs/route.ts":"2618","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/usage/quota/route.ts":"2619","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/usage/request-logs/route.ts":"2620","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/usage/requests-by-provider-date/route.ts":"2621","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/usage/route-explain/[id]/route.ts":"2622","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/usage/token-limits/route.ts":"2623","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/usage/utilization/route.ts":"2624","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/[...omnirouteCatchAll]/route.ts":"2625","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/_helpers/apiKeyScope.ts":"2626","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/_shared/audioProviderNodes.ts":"2627","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/_shared/mediaGenerationRoute.ts":"2628","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/_shared/rateLimit.ts":"2629","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/_shared/specialtyCatalog.ts":"2630","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/accounts/[id]/limits/route.ts":"2631","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/agents/credentials/route.ts":"2632","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/agents/health/route.ts":"2633","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/agents/tasks/[id]/route.ts":"2634","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/agents/tasks/route.ts":"2635","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/antigravity/route.ts":"2636","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/api/chat/route.ts":"2637","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/audio/speech/route.ts":"2638","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/audio/transcriptions/route.ts":"2639","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/audio/translations/route.ts":"2640","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/auto-combo/[channel]/candidates/route.ts":"2641","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/batches/[id]/cancel/route.ts":"2642","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/batches/[id]/route.ts":"2643","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/batches/delete-completed/route.ts":"2644","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/batches/formatBatchResponse.ts":"2645","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/batches/parseListLimit.ts":"2646","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/batches/route.ts":"2647","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/chat/completions/route.ts":"2648","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/chatgpt-web/image/[id]/route.ts":"2649","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/combos/projectCombo.ts":"2650","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/combos/route.ts":"2651","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/completions/route.ts":"2652","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/completions/textCompletionTransform.ts":"2653","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/embeddings/route.ts":"2654","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/files/[id]/content/route.ts":"2655","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/files/[id]/route.ts":"2656","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/files/route.ts":"2657","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/images/edits/route.ts":"2658","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/images/generations/route.ts":"2659","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/images/upscale/route.ts":"2660","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/issues/report/route.ts":"2661","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/management/proxies/assignments/route.ts":"2662","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/management/proxies/bulk-assign/route.ts":"2663","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/management/proxies/health/route.ts":"2664","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/management/proxies/route.ts":"2665","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/management/proxy-subscriptions/[id]/nodes/route.ts":"2666","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/management/proxy-subscriptions/[id]/refresh/route.ts":"2667","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/management/proxy-subscriptions/[id]/route.ts":"2668","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/management/proxy-subscriptions/route.ts":"2669","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/me/status/route.ts":"2670","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/messages/count_tokens/route.ts":"2671","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/messages/route.ts":"2672","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/models/[...model]/route.ts":"2673","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/models/aliasBackedModels.ts":"2674","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/models/catalog.ts":"2675","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/models/catalogCache.ts":"2676","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/models/catalogDedupe.ts":"2677","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/models/catalogHelpers.ts":"2678","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/models/catalogOpenrouter.ts":"2679","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/models/catalogOrder.ts":"2680","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/models/catalogProviderMaps.ts":"2681","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/models/catalogRequest.ts":"2682","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/models/catalogResponse.ts":"2683","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/models/catalogSyncedCoverage.ts":"2684","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/models/catalogVision.ts":"2685","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/models/ccAliasPredicate.ts":"2686","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/models/functionalGatewayPredicate.ts":"2687","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/models/modelById.ts":"2688","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/models/route.ts":"2689","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/models/syncedCapabilities.ts":"2690","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/moderations/route.ts":"2691","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/music/generations/route.ts":"2692","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/ocr/route.ts":"2693","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/provider-plugin-manifest/route.ts":"2694","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/providers/[provider]/chat/completions/route.ts":"2695","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/providers/[provider]/embeddings/route.ts":"2696","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/providers/[provider]/images/generations/route.ts":"2697","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/providers/[provider]/limits/route.ts":"2698","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/providers/[provider]/models/route.ts":"2699","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/providers/suggested-models/route.ts":"2700","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/quotas/check/route.ts":"2701","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/registered-keys/[id]/revoke/route.ts":"2702","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/registered-keys/[id]/route.ts":"2703","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/registered-keys/route.ts":"2704","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/relay/chat/completions/bifrost/route.ts":"2705","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/relay/chat/completions/bifrostCooldown.ts":"2706","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/relay/chat/completions/relaySecurity.ts":"2707","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/relay/chat/completions/route.ts":"2708","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/relay/chat/completions/routingBackend.ts":"2709","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/relay/chat/completions/streamFinalizer.ts":"2710","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/rerank/route.ts":"2711","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/responses/[...path]/route.ts":"2712","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/responses/route.ts":"2713","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/route.ts":"2714","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/search/analytics/route.ts":"2715","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/search/route.ts":"2716","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/videos/generations/route.ts":"2717","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/vscode/[token]/api/chat/route.ts":"2718","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/vscode/[token]/api/show/route.ts":"2719","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/vscode/[token]/api/tags/route.ts":"2720","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/vscode/[token]/api/version/route.ts":"2721","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/vscode/[token]/chat/completions/route.ts":"2722","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/vscode/[token]/combos/route.ts":"2723","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/vscode/[token]/familyFirstModelIds.ts":"2724","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/vscode/[token]/modelPresentation.ts":"2725","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/vscode/[token]/models/route.ts":"2726","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/vscode/[token]/reasoningMetadata.ts":"2727","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/vscode/[token]/responses/route.ts":"2728","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/vscode/[token]/route.ts":"2729","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/vscode/[token]/serviceTierVariants.ts":"2730","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/vscode/[token]/tokenizedRequest.ts":"2731","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/vscode/[token]/usableChatModel.ts":"2732","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/vscode/[token]/v1/chat/completions/route.ts":"2733","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/vscode/[token]/v1/models/route.ts":"2734","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/vscode/combos/[token]/[[...slug]]/route.ts":"2735","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/vscode/contextSanitizer.ts":"2736","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/vscode/raw/[token]/api/chat/route.ts":"2737","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/vscode/raw/[token]/api/show/route.ts":"2738","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/vscode/raw/[token]/api/tags/route.ts":"2739","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/vscode/raw/[token]/api/version/route.ts":"2740","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/vscode/raw/[token]/chat/completions/route.ts":"2741","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/vscode/raw/[token]/combos/route.ts":"2742","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/vscode/raw/[token]/familyFirstModelIds.ts":"2743","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/vscode/raw/[token]/modelPresentation.ts":"2744","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/vscode/raw/[token]/models/route.ts":"2745","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/vscode/raw/[token]/reasoningMetadata.ts":"2746","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/vscode/raw/[token]/responses/route.ts":"2747","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/vscode/raw/[token]/route.ts":"2748","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/vscode/raw/[token]/serviceTierVariants.ts":"2749","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/vscode/raw/[token]/tokenizedRequest.ts":"2750","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/vscode/raw/[token]/v1/chat/completions/route.ts":"2751","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/vscode/raw/[token]/v1/models/route.ts":"2752","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/web/fetch/route.ts":"2753","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/ws/route.ts":"2754","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1beta/models/[...path]/convertGeminiToInternal.ts":"2755","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1beta/models/[...path]/route.ts":"2756","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1beta/models/route.ts":"2757","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/version-manager/check-update/route.ts":"2758","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/version-manager/install/route.ts":"2759","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/version-manager/request.ts":"2760","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/version-manager/restart/route.ts":"2761","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/version-manager/start/route.ts":"2762","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/version-manager/status/route.ts":"2763","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/version-manager/stop/route.ts":"2764","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/vnc-session/[...params]/route.ts":"2765","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/vnc-session/route.ts":"2766","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/webhooks/[id]/deliveries/route.ts":"2767","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/webhooks/[id]/route.ts":"2768","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/webhooks/[id]/test/route.ts":"2769","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/webhooks/route.ts":"2770","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/webhooks/validate-url/route.ts":"2771","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/auth/callback/page.tsx":"2772","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/authorize/parseCallback.ts":"2773","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/authorize/route.ts":"2774","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/callback/page.tsx":"2775","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/connect/codex/[token]/CodexConnectClient.tsx":"2776","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/connect/codex/[token]/page.tsx":"2777","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/docs/[...slug]/page.tsx":"2778","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/docs/api/search/route.ts":"2779","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/docs/api-explorer/page.tsx":"2780","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/docs/components/ApiExplorerClient.tsx":"2781","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/docs/components/DocsPageAnalytics.tsx":"2782","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/docs/components/FeedbackWidget.tsx":"2783","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/docs/layout.tsx":"2784","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/docs/lib/openapi.generated.ts":"2785","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/docs/page.tsx":"2786","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/error.tsx":"2787","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/forbidden/page.tsx":"2788","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/forgot-password/page.tsx":"2789","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/global-error.tsx":"2790","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/healthz/route.ts":"2791","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/landing/components/AnimatedBackground.tsx":"2792","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/landing/components/Features.tsx":"2793","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/landing/components/FlowAnimation.tsx":"2794","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/landing/components/Footer.tsx":"2795","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/landing/components/GetStarted.tsx":"2796","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/landing/components/HeroSection.tsx":"2797","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/landing/components/HowItWorks.tsx":"2798","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/landing/components/Navigation.tsx":"2799","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/landing/page.tsx":"2800","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/layout.tsx":"2801","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/loading.tsx":"2802","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/login/page.tsx":"2803","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/maintenance/page.tsx":"2804","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/manifest.ts":"2805","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/not-found.tsx":"2806","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/offline/page.tsx":"2807","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/page.tsx":"2808","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/privacy/page.tsx":"2809","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/status/page.tsx":"2810","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/terms/page.tsx":"2811","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/domain/assessment/assessor.ts":"2812","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/domain/assessment/categorizer.ts":"2813","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/domain/assessment/index.ts":"2814","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/domain/assessment/migration.ts":"2815","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/domain/assessment/selfHealer.ts":"2816","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/domain/assessment/types.ts":"2817","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/domain/comboResolver.ts":"2818","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/domain/configAudit.ts":"2819","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/domain/connectionModelRules.ts":"2820","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/domain/costRules.ts":"2821","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/domain/degradation.ts":"2822","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/domain/fallbackPolicy.ts":"2823","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/domain/lockoutPolicy.ts":"2824","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/domain/modelAvailability.ts":"2825","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/domain/omnirouteResponseMeta.ts":"2826","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/domain/persistence/comboRepositories.ts":"2827","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/domain/pipeline.ts":"2828","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/domain/policyEngine.ts":"2829","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/domain/prompts.ts":"2830","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/domain/providerExpiration.ts":"2831","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/domain/quotaCache.ts":"2832","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/domain/responses.ts":"2833","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/domain/tagRouter.ts":"2834","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/domain/types.ts":"2835","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/hooks/useLiveCompression.ts":"2836","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/hooks/useLiveDashboard.ts":"2837","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/hooks/usePreviewCompression.ts":"2838","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/hooks/useProviderBreakerHealth.ts":"2839","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/i18n/config.ts":"2840","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/i18n/detectBrowserLocale.ts":"2841","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/i18n/request.ts":"2842","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/instrumentation-node.ts":"2843","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/instrumentation.ts":"2844","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/a2a/routingLogger.ts":"2845","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/a2a/skills/costAnalysis.ts":"2846","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/a2a/skills/healthReport.ts":"2847","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/a2a/skills/listCapabilities.ts":"2848","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/a2a/skills/providerDiscovery.ts":"2849","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/a2a/skills/quotaManagement.ts":"2850","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/a2a/skills/smartRouting.ts":"2851","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/a2a/streaming.ts":"2852","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/a2a/taskExecution.ts":"2853","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/a2a/taskManager.ts":"2854","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/accessTokens/scopes.ts":"2855","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/acp/index.ts":"2856","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/acp/manager.ts":"2857","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/acp/registry.ts":"2858","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/agentSkills/catalog.ts":"2859","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/agentSkills/cliRegistryParser.ts":"2860","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/agentSkills/generator.ts":"2861","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/agentSkills/openapiParser.ts":"2862","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/agentSkills/schemas.ts":"2863","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/agentSkills/types.ts":"2864","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/api/comboErrorResponse.ts":"2865","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/api/errorResponse.ts":"2866","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/api/internalServiceAuth.ts":"2867","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/api/modelTestRunner.ts":"2868","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/api/proxyRegistryRouteHandlers.ts":"2869","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/api/requireCliToolsAuth.ts":"2870","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/api/requireManagementAuth.ts":"2871","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/api/serverErrorMessage.ts":"2872","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/apiBridgeServer.ts":"2873","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/apiKeyExposure.ts":"2874","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/arenaEloSync.ts":"2875","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/audit/activityIcons.ts":"2876","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/audit/highLevelActions.ts":"2877","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/audit/timeline.ts":"2878","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/auth/managementPassword.ts":"2879","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/batches/costEstimator.ts":"2880","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/batches/csvToJsonl.ts":"2881","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/batches/dispatch.ts":"2882","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/batches/retryFailed.ts":"2883","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/batches/schemas.ts":"2884","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/batches/types.ts":"2885","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/batches/validateJsonl.ts":"2886","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/benchmarks.ts":"2887","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/build-profile/featureDisabled.ts":"2888","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/cacheControlSettings.ts":"2889","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/cacheLayer.ts":"2890","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/catalog/openrouterCatalog.ts":"2891","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/catalog/openrouterProviderStats.ts":"2892","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/ccDiscoveryAliasResolve.ts":"2893","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/chaos/chaosConfig.ts":"2894","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/chaos/chaosExecutor.ts":"2895","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/cli-helper/claudeProfileAutoSync.ts":"2896","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/cli-helper/codexProfileAutoSync.ts":"2897","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/cli-helper/config-generator/claude.ts":"2898","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/cli-helper/config-generator/cline.ts":"2899","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/cli-helper/config-generator/codex.ts":"2900","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/cli-helper/config-generator/continue.ts":"2901","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/cli-helper/config-generator/hermes-agent.ts":"2902","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/cli-helper/config-generator/hermes.ts":"2903","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/cli-helper/config-generator/hermesHome.ts":"2904","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/cli-helper/config-generator/index.ts":"2905","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/cli-helper/config-generator/kilocode.ts":"2906","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/cli-helper/config-generator/opencode.ts":"2907","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/cli-helper/doctor/checks.ts":"2908","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/cli-helper/log-streamer.ts":"2909","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/cli-helper/tool-detector.ts":"2910","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/cliTools/batchStatusCache.ts":"2911","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/cliTools/checkToolConfigStatus.ts":"2912","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/cloudAgent/agents/codex.ts":"2913","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/cloudAgent/agents/cursor.ts":"2914","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/cloudAgent/agents/devin.ts":"2915","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/cloudAgent/agents/jules.ts":"2916","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/cloudAgent/api.ts":"2917","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/cloudAgent/baseAgent.ts":"2918","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/cloudAgent/credentials.ts":"2919","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/cloudAgent/db.ts":"2920","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/cloudAgent/index.ts":"2921","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/cloudAgent/julesApi.ts":"2922","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/cloudAgent/registry.ts":"2923","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/cloudAgent/types.ts":"2924","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/cloudSync.stub.ts":"2925","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/cloudSync.ts":"2926","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/cloudflaredTunnel.ts":"2927","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/combos/autoPromote.ts":"2928","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/combos/builderDraft.ts":"2929","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/combos/builderOptions.ts":"2930","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/combos/comboContext.ts":"2931","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/combos/compositeTiers.ts":"2932","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/combos/controlCenter.ts":"2933","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/combos/intelligentRouting.ts":"2934","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/combos/invariants.ts":"2935","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/combos/modelNameCollision.ts":"2936","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/combos/steps.ts":"2937","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/combos/testHealth.ts":"2938","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/compliance/index.ts":"2939","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/compliance/noLog.ts":"2940","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/compliance/providerAudit.ts":"2941","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/compression/judgeModelClient.ts":"2942","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/config/hotReload.ts":"2943","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/config/runtimeSettings.ts":"2944","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/consoleInterceptor.ts":"2945","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/container.ts":"2946","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/contextWindowResolver.ts":"2947","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/copilot/codegraphKnowledge.ts":"2948","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/copilot/commandClassification.ts":"2949","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/copilot/engine.ts":"2950","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/copilot/systemPrompt.ts":"2951","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/copilot/tools.ts":"2952","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/credentialHealth/cache.ts":"2953","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/credentialHealth/scheduler.ts":"2954","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/dataPaths.ts":"2955","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/__tests__/quotaSnapshots.test.ts":"2956","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/_rowTypes.ts":"2957","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/accessTokens.ts":"2958","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/adapters/betterSqliteAdapter.ts":"2959","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/adapters/bunSqliteAdapter.ts":"2960","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/adapters/driverFactory.ts":"2961","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/adapters/nodeSqliteAdapter.ts":"2962","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/adapters/nodeSqliteShared.ts":"2963","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/adapters/sqljsAdapter.ts":"2964","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/adapters/types.ts":"2965","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/agentBridgeBypass.ts":"2966","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/agentBridgeMappings.ts":"2967","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/agentBridgeState.ts":"2968","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/apiKeyColumnFallbacks.ts":"2969","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/apiKeyContextSources.ts":"2970","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/apiKeyGroups.ts":"2971","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/apiKeyUsageLimitFields.ts":"2972","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/apiKeys/modelPermissions.ts":"2973","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/apiKeys/rowParsers.ts":"2974","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/apiKeys/types.ts":"2975","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/apiKeys.ts":"2976","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/autoCandidateOverrides.ts":"2977","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/backup.ts":"2978","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/batches.ts":"2979","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/callLogStats.ts":"2980","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/caseMapping.ts":"2981","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/ccDiscoveryAliases.ts":"2982","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/ccDiscoveryMetrics.ts":"2983","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/ccrBlocks.ts":"2984","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/cleanup/usagePurge.ts":"2985","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/cleanup.ts":"2986","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/cliToolState.ts":"2987","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/comboForecast.ts":"2988","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/combos.ts":"2989","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/commandCodeAuth.ts":"2990","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/compression.ts":"2991","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/compressionAnalytics.ts":"2992","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/compressionCacheStats.ts":"2993","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/compressionCombos.ts":"2994","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/compressionContextBudget.ts":"2995","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/compressionDetailNormalizers.ts":"2996","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/compressionRunTelemetry.ts":"2997","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/contextHandoffs.ts":"2998","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/core.ts":"2999","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/creditBalance.ts":"3000","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/databaseSettings.ts":"3001","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/detailedLogs.ts":"3002","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/discovery.ts":"3003","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/discoveryResults.ts":"3004","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/domainState.ts":"3005","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/encryption.ts":"3006","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/evals.ts":"3007","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/featureFlags.ts":"3008","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/files.ts":"3009","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/freeProxies.ts":"3010","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/functionalGatewayMirrors.ts":"3011","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/gamification.ts":"3012","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/healthCheck.ts":"3013","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/inspectorCustomHosts.ts":"3014","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/inspectorSessions.ts":"3015","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/interceptionRules.ts":"3016","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/jsonMigration.ts":"3017","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/localCorpus.ts":"3018","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/memoryVec.ts":"3019","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/middleware.ts":"3020","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/migrationRunner/constants.ts":"3021","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/migrationRunner/extraDirs.ts":"3022","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/migrationRunner.ts":"3023","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/modelCapabilityOverrides.ts":"3024","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/modelComboMappings.ts":"3025","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/modelContextOverrides.ts":"3026","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/modelIntelligence.ts":"3027","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/models/activeSyncedCatalog.ts":"3028","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/models/aliases.ts":"3029","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/models/compat.ts":"3030","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/models/mitmAlias.ts":"3031","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/models/shared.ts":"3032","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/models/synced.ts":"3033","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/models.ts":"3034","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/notion.ts":"3035","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/obsidian.ts":"3036","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/omp.ts":"3037","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/oneproxy.ts":"3038","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/optimizationSettings.ts":"3039","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/paramFilters.ts":"3040","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/playgroundPresets.ts":"3041","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/pluginMetrics.ts":"3042","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/plugins.ts":"3043","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/probeUtils.ts":"3044","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/prompts.ts":"3045","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/providerLimits.ts":"3046","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/providerNodeSelect.ts":"3047","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/providerPlans.ts":"3048","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/providerStats.ts":"3049","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/providers/columns.ts":"3050","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/providers/deletion.ts":"3051","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/providers/lazyConnectionView.ts":"3052","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/providers/migrations.ts":"3053","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/providers/nodes.ts":"3054","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/providers/rateLimit.ts":"3055","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/providers/usageIdentityReconciliation.ts":"3056","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/providers.ts":"3057","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/proxies/guards.ts":"3058","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/proxies/mappers.ts":"3059","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/proxies/registryGeneration.ts":"3060","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/proxies/rotation.ts":"3061","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/proxies/types.ts":"3062","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/proxies.ts":"3063","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/proxyLatency.ts":"3064","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/proxyLogs.ts":"3065","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/proxySubscriptions.ts":"3066","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/quotaConsumption.ts":"3067","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/quotaGroups.ts":"3068","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/quotaModelCaps.ts":"3069","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/quotaPools.ts":"3070","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/quotaResetEvents.ts":"3071","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/quotaSnapshots.ts":"3072","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/radar.ts":"3073","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/readCache.ts":"3074","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/reasoningCache.ts":"3075","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/reasoningRoutingRules.ts":"3076","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/recovery.ts":"3077","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/registeredKeys.ts":"3078","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/relayProbeStats.ts":"3079","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/relayProxies.ts":"3080","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/repositories/routingConfigRepositories.ts":"3081","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/repositories/sqliteComboRepository.ts":"3082","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/repositories/sqliteModelComboMappingRepository.ts":"3083","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/schemaColumns.ts":"3084","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/secrets.ts":"3085","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/semanticCache.ts":"3086","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/serviceModels.ts":"3087","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/sessionAccountAffinity.ts":"3088","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/settings/cacheMetrics.ts":"3089","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/settings/lkgp.ts":"3090","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/settings/noAuthProxyFallback.ts":"3091","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/settings/pricing.ts":"3092","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/settings/shared.ts":"3093","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/settings.ts":"3094","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/skills.ts":"3095","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/stateReset.ts":"3096","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/stats.ts":"3097","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/syncTokens.ts":"3098","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/tierConfig.ts":"3099","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/tokenLimits.ts":"3100","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/upstreamProxy.ts":"3101","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/usageAnalytics/sources.ts":"3102","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/usageAnalytics.ts":"3103","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/usageLogs.ts":"3104","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/usageSummary.ts":"3105","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/vacuumScheduler.ts":"3106","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/versionManager.ts":"3107","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/webSessionDedup.ts":"3108","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/webhookDeliveries.ts":"3109","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/webhooks.ts":"3110","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/discovery/index.ts":"3111","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/display/names.ts":"3112","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/display/useProviderNodeMap.ts":"3113","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/docsI18nPath.ts":"3114","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/docsSanitizer.ts":"3115","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/embeddings/familyGuard.ts":"3116","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/embeddings/service.ts":"3117","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/env/runtimeEnv.ts":"3118","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/evals/evalRunner/builtinSuites.ts":"3119","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/evals/evalRunner.ts":"3120","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/evals/runtime.ts":"3121","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/events/eventBus.ts":"3122","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/events/types.ts":"3123","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/freeProviderRankings.ts":"3124","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/freeProviderRankingsAuthType.ts":"3125","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/freeProxyProviders/index.ts":"3126","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/freeProxyProviders/iplocate.ts":"3127","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/freeProxyProviders/oneproxy.ts":"3128","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/freeProxyProviders/proxifly.ts":"3129","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/freeProxyProviders/scheduler.ts":"3130","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/freeProxyProviders/syncCycle.ts":"3131","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/freeProxyProviders/types.ts":"3132","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/freeProxyProviders/webshare.ts":"3133","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/gamification/antiCheat.ts":"3134","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/gamification/badges.ts":"3135","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/gamification/events.ts":"3136","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/gamification/index.ts":"3137","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/gamification/invites.ts":"3138","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/gamification/leaderboard.ts":"3139","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/gamification/notifications.ts":"3140","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/gamification/servers.ts":"3141","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/gamification/sharing.ts":"3142","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/gamification/streaks.ts":"3143","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/gamification/xp.ts":"3144","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/gracefulShutdown.ts":"3145","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/guardrails/base.ts":"3146","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/guardrails/credentialMasker.ts":"3147","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/guardrails/index.ts":"3148","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/guardrails/piiMasker.ts":"3149","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/guardrails/promptInjection.ts":"3150","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/guardrails/registry.ts":"3151","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/guardrails/visionBridge.ts":"3152","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/guardrails/visionBridgeCredentials.ts":"3153","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/guardrails/visionBridgeHelpers.ts":"3154","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/guardrails/visionBridgeRouter.ts":"3155","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/headroom/detect.ts":"3156","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/headroom/process.ts":"3157","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/idempotencyLayer.ts":"3158","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/images/imageRouteModel.ts":"3159","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/initCloudSync.ts":"3160","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/inspector/agentBridgeMaintenanceApi.ts":"3161","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/inspector/captureState.ts":"3162","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/inspector/configPortability.ts":"3163","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/inspector/harExport.ts":"3164","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/inspector/matchesTrafficFilter.ts":"3165","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/inspector/secretMask.ts":"3166","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/inspector/tproxyCaptureApi.ts":"3167","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/ipUtils.ts":"3168","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/issueAgent/audit.ts":"3169","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/issueAgent/execution.ts":"3170","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/issueAgent/githubExport.ts":"3171","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/issueAgent/recordedTriage.ts":"3172","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/jobs/backupScheduleJob.ts":"3173","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/jobs/budgetResetJob.ts":"3174","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/jobs/cronMatch.ts":"3175","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/jobs/reasoningCacheCleanupJob.ts":"3176","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/localCorpus/configured.ts":"3177","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/localCorpus/index.ts":"3178","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/localDb.ts":"3179","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/localHealthCheck.ts":"3180","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/logEnv.ts":"3181","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/logPayloads.ts":"3182","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/logRotation.ts":"3183","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/machineToken.ts":"3184","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/memory/__tests__/generic-backend.test.ts":"3185","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/memory/__tests__/injection.test.ts":"3186","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/memory/__tests__/qdrant-wiring.test.ts":"3187","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/memory/__tests__/retrieval.test.ts":"3188","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/memory/__tests__/schemas.test.ts":"3189","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/memory/backend.ts":"3190","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/memory/cache.ts":"3191","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/memory/embedding/cache.ts":"3192","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/memory/embedding/index.ts":"3193","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/memory/embedding/remote.ts":"3194","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/memory/embedding/staticPotion.ts":"3195","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/memory/embedding/transformersLocal.ts":"3196","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/memory/embedding/types.ts":"3197","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/memory/extraction.ts":"3198","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/memory/genericBackend.ts":"3199","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/memory/index.ts":"3200","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/memory/injection.ts":"3201","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/memory/manager.ts":"3202","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/memory/obsidianBackend.ts":"3203","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/memory/qdrant.ts":"3204","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/memory/reindex.ts":"3205","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/memory/retrieval/scoring.ts":"3206","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/memory/retrieval.ts":"3207","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/memory/schemas.ts":"3208","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/memory/settings.ts":"3209","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/memory/sqliteBackend.ts":"3210","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/memory/store.ts":"3211","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/memory/summarization.ts":"3212","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/memory/typedDecay.ts":"3213","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/memory/types.ts":"3214","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/memory/vectorStore.ts":"3215","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/memory/verify.ts":"3216","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/middleware/cliTokenAuth.ts":"3217","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/middleware/registry.ts":"3218","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/middleware/types.ts":"3219","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/modelAliasResolver.ts":"3220","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/modelAliasSeed.ts":"3221","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/modelCapabilities.ts":"3222","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/modelMetadataRegistry.ts":"3223","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/modelsDevSync/transform.ts":"3224","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/modelsDevSync.ts":"3225","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/monitoring/comboHealthAutopilot.ts":"3226","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/monitoring/observability.ts":"3227","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/monitoring/providerHealthAutopilot.ts":"3228","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/monitoring/providerHealthMatrix.ts":"3229","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/ngrokTunnel.ts":"3230","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/notion/api.ts":"3231","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/codexDeviceFlow.ts":"3232","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/config/index.ts":"3233","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/connectionPersistence.ts":"3234","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/constants/oauth.ts":"3235","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/credentialBlob.ts":"3236","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/deviceFlowTickets.ts":"3237","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/gitlab.ts":"3238","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/kiroConnectionIdentity.ts":"3239","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/kiroSocialPoll.ts":"3240","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/pasteCredentials.ts":"3241","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/providers/agy.ts":"3242","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/providers/antigravity.ts":"3243","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/providers/claude.ts":"3244","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/providers/cline.ts":"3245","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/providers/codebuddy-cn.ts":"3246","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/providers/codex.ts":"3247","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/providers/cursor.ts":"3248","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/providers/ghe-copilot.ts":"3249","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/providers/github.ts":"3250","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/providers/gitlab-duo.ts":"3251","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/providers/grok-cli-oauth.ts":"3252","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/providers/grok-cli.ts":"3253","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/providers/index.ts":"3254","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/providers/kilocode.ts":"3255","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/providers/kimi-coding.ts":"3256","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/providers/kiro.ts":"3257","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/providers/qoder.ts":"3258","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/providers/raycast.ts":"3259","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/providers/trae.ts":"3260","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/providers/windsurf.ts":"3261","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/providers/xai-oauth.ts":"3262","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/providers/zed-hosted.ts":"3263","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/providers/zed.ts":"3264","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/providers.ts":"3265","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/services/codexImport.ts":"3266","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/services/cursor.ts":"3267","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/services/kiro.ts":"3268","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/services/raycast.ts":"3269","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/services/raycastLocal.ts":"3270","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/utils/agyAuthImport.ts":"3271","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/utils/banner.ts":"3272","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/utils/claudeAuthFile.ts":"3273","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/utils/claudeAuthImport.ts":"3274","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/utils/claudeAuthZipExtract.ts":"3275","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/utils/cliProxyAuthImport.ts":"3276","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/utils/codexAuthFile.ts":"3277","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/utils/codexAuthImport.ts":"3278","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/utils/codexAuthZipExtract.ts":"3279","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/utils/codexConnectionSelection.ts":"3280","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/utils/codexSessionImport.ts":"3281","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/utils/googleLoopbackHint.ts":"3282","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/utils/grokCliAuthJson.ts":"3283","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/utils/jsonZipExtract.ts":"3284","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/utils/loopbackTunnel.ts":"3285","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/utils/pkce.ts":"3286","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/utils/pkceLoopbackWarning.ts":"3287","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/utils/server.ts":"3288","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/utils/ui.ts":"3289","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/obsidian/api.ts":"3290","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/obsidianSync.ts":"3291","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oneproxyRotator.ts":"3292","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oneproxySync.ts":"3293","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/piiSanitizer.ts":"3294","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/playground/codeExport.ts":"3295","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/playground/promptImprover.ts":"3296","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/playground/streamMetrics.ts":"3297","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/playground/types.ts":"3298","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/plugins/devMode.ts":"3299","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/plugins/doctor.ts":"3300","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/plugins/errors.ts":"3301","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/plugins/hooks.ts":"3302","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/plugins/index.ts":"3303","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/plugins/loader.ts":"3304","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/plugins/logger.ts":"3305","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/plugins/manager.ts":"3306","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/plugins/manifest.ts":"3307","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/plugins/marketplace.ts":"3308","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/plugins/scanner.ts":"3309","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/plugins/sdk.ts":"3310","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/plugins/testRunner.ts":"3311","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/plugins/watcher.ts":"3312","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/pricingSync.ts":"3313","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/promptCache/index.ts":"3314","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/promptCache/prefixAnalyzer.ts":"3315","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/providerModels/cursorAgent.ts":"3316","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/providerModels/geminiModelsParser.ts":"3317","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/providerModels/managedAvailableModels.ts":"3318","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/providerModels/managedModelImport.ts":"3319","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/providerModels/modelDiscovery.ts":"3320","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/providers/catalog.ts":"3321","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/providers/claudeExtraUsage.ts":"3322","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/providers/claudeFastMode.ts":"3323","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/providers/codexConnectionDefaults.ts":"3324","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/providers/codexFastTier.ts":"3325","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/providers/imageValidation.ts":"3326","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/providers/managedAvailableModels.ts":"3327","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/providers/modelListingCapability.ts":"3328","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/providers/nvidiaValidationModel.ts":"3329","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/providers/requestDefaults.ts":"3330","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/providers/serviceKindIndex.ts":"3331","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/providers/staticModels.ts":"3332","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/providers/validation/anthropicFormat.ts":"3333","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/providers/validation/audioMiscProviders.ts":"3334","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/providers/validation/cloudProviders.ts":"3335","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/providers/validation/cozeError.ts":"3336","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/providers/validation/directChatProbe.ts":"3337","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/providers/validation/embeddingProviders.ts":"3338","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/providers/validation/headers.ts":"3339","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/providers/validation/kiro.ts":"3340","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/providers/validation/metaAi.ts":"3341","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/providers/validation/openaiFormat.ts":"3342","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/providers/validation/searchProviders.ts":"3343","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/providers/validation/specialtyInline.ts":"3344","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/providers/validation/transport.ts":"3345","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/providers/validation/urlHelpers.ts":"3346","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/providers/validation/webCookie.ts":"3347","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/providers/validation/webProvidersA.ts":"3348","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/providers/validation/webProvidersB.ts":"3349","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/providers/validation.ts":"3350","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/providers/webCookieAuth.ts":"3351","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/providers/xai/thinking.ts":"3352","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/providers/xai/translators/claude.ts":"3353","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/providers/xai/translators/gemini.ts":"3354","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/providers/xai/translators/openai-chat.ts":"3355","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/providers/xai/translators/openai-responses.ts":"3356","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/proxyEgress.ts":"3357","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/proxyHealth/decision.ts":"3358","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/proxyHealth/scheduler.ts":"3359","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/proxyHealth/statusPolicy.ts":"3360","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/proxyHealth.ts":"3361","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/proxyLogger.ts":"3362","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/proxyRelay/cloudflareWorkerScript.ts":"3363","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/proxySubscription/coreEndpoint.ts":"3364","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/proxySubscription/due.ts":"3365","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/proxySubscription/fetchGuard.ts":"3366","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/proxySubscription/fetchRetry.ts":"3367","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/proxySubscription/index.ts":"3368","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/proxySubscription/needsCore.ts":"3369","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/proxySubscription/parse.ts":"3370","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/proxySubscription/schema.ts":"3371","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/proxySubscription/scopes.ts":"3372","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/proxySubscription/subscriptionService.ts":"3373","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/proxySubscription/url.ts":"3374","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/quota/QuotaStore.ts":"3375","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/quota/accountBuckets.ts":"3376","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/quota/burnRate.ts":"3377","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/quota/connectionProvider.ts":"3378","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/quota/connectionRecovery.ts":"3379","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/quota/dimensions.ts":"3380","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/quota/enforce.ts":"3381","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/quota/fairShare.ts":"3382","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/quota/planRegistry.ts":"3383","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/quota/planResolver.ts":"3384","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/quota/quotaCombos.ts":"3385","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/quota/quotaKey.ts":"3386","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/quota/quotaModelNaming.ts":"3387","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/quota/redisQuotaStore.ts":"3388","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/quota/saturationSignals.ts":"3389","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/quota/spendRecorder.ts":"3390","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/quota/sqliteQuotaStore.ts":"3391","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/quota/storeFactory.ts":"3392","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/quota/types.ts":"3393","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/radar/applyFeed.ts":"3394","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/radar/feedSchema.ts":"3395","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/radar/index.ts":"3396","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/radar/pinnedKeys.ts":"3397","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/radar/sync.ts":"3398","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/radar/verify.ts":"3399","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/reasoningRouting/input.ts":"3400","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/reasoningRouting/policy.ts":"3401","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/resilience/modelLockoutSettings.ts":"3402","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/resilience/settings/normalize.ts":"3403","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/resilience/settings/types.ts":"3404","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/resilience/settings.ts":"3405","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/routerEval/index.ts":"3406","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/runtime/ports.ts":"3407","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/search/executeWebSearch.ts":"3408","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/security/localEndpoints.ts":"3409","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/semanticCache.ts":"3410","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/serverLifecycle.ts":"3411","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/services/ServiceSupervisor.ts":"3412","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/services/apiKey.ts":"3413","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/services/bootstrap.ts":"3414","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/services/embedPath.ts":"3415","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/services/embedWsProxy.ts":"3416","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/services/healthCheck.ts":"3417","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/services/htmlRewriter.ts":"3418","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/services/installers/bifrost.ts":"3419","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/services/installers/cliproxy.ts":"3420","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/services/installers/dario.ts":"3421","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/services/installers/mux.ts":"3422","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/services/installers/ninerouter.stub.ts":"3423","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/services/installers/ninerouter.ts":"3424","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/services/installers/utils.ts":"3425","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/services/modelSync.ts":"3426","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/services/portProbe.ts":"3427","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/services/providerPlugins/registry.ts":"3428","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/services/providerPlugins/types.ts":"3429","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/services/quotaAutoPing.ts":"3430","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/services/registry.ts":"3431","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/services/reverseProxy.ts":"3432","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/services/ringBuffer.ts":"3433","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/services/serviceBackends.ts":"3434","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/services/types.ts":"3435","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/skills/__tests__/integration.test.ts":"3436","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/skills/a2a.ts":"3437","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/skills/builtin/browser.ts":"3438","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/skills/builtins.ts":"3439","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/skills/containerProvider.ts":"3440","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/skills/custom.ts":"3441","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/skills/executor.ts":"3442","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/skills/githubCollector.ts":"3443","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/skills/hybrid.ts":"3444","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/skills/injection.ts":"3445","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/skills/interception.ts":"3446","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/skills/providerSettings.ts":"3447","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/skills/registry.ts":"3448","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/skills/sandbox.ts":"3449","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/skills/schemas.ts":"3450","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/skills/skillssh.ts":"3451","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/skills/types.ts":"3452","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/skills/webFetchExecution.ts":"3453","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/source.ts":"3454","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/spend/batchWriter.ts":"3455","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/sseTextTransform.ts":"3456","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/streamingPiiTransform.ts":"3457","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/sync/bundle.ts":"3458","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/sync/tokens.ts":"3459","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/system/autoUpdate.ts":"3460","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/system/globalPackagePath.ts":"3461","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/system/versionCheck.ts":"3462","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/system/versionCompare.ts":"3463","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/tailscaleTunnel.ts":"3464","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/tokenHealthCheck.ts":"3465","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/tokenHealthCheckCopilot.ts":"3466","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/toolPolicy.ts":"3467","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/translator/streamTransform.ts":"3468","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/translatorEvents.ts":"3469","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/usage/accountIdentity.ts":"3470","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/usage/aggregateHistory.ts":"3471","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/usage/apiKeySelfService.ts":"3472","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/usage/apiKeyUsageLimits.ts":"3473","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/usage/cacheHealth.ts":"3474","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/usage/callLogApiKeyContext.ts":"3475","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/usage/callLogArtifacts.ts":"3476","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/usage/callLogs/format.ts":"3477","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/usage/callLogs.ts":"3478","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/usage/callLogsBoundedQueries.ts":"3479","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/usage/codexResetCredits.ts":"3480","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/usage/comboForecast.ts":"3481","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/usage/comboHealth.ts":"3482","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/usage/comboHealthDashboard.ts":"3483","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/usage/comboScoringInspector.ts":"3484","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/usage/completedRequestDetails.ts":"3485","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/usage/costCalculator.ts":"3486","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/usage/fetcher.ts":"3487","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/usage/flatRateProviders.ts":"3488","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/usage/internalUsageCommand.ts":"3489","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/usage/migrations.ts":"3490","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/usage/pendingRequestScope.ts":"3491","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/usage/providerDisplayNames.ts":"3492","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/usage/providerLimits/chunkedSpacingSync.ts":"3493","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/usage/providerLimits/quotaNormalize.ts":"3494","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/usage/providerLimits.ts":"3495","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/usage/providerLimitsCache.ts":"3496","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/usage/providerWindowCosts.ts":"3497","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/usage/resilienceExplain.ts":"3498","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/usage/routeExplain.ts":"3499","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/usage/tokenAccounting.ts":"3500","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/usage/usageEvents.ts":"3501","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/usage/usageHistory/helpers.ts":"3502","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/usage/usageHistory.ts":"3503","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/usage/usageStats.ts":"3504","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/usageAnalytics.ts":"3505","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/usageDb.ts":"3506","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/versionManager/binaryManager.ts":"3507","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/versionManager/healthMonitor.ts":"3508","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/versionManager/index.ts":"3509","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/versionManager/processManager.ts":"3510","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/versionManager/releaseChecker.ts":"3511","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/vncSession/harvest.ts":"3512","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/vncSession/manifest.ts":"3513","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/vncSession/service.ts":"3514","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/vscode/familyFirstModelIds.ts":"3515","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/vscode/modelPresentation.ts":"3516","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/vscode/reasoningMetadata.ts":"3517","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/vscode/serviceTierVariants.ts":"3518","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/vscode/tokenizedRequest.ts":"3519","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/webhookDispatcher.ts":"3520","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/webhooks/eventDescriptions.ts":"3521","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/webhooks/integrations/discord.ts":"3522","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/webhooks/integrations/slack.ts":"3523","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/webhooks/integrations/telegram.ts":"3524","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/ws/handshake.ts":"3525","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/zed-oauth/confirmedAccounts.ts":"3526","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/zed-oauth/credentialFingerprint.ts":"3527","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/zed-oauth/dockerDetect.ts":"3528","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/zed-oauth/importUtils.ts":"3529","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/zed-oauth/keychain-reader.stub.ts":"3530","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/zed-oauth/keychain-reader.ts":"3531","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/middleware/promptInjectionGuard.ts":"3532","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/_internal/aliasConfig.cjs":"3533","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/_internal/bypass.cjs":"3534","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/_internal/forwardTarget.cjs":"3535","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/_internal/ingest.cjs":"3536","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/_internal/rootCaShim.cjs":"3537","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/_internal/standaloneRouting.cjs":"3538","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/aliasConfig.ts":"3539","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/cert/generate.ts":"3540","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/cert/install.stub.ts":"3541","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/cert/install.ts":"3542","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/cert/migration.ts":"3543","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/cert/rootCa.ts":"3544","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/dataDir.ts":"3545","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/detection/antigravity.ts":"3546","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/detection/claudeCode.ts":"3547","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/detection/codex.ts":"3548","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/detection/copilot.ts":"3549","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/detection/cursor.ts":"3550","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/detection/index.ts":"3551","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/detection/kiro.ts":"3552","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/detection/openCode.ts":"3553","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/detection/zed.ts":"3554","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/dns/dnsConfig.ts":"3555","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/dns/provision.ts":"3556","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/handlers/antigravity.ts":"3557","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/handlers/base.ts":"3558","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/handlers/claudeCode.ts":"3559","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/handlers/codex.ts":"3560","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/handlers/copilot.ts":"3561","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/handlers/cursor.ts":"3562","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/handlers/kiro.ts":"3563","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/handlers/openCode.ts":"3564","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/handlers/trae.ts":"3565","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/handlers/zed.ts":"3566","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/inspector/agentBridgeHook.ts":"3567","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/inspector/buffer.ts":"3568","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/inspector/contextKey.ts":"3569","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/inspector/conversationNormalizer.ts":"3570","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/inspector/diagnostics.ts":"3571","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/inspector/httpProxyServer.ts":"3572","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/inspector/kindDetector.ts":"3573","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/inspector/llmMetadataExtractor.ts":"3574","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/inspector/pricing.ts":"3575","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/inspector/processAttribution.ts":"3576","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/inspector/sseMerger.ts":"3577","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/inspector/systemProxyConfig.ts":"3578","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/inspector/types.ts":"3579","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/manager.runtime.ts":"3580","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/manager.stub.ts":"3581","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/manager.ts":"3582","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/maskSecrets.ts":"3583","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/passthrough.ts":"3584","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/privilegedMitmStep.ts":"3585","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/repair.ts":"3586","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/sanitizeHeaders.ts":"3587","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/server.cjs":"3588","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/socketTimeouts.ts":"3589","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/stopDnsTeardown.ts":"3590","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/sudoGate.ts":"3591","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/systemCommands.ts":"3592","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/targets/antigravity.ts":"3593","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/targets/claudeCode.ts":"3594","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/targets/codex.ts":"3595","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/targets/copilot.ts":"3596","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/targets/cursor.ts":"3597","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/targets/ghe-copilot.ts":"3598","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/targets/index.ts":"3599","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/targets/kiro.ts":"3600","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/targets/openCode.ts":"3601","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/targets/trae.ts":"3602","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/targets/zed.ts":"3603","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/tproxy/caTrust.ts":"3604","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/tproxy/captureManager.ts":"3605","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/tproxy/captureMode.ts":"3606","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/tproxy/commands.ts":"3607","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/tproxy/dynamicCert.ts":"3608","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/tproxy/setup.ts":"3609","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/tproxy/tlsCapture.ts":"3610","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/tproxy/transparentSocket.ts":"3611","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/types.ts":"3612","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/upstreamTrust.ts":"3613","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/models/index.ts":"3614","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/proxy.ts":"3615","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/scripts/backfillAggregation.ts":"3616","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/server/auth/loginGuard.ts":"3617","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/server/authz/accessScopes.ts":"3618","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/server/authz/accessTokenAuth.ts":"3619","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/server/authz/assertAuth.ts":"3620","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/server/authz/classify.ts":"3621","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/server/authz/context.ts":"3622","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/server/authz/csrf.ts":"3623","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/server/authz/headers.ts":"3624","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/server/authz/peerStamp.ts":"3625","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/server/authz/pipeline.ts":"3626","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/server/authz/policies/clientApi.ts":"3627","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/server/authz/policies/management.ts":"3628","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/server/authz/policies/public.ts":"3629","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/server/authz/routeGuard.ts":"3630","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/server/authz/types.ts":"3631","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/server/cors/origins.ts":"3632","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/server/origin/publicOrigin.ts":"3633","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/server/ws/liveServer.ts":"3634","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/server/ws/liveServerAllowList.ts":"3635","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/server/ws/types.ts":"3636","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/server-init.ts":"3637","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/Avatar.tsx":"3638","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/Badge.tsx":"3639","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/BasePathNetworkProvider.tsx":"3640","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/Breadcrumbs.tsx":"3641","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/Button.tsx":"3642","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/Card.tsx":"3643","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/Checkbox.tsx":"3644","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/CloudSyncStatus.tsx":"3645","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/Collapsible.tsx":"3646","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/CollapsibleSection.tsx":"3647","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/ColumnToggle.tsx":"3648","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/CommandPalette.tsx":"3649","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/ConsoleLogViewer.tsx":"3650","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/CursorAuthModal.tsx":"3651","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/DataTable.tsx":"3652","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/DegradationBadge.tsx":"3653","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/DistributeProxiesButton.test.tsx":"3654","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/DistributeProxiesButton.tsx":"3655","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/EmptyState.tsx":"3656","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/ErrorPageScaffold.tsx":"3657","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/FilterBar.tsx":"3658","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/Footer.tsx":"3659","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/Header.tsx":"3660","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/InfoTooltip.tsx":"3661","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/Input.tsx":"3662","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/KiroAuthModal.tsx":"3663","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/KiroOAuthWrapper.tsx":"3664","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/KiroSocialOAuthModal.tsx":"3665","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/LanguageSelector.tsx":"3666","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/LinkifiedText.tsx":"3667","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/Loading.tsx":"3668","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/LocaleAutoDetect.tsx":"3669","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/MaintenanceBanner.tsx":"3670","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/ManualConfigModal.tsx":"3671","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/Modal.tsx":"3672","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/ModelRoutingSection.tsx":"3673","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/ModelSelectField.tsx":"3674","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/ModelSelectModal.tsx":"3675","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/MonacoEditor.tsx":"3676","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/NavigationProgress.tsx":"3677","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/NoAuthAccountCard.tsx":"3678","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/NoAuthProviderCard.tsx":"3679","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/NoAuthProviderToggle.tsx":"3680","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/NotificationToast.tsx":"3681","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/OAuthModal.tsx":"3682","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/OAuthModalPanels.tsx":"3683","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/OmniRouteLogo.tsx":"3684","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/PresetSlider.tsx":"3685","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/PricingModal.tsx":"3686","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/ProviderCooldownCard.test.tsx":"3687","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/ProviderIcon.tsx":"3688","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/ProviderTestSlideOver.tsx":"3689","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/ProxyConfigModal.tsx":"3690","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/ProxyLogDetail.tsx":"3691","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/ProxyLogger.tsx":"3692","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/PwaRegister.tsx":"3693","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/RaycastAuthModal.tsx":"3694","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/ReasoningRoutingRules.tsx":"3695","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/RequestLoggerDetail.tsx":"3696","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/RequestLoggerV2.tsx":"3697","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/RequestTimeline.tsx":"3698","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/RiskNoticeModal.tsx":"3699","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/SegmentedControl.tsx":"3700","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/Select.tsx":"3701","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/Sidebar.search.test.tsx":"3702","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/Sidebar.tsx":"3703","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/SkillsConceptCard.tsx":"3704","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/SystemMonitor.tsx":"3705","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/Textarea.tsx":"3706","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/ThemeProvider.tsx":"3707","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/ThemeToggle.tsx":"3708","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/Toggle.tsx":"3709","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/TokenHealthBadge.tsx":"3710","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/Tooltip.tsx":"3711","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/TraeAuthModal.tsx":"3712","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/UsageAnalytics.tsx":"3713","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/UsageStats.tsx":"3714","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/analytics/ApiKeyFilterDropdown.tsx":"3715","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/analytics/CustomRangePicker.tsx":"3716","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/analytics/ModelTable.tsx":"3717","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/analytics/RequestCountByProviderDateTable.tsx":"3718","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/analytics/RequestCountDateFilter.tsx":"3719","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/analytics/RequestCountTable.tsx":"3720","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/analytics/TimeRangeSelector.tsx":"3721","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/analytics/chartColors.ts":"3722","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/analytics/charts.tsx":"3723","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/analytics/index.tsx":"3724","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/analytics/modelBreakdownSort.ts":"3725","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/analytics/rechartsCore.tsx":"3726","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/analytics/rechartsDonuts.tsx":"3727","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/analytics/rechartsUsageCharts.tsx":"3728","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/analytics/requestCountSort.ts":"3729","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/analytics/useProviderDailyUsage.ts":"3730","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/cli/CliComparisonCard.tsx":"3731","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/cli/CliConceptCard.tsx":"3732","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/cli/CliToolCard.tsx":"3733","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/cli/index.ts":"3734","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/compression/ComboCompressionModeSelect.tsx":"3735","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/compression/CompressionPipelineEditor.tsx":"3736","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/compression/EngineConfigForm.tsx":"3737","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/compression/EngineConfigPage.tsx":"3738","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/compression/compressionPipelineModel.ts":"3739","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/docs/APIReference.stories.tsx":"3740","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/docs/APIReference.tsx":"3741","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/docs/Callout.stories.tsx":"3742","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/docs/Callout.tsx":"3743","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/docs/CodeBlock.stories.tsx":"3744","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/docs/CodeBlock.tsx":"3745","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/docs/DocsBreadcrumbs.stories.tsx":"3746","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/docs/DocsBreadcrumbs.tsx":"3747","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/docs/DocsSidebar.stories.tsx":"3748","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/docs/DocsSidebar.tsx":"3749","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/docs/DocsThemeProvider.tsx":"3750","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/docs/Tabs.stories.tsx":"3751","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/docs/Tabs.tsx":"3752","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/docs/tokens.ts":"3753","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/flow/FlowCanvas.tsx":"3754","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/flow/StatusDot.tsx":"3755","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/flow/edgeStyles.ts":"3756","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/index.tsx":"3757","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/layouts/AuthLayout.tsx":"3758","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/layouts/DashboardLayout.tsx":"3759","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/layouts/index.tsx":"3760","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/lobeProviderIcons.ts":"3761","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/logTableStyles.ts":"3762","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/modelSelectModalHelpers.ts":"3763","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/oauthBlobSubmit.ts":"3764","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/oauthModal/GheConfigStep.tsx":"3765","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/oauthModal/GitlabDuoSetupStep.tsx":"3766","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/oauthModal/OAuthErrorStep.tsx":"3767","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/oauthModal/OAuthWaitingStep.tsx":"3768","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/proxyAssignment.test.tsx":"3769","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/proxyAssignment.ts":"3770","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/requestLoggerPreferences.ts":"3771","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/requestLoggerSignature.ts":"3772","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/agentSkills.ts":"3773","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/alibabaProviderRegions.ts":"3774","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/antigravityClientProfile.ts":"3775","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/apiKeyPolicyScopes.ts":"3776","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/appConfig.ts":"3777","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/batch.ts":"3778","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/batchEndpoints.ts":"3779","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/bodySize.ts":"3780","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/claudeCodeClient.ts":"3781","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/cliCompatProviders.ts":"3782","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/cliTools.ts":"3783","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/cliToolsGrokBuild.ts":"3784","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/clientIdentityProfiles.ts":"3785","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/codexClient.ts":"3786","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/colors.ts":"3787","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/comboConfigMode.ts":"3788","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/config.ts":"3789","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/dashboardCsrf.ts":"3790","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/endpointCategories.ts":"3791","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/errorCodes.ts":"3792","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/featureFlagDefinitions.ts":"3793","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/gitlabDuoSetupMessage.ts":"3794","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/headers.ts":"3795","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/homeWidgets.ts":"3796","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/index.ts":"3797","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/managementScopes.ts":"3798","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/mcpScopes.ts":"3799","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/mitmToolHosts.ts":"3800","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/modal.ts":"3801","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/modelCompat.ts":"3802","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/modelSpecs.ts":"3803","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/models.ts":"3804","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/openRouterPreset.ts":"3805","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/pricing/default-pricing.ts":"3806","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/pricing/frontier-labs.ts":"3807","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/pricing/inference-hosts.ts":"3808","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/pricing/oauth-subscriptions.ts":"3809","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/pricing/regional.ts":"3810","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/pricing/shared-tiers.ts":"3811","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/pricing.ts":"3812","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/providers/apikey/enterprise-cloud.ts":"3813","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/providers/apikey/frontier-labs.ts":"3814","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/providers/apikey/gateways.ts":"3815","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/providers/apikey/index.ts":"3816","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/providers/apikey/inference-hosts.ts":"3817","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/providers/apikey/regional.ts":"3818","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/providers/apikey/specialty-media.ts":"3819","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/providers/audio.ts":"3820","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/providers/cloud-agent.ts":"3821","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/providers/local.ts":"3822","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/providers/noauth.ts":"3823","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/providers/oauth.ts":"3824","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/providers/search.ts":"3825","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/providers/system.ts":"3826","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/providers/upstream-proxy.ts":"3827","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/providers/web-cookie.ts":"3828","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/providers.ts":"3829","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/publicApiRoutes.ts":"3830","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/quotaAutoPing.ts":"3831","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/responsesPreviousResponseId.ts":"3832","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/routingStrategies.ts":"3833","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/selfServiceScopes.ts":"3834","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/serviceKinds.ts":"3835","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/sidebarGroupVisibility.ts":"3836","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/sidebarVisibility/sections.ts":"3837","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/sidebarVisibility/types.ts":"3838","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/sidebarVisibility.ts":"3839","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/spawnCapablePrefixes.ts":"3840","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/statusColors.ts":"3841","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/upstreamHeaders.ts":"3842","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/visionBridgeDefaults.ts":"3843","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/visionModels.ts":"3844","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/contracts/quota.ts":"3845","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/hooks/__tests__/useDisplayBaseUrl.test.tsx":"3846","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/hooks/cli/useToolBatchStatuses.ts":"3847","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/hooks/index.ts":"3848","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/hooks/useCopyToClipboard.ts":"3849","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/hooks/useDisplayBaseUrl.ts":"3850","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/hooks/useElectron.ts":"3851","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/hooks/useTheme.ts":"3852","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/http/apiErrorMessage.ts":"3853","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/lib/persistLocale.ts":"3854","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/middleware/bodySizeGuard.ts":"3855","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/middleware/chatBodyAdmission.ts":"3856","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/middleware/correlationId.ts":"3857","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/middleware/requireJsonContentType.ts":"3858","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/network/outboundUrlGuard.ts":"3859","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/network/outboundUrlGuardPolicy.ts":"3860","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/network/remoteImageFetch.ts":"3861","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/network/safeOutboundFetch.ts":"3862","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/platform/windowsProcess.ts":"3863","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/providers/webSessionCredentials.ts":"3864","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/reasoning/effortStandardization.ts":"3865","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/resilience/peerRouting.ts":"3866","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/schemas/agentBridge.ts":"3867","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/schemas/cliCatalog.ts":"3868","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/schemas/inspector.ts":"3869","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/schemas/memory.ts":"3870","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/schemas/playground.ts":"3871","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/schemas/qdrant.ts":"3872","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/schemas/quota.ts":"3873","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/schemas/searchTools.ts":"3874","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/schemas/validation.ts":"3875","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/services/apiKeyResolver.ts":"3876","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/services/backupService.ts":"3877","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/services/claudeCliConfig.ts":"3878","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/services/cliInstallFallback.ts":"3879","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/services/cliRuntime.ts":"3880","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/services/cliRuntimeGrokBuild.ts":"3881","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/services/cliRuntimeHealthcheckPath.ts":"3882","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/services/cliRuntimeKnownPath.ts":"3883","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/services/cloudSyncScheduler.ts":"3884","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/services/codexCatalogRevalidation.ts":"3885","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/services/codexDiscoveryPolicy.ts":"3886","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/services/droidCustomModels.ts":"3887","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/services/initializeCloudSync.ts":"3888","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/services/loginShellPath.ts":"3889","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/services/modelSyncScheduler.ts":"3890","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/services/opencodeConfig.ts":"3891","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/services/providerLimitsSyncScheduler.ts":"3892","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/services/qwenCodeConfig.ts":"3893","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/types/cliBatchStatus.ts":"3894","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/types/index.ts":"3895","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/types/pagination.ts":"3896","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/types/utilization.ts":"3897","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/a11yAudit.ts":"3898","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/api.ts":"3899","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/apiAuth.ts":"3900","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/apiKey.ts":"3901","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/apiKeyPolicy.ts":"3902","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/apiResponse.ts":"3903","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/basePath.ts":"3904","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/basePathFetch.ts":"3905","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/bulkApiKeyParser.ts":"3906","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/circuitBreaker.ts":"3907","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/classify429.ts":"3908","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/cliCompat.ts":"3909","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/clientApiRouteAuth.ts":"3910","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/clineAuth.ts":"3911","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/clipboard.ts":"3912","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/cloud.ts":"3913","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/cn.ts":"3914","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/codexBaseUrl.ts":"3915","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/codexConfig.ts":"3916","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/compatibleProviderId.ts":"3917","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/compressionHeaderEcho.ts":"3918","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/connectionStatus.ts":"3919","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/cors.ts":"3920","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/costEstimator.ts":"3921","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/dashboardCsrf.ts":"3922","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/envBoolean.ts":"3923","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/featureFlags.ts":"3924","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/fetchError.ts":"3925","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/fetchTimeout.ts":"3926","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/formatting.ts":"3927","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/freeModels.ts":"3928","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/globPattern.ts":"3929","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/grokBilling.ts":"3930","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/index.ts":"3931","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/injectionSeverity.ts":"3932","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/inputSanitizer.ts":"3933","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/linkify.ts":"3934","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/logRedaction.ts":"3935","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/logger.ts":"3936","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/machine.ts":"3937","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/machineId.ts":"3938","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/maskEmail.ts":"3939","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/modelCatalogSearch.ts":"3940","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/noAuthProviders.ts":"3941","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/nodeRuntimeSupport.ts":"3942","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/numeric.ts":"3943","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/parseApiKeys.ts":"3944","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/providerConnectionStatus.ts":"3945","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/providerCredentialRequirement.ts":"3946","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/providerDisplayLabel.ts":"3947","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/providerFallbackColor.ts":"3948","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/providerHints.ts":"3949","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/providerModelAliases.ts":"3950","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/providerQuotaVisibility.ts":"3951","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/rateLimiter.ts":"3952","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/releaseNotes.ts":"3953","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/requestId.ts":"3954","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/requestTelemetry.ts":"3955","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/requestTimeout.ts":"3956","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/resolveOmniRouteBaseUrl.ts":"3957","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/runtimeTimeouts.ts":"3958","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/secretsValidator.ts":"3959","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/secureRandom.ts":"3960","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/serviceTierLabels.ts":"3961","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/shuffleDeck.ts":"3962","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/sidebarExpansionState.ts":"3963","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/sidebarRouteMatch.ts":"3964","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/sidebarSearch.ts":"3965","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/streamTracker.ts":"3966","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/structuredLogger.ts":"3967","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/testProcess.ts":"3968","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/tiktokenCounter.ts":"3969","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/turkishText.ts":"3970","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/upstreamError.ts":"3971","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/wsPath.ts":"3972","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/validation/compressionConfigSchemas.ts":"3973","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/validation/freeProxySchemas.ts":"3974","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/validation/helpers.ts":"3975","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/validation/oneproxySchemas.ts":"3976","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/validation/providerSchema.ts":"3977","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/validation/providerSpecificData.ts":"3978","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/validation/schemas/apiV1.ts":"3979","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/validation/schemas/auth.ts":"3980","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/validation/schemas/cli.ts":"3981","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/validation/schemas/cloud.ts":"3982","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/validation/schemas/combo.ts":"3983","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/validation/schemas/evals.ts":"3984","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/validation/schemas/gemini.ts":"3985","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/validation/schemas/keys.ts":"3986","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/validation/schemas/misc.ts":"3987","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/validation/schemas/payloadRules.ts":"3988","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/validation/schemas/pricing.ts":"3989","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/validation/schemas/provider.ts":"3990","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/validation/schemas/proxy.ts":"3991","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/validation/schemas/reasoningRouting.ts":"3992","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/validation/schemas/routing.ts":"3993","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/validation/schemas/settings.ts":"3994","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/validation/schemas/translator.ts":"3995","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/validation/schemas.ts":"3996","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/validation/settingsSchemas.ts":"3997","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/sse/handlers/autoRouting.ts":"3998","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/sse/handlers/chat/clientRawRequest.ts":"3999","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/sse/handlers/chat.ts":"4000","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/sse/handlers/chatAdmission.ts":"4001","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/sse/handlers/chatHelpers.ts":"4002","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/sse/handlers/chatPredicates.ts":"4003","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/sse/handlers/comboFailureLogging.ts":"4004","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/sse/handlers/reasoningRouting.ts":"4005","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/sse/handlers/rejectedRequestUsage.ts":"4006","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/sse/handlers/requestBody.ts":"4007","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/sse/handlers/resolveRoutingModel.ts":"4008","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/sse/services/auth.ts":"4009","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/sse/services/cooldownAwareRetry.ts":"4010","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/sse/services/googApiKeyAuth.ts":"4011","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/sse/services/headerReader.ts":"4012","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/sse/services/imageCredentialRetry.ts":"4013","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/sse/services/model.ts":"4014","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/sse/services/noAuthProviderSettings.ts":"4015","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/sse/services/noAuthProviderSiblings.ts":"4016","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/sse/services/noAuthProxyResolution.ts":"4017","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/sse/services/requestResourceHealth.ts":"4018","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/sse/services/sessionAffinityPin.ts":"4019","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/sse/services/streamState.ts":"4020","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/sse/services/tokenRefresh.ts":"4021","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/sse/utils/backpressure.ts":"4022","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/sse/utils/logger.ts":"4023","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/store/emailPrivacyStore.ts":"4024","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/store/index.ts":"4025","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/store/notificationStore.ts":"4026","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/store/themeStore.ts":"4027","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/types/databaseSettings.ts":"4028","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/types/global.d.ts":"4029","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/types/index.ts":"4030","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/types/provider.ts":"4031","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/types/sqljs.d.ts":"4032","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/_cp_mock_hook.mts":"4033","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/_cp_mock_module.mts":"4034","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/_helpers/readSrc.ts":"4035","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/_setup/isolateDataDir.ts":"4036","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/_setup/vitestUiPolyfills.ts":"4037","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/benchmarks/pipeline-accuracy.test.ts":"4038","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/boundary/gemini-double-escaping.live.test.ts":"4039","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/boundary/gemini-midstream-503-e2e.live.test.ts":"4040","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/boundary/gemma4-multiturn.live.test.ts":"4041","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/boundary/gemma4-newline-investigation.live.test.ts":"4042","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/boundary/openclaw-omniroute-tool-boundary.live.test.ts":"4043","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/e2e/a11y-resilience.spec.ts":"4044","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/e2e/a11y.spec.ts":"4045","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/e2e/agent-bridge-traffic-cross.spec.ts":"4046","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/e2e/agent-bridge.spec.ts":"4047","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/e2e/agent-skills-page.spec.ts":"4048","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/e2e/analytics-tabs.spec.ts":"4049","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/e2e/api-keys-flow.spec.ts":"4050","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/e2e/api.spec.ts":"4051","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/e2e/combo-live-studio.spec.ts":"4052","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/e2e/combo-unification.spec.ts":"4053","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/e2e/combos-flow.spec.ts":"4054","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/e2e/compression-studio.spec.ts":"4055","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/e2e/ecosystem.test.ts":"4056","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/e2e/error-pages.spec.ts":"4057","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/e2e/group-b-activity-feed.spec.ts":"4058","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/e2e/group-b-quota-plans-config.spec.ts":"4059","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/e2e/group-b-quota-share-pools.spec.ts":"4060","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/e2e/group-b-redirect-logs-activity.spec.ts":"4061","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/e2e/helpers/dashboardAuth.ts":"4062","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/e2e/helpers/mockUpstreamServer.ts":"4063","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/e2e/memory-engine.spec.ts":"4064","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/e2e/memory-qdrant-routes.spec.ts":"4065","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/e2e/memory-settings.spec.ts":"4066","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/e2e/navigation.spec.ts":"4067","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/e2e/playground-compare.spec.ts":"4068","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/e2e/playground-studio.spec.ts":"4069","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/e2e/protocol-clients.test.ts":"4070","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/e2e/protocol-visibility.spec.ts":"4071","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/e2e/providers-bailian-coding-plan.spec.ts":"4072","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/e2e/providers-management.spec.ts":"4073","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/e2e/proxy-registry.smoke.spec.ts":"4074","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/e2e/resilience-plan-alignment.spec.ts":"4075","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/e2e/responsive.spec.ts":"4076","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/e2e/responsiveSpecs.ts":"4077","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/e2e/search-tools-studio.spec.ts":"4078","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/e2e/settings-toggles.spec.ts":"4079","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/e2e/skills-marketplace.spec.ts":"4080","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/e2e/smoke.spec.ts":"4081","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/e2e/system-failover.test.ts":"4082","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/e2e/traffic-inspector.spec.ts":"4083","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/e2e/translator-friendly.spec.ts":"4084","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/e2e/visual-resilience-smoke.spec.ts":"4085","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/fixtures/compression/session-dedup-memory-7849.ts":"4086","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/fixtures/devin-bridge/e2e-workspace/.claude/hooks/log-tool.mjs":"4087","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/fixtures/devin-bridge/e2e-workspace/math.js":"4088","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/fixtures/devin-bridge/e2e-workspace/math.test.js":"4089","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/fixtures/sanitizerFixtures.ts":"4090","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/fixtures/welcome-banner-plugin/index.mjs":"4091","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/golden-set/compression-caveman-v2.test.ts":"4092","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/golden-set/compression-quality.test.ts":"4093","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/golden-set/compression-savings.test.ts":"4094","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/golden-set/compression-upstream-parity.test.ts":"4095","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/helpers/fakeUpstreamStream.ts":"4096","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/helpers/faultyUpstream.ts":"4097","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/helpers/goldenSnapshot.ts":"4098","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/helpers/managementSession.ts":"4099","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/helpers/persistence/comboRepositoryConformance.ts":"4100","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/helpers/propertyConfig.ts":"4101","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/helpers/translationFixtures.ts":"4102","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/homolog/ui/api-key-flow.spec.ts":"4103","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/homolog/ui/auth.setup.ts":"4104","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/homolog/ui/playwright.config.ts":"4105","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/homolog/ui/routes.spec.ts":"4106","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/_chatPipelineCallLogs.ts":"4107","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/_chatPipelineHarness.ts":"4108","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/_comboRoutingHarness.ts":"4109","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/active-request-completion.test.ts":"4110","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/agent-bridge-bypass-flow.test.ts":"4111","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/agent-bridge-cert-flow.test.ts":"4112","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/agent-bridge-mappings.test.ts":"4113","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/agent-bridge-routes.test.ts":"4114","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/agent-skills-content.test.ts":"4115","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/agent-skills-discovery.test.ts":"4116","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/aihorde-load-test.test.ts":"4117","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/all-statuses-route.test.ts":"4118","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/antigravity-projectid-discovery-persist-8491.test.ts":"4119","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/api-keys.test.ts":"4120","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/api-routes-critical.test.ts":"4121","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/audit-log-level-filter.test.ts":"4122","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/batch-e2e-rate-limit.test.ts":"4123","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/batch-processor-escaping.test.ts":"4124","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/chat-pipeline.test.ts":"4125","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/chatcore-compression-integration.test.ts":"4126","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/chatcore-context-window-boundary.test.ts":"4127","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/cli-settings-codewhale.test.ts":"4128","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/cli-settings-deepseek-tui.test.ts":"4129","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/cli-settings-forge.test.ts":"4130","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/cli-settings-grok-build.test.ts":"4131","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/cli-settings-jcode.test.ts":"4132","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/cli-settings-letta.test.ts":"4133","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/cli-settings-omp.test.ts":"4134","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/cli-settings-pi.test.ts":"4135","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/cli-settings-smelt.test.ts":"4136","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/codex-chat-reasoning-http-e2e.test.ts":"4137","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/combo-failover-e2e.test.ts":"4138","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/combo-live/_liveHarness.ts":"4139","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/combo-live/auto.live.test.ts":"4140","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/combo-live/cost-and-fusion.live.test.ts":"4141","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/combo-live/ordered.live.test.ts":"4142","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/combo-matrix/auto.test.ts":"4143","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/combo-matrix/context-relay-codex.test.ts":"4144","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/combo-matrix/context-relay-handoff.test.ts":"4145","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/combo-matrix/cost-and-context.test.ts":"4146","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/combo-matrix/fusion.test.ts":"4147","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/combo-matrix/ordered.test.ts":"4148","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/combo-matrix/quota-aware.test.ts":"4149","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/combo-matrix/quota-share.test.ts":"4150","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/combo-matrix/weighted.test.ts":"4151","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/combo-provider-exhaustion.test.ts":"4152","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/combo-routing-e2e.test.ts":"4153","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/compression-pipeline.test.ts":"4154","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/cursor-e2e.test.ts":"4155","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/files-api.test.ts":"4156","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/fingerprint-expansion.test.ts":"4157","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/free-models-benchmark.test.ts":"4158","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/free-models-tpm-stress.test.ts":"4159","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/freeModelBenchmarkShared.ts":"4160","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/gemini-combo-cooldown-wait.test.ts":"4161","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/gemini-large-context-tpm.test.ts":"4162","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/gemini-live-429-classification.test.ts":"4163","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/gemini-malformed-function-call-stream.test.ts":"4164","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/gemini-rate-limit-classification.test.ts":"4165","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/gemini-tool-call-escaping.test.ts":"4166","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/heap-growth.test.ts":"4167","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/historical-tool-call-leak.test.ts":"4168","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/integration-wiring.test.ts":"4169","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/live-gemini-agentic-loop.test.ts":"4170","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/live-gemini-nonstream.test.ts":"4171","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/live-gemini-workload.test.ts":"4172","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/live-gemini.test.ts":"4173","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/live-ws-startup.test.ts":"4174","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/liveGeminiShared.ts":"4175","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/llama-cpp-provider.test.ts":"4176","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/manifest-routing.test.ts":"4177","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/memory-embedding-providers.test.ts":"4178","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/memory-engine-status.test.ts":"4179","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/memory-pipeline.test.ts":"4180","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/memory-reindex.test.ts":"4181","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/memory-retrieve-preview.test.ts":"4182","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/memory-route-put.test.ts":"4183","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/memory-summarize.test.ts":"4184","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/mimocode-proxy.integration.test.ts":"4185","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/modelsDevSync.test.ts":"4186","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/monitoring-health-cache.test.ts":"4187","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/newly-enabled-providers.test.ts":"4188","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/obsidian-plugin-e2e.test.ts":"4189","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/performance-regression.test.ts":"4190","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/pipeline-combo.test.ts":"4191","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/playground-improve-prompt.test.ts":"4192","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/playground-presets-crud.test.ts":"4193","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/playground-presets-zod.test.ts":"4194","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/plugins-lifecycle.test.ts":"4195","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/presets-dashboard-auth.test.ts":"4196","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/provider-journey.contract.test.ts":"4197","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/proxy-context-passthrough.test.ts":"4198","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/proxy-pipeline.test.ts":"4199","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/proxy-registry-flow.test.ts":"4200","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/qdrant-routes.test.ts":"4201","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/quota-plans-crud.test.ts":"4202","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/quota-pool-usage-provider-resolution.test.ts":"4203","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/quota-pools-crud.test.ts":"4204","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/quota-pools-usage.test.ts":"4205","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/quota-preview.test.ts":"4206","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/quota-routes-error-sanitization.test.ts":"4207","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/quota-store-settings.test.ts":"4208","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/reasoning-routing-pipeline.test.ts":"4209","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/resilience-chaos.test.ts":"4210","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/resilience-http-e2e.test.ts":"4211","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/search-providers-catalog.test.ts":"4212","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/security-hardening.test.ts":"4213","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/services/cliproxy-coexistence.test.ts":"4214","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/services/full-lifecycle.int.test.ts":"4215","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/services/route-guard-services.int.test.ts":"4216","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/skills-pipeline.test.ts":"4217","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/sse-correctness.test.ts":"4218","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/stream-recovery-wiring.test.ts":"4219","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/test-model-compression-off-6240.test.ts":"4220","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/traffic-inspector-capture-modes.test.ts":"4221","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/traffic-inspector-error-sanitization.test.ts":"4222","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/traffic-inspector-hosts.test.ts":"4223","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/traffic-inspector-internal-ingest.test.ts":"4224","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/traffic-inspector-localonly.test.ts":"4225","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/traffic-inspector-requests.test.ts":"4226","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/traffic-inspector-session-requests.test.ts":"4227","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/traffic-inspector-sessions.test.ts":"4228","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/traffic-inspector-ws.test.ts":"4229","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/v1-contracts-behavior.test.ts":"4230","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/live/deepseek-web-live.test.ts":"4231","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/load/k6-soak.js":"4232","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/load/proxy-load.ts":"4233","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/scratch_test.mjs":"4234","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/theoldllm-stress.test.ts":"4235","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/translator/testFromFile.ts":"4236","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/7993-noauth-proxy-routing.test.ts":"4237","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/8134-github-t5-fallback-filter.test.ts":"4238","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/8169-lite-word-boundary-truncation.test.ts":"4239","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/8189-classifier-compat-auto-narrow.test.ts":"4240","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/8200-perplexity-web-401-cooldown.test.ts":"4241","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/8200-perplexity-web-cookie-rotation.test.ts":"4242","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/8231-gemini-civic-integrity-default.test.ts":"4243","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/8247-accountfallback-model-unhealthy.test.ts":"4244","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/8248-accountfallback-nvidia-degraded.test.ts":"4245","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/8295-namespace-leaf-collision.test.ts":"4246","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/8326-compatible-id-regex.test.ts":"4247","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/8327-models-owned-by-prefix.test.ts":"4248","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/8328-topology-custom-providers.test.ts":"4249","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/8331-usage-buffer-inflation.test.ts":"4250","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/8332-combo-vision-fallback.test.ts":"4251","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/8336-audit-loopback-login.test.ts":"4252","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/8350-hermes-oauth-usage-400.test.ts":"4253","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/8368-image-token-context.test.ts":"4254","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/8370-priority-affinity-reorder.test.ts":"4255","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/8374-plugins-status-optional.test.ts":"4256","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/8376-econnrefused-breaker.test.ts":"4257","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/8385-perkey-proxy-global-toggle.test.ts":"4258","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/8388-compression-detail-persist.test.ts":"4259","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/8395-plugin-hooks-fire.test.ts":"4260","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/8396-cooldown-429-cap.test.ts":"4261","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/8431-multiwindow-quota-eviction.test.ts":"4262","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/8488-capability-filter-fail-closed.test.ts":"4263","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/8510-adobe-firefly-edits-route.test.ts":"4264","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/8560-responses-image-compaction.test.ts":"4265","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/8594-compress-image-token-stringify.test.ts":"4266","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/8676-monsterapi-deprecation.test.ts":"4267","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/8958-alias-backed-node-prefix.test.ts":"4268","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/8989-perplexity-catalog-mode-repro.test.ts":"4269","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/9232-purge-proxy-assignments-on-delete.test.ts":"4270","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/9474-claude-code-oauth-mismap.test.ts":"4271","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/9536-usage-misreporting-openai-to-claude.test.ts":"4272","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/9545-gpt56-reasoning-tools.test.ts":"4273","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/9551-proxyfetch-no-proxy-context-bypass.test.ts":"4274","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/9560-turbopack-nft-lazy-module-fs.test.ts":"4275","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/9568-gemini-tool-casing-mismatch.test.ts":"4276","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/AutoComboCatalog.test.tsx":"4277","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/SkillsConceptCard.test.tsx":"4278","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/_fixtures/tsx-runtime-modern-syntax.ts":"4279","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/_mitmHandlerHarness.ts":"4280","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/_mocks/settings.ts":"4281","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/a2a-auth-timing-safe.test.ts":"4282","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/a2a-cost-analysis-numeric-fallback.test.ts":"4283","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/a2a-enabled-route.test.ts":"4284","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/a2a-routing-logger.test.ts":"4285","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/access-scopes-infer.test.ts":"4286","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/access-token-scopes.test.ts":"4287","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/access-tokens-db.test.ts":"4288","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/account-concurrency-cap.test.ts":"4289","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/account-fallback-anthropic-quota.test.ts":"4290","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/account-fallback-cf1010-no-retry-8775.test.ts":"4291","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/account-fallback-lockout-eviction.test.ts":"4292","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/account-fallback-retry-after-json.test.ts":"4293","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/account-fallback-route-restriction-403.test.ts":"4294","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/account-fallback-service.test.ts":"4295","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/account-selector.test.ts":"4296","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/accountSemaphore.test.ts":"4297","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/accountfallback-ratelimit-400-4976.test.ts":"4298","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/acp-agents-route.test.ts":"4299","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/acp-registry.test.ts":"4300","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/active-request-stream-chunks-lifecycle.test.ts":"4301","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/adaptive-admission-controller.test.ts":"4302","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/adaptive-admission-cost.test.ts":"4303","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/adaptive-admission-domain.test.ts":"4304","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/adaptive-admission-features.test.ts":"4305","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/adaptive-admission-lifecycle.test.ts":"4306","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/adaptive-admission-queue.test.ts":"4307","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/adaptive-admission-route-matrix.test.ts":"4308","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/adaptive-admission-runtime.test.ts":"4309","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/admin-audit-events.test.ts":"4310","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/adobe-firefly-browser-login.test.ts":"4311","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/adobe-firefly-jwt-redos-guard.test.ts":"4312","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/adobe-firefly.test.ts":"4313","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/advanced-fase07-09.test.ts":"4314","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/adversarialPii.test.ts":"4315","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/agent-bridge-cert-install-fallback-4546.test.ts":"4316","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/agent-bridge-cert-route-validation.test.ts":"4317","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/agent-bridge-cert-trust-sudo-gate.test.ts":"4318","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/agent-bridge-config-portability.test.ts":"4319","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/agent-bridge-detected-models-8656.test.ts":"4320","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/agent-bridge-dns-params-7271.test.ts":"4321","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/agent-bridge-dns-per-agent-8466.test.ts":"4322","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/agent-bridge-dns-route-validation.test.ts":"4323","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/agent-bridge-dns-sudo-gate.test.ts":"4324","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/agent-bridge-dns-toggle-method-7157.test.ts":"4325","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/agent-bridge-maintenance-api.test.ts":"4326","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/agent-bridge-mappings-sync-8656.test.ts":"4327","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/agent-bridge-repair-route-validation.test.ts":"4328","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/agent-bridge-repair-sudo-gate.test.ts":"4329","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/agent-bridge-server-route-dynamic-import.test.ts":"4330","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/agent-bridge-state-full-payload-8656.test.ts":"4331","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/agent-bridge-state-normalize-3318.test.ts":"4332","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/agent-bridge-targets-serializable.test.ts":"4333","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/agent-card-route.test.ts":"4334","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/agent-goal-policy.test.ts":"4335","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/agent-skills-page.test.tsx":"4336","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/agentSkillTools-mcp.test.ts":"4337","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/agentSkills-catalog.test.ts":"4338","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/agentSkills-cliRegistryParser.test.ts":"4339","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/agentSkills-generator.test.ts":"4340","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/agentSkills-openapiParser.test.ts":"4341","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/agentSkills-routes.test.ts":"4342","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/agentSkills-schemas.test.ts":"4343","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/agentbridge-antigravity-cert-hosts-6494.test.ts":"4344","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/agentbridge-mitm-router-key-6403.test.ts":"4345","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/agentrouter-cc-wire-image.test.ts":"4346","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/agentrouter-chatcore-protocols.test.ts":"4347","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/agentrouter-executor-protocols.test.ts":"4348","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/agentrouter-live-catalog.test.ts":"4349","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/agentrouter-models-discovery-7016.test.ts":"4350","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/agentrouter-quota-fetcher.test.ts":"4351","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/agnes-provider.test.ts":"4352","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/agy-auth-import.test.ts":"4353","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/agy-gemini-3696-tier-passthrough.test.ts":"4354","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/agy-gemini-400-3229.test.ts":"4355","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/agy-pro-fallback-chain-3786.test.ts":"4356","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/agy-projectid-ui.test.ts":"4357","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/agy-provider.test.ts":"4358","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/agy-usage-quota.test.ts":"4359","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/aihorde-tools-unsupported-provider-fallback.test.ts":"4360","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/airforce-v1-double-prefix-5899.test.ts":"4361","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/alibaba-image-media.test.ts":"4362","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/alibaba-provider-regions.test.ts":"4363","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/alibaba-video-media.test.ts":"4364","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/alternate-formats.test.ts":"4365","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/anthropic-cache-fingerprint.test.ts":"4366","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/anthropic-compat-validation-v1-messages.test.ts":"4367","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/anthropic-header-dedupe-1475.test.ts":"4368","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/anthropic-official-baseurl-host.test.ts":"4369","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/anthropic-stream-thinking-close-marker.test.ts":"4370","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/anthropic-thinking-signature-recovery.test.ts":"4371","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/anthropic-toolcall-args-6459.test.ts":"4372","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/antigravity-429-quota-cooldown.test.ts":"4373","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/antigravity-429-quota-tdd.test.ts":"4374","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/antigravity-claude-prefill-strip.test.ts":"4375","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/antigravity-client-identity-paths.test.ts":"4376","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/antigravity-client-profile.test.ts":"4377","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/antigravity-credits.test.ts":"4378","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/antigravity-discovery-bootstrap.test.ts":"4379","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/antigravity-executor-split.test.ts":"4380","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/antigravity-finish-reason-normalization.test.ts":"4381","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/antigravity-format-detection.test.ts":"4382","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/antigravity-headers.test.ts":"4383","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/antigravity-image-catalog-separation.test.ts":"4384","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/antigravity-local-usage-fallback-3821.test.ts":"4385","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/antigravity-missing-project-chat.test.ts":"4386","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/antigravity-mitm-model-resolution.test.ts":"4387","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/antigravity-model-aliases.test.ts":"4388","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/antigravity-native-toolcall-collect.test.ts":"4389","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/antigravity-oauth-client-profile.test.ts":"4390","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/antigravity-oauth-no-pkce-no-openid.test.ts":"4391","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/antigravity-oauth-postexchange-nonblocking.test.ts":"4392","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/antigravity-orphan-toolresult-6026.test.ts":"4393","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/antigravity-orphan-tooluse-7752.test.ts":"4394","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/antigravity-prefer-stored-project.test.ts":"4395","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/antigravity-projectid.test.ts":"4396","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/antigravity-quota-skipping.test.ts":"4397","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/antigravity-refresh-empty-token-3850.test.ts":"4398","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/antigravity-retired-public-models.test.ts":"4399","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/antigravity-retry-hook.test.ts":"4400","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/antigravity-safetysettings-5003.test.ts":"4401","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/antigravity-server-side-tools-6914.test.ts":"4402","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/antigravity-sse-collect-socket-release-4309.test.ts":"4403","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/antigravity-streaming-error-body-sanitized-2461.test.ts":"4404","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/antigravity-streaming-passthrough.test.ts":"4405","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/antigravity-strip-builtin-tools-funcdecls-1095.test.ts":"4406","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/antigravity-strip-output-config-1944.test.ts":"4407","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/antigravity-strip-thinking-fields-1926.test.ts":"4408","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/antigravity-tool-cloak-server-side-invocations.test.ts":"4409","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/antigravity-tool-cloaking.test.ts":"4410","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/antigravity-usage-fetcher.test.ts":"4411","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/antigravity-usage-service.test.ts":"4412","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/antigravity-version.test.ts":"4413","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/antigravity-weekly-quota-4017.test.ts":"4414","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api/api-catchall-json-404.test.ts":"4415","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api/authz-inventory.test.ts":"4416","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api/auto-combo-candidates-route-7819.test.ts":"4417","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api/cli-tools/detect.test.ts":"4418","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api/combo-002-first-field.test.ts":"4419","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api/combo-error-response.test.ts":"4420","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api/compression/compression-api.test.ts":"4421","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api/compression/rtk-learn-discover-routes.test.ts":"4422","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api/compression/rtk-toml-import-route.test.ts":"4423","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api/compression-engines-route.test.ts":"4424","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api/compression-preview-caveman-and-stacked-6425.test.ts":"4425","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api/compression-preview-engine.test.ts":"4426","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api/context-analytics-engine-route.test.ts":"4427","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api/context-combos-default-route.test.ts":"4428","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api/discovery-routes.test.ts":"4429","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api/free-proxies-list-route.test.ts":"4430","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api/free-proxies-route.test.ts":"4431","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api/providers-import-route-6836.test.ts":"4432","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api/proxies-repair-relay.test.ts":"4433","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api/root-catchall-json-404.test.ts":"4434","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api/server-error-message.test.ts":"4435","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api/services/9router-models.test.ts":"4436","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api/services/9router-provider-expose.test.ts":"4437","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api/services/9router-status-reveal.test.ts":"4438","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api/services/cliproxy-provider-expose.test.ts":"4439","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api/settings-audit.test.ts":"4440","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api/sync-models-readiness.test.ts":"4441","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api/v1/bifrost-cooldown.test.ts":"4442","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api/v1/bifrost-sidecar.test.ts":"4443","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api/v1/provider-plugin-manifest-route.test.ts":"4444","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api/v1/relay-routing-backend.test.ts":"4445","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api/v1/relay-stream-finalizer.test.ts":"4446","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api/v1-catchall-json-404.test.ts":"4447","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api/v1-me-status-route.test.ts":"4448","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api/validated-json-body.test.ts":"4449","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api/webhooks/webhook-url-ssrf-guard.test.ts":"4450","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api-auth.test.ts":"4451","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api-docs-route.test.ts":"4452","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api-error-message-5340.test.ts":"4453","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api-key-lifecycle.test.ts":"4454","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api-key-mask-fix.test.mjs":"4455","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api-key-policy.test.ts":"4456","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api-key-provider-quota-bypass-scope.test.ts":"4457","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api-key-regeneration.test.ts":"4458","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api-key-reveal-route.test.ts":"4459","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api-key-rotator-health.test.ts":"4460","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api-key-scope-validation.test.ts":"4461","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api-key-self-service.test.ts":"4462","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api-key-usage-limits.test.ts":"4463","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api-key-utils-public-surface.test.ts":"4464","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api-keys-create-no-hang-6570.test.ts":"4465","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api-malformed-json-400.test.ts":"4466","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api-manager-filters.test.ts":"4467","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api-manager-key-visibility.test.ts":"4468","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api-manager-mask-key-passthrough.test.ts":"4469","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api-manager-page-static.test.ts":"4470","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api-manager-quota-keys-section.test.ts":"4471","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api-manager-scope-preservation.test.ts":"4472","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api-manager-usage-command.test.ts":"4473","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api-models-hide-paid-6328.test.ts":"4474","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api-parse-response.test.ts":"4475","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api-routes-lib.test.ts":"4476","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/apikey-connection-health-check.test.ts":"4477","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/apikey-policy-default-rate-limits.test.ts":"4478","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/apikeypolicy-disable-non-public.test.ts":"4479","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/apikeypolicy-quota-only.test.ts":"4480","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/apikeys-allowed-quotas.test.ts":"4481","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/apikeys-disable-non-public.test.ts":"4482","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/apikeys-model-permissions-split.test.ts":"4483","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/apikeys-row-parsers-split.test.ts":"4484","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/apikeys-usage-command.test.ts":"4485","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/appearance-widget-settings-schema.test.ts":"4486","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/apply-executor-proxy-info-5217.test.ts":"4487","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/approvalGate.test.ts":"4488","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/arena-cookie-validation-redirect-7542.test.ts":"4489","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/arena-elo-sync.test.ts":"4490","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/audio-provider-nodes-selection.test.ts":"4491","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/audio-speech-fishaudio.test.ts":"4492","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/audio-speech-handler.test.ts":"4493","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/audio-transcription-handler.test.ts":"4494","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/audio-transcription-openrouter.test.ts":"4495","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/audio-transcriptions-combo-resolution.test.ts":"4496","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/audio-translations-route.test.ts":"4497","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/audit-activity-icons.test.ts":"4498","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/audit-allowlist-real-actions.test.ts":"4499","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/audit-eventtype-i18n.test.ts":"4500","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/audit-high-level-actions.test.ts":"4501","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/audit-timeline.test.ts":"4502","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/auggie-executor.test.ts":"4503","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/auggie-win32-spawn-6304.test.ts":"4504","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/auth/loginGuard.test.ts":"4505","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/auth-antigravity-account-retry-v2.test.ts":"4506","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/auth-clear-account-error.test.ts":"4507","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/auth-clear-provider-routes.test.ts":"4508","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/auth-disable-cooling-2997.test.ts":"4509","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/auth-extract-api-key.test.ts":"4510","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/auth-login-route.test.ts":"4511","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/auth-noauth-fallback-loop-3061.test.ts":"4512","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/auth-ollama-cloud-per-model-403-3027.test.ts":"4513","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/auth-opencode-zen-noauth-fallback.test.ts":"4514","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/auth-policy-embeddings-webfetch-7785.test.ts":"4515","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/auth-redirect-login.test.ts":"4516","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/auth-terminal-status.test.ts":"4517","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/authz/classify.test.ts":"4518","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/authz/client-api-policy-fallback.test.ts":"4519","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/authz/client-api-policy.test.ts":"4520","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/authz/csrf.test.ts":"4521","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/authz/discovery-routes-local-only.test.ts":"4522","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/authz/ip-filter-enforcement-6131.test.ts":"4523","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/authz/management-policy.test.ts":"4524","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/authz/pipeline.test.ts":"4525","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/authz/probe-9033-repro.test.ts":"4526","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/authz/proxy-contract.test.ts":"4527","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/authz/public-origin.test.ts":"4528","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/authz/public-policy.test.ts":"4529","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/authz/route-guard-local-prefix.test.ts":"4530","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/authz/route-guard-skills-collect.test.ts":"4531","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/authz/route-guard-version-get-exemption.test.ts":"4532","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/authz/route-guard-vnc-session-local-only.test.ts":"4533","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/authz/routeGuard.test.ts":"4534","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/authz/spawn-capable-prefixes-client-safe.test.ts":"4535","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/auto-candidate-overrides-7819.test.ts":"4536","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/auto-candidate-overrides-regression-7819.test.ts":"4537","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/auto-candidate-pool-filter-7819.test.ts":"4538","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/auto-combo-budget-fallback-3470.test.ts":"4539","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/auto-combo-codex-responses-3509.test.ts":"4540","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/auto-combo-context-advertising.test.ts":"4541","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/auto-combo-credentialed-model-pool.test.ts":"4542","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/auto-combo-engine.test.ts":"4543","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/auto-combo-hidden-models-4558.test.ts":"4544","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/auto-combo-request-controls-6024.test.ts":"4545","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/auto-combo-scoring-clamp.test.ts":"4546","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/auto-combos-enhanced-4235.test.ts":"4547","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/auto-combos-free-models-routes.test.ts":"4548","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/auto-combos-suffixes-4235.test.ts":"4549","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/auto-custom-provider-5873.test.ts":"4550","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/auto-empty-pool-fastfail-6458.test.ts":"4551","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/auto-family-classification-8866.test.ts":"4552","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/auto-routing-settings-resolve.test.ts":"4553","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/auto-update-mode-detection.test.ts":"4554","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/auto-update-runtime.test.ts":"4555","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/auto-update.test.ts":"4556","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/autoCombo/free-alias-intelligence-8601.test.ts":"4557","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/autoCombo/paid-model-filter-6512.test.ts":"4558","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/autoCombo/paid-tier-auto-id-6328.test.ts":"4559","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/autoCombo/provider-family-combos.test.ts":"4560","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/autoCombo/static-table-longest-match-8603.test.ts":"4561","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/autoCombo/suffixComposition-4517.test.ts":"4562","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/autoCombo/tieredRotation.test.ts":"4563","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/autoPrefix.test.ts":"4564","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/autocombo-unification.test.ts":"4565","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/autostart-cli-shorthand-3331.test.ts":"4566","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/autoupdate-npm-win32-5542.test.ts":"4567","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/azure-openai-executor.test.ts":"4568","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/azureAiMultiModelTest.test.ts":"4569","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/background-task-detector.test.ts":"4570","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/backpressure.test.ts":"4571","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/bai-provider.test.ts":"4572","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/baidu-qianfan-website-urls-6271.test.ts":"4573","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/bailian-coding-plan-media.test.ts":"4574","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/bailian-coding-plan-provider.test.ts":"4575","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/bailian-quota-fetcher.test.ts":"4576","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/bailian-schema-validation.test.ts":"4577","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/bailian-usage.test.ts":"4578","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/balance-e2e-shards.test.ts":"4579","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/bare-model-autopick.test.ts":"4580","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/base-executor-buildheaders-extra-keys-8493.test.ts":"4581","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/base-executor-sanitize-effort.test.ts":"4582","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/base-executor-waf-retry.test.ts":"4583","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/base-headers-split.test.ts":"4584","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/base-reasoning-effort-split.test.ts":"4585","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/base-thinking-budget-config-5312.test.ts":"4586","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/batch-a-domain.test.ts":"4587","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/batch-b-final.test.ts":"4588","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/batch-deletion-route-logic.test.ts":"4589","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/batch-deletion.test.ts":"4590","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/batch-file-download.test.ts":"4591","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/batch-list-limit-validation.test.ts":"4592","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/batch-maybe-throttle.test.ts":"4593","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/batch-processor-expiration.test.ts":"4594","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/batch-processor.test.ts":"4595","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/batch-status-cache.test.ts":"4596","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/batch-status-logic.test.mjs":"4597","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/batch_api.test.ts":"4598","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/batch_results.test.ts":"4599","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/batches-f9-helpers.test.ts":"4600","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/bazaarlink-provider-integrity.test.ts":"4601","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/bedrock-image-log-redaction-7297.test.ts":"4602","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/bin-omniroute-mcp.test.ts":"4603","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/binary-manager-extract-zip-5590.test.ts":"4604","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/binaryManager.test.ts":"4605","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/blackbox-web-validated-token.test.ts":"4606","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/blackbox-web.test.ts":"4607","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/blackbox.test.ts":"4608","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/body-read-timeout.test.ts":"4609","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/body-size-guard.test.ts":"4610","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/body-timeout-integration.test.ts":"4611","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/bootstrap-env.test.ts":"4612","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/browser-pool-optional-import.test.ts":"4613","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/browserBackedChat-matcher.test.ts":"4614","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/browserPool-proxy.test.ts":"4615","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/budget-route-auth.test.ts":"4616","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/budget-schema-empty-limits-3537.test.ts":"4617","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/bug-7940-gemini-retrydelay.test.ts":"4618","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/bug-8020-codex-peek-body-timeout.test.ts":"4619","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/bug-8029-promptql-issuer-substring.test.ts":"4620","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/build/allowlist-helper.test.ts":"4621","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/build/assemble-standalone.test.ts":"4622","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/build/backend-only-smoke-workflows.test.ts":"4623","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/build/check-bundle-size.test.ts":"4624","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/build/check-circular-deps.test.ts":"4625","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/build/check-codeql-ratchet.test.ts":"4626","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/build/check-cognitive-complexity.test.ts":"4627","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/build/check-complexity-rule-count.test.ts":"4628","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/build/check-complexity.test.ts":"4629","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/build/check-dashboard-typecheck.test.ts":"4630","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/build/check-dead-code.test.ts":"4631","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/build/check-licenses.test.ts":"4632","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/build/check-lockfile.test.ts":"4633","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/build/check-mutation-ratchet.test.ts":"4634","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/build/check-mutation-test-coverage.test.ts":"4635","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/build/check-openapi-breaking.test.ts":"4636","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/build/check-pr-evidence.test.ts":"4637","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/build/check-secrets.test.ts":"4638","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/build/check-test-runner-api.test.ts":"4639","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/build/check-tracked-artifacts.test.ts":"4640","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/build/check-type-coverage.test.ts":"4641","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/build/check-vuln-ratchet.test.ts":"4642","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/build/check-workflows.test.ts":"4643","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/build/docker-next-channel-8576.test.ts":"4644","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/build/electron-release-latest-yml.repro.test.ts":"4645","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/build/mcp-bundle-no-eager-ioredis.test.ts":"4646","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/build/mitm-server-bundle-contents.test.ts":"4647","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/build/mutation-radiography.test.ts":"4648","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/build/opencode-plugin-esm-only.test.ts":"4649","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/build/optional-transformers-dependency.test.ts":"4650","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/build/resolve-npm-entry.test.ts":"4651","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/build/should-promote-latest-5301.test.ts":"4652","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/build/sync-changelog-i18n.test.ts":"4653","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/build-bundler-default-turbopack.test.ts":"4654","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/build-next-isolated-windows-home-2402.test.ts":"4655","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/build-next-isolated.test.ts":"4656","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/buildCurl.test.ts":"4657","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/bulk-add-keys-no-overwrite-2587.test.ts":"4658","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/bulk-api-key-parser-cloudflare.test.ts":"4659","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/bulk-paste-api-keys.test.ts":"4660","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/bulk-web-session-import.test.ts":"4661","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/bulkApiKeyParser.test.ts":"4662","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/bypass-handler.test.ts":"4663","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/bypass-response-claude-merge.test.ts":"4664","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/bytez-validation-5422.test.ts":"4665","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cache-config-route-8219.test.ts":"4666","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cache-control-claude-providers.test.ts":"4667","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cache-control-policy.test.ts":"4668","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cache-metrics.test.ts":"4669","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cache-sweeps.test.ts":"4670","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/call-log-cap.test.ts":"4671","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/call-log-detailed-tokens.test.ts":"4672","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/call-log-file-rotation.test.ts":"4673","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/call-log-oom-unbounded-5618.test.ts":"4674","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/call-log-provider-display.test.ts":"4675","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/call-log-startup.test.ts":"4676","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/call-log-stream-debug.test.ts":"4677","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/call-log-trim-sql-vars-5217.test.ts":"4678","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/call-logs-correlation-sort.test.ts":"4679","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/call-logs-correlation-substring.test.ts":"4680","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/call-logs-pagination.test.ts":"4681","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/call-logs-requested-model.test.ts":"4682","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/call-logs-session-tag.test.ts":"4683","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/calllogs-format-split.test.ts":"4684","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cap-thinking-budget-gemini-fallback.test.ts":"4685","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/capture-critical-db-state.test.ts":"4686","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/card-hover-visible.test.ts":"4687","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/case-collision-6584.test.ts":"4688","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/catalog-helpers-extraction.test.ts":"4689","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/catalog-hide-auto-no-think.test.ts":"4690","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/catalog-order-contract.test.ts":"4691","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/catalog-order-helper.test.ts":"4692","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/catalog-pricing-lookup-index-8697.test.ts":"4693","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/catalog-pricing-surface-8018.test.ts":"4694","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/catalog-synced-static-preservation.test.ts":"4695","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/catalog-updates-v3829-kimi-qwen.test.ts":"4696","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/catalog-updates-v3x.test.ts":"4697","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/caveman-packs-de-fr-ja.test.ts":"4698","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/caveman-packs-zh-wenyan.test.ts":"4699","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cc-bridge-openai-image-7777.test.ts":"4700","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cc-bridge-tool-pair-guard.test.ts":"4701","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cc-bridge-transforms.test.ts":"4702","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cc-compatible-model-catalog.test.ts":"4703","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cc-compatible-provider.test.ts":"4704","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cc-discovery-alias-api.test.ts":"4705","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cc-discovery-alias-resolve.test.ts":"4706","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cc-discovery-alias-strip.test.ts":"4707","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cc-discovery-aliases-append.test.ts":"4708","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cc-discovery-aliases-catalog.test.ts":"4709","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cc-discovery-aliases-gate.test.ts":"4710","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cc-discovery-metrics.test.ts":"4711","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ccr-durable-store-9061.test.ts":"4712","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ccr-protocol-instruction.test.ts":"4713","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/changelog-fragments.test.ts":"4714","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chaos-api-routes.test.ts":"4715","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chaos-config.test.ts":"4716","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chaos-executor.test.ts":"4717","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/charm-hyper-provider.test.ts":"4718","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chat-adaptive-admission-binding.test.ts":"4719","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chat-admission-wrapper.test.ts":"4720","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chat-auth-log-redaction.test.ts":"4721","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chat-body-admission.test.ts":"4722","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chat-build-client-raw-request.test.ts":"4723","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chat-combo-live-test.test.ts":"4724","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chat-completions-parse-once-7847.test.ts":"4725","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chat-completions-route-shape-gate.test.ts":"4726","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chat-content-type-6414.test.ts":"4727","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chat-context-relay.test.ts":"4728","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chat-cooldown-aware-retry.test.ts":"4729","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chat-core-intercept-fetch.test.ts":"4730","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chat-early-schema-validation-6412.test.ts":"4731","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chat-helpers.test.ts":"4732","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chat-messages-validation-6402.test.ts":"4733","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chat-non-string-model-6407.test.ts":"4734","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chat-openai-compat-providers.test.ts":"4735","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chat-rate-limit-body-lock.test.ts":"4736","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chat-rejects-image-only-model.test.ts":"4737","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chat-request-body-parse-once-4380.test.ts":"4738","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chat-route-coverage.test.ts":"4739","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chat-route-edge-cases.test.ts":"4740","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chat-safetynet-reqid-6097.test.ts":"4741","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-attempt-logging.test.ts":"4742","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-background-redirect.test.ts":"4743","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-cache-usage-meta.test.ts":"4744","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-caveman-output-analytics.test.ts":"4745","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-claude-effort-variant.test.ts":"4746","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-claude-upstream-messages.test.ts":"4747","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-client-usage-buffer.test.ts":"4748","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-codex-quota.test.ts":"4749","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-combo-context-limit-8378.test.ts":"4750","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-combo-context-override-rescue.test.ts":"4751","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-compression-analytics-write.test.ts":"4752","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-compression-cache-stats.test.ts":"4753","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-compression-combo-predicates.test.ts":"4754","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-compression-integration.test.ts":"4755","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-compression-settings.test.ts":"4756","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-compression-usage-receipt.test.ts":"4757","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-context-editing-telemetry.test.ts":"4758","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-context-estimation.test.ts":"4759","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-execution-credentials.test.ts":"4760","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-executor-client-headers.test.ts":"4761","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-executor-helpers.test.ts":"4762","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-executor-proxy.test.ts":"4763","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-extracted-modules-3821.test.ts":"4764","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-failure-usage.test.ts":"4765","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-gamification-event.test.ts":"4766","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-headers.test.ts":"4767","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-imports-cleanly.test.ts":"4768","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-json-body-to-sse.test.ts":"4769","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-key-health.test.ts":"4770","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-log-truncation.test.ts":"4771","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-memory-extraction.test.ts":"4772","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-memory-pressure.test.ts":"4773","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-memory-skills-injection.test.ts":"4774","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-model-output-cap-wiring.test.ts":"4775","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-non-streaming-response-body.test.ts":"4776","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-non-streaming-response-parse.test.ts":"4777","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-non-streaming-sse.test.ts":"4778","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-non-streaming-usage-stats.test.ts":"4779","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-nonstreaming-json-response.test.ts":"4780","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-nonstreaming-response-headers.test.ts":"4781","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-output-style-telemetry.test.ts":"4782","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-passthrough-tool-names.test.ts":"4783","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-plugin-onrequest.test.ts":"4784","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-plugin-onresponse.test.ts":"4785","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-postcall-guardrail-context.test.ts":"4786","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-quota-share-consumption.test.ts":"4787","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-request-format.test.ts":"4788","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-request-setup.test.ts":"4789","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-sanitization.test.ts":"4790","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-semantic-cache-store.test.ts":"4791","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-semantic-cache.test.ts":"4792","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-service-tier.test.ts":"4793","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-skills-format.test.ts":"4794","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-stage-trace.test.ts":"4795","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-stream-error-result.test.ts":"4796","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-stream-finalize.test.ts":"4797","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-streaming-cache-store.test.ts":"4798","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-streaming-cost.test.ts":"4799","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-streaming-pipeline.test.ts":"4800","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-streaming-quota-share.test.ts":"4801","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-streaming-response-headers.test.ts":"4802","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-streaming-usage-stats.test.ts":"4803","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-strip-stale-headers.test.ts":"4804","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-target-format.test.ts":"4805","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-telemetry-helpers.test.ts":"4806","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-tool-calling-required-check.test.ts":"4807","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-translation-paths.test.ts":"4808","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-unsupported-params-strip.test.ts":"4809","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-upstream-body.test.ts":"4810","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-upstream-execute-headers.test.ts":"4811","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-upstream-timeouts.test.ts":"4812","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatgpt-image-cache.test.ts":"4813","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatgpt-web-async-image-ws-shapes-7357.test.ts":"4814","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatgpt-web-citations-escape.test.ts":"4815","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatgpt-web-citations.test.ts":"4816","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatgpt-web-handoff-resume.test.ts":"4817","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatgpt-web-image-silentdrop.test.ts":"4818","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatgpt-web-models-split.test.ts":"4819","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatgpt-web-sha3-boringssl-5531.test.ts":"4820","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatgpt-web-tools-5240.test.ts":"4821","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatgpt-web.test.ts":"4822","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cheaperinference-executor.test.ts":"4823","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cheaperinference-image-models.test.ts":"4824","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cheaperinference-provider-registration.test.ts":"4825","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/check-changelog-integrity.test.ts":"4826","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/check-cognitive-complexity.test.ts":"4827","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/check-complexity.test.ts":"4828","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/check-db-rules-classification.test.ts":"4829","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/check-db-rules.test.ts":"4830","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/check-dead-code.test.ts":"4831","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/check-deps.test.ts":"4832","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/check-docs-counts-sync.test.ts":"4833","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/check-docs-symbols.test.ts":"4834","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/check-duplication.test.ts":"4835","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/check-env-doc-sync.test.ts":"4836","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/check-error-helper.test.ts":"4837","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/check-fabricated-docs.test.ts":"4838","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/check-fetch-targets.test.ts":"4839","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/check-file-size.test.ts":"4840","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/check-install-upgrade-convergence.test.ts":"4841","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/check-known-symbols.test.ts":"4842","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/check-migration-numbering.test.ts":"4843","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/check-openapi-breaking-ratchet.test.ts":"4844","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/check-openapi-routes.test.ts":"4845","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/check-pack-boot.test.ts":"4846","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/check-pr-evidence.test.ts":"4847","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/check-provider-consistency.test.ts":"4848","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/check-public-creds.test.ts":"4849","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/check-route-guard-membership.test.ts":"4850","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/check-rtl-ratchet.test.ts":"4851","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/check-test-discovery.test.ts":"4852","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/check-test-masking-selfref-6634.test.ts":"4853","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/check-test-masking.test.ts":"4854","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/check-tool-config-status.test.ts":"4855","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/check-type-coverage.test.ts":"4856","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chenzk-provider-2437.test.ts":"4857","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chipotle-executor.test.ts":"4858","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chutes-registry-baseurl-7621.test.ts":"4859","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/circuit-breaker-abort-provider-trip-7907.test.ts":"4860","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/circuit-breaker-client-abort.test.ts":"4861","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/circuit-breaker-failure-kind.test.ts":"4862","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/circuit-breaker-registry-cap.test.ts":"4863","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/circuit-breaker-stream-controller-4602.test.ts":"4864","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/classify-pr-changes.test.ts":"4865","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/classify429.test.ts":"4866","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-adaptive-sampling-params.test.ts":"4867","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-adaptive-thinking-normalize.test.ts":"4868","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-atu-effort-leak-9505.test.ts":"4869","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-beta-client-header-3415.test.ts":"4870","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-beta-flags-2454.test.ts":"4871","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-cache-control-passthrough.test.ts":"4872","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-classifier-compat.test.ts":"4873","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-cli-config.test.ts":"4874","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-cli-defaults.test.ts":"4875","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-code-compatible-helpers.test.ts":"4876","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-code-compatible-request.test.ts":"4877","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-code-meta-requests.test.ts":"4878","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-code-obfuscation.test.ts":"4879","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-code-parity.test.ts":"4880","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-code-rendering-fixes.test.ts":"4881","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-code-tool-remapper-flag-leak.test.ts":"4882","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-codex-identity-version-sync.test.ts":"4883","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-context-1m-client-beta-forward.test.ts":"4884","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-context-1m-supported-models.test.ts":"4885","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-effort-suffix-strip.test.ts":"4886","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-effort-variants.test.ts":"4887","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-empty-stream-error-3685.test.ts":"4888","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-extra-usage.test.ts":"4889","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-fast-mode.test.ts":"4890","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-gemini-thought-signature-8979.test.ts":"4891","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-haiku-no-adaptive-thinking.test.ts":"4892","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-helper-minimax-output-config.test.ts":"4893","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-identity-version-sync.test.ts":"4894","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-import-route.test.ts":"4895","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-native-passthrough-tools.test.ts":"4896","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-oauth-provider.test.ts":"4897","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-oauth-tool-cloak.test.ts":"4898","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-oauth-usage-429-backoff.test.ts":"4899","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-oauth-vps-endpoints.test.ts":"4900","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-passthrough-stream-boolean.test.ts":"4901","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-passthrough-thinking-2454.test.ts":"4902","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-prepare-request-preserve-fallback.test.ts":"4903","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-profile-auto-sync-gate.test.ts":"4904","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-server-tool-name-preserve.test.ts":"4905","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-stream-reconstructed-body.test.ts":"4906","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-thinking-tool-choice-guard.test.ts":"4907","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-to-gemini-budget-tokens-zero-6813.test.ts":"4908","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-to-openai-image-toolresult.test.ts":"4909","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-to-openai-system-role-6954.test.ts":"4910","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-to-openai-think-close-5123.test.ts":"4911","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-tool-result-pairing.test.ts":"4912","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-tool-search-beta-3974.test.ts":"4913","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-tool-type-default-2195.test.ts":"4914","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-web-auto-refresh.test.ts":"4915","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-web-browser-transport.test.ts":"4916","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-web-executor-split.test.ts":"4917","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-web-live-alignment.test.ts":"4918","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-web-payload-runtime.test.ts":"4919","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-web-session.test.ts":"4920","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-web-slow-first-byte.test.ts":"4921","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-web-sonnet5-registry-6209.test.ts":"4922","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-web-stream.test.ts":"4923","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-web-transport.test.ts":"4924","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-web-turnstile-ua-mismatch-7548.test.ts":"4925","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-web.test.ts":"4926","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claudeAuthFile.test.ts":"4927","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claudeAuthImport.test.ts":"4928","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cleanup-column-fix.test.mjs":"4929","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli/alias-resolver-7791.test.ts":"4930","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli/autostart-linux.test.ts":"4931","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli/autostart-macos-launchctl.test.ts":"4932","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli/autostart-windows.test.ts":"4933","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli/autostart.test.ts":"4934","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli/launch-claude-exe-windows-9454.test.ts":"4935","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli/launch-codex-windows-spawn-args.test.ts":"4936","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli/launch-codex.test.ts":"4937","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli/launch-command.test.ts":"4938","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli/launch-windows-spawn-args.test.ts":"4939","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli/setup-aider.test.ts":"4940","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli/setup-claude.test.ts":"4941","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli/setup-cline.test.ts":"4942","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli/setup-codex.test.ts":"4943","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli/setup-continue.test.ts":"4944","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli/setup-crush.test.ts":"4945","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli/setup-cursor.test.ts":"4946","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli/setup-goose.test.ts":"4947","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli/setup-kilo.test.ts":"4948","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli/setup-opencode.test.ts":"4949","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli/setup-qwen.test.ts":"4950","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli/setup-roo.test.ts":"4951","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli/tray.test.ts":"4952","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-a2a-invoke-commands.test.ts":"4953","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-audit-commands.test.ts":"4954","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-auth-export-command.test.ts":"4955","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-backup-command.test.ts":"4956","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-batches-commands.test.ts":"4957","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-catalog-acpspawnable.test.ts":"4958","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-catalog-counts.test.ts":"4959","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-catalog-display-contract.test.ts":"4960","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-catalog-newentries.test.ts":"4961","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-catalog-removed.test.ts":"4962","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-catalog-schema.test.ts":"4963","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-chat.test.ts":"4964","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-clipboard.test.ts":"4965","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-cloud-commands.test.ts":"4966","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-combo-command.test.ts":"4967","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-combo-suggest-commands.test.ts":"4968","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-completion-dynamic.test.ts":"4969","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-compression-commands.test.ts":"4970","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-connect-helpers.test.ts":"4971","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-context-eng-commands.test.ts":"4972","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-contexts.test.ts":"4973","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-cost.test.ts":"4974","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-dashboard-open-fallback.test.ts":"4975","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-dashboard-port.test.ts":"4976","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-data-dir-env-loading.test.ts":"4977","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-data-dir-env.test.ts":"4978","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-doctor-command.test.ts":"4979","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-doctor-liveness-fallback-6162.test.ts":"4980","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-doctor-rooturl-windows-5844.test.ts":"4981","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-electron-to-cli-migration-server-env-7302.test.ts":"4982","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-entrypoint.test.ts":"4983","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-environment-helpers.test.ts":"4984","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-environment.test.ts":"4985","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-eval-commands.test.ts":"4986","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-exit-codes.test.ts":"4987","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-expanded-commands.test.ts":"4988","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-files-commands.test.ts":"4989","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-fingerprints.test.ts":"4990","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-health-monitoring-route.test.ts":"4991","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-helper/config-generator.test.ts":"4992","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-helper/hermes-home-env.test.ts":"4993","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-helper/tool-detector-win32-7279.test.ts":"4994","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-helper/tool-detector.test.ts":"4995","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-helper-tool-detector-paths-6162.test.ts":"4996","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-i18n-catalog.test.ts":"4997","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-io.test.ts":"4998","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-ipv4-first-dns-2699.test.ts":"4999","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-keys-command.test.ts":"5000","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-lang-commands.test.ts":"5001","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-login-antigravity.test.ts":"5002","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-login-push-remote.test.ts":"5003","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-logs-route.test.ts":"5004","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-machine-token.test.ts":"5005","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-mcp-call-commands.test.ts":"5006","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-memory-commands.test.ts":"5007","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-memory-types.test.mjs":"5008","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-memory.test.ts":"5009","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-mitm-schema.test.ts":"5010","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-model-config-schema.test.ts":"5011","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-models-command.test.ts":"5012","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-nodes-commands.test.ts":"5013","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-oauth-commands.test.ts":"5014","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-oneproxy-commands.test.ts":"5015","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-open-command.test.ts":"5016","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-openapi-codegen.test.ts":"5017","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-openapi-commands.test.ts":"5018","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-output-render-table.test.ts":"5019","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-output.test.ts":"5020","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-plugin-system.test.ts":"5021","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-policy-commands.test.ts":"5022","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-pricing-commands.test.ts":"5023","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-process-supervisor-spawn-error-8091.test.ts":"5024","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-process-supervisor.test.ts":"5025","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-program.test.ts":"5026","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-providers-command.test.ts":"5027","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-providers-metrics.test.ts":"5028","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-providers-rotate.test.ts":"5029","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-redis-command.test.ts":"5030","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-remote-mode.test.ts":"5031","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-repl.test.ts":"5032","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-resilience-commands.test.ts":"5033","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-runtime-detection.test.ts":"5034","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-runtime-extended.test.ts":"5035","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-runtime-imports-packaged-5227.test.ts":"5036","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-runtime-known-path-shortcircuit-7774.test.ts":"5037","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-runtime.test.ts":"5038","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-serve-hostname.test.ts":"5039","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-serve-port.test.ts":"5040","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-serve-readiness-timeout-6321.test.ts":"5041","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-serve-startup-time.test.ts":"5042","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-serve-stop-command.test.ts":"5043","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-serve-version-banner.test.ts":"5044","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-server-commands.test.ts":"5045","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-sessions-commands.test.ts":"5046","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-setup-command.test.ts":"5047","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-setup-opencode-nested-alias-7682.test.ts":"5048","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-setup-opencode.test.ts":"5049","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-simulate.test.ts":"5050","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-skills-commands.test.ts":"5051","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-spinner.test.ts":"5052","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-sqlite-bindings-not-found-7868.test.ts":"5053","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-sqlite-no-fallback-7586.test.ts":"5054","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-stop-supervisor-respawn-9455.test.ts":"5055","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-storage-key-bootstrap.test.ts":"5056","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-storage-key-provision.test.ts":"5057","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-stream.test.ts":"5058","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-sync-commands.test.ts":"5059","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-tags-commands.test.ts":"5060","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-telemetry-commands.test.ts":"5061","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-tool-detector-imports.test.ts":"5062","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-tools-auth-hardening.test.ts":"5063","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-tools-crush.test.ts":"5064","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-tools-i18n.test.ts":"5065","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-tools-keys-route.test.ts":"5066","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-tools-schema.test.ts":"5067","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-tools-settings-jsonc.test.ts":"5068","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-tools.test.ts":"5069","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-translator-commands.test.ts":"5070","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-tray-systray2.test.ts":"5071","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-tray.test.ts":"5072","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-tui.test.ts":"5073","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-update-global-paths-3295.test.ts":"5074","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-update-notifier.test.ts":"5075","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-update-prefer-online-4376.test.ts":"5076","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-update-shadow-install-9475.test.ts":"5077","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-usage.test.ts":"5078","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-version-fastpath.test.ts":"5079","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-waitForServer.test.mjs":"5080","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-webhooks-commands.test.ts":"5081","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cliRuntime-codex-shebang-8036.test.ts":"5082","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cliRuntime-symlink-escape-7753.test.ts":"5083","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/client-identity-profiles.test.ts":"5084","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cline-catalog-models-3321.test.ts":"5085","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cline-force-stream.test.ts":"5086","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cline-response-envelope.test.ts":"5087","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cline-workos-auth-token-shape.test.ts":"5088","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/clinepass-provider.test.ts":"5089","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/clinepass-thinking-budget.test.ts":"5090","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cliproxy-auth-import-1934.test.ts":"5091","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cliproxyapi-dedicated-credential-7645.test.ts":"5092","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cliproxyapi-executor.test.ts":"5093","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cliproxyapi-fallback-wiring.test.ts":"5094","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cliproxyapi-model-mapping-dispatch.test.ts":"5095","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cloud-agent-cors-failclosed.test.ts":"5096","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cloud-agent-credentials-api.test.ts":"5097","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cloud-agent-credentials.test.ts":"5098","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cloud-agent-cursor-4227.test.ts":"5099","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cloud-agent-health-api.test.ts":"5100","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cloud-agent-tasks-route-auth.test.ts":"5101","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cloud-sync.test.ts":"5102","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cloud-write-auth.test.ts":"5103","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cloudAgent-types.test.ts":"5104","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cloudflare-ai-catalog-8717.test.ts":"5105","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cloudflare-ai-image-parts-6390.test.ts":"5106","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cloudflare-ai-neuron-exhaustion-6980.test.ts":"5107","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cloudflare-models-uuid-4259.test.ts":"5108","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cloudflare-worker-upload-content-type-6416.test.ts":"5109","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cloudflaredTunnel-extended.test.ts":"5110","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cloudflaredTunnel.test.ts":"5111","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/code-assist-subscription.test.ts":"5112","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codebuddy-cn-provider.test.ts":"5113","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codebuddy-reasoning-optin.test.ts":"5114","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-auth-import-expiry.test.ts":"5115","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-auth-import-userid-dedup-6301.test.ts":"5116","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-banked-reset-credits-5199.test.ts":"5117","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-base-url.test.ts":"5118","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-cache-key.test.ts":"5119","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-capacity-limit-merge.test.ts":"5120","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-catalog-revalidation-runtime.test.ts":"5121","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-catalog-revalidation.test.ts":"5122","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-compact-strip-include-6805.test.ts":"5123","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-config-hooks-migration.test.ts":"5124","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-connection-defaults.test.ts":"5125","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-connection-edit-6562.test.ts":"5126","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-custom-tool-image-output-7698.test.ts":"5127","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-device-flow-tickets.test.ts":"5128","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-device-flow.test.ts":"5129","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-drop-nonstandard-events.test.ts":"5130","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-effort-alias-priority.test.ts":"5131","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-effort-model-echo-3697.test.ts":"5132","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-executor-split.test.ts":"5133","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-failover.test.ts":"5134","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-fast-tier.test.ts":"5135","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-finalize-tokens.test.ts":"5136","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-free-plan-image-generation.test.ts":"5137","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-gpt55-effort-routing.test.ts":"5138","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-gpt55-routing-5887.test.ts":"5139","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-gpt56-catalog.test.ts":"5140","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-import-refresh-validation-7522.test.ts":"5141","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-import-route.test.ts":"5142","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-import-token-route.test.ts":"5143","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-manual-refresh-rotating-guard.test.ts":"5144","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-models-catalog-refresh.test.ts":"5145","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-oauth-refresh-persist-6352.test.ts":"5146","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-oauth-remote-host-hint-7523.test.ts":"5147","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-orphaned-tool-outputs-2928.test.ts":"5148","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-peek-nonsse-body-untouched-7536.test.ts":"5149","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-plan-label-2570.test.ts":"5150","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-profile-auto-sync-gate.test.ts":"5151","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-quota-fetcher.test.ts":"5152","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-quota-selection-hydration.test.ts":"5153","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-quota-sync-no-proactive-refresh.test.ts":"5154","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-reset-credits.test.ts":"5155","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-responses-passthrough-strip-3317.test.ts":"5156","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-responses-ws-memory.test.ts":"5157","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-responses-ws-model-resolution.test.ts":"5158","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-session-affinity-reset-aware-5903.test.ts":"5159","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-session-json-import-6636.test.ts":"5160","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-spark-image-generation.test.ts":"5161","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-sse-capacity-fallback.test.ts":"5162","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-sse-peek-body-double-read.test.ts":"5163","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-stream-false.test.ts":"5164","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-synced-bare-model-routing.test.ts":"5165","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-system-message-image-8089.test.ts":"5166","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-tool-card-button-state.test.ts":"5167","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-tools-regex-lookaround.test.ts":"5168","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-tools-split.test.ts":"5169","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-usage-quotas-latent-window.test.ts":"5170","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-usage-quotas-review-window.test.ts":"5171","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-usage-windows.test.ts":"5172","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-verbosity.test.ts":"5173","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-ws-http-fallback.test.ts":"5174","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-ws-policy-enforcement-6564.test.ts":"5175","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codexAuthFile.test.ts":"5176","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codexAuthImport.test.ts":"5177","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codexAuthImportBulk.test.ts":"5178","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codexAuthZipExtract.test.ts":"5179","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codexBulkImport.test.ts":"5180","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/collect-metrics-module-coverage.test.ts":"5181","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/colocate-optionals.test.ts":"5182","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo/auto-quota-cutoff.test.ts":"5183","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo/auto-status-penalty-4540.test.ts":"5184","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo/combo-context.test.ts":"5185","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo/combo-exhausted-skip.test.ts":"5186","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo/combo-failure-tracker-session-isolation.test.ts":"5187","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo/combo-failure-tracker.test.ts":"5188","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo/combo-target-exhaustion.test.ts":"5189","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo/combo-target-timeout-standards.test.ts":"5190","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo/context-requirements-integration.test.ts":"5191","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo/effective-max-concurrency.test.ts":"5192","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo/pin-recovery.test.ts":"5193","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo/quota-share-concurrency.test.ts":"5194","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo/recovery-hint.test.ts":"5195","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo/strict-context-failopen-8786.test.ts":"5196","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-499-abort.test.ts":"5197","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-account-allowlist-3266.test.ts":"5198","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-antigravity-missing-project-reset-8486.test.ts":"5199","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-apply-strategy-ordering-split.test.ts":"5200","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-attempt-body-isolation-7847.test.ts":"5201","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-auto-candidate-expansion.test.ts":"5202","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-auto-config-split.test.ts":"5203","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-auto-promote.test.ts":"5204","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-body-specific-400-stop-4279.test.ts":"5205","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-bracket-names.test.ts":"5206","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-breaker-429.test.ts":"5207","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-builder-draft.test.ts":"5208","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-builder-effort-variants-8072.test.ts":"5209","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-builder-eligible-connection-2057.test.ts":"5210","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-builder-fingerprint-expansion.test.ts":"5211","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-builder-model-source-5477.test.ts":"5212","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-builder-opencode-prefix.test.ts":"5213","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-builder-options-route.test.ts":"5214","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-cache-invalidation.test.ts":"5215","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-cleanup-stale-connection.test.ts":"5216","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-config.test.ts":"5217","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-context-length.test.ts":"5218","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-context-prefix-resolution.test.ts":"5219","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-context-relay.test.ts":"5220","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-context-requirements.test.ts":"5221","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-context-window-filter.test.ts":"5222","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-control-center.test.ts":"5223","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-cooldown-retry.test.ts":"5224","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-cost-blending.test.ts":"5225","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-custom-provider-resolution.test.ts":"5226","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-description-5005.test.ts":"5227","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-diagnostics-trace.test.ts":"5228","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-disable-session-stickiness.test.ts":"5229","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-dispatch-prelude.test.ts":"5230","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-empty-content-failover-5085.test.ts":"5231","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-failure-log-message.test.ts":"5232","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-fallback-token-estimate-7847.test.ts":"5233","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-fingerprint-expansion.test.ts":"5234","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-fingerprint-pin-6696.test.ts":"5235","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-flatten-anthropic-tool-messages.test.ts":"5236","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-forecast.test.ts":"5237","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-fusion-config-warn-6455.test.ts":"5238","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-fusion-strategy-comboref-6764.test.ts":"5239","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-fusion-strategy.test.ts":"5240","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-headroom-ranking.test.ts":"5241","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-headroom-strategy.test.ts":"5242","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-health-dashboard.test.ts":"5243","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-health-route.test.ts":"5244","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-hedging.test.ts":"5245","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-hidden-leaf-routing.test.ts":"5246","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-id-resolution-4446.test.ts":"5247","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-input-bound-failure-8375.test.ts":"5248","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-input-bound-heterogeneous-8375.test.ts":"5249","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-least-used-account.test.ts":"5250","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-lockout-quota-reset-6863.test.ts":"5251","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-max-depth-config.test.ts":"5252","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-model-lockout-honors-reset-1308.test.ts":"5253","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-model-name-collision-8530.test.ts":"5254","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-model-scoped-400-advance.test.ts":"5255","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-name-codex-responses-rewrite.test.ts":"5256","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-omnimodel-tag-stripping.test.ts":"5257","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-param-validation-fallback-4519.test.ts":"5258","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-pin-health-gate.test.ts":"5259","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-pipeline-strategy.test.ts":"5260","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-pipeline.test.ts":"5261","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-prescreen.test.ts":"5262","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-priority-quota-exhaustion-cutoff-5923.test.ts":"5263","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-projection-capabilities-3979.test.ts":"5264","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-provider-cooldown-sibling.test.ts":"5265","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-provider-cooldown.test.ts":"5266","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-provider-diversity-wiring.test.ts":"5267","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-provider-wildcard.test.ts":"5268","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-proxy-assignments-parse-7149.test.ts":"5269","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-quality-validator-reasoning.test.ts":"5270","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-quota-share-cooldown-wait.test.ts":"5271","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-quota-soft-penalty.test.ts":"5272","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-resolve-auto-strategy-split.test.ts":"5273","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-resource-404-health.test.ts":"5274","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-response-validation-failover.test.ts":"5275","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-response-validation.test.ts":"5276","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-responses-sse-failure-fallback.test.ts":"5277","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-round-robin-streaming-lock-3811.test.ts":"5278","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-roundrobin-compat-fallback-6238.test.ts":"5279","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-routes-composite-tiers.test.ts":"5280","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-routing-engine.test.ts":"5281","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-rr-fallback-advance-948.test.ts":"5282","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-rr-session-stickiness-3825.test.ts":"5283","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-rr-sticky-9router.test.ts":"5284","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-runtime-unit-concurrency.test.ts":"5285","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-same-provider-cascade.test.ts":"5286","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-scope-proxy-dead-7149.test.ts":"5287","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-scoring-inspector.test.ts":"5288","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-select-all-batch-8526.test.ts":"5289","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-selected-connection-success.test.ts":"5290","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-session-stickiness.test.ts":"5291","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-sessionless-pin-3825.test.ts":"5292","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-skip-conn-disable-plugin-block-7806.test.ts":"5293","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-speed-telemetry-6875.test.ts":"5294","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-stickiness-responses-input-7270.test.ts":"5295","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-strategies.test.ts":"5296","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-strategy-fallbacks.test.ts":"5297","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-stream-readiness-fallback.test.ts":"5298","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-streaming-empty-content-failover.test.ts":"5299","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-streaming-openai-no-finish-reason-7285.test.ts":"5300","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-strict-random-distribution-3959.test.ts":"5301","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-target-defensive-modelstr.test.ts":"5302","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-target-resolution-split.test.ts":"5303","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-target-timeout-runner.test.ts":"5304","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-target-token-limit-8716.test.ts":"5305","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-task-aware.test.ts":"5306","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-test-health.test.ts":"5307","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-test-route.test.ts":"5308","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-thinking-disabled-fable5-3554.test.ts":"5309","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-vision-aware-routing.test.ts":"5310","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combos-quota-protected.test.ts":"5311","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/comfyui-baseurl-override-6928.test.ts":"5312","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/command-code-auth-assist.test.ts":"5313","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/command-code-executor.test.ts":"5314","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/command-code-maxtokens-negative-5166.test.ts":"5315","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/command-code-mimo-v2-5-safety.test.ts":"5316","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/command-code-registry-vision.test.ts":"5317","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/command-code-user-array-5166.test.ts":"5318","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/command-code-vision.test.ts":"5319","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/commandClassification.test.ts":"5320","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/completions-body-model-echo.test.ts":"5321","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/completions-provider-removed.test.ts":"5322","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/completions-text-format-3571.test.ts":"5323","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/complexity-aware-scoring-wiring.test.ts":"5324","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/complexity-router.test.ts":"5325","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compliance-audit-route.test.ts":"5326","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compliance-index.test.ts":"5327","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compliance-noLog-cycle.test.ts":"5328","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compose-redis-loopback-bind.test.ts":"5329","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/composer-tool-calls.test.ts":"5330","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/composite-tiers-validation.test.ts":"5331","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/active-combo-dispatch.test.ts":"5332","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/active-combo-integration.test.ts":"5333","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/adaptive-chatcore-source-guard.test.ts":"5334","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/adaptive-compute-target.test.ts":"5335","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/adaptive-context-budget-config.test.ts":"5336","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/adaptive-panel-target.test.ts":"5337","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/adaptive-resolve-plan.test.ts":"5338","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/adaptive-select-plan-wiring.test.ts":"5339","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/aggressive-fidelity.test.ts":"5340","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/aggressive.test.ts":"5341","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/applycompression-bailout-optin.test.ts":"5342","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/bailout.test.ts":"5343","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/benchmark.test.ts":"5344","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/body-adapter.test.ts":"5345","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/cache-aware-preserve-mode.test.ts":"5346","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/cachingAware.test.ts":"5347","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/caveman-db.test.ts":"5348","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/caveman-dedup.test.ts":"5349","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/caveman-engine.test.ts":"5350","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/caveman-hedging.test.ts":"5351","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/caveman-preservation.test.ts":"5352","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/caveman-rules.test.ts":"5353","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/caveman-structural.test.ts":"5354","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/caveman-v379.test.ts":"5355","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/cavemanSharedBoundaries.test.ts":"5356","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/ccr-cross-tenant.test.ts":"5357","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/ccr-eviction-scope-9146.test.ts":"5358","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/ccr-marker-retrieve.test.ts":"5359","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/ccr-mcp-integration.test.ts":"5360","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/ccr-mcp-principal-5649.test.ts":"5361","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/ccr-non-mcp-full-prompt-loss-7746.test.ts":"5362","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/ccr-retrieval-ramp.test.ts":"5363","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/ccr-skip-tool-outputs.test.ts":"5364","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/ccrQuery.test.ts":"5365","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/ccrRanged.test.ts":"5366","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/codestripper-lazy-ts-7096.test.ts":"5367","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/codex-responses.test.ts":"5368","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/combos-engine-ui-schema-parity-4955.test.ts":"5369","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/compareRoute.test.ts":"5370","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/compression-aggressive.test.ts":"5371","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/compression-benchmark-cli.test.ts":"5372","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/compression-budget-gate.test.ts":"5373","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/compression-combos-db.test.ts":"5374","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/compression-engines-map-migration.test.ts":"5375","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/compression-header-dispatch.test.ts":"5376","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/compression-preview-api.test.ts":"5377","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/compression-preview-auth.test.ts":"5378","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/compression-registry-clear.test.ts":"5379","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/compression-step-streaming.test.ts":"5380","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/compression-tool-cardinality-env.test.ts":"5381","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/compressionAnalytics.test.ts":"5382","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/compressionAnnotation.test.ts":"5383","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/compressionChannel.test.ts":"5384","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/compressionMcpTools.test.ts":"5385","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/context-compression-api.test.ts":"5386","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/context-editing-telemetry.test.ts":"5387","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/context-editing.test.ts":"5388","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/db.test.ts":"5389","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/derive-default-plan.test.ts":"5390","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/derived-pipeline-integration.test.ts":"5391","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/diffHelper.test.ts":"5392","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/encoderComparison.test.ts":"5393","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/engine-breakdown-synthesis.test.ts":"5394","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/engine-catalog.test.ts":"5395","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/engine-enabled-toggle.test.ts":"5396","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/engine-guidance-7530.test.ts":"5397","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/engine-registry.test.ts":"5398","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/eval-aggregate.test.ts":"5399","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/eval-corpus.test.ts":"5400","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/eval-cost-meter.test.ts":"5401","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/eval-grader.test.ts":"5402","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/eval-judge.test.ts":"5403","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/eval-report.test.ts":"5404","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/eval-runner.test.ts":"5405","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/eval-savings.test.ts":"5406","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/eval-seed-corpus.test.ts":"5407","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/eval-selftest.test.ts":"5408","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/fidelityCheck.test.ts":"5409","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/fidelityGate.test.ts":"5410","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/fidelityGateStacked.test.ts":"5411","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/fidelityGateTypes.test.ts":"5412","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/fuzzyDedup.test.ts":"5413","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/gcf-benchmark.test.ts":"5414","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/gcf-inline-array-quote.test.ts":"5415","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/golden-eval.test.ts":"5416","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/hard-budget.test.ts":"5417","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/harness.test.ts":"5418","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/headroom-developer-role-2132.test.ts":"5419","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/headroom-minrows-persist-8056.test.ts":"5420","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/headroom-smartcrusher.test.ts":"5421","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/heatmap-build.test.ts":"5422","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/image-aware-tokens.test.ts":"5423","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/ionizerEngine.test.ts":"5424","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/ionizerGateSkip.test.ts":"5425","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/ionizerSample.test.ts":"5426","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/language-detect-select.test.ts":"5427","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/language-packs.test.ts":"5428","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/lite.test.ts":"5429","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/live-zone.test.ts":"5430","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/llm-compressor-engine.test.ts":"5431","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/llmlingua-failopen.test.ts":"5432","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/llmlingua-model-store.test.ts":"5433","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/llmlingua-ultra-entry.test.ts":"5434","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/llmlingua-worker-resolution.test.ts":"5435","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/llmlingua-worker.test.ts":"5436","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/mcp-accessibility-config.test.ts":"5437","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/mcp-description-compressor.test.ts":"5438","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/mcpAccessibility-anchors.test.ts":"5439","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/mcpAccessibility-clamp.test.ts":"5440","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/mcpAccessibility-config-bounds.test.ts":"5441","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/mcpAccessibility.test.ts":"5442","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/mode-and-pipeline.test.ts":"5443","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/omniglyph-adapter.test.ts":"5444","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/omniglyph-chatcore-plumbing.test.ts":"5445","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/omniglyph-import.test.ts":"5446","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/omniglyph-plumbing.test.ts":"5447","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/omniglyph-registries.test.ts":"5448","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/omniglyph-registry.test.ts":"5449","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/omniglyph-single-mode.test.ts":"5450","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/output-styles-apply.test.ts":"5451","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/output-styles-backcompat.test.ts":"5452","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/output-styles-catalog.test.ts":"5453","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/output-styles-config.test.ts":"5454","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/output-styles-wiring.test.ts":"5455","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/outputMode.test.ts":"5456","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/pipeline-circuit-breaker.test.ts":"5457","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/pipeline-integration.test.ts":"5458","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/ponytail-catalog.test.ts":"5459","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/prefix-freeze.test.ts":"5460","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/preservation-redos-4795.test.ts":"5461","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/preserve-system-prompt-mode-db.test.ts":"5462","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/preserve-system-prompt-mode.test.ts":"5463","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/preview-fallback-reasons-6461.test.ts":"5464","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/preview-outer-engine-token-reconcile-6488.test.ts":"5465","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/previewRouteBreakdown.test.ts":"5466","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/previewRouteFidelity.test.ts":"5467","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/previewRouteFuzzy.test.ts":"5468","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/previewRouteIonizer.test.ts":"5469","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/previewRoutePipeline.test.ts":"5470","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/previewRouteTokens.test.ts":"5471","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/previewRouteToon.test.ts":"5472","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/progressiveAging.test.ts":"5473","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/quantumLockDetect.test.ts":"5474","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/quantumLockIntegration.test.ts":"5475","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/quantumLockStep.test.ts":"5476","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/read-lifecycle.test.ts":"5477","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/relevance-engine.test.ts":"5478","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/relevance-scorer.test.ts":"5479","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/repro-6479-6491-null-stats-silent-drop.test.ts":"5480","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/repro-6480-noop-guard-misfire.test.ts":"5481","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/resolve-compression-plan.test.ts":"5482","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/responses-orphan-tool-call.test.ts":"5483","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/result-memo.test.ts":"5484","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/retrieveRoute.test.ts":"5485","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/retrieveRouteRanged.test.ts":"5486","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/riskGateDetect.test.ts":"5487","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/riskGateIntegration.test.ts":"5488","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/riskGateStep.test.ts":"5489","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/rtk-anthropic-tool-result.test.ts":"5490","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/rtk-cache-control-preserve.test.ts":"5491","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/rtk-code-stripper.test.ts":"5492","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/rtk-command-detector.test.ts":"5493","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/rtk-command-samples.test.ts":"5494","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/rtk-comments.test.ts":"5495","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/rtk-custom-filters.test.ts":"5496","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/rtk-deduplicator.test.ts":"5497","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/rtk-discover-redos.test.ts":"5498","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/rtk-dsl-pipeline.test.ts":"5499","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/rtk-engine.test.ts":"5500","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/rtk-file-read-no-truncate-4559.test.ts":"5501","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/rtk-filter-catalog.test.ts":"5502","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/rtk-filter-deduplicate.test.ts":"5503","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/rtk-filter-loader-resilience.test.ts":"5504","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/rtk-filter-redos-guard.test.ts":"5505","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/rtk-grouping-config.test.ts":"5506","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/rtk-grouping.test.ts":"5507","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/rtk-intensity.test.ts":"5508","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/rtk-learn.test.ts":"5509","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/rtk-line-filter.test.ts":"5510","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/rtk-loader-dir-resolution-5089.test.ts":"5511","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/rtk-mcp-tools.test.ts":"5512","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/rtk-raw-output-route.test.ts":"5513","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/rtk-raw-output.test.ts":"5514","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/rtk-render-gitdiff.test.ts":"5515","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/rtk-render-table.test.ts":"5516","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/rtk-render-terraform.test.ts":"5517","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/rtk-render-testgreen.test.ts":"5518","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/rtk-renderers-integration.test.ts":"5519","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/rtk-smart-truncate.test.ts":"5520","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/rtk-strip-comments.test.ts":"5521","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/rtk-toml-compatibility.test.ts":"5522","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/rtk-truncate-preserve.test.ts":"5523","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/rtk-verify.test.ts":"5524","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/rule-loader.test.ts":"5525","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/session-dedup-intra-message-6467.test.ts":"5526","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/session-dedup-memory-7849.test.ts":"5527","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/session-dedup.test.ts":"5528","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/sessionDedupFuzzy.test.ts":"5529","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/smartcrusherToon.test.ts":"5530","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/splitCompositeCommand.test.ts":"5531","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/stacked-async.test.ts":"5532","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/stacked-pipeline-engines-fallback-6463.test.ts":"5533","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/stats.test.ts":"5534","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/strategySelector-cache-aware.test.ts":"5535","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/strategySelector.test.ts":"5536","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/summarizer.test.ts":"5537","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/toolResultCompressor.test.ts":"5538","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/toon.test.ts":"5539","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/types.test.ts":"5540","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/ultra-code-preservation.test.ts":"5541","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/ultra-slm-tier.test.ts":"5542","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/ultra.test.ts":"5543","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/validation.test.ts":"5544","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression-cache-guard-3955.test.ts":"5545","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression-cli-rest-fallback-6571.test.ts":"5546","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression-exclusions.test.ts":"5547","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression-header-echo-6422.test.ts":"5548","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression-noop-guard.test.ts":"5549","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression-pipeline-inflation-guard.test.ts":"5550","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression-pipeline-model.test.ts":"5551","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression-run-telemetry-auth.test.ts":"5552","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression-settings-cache.test.ts":"5553","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression-tokens.test.ts":"5554","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression-unknown-engine-validation-6485.test.ts":"5555","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compute-connection-default-name-6499.test.ts":"5556","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/config-hot-reload.test.ts":"5557","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/connection-cache-override-6880.test.ts":"5558","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/connection-level-upstream-headers.test.ts":"5559","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/connection-model-rules.test.ts":"5560","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/connection-reorder-by-availability.test.ts":"5561","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/connection-row-last-error-visibility.test.ts":"5562","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/connection-row-rtl-margin.test.ts":"5563","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/connection-status-filter-active-2526.test.ts":"5564","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/console-log-levels.test.ts":"5565","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/context-editing-executor-injection.test.ts":"5566","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/context-editing-relays.test.ts":"5567","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/context-editing-streaming-telemetry.test.ts":"5568","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/context-handoff.test.ts":"5569","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/context-manager.test.ts":"5570","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/context-pinning-tool-calls.test.ts":"5571","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/context-window-reconcile-persisted-overrides.test.ts":"5572","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/context-window-reconcile.test.ts":"5573","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cooldown-aware-retry-budget.test.ts":"5574","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cooldown-epoch-string-3954.test.ts":"5575","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/copilot-agent-antigravity-parity.test.ts":"5576","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/copilot-codegraph-knowledge.test.ts":"5577","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/copilot-free-quota-not-inverted.test.ts":"5578","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/copilot-gemini-claude-route-no-responses.test.ts":"5579","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/copilot-m365-edu-writeatcursor-6210.test.ts":"5580","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/copilot-m365-enterprise-6334.test.ts":"5581","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/copilot-m365-enterprise-invocation-7870.test.ts":"5582","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/copilot-m365-web-executor.test.ts":"5583","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/copilot-m365-web-logging-6210.test.ts":"5584","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/copilot-m365-web-silent-empty-7858.test.ts":"5585","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/copilot-runOmniRouteCli.test.ts":"5586","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/copilot-usage.test.ts":"5587","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/copilot-web-executor.test.ts":"5588","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/correctness/combo.property.test.ts":"5589","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/correctness/fakeUpstreamStream.test.ts":"5590","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/correctness/fixtures.test.ts":"5591","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/correctness/goldenSnapshot.test.ts":"5592","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/correctness/sanitizers.property.test.ts":"5593","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/correctness/sse-parser.property.test.ts":"5594","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/correctness/translation.golden.test.ts":"5595","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/correctness/translators.property.test.ts":"5596","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cors/origins.test.ts":"5597","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cost-explorer-params.test.ts":"5598","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cost-explorer-utils.test.ts":"5599","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/coze-validation-error-5426.test.ts":"5600","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/credential-health-active-connections-9180.test.ts":"5601","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/credential-health-boot-wiring.test.ts":"5602","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/credential-hint-copy-3180-3091.test.ts":"5603","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/credential-masker-guardrail.test.ts":"5604","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/crof-provider.test.ts":"5605","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/crof-usage-fetcher.test.ts":"5606","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/crof-usage.test.ts":"5607","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/crypto-randomuuid-polyfill.test.ts":"5608","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/csp-lan-ws-5083.test.ts":"5609","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cursor-agent-cli-version.test.ts":"5610","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cursor-agent-exec-router.test.ts":"5611","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cursor-agent-models.test.ts":"5612","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cursor-agent-protobuf.test.ts":"5613","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cursor-agent-session.test.ts":"5614","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cursor-agent-system-prompt.test.ts":"5615","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cursor-agent-tool-calls.test.ts":"5616","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cursor-builtin-tool-bridge.test.ts":"5617","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cursor-composer-thinking.test.ts":"5618","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cursor-executor-split.test.ts":"5619","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cursor-image-input.test.ts":"5620","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cursor-model-effort-suffix-7289.test.ts":"5621","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cursor-protobuf-wire-split.test.ts":"5622","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cursor-registry-claude-families.test.ts":"5623","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cursor-streaming.test.ts":"5624","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cursor-usage-fetcher.test.ts":"5625","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cursor-version-detector.test.mjs":"5626","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/custom-cli-config.test.ts":"5627","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/custom-endpoint-paths.test.ts":"5628","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/custom-endpoint-system-prompt.test.ts":"5629","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/custom-headers-provider-nodes.test.ts":"5630","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/custom-model-target-format.test.ts":"5631","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/custom-provider-combo-models.test.ts":"5632","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/dahl-manual-api-key.test.ts":"5633","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/dahl-provider-config.test.ts":"5634","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/dahl-registry.test.ts":"5635","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/dahl-tokens-route.test.ts":"5636","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/dashboard/agentrouter-connection-modal-fields.test.ts":"5637","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/dashboard/batch/components/BatchDetailModal.test.tsx":"5638","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/dashboard/batch/components/ExpirationBadge.test.tsx":"5639","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/dashboard/batch/components/NewBatchWizard.test.tsx":"5640","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/dashboard/batch/components/ProgressBarBicolor.test.tsx":"5641","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/dashboard/batch/components/UploadFileModal.test.tsx":"5642","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/dashboard/batch/components/useBatchActions.test.tsx":"5643","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/dashboard/batch/concept-cards.test.tsx":"5644","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/dashboard/batch/list-regression.test.tsx":"5645","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/dashboard/batch/sanitization.test.tsx":"5646","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/dashboard/context-parent-redirect-5298.test.ts":"5647","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/dashboard/crypto-randomuuid-polyfill.test.ts":"5648","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/dashboard/hydration-extension-attrs.test.ts":"5649","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/dashboard/material-icons-self-hosted.test.ts":"5650","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/dashboard/providerPageStorage.test.ts":"5651","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/dashboard/providers/services/api-key-field.test.ts":"5652","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/dashboard/providers/services/auto-start-toggle.test.ts":"5653","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/dashboard/providers/services/cliproxy-model-mapping.test.ts":"5654","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/dashboard/providers/services/cliproxy-tab.test.ts":"5655","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/dashboard/providers/services/mux-tab.test.ts":"5656","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/dashboard/providers/services/ninerouter-tab.test.ts":"5657","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/dashboard/providers/services/page.test.ts":"5658","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/dashboard-localization-contract.test.ts":"5659","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/dashboard-shell-tabs.test.ts":"5660","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/dashboard-sidebar-desktop-visible.test.ts":"5661","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/dashscope-cache-control-openai-2069.test.ts":"5662","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/dashscope-text-models-discovery.test.ts":"5663","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/dast-method-not-allowed.test.ts":"5664","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/data-dir-writable-fallback.test.ts":"5665","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/database-settings-maintenance.test.ts":"5666","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db/api-keys.test.ts":"5667","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db/compressionRunTelemetry.test.ts":"5668","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db/context-editing-telemetry-record.test.ts":"5669","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db/default-combo-toggle.test.ts":"5670","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db/discovery-results.test.ts":"5671","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db/encryption-error-handling.test.mjs":"5672","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db/migration-071.test.ts":"5673","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db/no-migration-collisions.test.ts":"5674","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db/notion.test.mjs":"5675","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db/obsidian.test.mjs":"5676","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db/omp.test.ts":"5677","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db/per-engine-analytics.test.ts":"5678","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db/per-engine-breakdown-analytics.test.ts":"5679","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db/quota-pools.test.ts":"5680","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db/repositories/sqliteComboRepositories.test.ts":"5681","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db/serviceModels.test.ts":"5682","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db/stats-virtual-table.test.ts":"5683","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db/vacuum-scheduler.test.ts":"5684","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db/weak-rng-fixes.test.ts":"5685","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-adapters/betterSqliteAdapter.test.ts":"5686","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-adapters/bunSqliteAdapter.test.ts":"5687","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-adapters/cliSqlite.test.mjs":"5688","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-adapters/driverFactory.test.ts":"5689","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-adapters/nodeSqliteShared.test.ts":"5690","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-adapters/sqljsAdapter.test.ts":"5691","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-agent-bridge-bypass.test.ts":"5692","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-agent-bridge-mappings.test.ts":"5693","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-agent-bridge-state.test.ts":"5694","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-api-key-groups.test.ts":"5695","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-apiKeys-crud.test.ts":"5696","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-backup-autobackup-setting-5871.test.ts":"5697","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-backup-extended.test.ts":"5698","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-backups-skills-3500.test.ts":"5699","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-call-log-stats-3500.test.ts":"5700","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-case-mapping-split.test.ts":"5701","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-cleanup-xp-audit-log.test.ts":"5702","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-cleanup.test.ts":"5703","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-cli-tool-state.test.ts":"5704","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-combos-crud.test.ts":"5705","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-command-code-auth.test.ts":"5706","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-compression-cache-stats.test.ts":"5707","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-context-handoffs.test.ts":"5708","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-core-extended.test.ts":"5709","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-core-init.test.ts":"5710","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-core-migration.test.ts":"5711","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-core-native-error.test.ts":"5712","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-core-temp-store-pragma.test.ts":"5713","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-core.test.ts":"5714","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-credit-balance.test.ts":"5715","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-detailed-logs.test.ts":"5716","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-domainState-crud.test.ts":"5717","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-driver-bundling-externals.test.ts":"5718","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-driver-logs-english-5103.test.ts":"5719","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-encryption.test.ts":"5720","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-gamification-federation-3500.test.ts":"5721","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-health-check.test.ts":"5722","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-health-route.test.ts":"5723","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-import-ebusy-5406.test.ts":"5724","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-import-max-size-4719.test.ts":"5725","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-import-resilient-driver-3025.test.ts":"5726","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-inspector-custom-hosts.test.ts":"5727","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-inspector-sessions.test.ts":"5728","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-logs-cache-3500.test.ts":"5729","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-middleware.test.ts":"5730","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-migration-runner-account-identity.test.ts":"5731","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-migration-runner-extra-dirs.test.ts":"5732","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-migration-runner.test.ts":"5733","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-migration-version-uniqueness.test.ts":"5734","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-migrationrunner-constants-split.test.ts":"5735","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-model-aliases-cascade.test.ts":"5736","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-model-context-overrides.test.ts":"5737","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-models-crud.test.ts":"5738","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-models-extended.test.ts":"5739","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-models-split.test.ts":"5740","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-playground-presets.test.ts":"5741","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-provider-cookie-dedup-3368.test.ts":"5742","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-provider-daily-usage-4009.test.ts":"5743","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-provider-limits.test.ts":"5744","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-provider-plans.test.ts":"5745","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-provider-stats.test.ts":"5746","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-providers-access-token-1290.test.ts":"5747","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-providers-cross-idp-dedup-2244.test.ts":"5748","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-providers-crud.test.ts":"5749","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-providers-split.test.ts":"5750","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-proxies-crud.test.ts":"5751","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-proxies-family.test.ts":"5752","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-proxies-split.test.ts":"5753","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-quota-consumption.test.ts":"5754","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-quota-migrations-idempotency.test.ts":"5755","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-quota-pools.test.ts":"5756","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-quota-snapshots.test.ts":"5757","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-read-cache.test.ts":"5758","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-recovery.test.ts":"5759","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-registered-keys.test.ts":"5760","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-registeredKeys-crud.test.ts":"5761","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-reset-module-state.test.ts":"5762","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-schema-columns-split.test.ts":"5763","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-secrets.test.ts":"5764","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-session-account-affinity.test.ts":"5765","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-settings-crud.test.ts":"5766","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-settings-extended.test.ts":"5767","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-settings-split.test.ts":"5768","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-sqljs-close-poison-7494.test.ts":"5769","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-sqljs-preinit-ordering-gap-7288.test.ts":"5770","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-state-reset.test.ts":"5771","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-sync-tokens.test.ts":"5772","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-tier-config.test.ts":"5773","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-upstreamProxy.test.ts":"5774","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-usage-analytics-3500.test.ts":"5775","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-usageanalytics-split.test.ts":"5776","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-versionManager.test.ts":"5777","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-webhooks.test.ts":"5778","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ddg-circuit-breaker-null-content-6999-7000.test.ts":"5779","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/decrypt-stale-key-hint-6148.test.ts":"5780","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/deepseek-pow-solver-strict.test.ts":"5781","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/deepseek-quota-fetcher.test.ts":"5782","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/deepseek-web-autorefresh-401-response.test.ts":"5783","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/deepseek-web-executor-split.test.ts":"5784","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/deepseek-web-rolling-window-2942.test.ts":"5785","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/deepseek-web-session-persistence-2942.test.ts":"5786","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/deepseek-web-tool-result-prompt-4712.test.ts":"5787","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/deepseek-web-tools-execute-2820.test.ts":"5788","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/deepseek-web-tools-execute.test.ts":"5789","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/deepseek-web-tools-nameless-5154.test.ts":"5790","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/deepseek-web-tools-variants.test.ts":"5791","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/deepseek-web.test.ts":"5792","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/default-reasoning-effort-6879.test.ts":"5793","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/default-url-normalizers-split.test.ts":"5794","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/delete-provider-connection-purges-key-health-7740.test.ts":"5795","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/deno-deploy-relay-path-ssrf.test.ts":"5796","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/derive-discovery-config-5087.test.ts":"5797","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/design-grid-background.test.ts":"5798","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/designer-web-empty-response-502.test.ts":"5799","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/dev-ensure-native-sqlite.test.ts":"5800","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/dev-origins-config.test.ts":"5801","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/dev-script-heap-limit.test.ts":"5802","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/device-tracker.test.ts":"5803","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/devin-bridge-live-runtime.test.ts":"5804","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/devin-bridge-network-guard.test.ts":"5805","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/devin-cli-catalog.test.ts":"5806","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/devin-cloud-agent-validator-6142.test.ts":"5807","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/dgrid-provider.test.ts":"5808","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/diagnostics-claude-thinking-5108.test.ts":"5809","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/diagnostics.test.ts":"5810","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/digitalocean-provider.test.ts":"5811","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/direct-dispatcher-pipelining-4580.test.ts":"5812","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/discontinued-providers-2026.test.ts":"5813","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/display-and-error-utils.test.ts":"5814","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/dns-config-generic.test.ts":"5815","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/docker-base-path-patch.test.ts":"5816","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/docker-ensure-base-path.test.ts":"5817","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/docker-healthcheck-3151.test.ts":"5818","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/docker-healthcheck-base-path.test.ts":"5819","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/docker-llmlingua-optionals-9166.test.ts":"5820","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/dockerfile-base-path-arg.test.ts":"5821","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/dockerfile-better-sqlite3-node-gyp-6700.test.ts":"5822","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/dockerfile-build-heap-4076.test.ts":"5823","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/dockerignore-docs-coverage.test.ts":"5824","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/docs/skillManifestsLint.test.ts":"5825","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/domain-branch-hardening.test.ts":"5826","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/domain-cost-rules.test.ts":"5827","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/domain-degradation.test.ts":"5828","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/domain-fallback-policy.test.ts":"5829","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/domain-lockout-policy.test.ts":"5830","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/domain-persistence.test.ts":"5831","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/droid-custom-models.test.ts":"5832","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/duckduckgo-challenge-split.test.ts":"5833","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/duckduckgo-domain-4037.test.ts":"5834","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/duckduckgo-vqd-429-misclassification-6996.test.ts":"5835","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/duckduckgo-web-executor.test.ts":"5836","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/duckduckgo-web-model-catalog-8000.test.ts":"5837","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/early-stream-keepalive.test.ts":"5838","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/earlyStreamKeepalive.test.ts":"5839","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/edgetts-provider.test.ts":"5840","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/effort-thinking-standardization-6241.test.ts":"5841","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/electron-main.test.ts":"5842","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/electron-packaging.test.ts":"5843","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/electron-preload.test.ts":"5844","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/electron-processtree.test.ts":"5845","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/electron-rebuild-spawn-win.test.ts":"5846","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/electron-release-desktop-channel-8949.test.ts":"5847","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/electron-remote-server.test.ts":"5848","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/electron-resolve-node-executable-7941.test.ts":"5849","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/electron-resolve-server-entry.test.ts":"5850","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/electron-smoke-script.test.ts":"5851","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/embed-ws-host-empty-messages-5110.test.ts":"5852","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/embedding-family-guard.test.ts":"5853","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/embedding-rerank-provider-registry.test.ts":"5854","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/embeddings-auth.test.ts":"5855","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/embeddings-combo-dimensions.test.ts":"5856","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/embeddings-combo-family-reject.test.ts":"5857","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/embeddings-cost-telemetry-headers.test.ts":"5858","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/embeddings-flatten-single-row-9089.test.ts":"5859","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/embeddings-gemini-dimensions.test.ts":"5860","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/embeddings-handler.test.ts":"5861","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/embeddings-lan-noauth-6925.test.ts":"5862","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/embeddings-multimodal-7956.test.ts":"5863","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/embeddings-nvidia-input-type.test.ts":"5864","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/embeddings-proxy-forwarding.test.ts":"5865","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/embeddings-route-apikeymeta-6929.test.ts":"5866","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/emergency-fallback-service.test.ts":"5867","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/empty-choices-no-inject.test.ts":"5868","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/empty-content-stopreason-3572.test.ts":"5869","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/empty-response-hardening.test.ts":"5870","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/empty-stream-no-content-8649.test.ts":"5871","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/empty-tool-name-loop.test.ts":"5872","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/encrypted-reasoning-summary-7243.test.ts":"5873","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/encryption.spec.ts":"5874","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/endpoint-categories.test.ts":"5875","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/endpoint-restrictions-policy.test.ts":"5876","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/env-docs-input-sanitizer-8093.test.ts":"5877","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/error-boundary-stack.test.ts":"5878","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/error-classification.test.ts":"5879","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/error-classifier.test.ts":"5880","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/error-config.test.ts":"5881","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/error-message-sanitization.test.ts":"5882","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/error-sensitive-redaction.test.ts":"5883","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/errorClassifier-noauth-403-6315.test.ts":"5884","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/errorclassifier-antigravity-403.test.ts":"5885","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/eslint-import-boundaries.test.ts":"5886","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/estimateSizeFast.test.ts":"5887","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/evalrunner-builtinsuites-split.test.ts":"5888","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/evals-history.test.ts":"5889","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/evals-route.test.ts":"5890","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/event-bus.test.ts":"5891","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/eviction-guards-apiKeyRotator.test.ts":"5892","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/eviction-guards-codexQuotaFetcher.test.ts":"5893","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/execute-chat-resource-pressure-breaker.test.ts":"5894","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-adapta-web.test.ts":"5895","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-agy.test.ts":"5896","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-antigravity-credits.test.ts":"5897","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-antigravity-protocol.test.ts":"5898","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-antigravity.test.ts":"5899","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-azure-ai-responses.test.ts":"5900","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-base-utils.test.ts":"5901","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-bedrock.test.ts":"5902","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-claude-identity.test.ts":"5903","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-cloudflare-ai.test.ts":"5904","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-codex-gpt56-lite-ultra.test.ts":"5905","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-codex-gpt56.test.ts":"5906","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-codex.test.ts":"5907","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-command-code.test.ts":"5908","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-deepseek-web-auto-refresh.test.ts":"5909","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-default-anthropic-auth-8653.test.ts":"5910","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-default-anthropic-compatible-bearer.test.ts":"5911","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-default-base.test.ts":"5912","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-default-strip-client-metadata.test.ts":"5913","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-devin-cli-acp-protocol-8406.test.ts":"5914","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-devin-cli-agentic-acp.test.ts":"5915","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-devin-cli-agentic-core.test.ts":"5916","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-devin-cli.test.ts":"5917","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-doubao-web.test.ts":"5918","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-firecrawl-fetch.test.ts":"5919","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-github-prefill-sanitize.test.ts":"5920","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-github.test.ts":"5921","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-gitlab.test.ts":"5922","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-hailuo-web.test.ts":"5923","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-huggingchat.test.ts":"5924","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-hyperagent.test.ts":"5925","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-inner-ai.test.ts":"5926","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-kimi-web-decoder.test.ts":"5927","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-kimi-web.test.ts":"5928","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-kimi.test.ts":"5929","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-kiro.test.ts":"5930","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-nlpcloud.test.ts":"5931","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-notion-web-thread-sessions.test.ts":"5932","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-notion-web.test.ts":"5933","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-nous-research.test.ts":"5934","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-poe-web.test.ts":"5935","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-pollinations.test.ts":"5936","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-promptql.test.ts":"5937","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-puter.test.ts":"5938","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-qwen-web.test.ts":"5939","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-strip-stainless-openai-compat.test.ts":"5940","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-tinyfish-fetch.test.ts":"5941","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-v0-vercel-web.test.ts":"5942","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-venice-web.test.ts":"5943","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-vertex-extended.test.ts":"5944","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-web-cookie-sweep.test.ts":"5945","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-xai.test.ts":"5946","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-zai-web.test.ts":"5947","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executors-strip-unsupported-params.test.ts":"5948","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/export-json-hide-paid-combos-6328.test.ts":"5949","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/factory-provider-registry.test.ts":"5950","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/faulty-upstream.test.ts":"5951","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/feature-flags-settings.test.ts":"5952","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/feature-triage/args.test.mjs":"5953","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/feature-triage/classify.test.mjs":"5954","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/feature-triage/delivered.test.mjs":"5955","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/feature-triage/frontmatter.test.mjs":"5956","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/feature-triage/integration.test.mjs":"5957","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/feature-triage/lifecycle.test.mjs":"5958","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/feature-triage/resync.test.mjs":"5959","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/featured-providers-rank.test.ts":"5960","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/felo-web-executor.test.ts":"5961","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/fetch-error-message.test.ts":"5962","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/fetch-timeout.test.ts":"5963","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/field-400-downgrade.test.ts":"5964","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/file-deletion.test.ts":"5965","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/file-expiration-policy.test.ts":"5966","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/finishReason.test.ts":"5967","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/firecrawl-executor.test.ts":"5968","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/firecrawl-quota-fetcher.test.ts":"5969","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/firecrawl-search.test.ts":"5970","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/firecrawl-usage.test.ts":"5971","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/fireworks-model-id-prefix.test.ts":"5972","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/fix-2130-system-passthrough.test.ts":"5973","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/fix-bare-model-precedence.test.ts":"5974","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/fix-bare-routing-fallback.test.ts":"5975","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/fix-error-message-candidates.test.ts":"5976","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/fix-synced-model-validation.test.ts":"5977","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/fix-tls-client-node-binary-7802.test.ts":"5978","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/fix-tool-adjacency.test.ts":"5979","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/fixes-p1.test.ts":"5980","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/flat-rate-cost-5552.test.ts":"5981","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/format-provider-error-cause.test.ts":"5982","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/format-reset-countdown.test.ts":"5983","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/formatting-public-surface.test.ts":"5984","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/forwarded-header-budget.test.ts":"5985","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/free-catalog-2026-07-expansion.test.ts":"5986","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/free-model-catalog.test.ts":"5987","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/free-models.test.ts":"5988","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/free-note-freshness.test.ts":"5989","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/free-provider-rankings-custom-models-6368.test.ts":"5990","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/free-providers-batch-2026-07.test.ts":"5991","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/free-proxies-add-to-pool.test.ts":"5992","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/free-proxies-db.test.ts":"5993","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/free-proxies-list-search.test.ts":"5994","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/free-proxy-auto-sync-scheduler.test.ts":"5995","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/free-proxy-providers.test.ts":"5996","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/free-proxy-sync-cycle.test.ts":"5997","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/free-tier-catalog.test.ts":"5998","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/free-tier-providers-wave1-b.test.ts":"5999","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/free-tier-providers-wave1-c.test.ts":"6000","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/free-tier-summary-route.test.ts":"6001","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/free-tier-used-this-month.test.ts":"6002","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/free-web-search.test.ts":"6003","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/freeProviderRankings-authtype-6915.test.ts":"6004","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/freeProviderRankings-filters.test.ts":"6005","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/freeProviderRankings.test.ts":"6006","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/freemodel-quota-fetcher.test.ts":"6007","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/freepik-image-handler.test.ts":"6008","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/functional-gateway-mirrors-append.test.ts":"6009","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/functional-gateway-mirrors-db.test.ts":"6010","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/functional-gateway-predicate.test.ts":"6011","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/fusion-judge-model-6455.test.ts":"6012","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/fusion-judge-own-intelligence.test.ts":"6013","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/fusion-judge-survivor.test.ts":"6014","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/fusion-panel-size-cap-1905.test.ts":"6015","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/fusion-partial-panel-failure-6454.test.ts":"6016","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/fusion-tools-bypass-6771.test.ts":"6017","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/g13-combo-chatcore-golden.test.ts":"6018","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/g4f-space-gateway-6650.test.ts":"6019","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gamification/aggregate-profile-3484.test.ts":"6020","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gamification/antiCheat.test.ts":"6021","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gamification/badge-unlock-once-3472.test.ts":"6022","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gamification/badges.test.ts":"6023","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gamification/db-gamification.test.ts":"6024","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gamification/events.test.ts":"6025","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gamification/federation-auth.test.ts":"6026","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gamification/invites.test.ts":"6027","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gamification/leaderboard.test.ts":"6028","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gamification/sharing.test.ts":"6029","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gamification/streaks.test.ts":"6030","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gamification/xp.test.ts":"6031","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gamification-display-contract.test.ts":"6032","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gemini-antigravity-pattern-preserved.test.ts":"6033","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gemini-business-provider.test.ts":"6034","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gemini-cli-ansi-sanitization.test.ts":"6035","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gemini-cli-deprecation.test.ts":"6036","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gemini-cli-legacy-refresh.test.ts":"6037","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gemini-finish-reason-normalization.test.ts":"6038","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gemini-helper-audio-input-912.test.ts":"6039","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gemini-helper-http-image-url-port344.test.ts":"6040","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gemini-helper.test.ts":"6041","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gemini-imagen-predict.test.ts":"6042","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gemini-malformed-function-call-finish-reason-2462.test.ts":"6043","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gemini-midstream-error-4177.test.ts":"6044","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gemini-midstream-nonstreaming-responses.test.ts":"6045","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gemini-midstream-responses.test.ts":"6046","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gemini-models-parser.test.ts":"6047","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gemini-multipleof-2309.test.ts":"6048","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gemini-signatureless-text-mode.test.ts":"6049","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gemini-strict-tool-schema.test.ts":"6050","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gemini-thinking-budget-fallback.test.ts":"6051","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gemini-thinking-budget-zero-6813.test.ts":"6052","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gemini-to-openai-function-response.test.ts":"6053","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gemini-tool-choice.test.ts":"6054","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gemini-tool-params-object-3357.test.ts":"6055","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gemini-web-cookie-rotation-7676.test.ts":"6056","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gemini-web-missing-browser-3516.test.ts":"6057","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gemini-web-multiturn-context-8371.test.ts":"6058","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gemini-web-tool-calling-7286.test.ts":"6059","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gemini-web.test.ts":"6060","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gen-contributors.test.ts":"6061","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/generic-quota-fetcher.test.ts":"6062","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ghe-copilot-targetformat-parity.test.ts":"6063","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ghe-copilot.test.ts":"6064","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/github-claude-reasoning-effort-granular.test.ts":"6065","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/github-collector.test.ts":"6066","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/github-copilot-claude-native-messages.test.ts":"6067","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/github-copilot-gpt-4o-mini.test.ts":"6068","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/github-copilot-model-discovery.test.ts":"6069","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/github-copilot-retired-models.test.ts":"6070","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/github-models-curated-catalog.test.ts":"6071","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/github-models-request-compat.test.ts":"6072","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/github-skill-tools-mcp.test.ts":"6073","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/github-skills-route-validation.test.ts":"6074","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gitlab-duo-oauth-setup-8688.test.ts":"6075","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gitlab-duo-toolcalls-6051.test.ts":"6076","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gitlab-tool-exchange-bounded-6220.test.ts":"6077","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gitlab-tool-result-feedback-6220.test.ts":"6078","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gitlawb-provider.test.ts":"6079","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/glm-executor-max-tokens-clamp-7364.test.ts":"6080","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/glm-executor.test.ts":"6081","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/glm-provider-model-import-route.test.ts":"6082","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/glm-team-quota.test.ts":"6083","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/glm-think-close-marker-leak.test.ts":"6084","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/glob-pattern-6540.test.ts":"6085","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/global-package-path.test.ts":"6086","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/google-flow-video-4569.test.ts":"6087","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gpt-max-input-tokens-6191.test.ts":"6088","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gpt5-sampling-guard.test.ts":"6089","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gpt5-tools-reasoning-guard.test.ts":"6090","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gptoss-provider-inference-5852.test.ts":"6091","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/graceful-shutdown-sighup-8045.test.ts":"6092","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/grok-cli-auth-json-paste-7610.test.ts":"6093","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/grok-cli-device-route.test.ts":"6094","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/grok-cli-function-call-output-sanitize-7611.test.ts":"6095","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/grok-cli-oauth-test-supported-7610.test.ts":"6096","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/grok-cli-oauth.test.ts":"6097","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/grok-cli-proactive-refresh-7610.test.ts":"6098","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/grok-cli-provider-limits-ui.test.ts":"6099","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/grok-cli-provider-limits.test.ts":"6100","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/grok-cli-proxy-selection.test.ts":"6101","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/grok-cli-quota-fetcher.test.ts":"6102","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/grok-cli-quota-frame.test.ts":"6103","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/grok-cli-reasoning-strip-6288.test.ts":"6104","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/grok-cli-responses-compat.test.ts":"6105","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/grok-cli-strip-params.test.ts":"6106","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/grok-quota-fetcher.test.ts":"6107","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/grok-web-cloudflare-classification.test.ts":"6108","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/grok-web-executor-split.test.ts":"6109","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/grok-web.test.ts":"6110","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/grokweb-cookie-ua-hint-7567.test.ts":"6111","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/groq-field-strip-wiring.test.ts":"6112","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/group-provider-permission.test.ts":"6113","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gtts-provider.test.ts":"6114","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/guardrails/injection-extraction.test.ts":"6115","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/guardrails/injection-route-coverage.test.ts":"6116","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/guardrails/vision-bridge-callmodel.test.ts":"6117","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/guardrails/vision-bridge-sse-and-reasoning.test.ts":"6118","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/guardrails/visionBridge.test.ts":"6119","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/guardrails/visionBridgeHelpers.callVisionModel.test.ts":"6120","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/guardrails/visionBridgeHelpers.extractImageParts.test.ts":"6121","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/guardrails/visionBridgeHelpers.replaceImageParts.test.ts":"6122","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/guardrails/visionBridgeHelpers.resolveImageAsDataUri.test.ts":"6123","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/guardrails/visionBridgeRouter.test.ts":"6124","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/guardrails-api-3496.test.ts":"6125","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/guardrails-registry.test.ts":"6126","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/guardrails-void-no-change-contract.test.ts":"6127","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/guide-settings-apikey-null-3552.test.ts":"6128","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/guide-settings-route.test.ts":"6129","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/hcnsec-provider.test.ts":"6130","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/head-request-closes-6400.test.ts":"6131","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/head-request-v1-models-6400.test.ts":"6132","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/headers-normalize.test.ts":"6133","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/headroom-codex-quota-snapshot-6379.test.ts":"6134","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/headroom-detect.test.ts":"6135","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/headroom-proxy-lifecycle.test.ts":"6136","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/headroom-responses-format.test.ts":"6137","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/health-ping-route.test.ts":"6138","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/healthMonitor.test.ts":"6139","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/healthz-route.test.ts":"6140","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/heap-autocalibrate-5172.test.ts":"6141","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/heap-benchmark-corpus.test.ts":"6142","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/heap-pressure.test.ts":"6143","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/hf-model-suggestions.test.ts":"6144","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/hide-paid-models-settings-schema.test.ts":"6145","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/home-no-autorouting-banner.test.ts":"6146","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/home-page-client-hook-imports-4759.test.ts":"6147","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/home-provider-topology-default-4596.test.ts":"6148","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/home-provider-topology-live-state.test.ts":"6149","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/homolog-admin-client.test.ts":"6150","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/homolog-parity.test.ts":"6151","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/homolog-promptfoo-ctrf.test.ts":"6152","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/homolog-provider-tiers.test.ts":"6153","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/homolog-sse-parser.test.ts":"6154","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/huggingchat-jsonl-split.test.ts":"6155","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/huggingchat-model-catalog.test.ts":"6156","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/i18n-block-extra-usage-copy.test.ts":"6157","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/i18n-cli-namespaces.test.ts":"6158","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/i18n-config.test.ts":"6159","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/i18n-detect-browser-locale.test.ts":"6160","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/i18n-fallback.test.ts":"6161","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/i18n-glossary-consistency-check.test.ts":"6162","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/i18n-hardcoded-pt-dashboard-6761.test.ts":"6163","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/i18n-missing-placeholder-fallback.test.ts":"6164","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/i18n-nest-dotted-keys.test.ts":"6165","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/i18n-provider-filter-keys-6290.test.ts":"6166","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/i18n-provider-visibility-filter-keys-6694.test.ts":"6167","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/i18n-pt-br.test.ts":"6168","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/i18n-quota-share-english.test.ts":"6169","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/i18n-ui-value-drift.test.ts":"6170","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/i18n-vi-completeness.test.ts":"6171","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/idempotency-fusion-collision.test.ts":"6172","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/idempotency.test.ts":"6173","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/image-compat-node-alias-shadow.test.ts":"6174","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/image-edits-multipart-3273.test.ts":"6175","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/image-generation-baseurl-3205.test.ts":"6176","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/image-generation-fetch-timeout.test.ts":"6177","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/image-generation-handler.test.ts":"6178","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/image-generation-route-auth.test.ts":"6179","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/image-generation-route.test.ts":"6180","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/image-model-not-in-chat-catalog-6457.test.ts":"6181","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/image-registry-gpt56.test.ts":"6182","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/image-routes-combo-edits-3214-3215.test.ts":"6183","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/image-text-to-image-modality.test.ts":"6184","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/image-upscale.test.ts":"6185","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/inclusionai-provider.test.ts":"6186","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/injection-guard-scan-bound-3932.test.ts":"6187","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/injection-system-prompt-leak-heuristic-4041.test.ts":"6188","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/inner-ai-find-model.test.ts":"6189","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/input-sanitizer-pii-redaction.test.ts":"6190","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/inspector-agent-bridge-hook.test.ts":"6191","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/inspector-buffer.test.ts":"6192","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/inspector-context-key.test.ts":"6193","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/inspector-conversation-normalizer.test.ts":"6194","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/inspector-har-export.test.ts":"6195","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/inspector-http-proxy.test.ts":"6196","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/inspector-kind-detector.test.ts":"6197","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/inspector-llm-metadata.test.ts":"6198","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/inspector-pricing.test.ts":"6199","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/inspector-process-attribution.test.ts":"6200","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/inspector-sse-merger.test.ts":"6201","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/inspector-system-proxy.test.ts":"6202","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/inspector-types.test.ts":"6203","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/instrumentation-database-closed-6560.test.ts":"6204","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/instrumentation-live-ws.test.ts":"6205","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/instrumentation-node-boot-db-failure.test.ts":"6206","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/instrumentation-process-title.test.ts":"6207","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/instrumentation-warm-catalog-cache.test.ts":"6208","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/intent-classifier-pipeline.test.ts":"6209","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/intercept-fetch-resolver.test.ts":"6210","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/interception-rules.test.ts":"6211","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/internal-service-auth.test.ts":"6212","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/internal-usage-command.test.ts":"6213","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ip-filter-persistence-6131.test.ts":"6214","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ip-filter.test.ts":"6215","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ipUtils.test.ts":"6216","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/isLocalStreamLifecycleError-abort-shape.test.ts":"6217","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/isolate-datadir.test.ts":"6218","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/issue-6343-v0-web-alias-collision.test.ts":"6219","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/issue-6623-opencode-mimo-reasoning-details-nonstream.test.ts":"6220","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/issue-6638-ollama-quota.test.ts":"6221","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/issue-6662-repro.test.ts":"6222","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/issue-6686-quota-preflight-coverage.test.ts":"6223","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/issue-7071-ollama-session-quota.test.ts":"6224","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/issue-7284-connection-test-masks-429.test.ts":"6225","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/issue-7705-tool-use-id-mismatch.test.ts":"6226","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/issue-7793-env-doc-sync-repro.test.ts":"6227","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/issue-7856-copilot-reasoning-text-nonstream.test.ts":"6228","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/issue-7859-gemini-web-redirect-valid.test.ts":"6229","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/issue-9407-gemini-web-validation-false-positive.test.ts":"6230","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/issue-agent-audit.test.ts":"6231","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/issue-agent-execution.test.ts":"6232","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/issue-agent-github-export.test.ts":"6233","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/issue-agent-route-execution.test.ts":"6234","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/issue-agent-runner.test.ts":"6235","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/issue-agent-runs-route.test.ts":"6236","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/issue-fixes-v3.7.9.test.ts":"6237","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/jina-reader-executor.test.ts":"6238","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/json-migration-combos.test.ts":"6239","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/json-size-exactness.test.ts":"6240","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/json-to-sse-3089.test.ts":"6241","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/keepalive-cleanup-8140.test.ts":"6242","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/keepalive-threshold.test.ts":"6243","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kenari.test.ts":"6244","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/key-health-402-disable-5239.test.ts":"6245","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kie-audio-transcription-result.test.ts":"6246","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kie-executor-routing.test.ts":"6247","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kie-task-helpers.test.ts":"6248","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kilocode-anonymous-fallback-4019.test.ts":"6249","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kimi-cn-region-baseurl.test.ts":"6250","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kimi-coding-apikey-quota-4435.test.ts":"6251","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kimi-coding-model-discovery.test.ts":"6252","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kimi-coding-translator.test.ts":"6253","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kimi-combo-preset.test.ts":"6254","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kimi-k2.7-code-registration.test.ts":"6255","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kimi-native-reasoning-injected-1480.test.ts":"6256","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kimi-partner-aff-links.test.ts":"6257","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kimi-quota-reset-recovery.test.ts":"6258","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kimi-sponsor-banner-version-gate.test.ts":"6259","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kimi-web-models-discovery.test.ts":"6260","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kiro-api-key-route-helpers.test.ts":"6261","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kiro-api-key-service.test.ts":"6262","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kiro-auto-import-idc-2059.test.ts":"6263","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kiro-auto-import-name-dedup-3615.test.ts":"6264","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kiro-available-models.test.ts":"6265","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kiro-builder-id-import-3333.test.ts":"6266","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kiro-catalog-real-models.test.ts":"6267","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kiro-claude-sonnet-5-2267.test.ts":"6268","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kiro-connection-identity.test.ts":"6269","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kiro-continue-filler-5231.test.ts":"6270","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kiro-eventstream-split.test.ts":"6271","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kiro-external-idp.test.ts":"6272","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kiro-gpt56-family-registration.test.ts":"6273","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kiro-iam-profilearn-usage.test.ts":"6274","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kiro-iam-region.test.ts":"6275","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kiro-idc-cross-region.test.ts":"6276","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kiro-import-error-3589.test.ts":"6277","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kiro-import-overwrite-9435.test.ts":"6278","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kiro-long-tool-description-docs.test.ts":"6279","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kiro-model-aliases.test.ts":"6280","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kiro-multi-account-isolation.test.ts":"6281","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kiro-overage-usage-4469.test.ts":"6282","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kiro-region-ssrf-guard.test.ts":"6283","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kiro-social-poll.test.ts":"6284","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kiro-sso-cache-direct-clientid-1253.test.ts":"6285","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kiro-streaming-finish-reason-3980.test.ts":"6286","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kiro-system-reminder-2306.test.ts":"6287","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kiro-tool-args-streaming.test.ts":"6288","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kiro-tool-call-validation.test.ts":"6289","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kiro-tool-schema-sanitize-1375.test.ts":"6290","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kiro-toolresult-compression.test.ts":"6291","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kiro-usage-empty-breakdown-3506.test.ts":"6292","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kiro-windows-auto-import-3363.test.ts":"6293","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kiroThinking.test.ts":"6294","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ladder-engine-maps-6533.test.ts":"6295","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/latency-stats-ttft-6875.test.ts":"6296","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/launch-codex-windows-spawn-6312.test.ts":"6297","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/learned-thinking-caps.test.ts":"6298","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/lib/batches/costEstimator.test.ts":"6299","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/lib/batches/csvToJsonl.test.ts":"6300","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/lib/batches/retryFailed.test.ts":"6301","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/lib/batches/schemas.test.ts":"6302","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/lib/batches/validateJsonl.test.ts":"6303","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/lib/connection-cooldown-summary.test.ts":"6304","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/lib/consoleInterceptor-epipe.test.ts":"6305","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/lib/consoleInterceptor-writes.test.ts":"6306","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/lib/jobs/backupScheduleJob.test.ts":"6307","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/lib/jobs/cronMatch.test.ts":"6308","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/lib/machineToken.test.ts":"6309","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/lib/managementCliToken.test.ts":"6310","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/lib/quota-reset-events.test.ts":"6311","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/limiter-lifecycle.test.ts":"6312","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/list-uncovered-commits.test.ts":"6313","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/listCapabilities-a2a.test.ts":"6314","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/live-model-catalog-reconciliation-8926.test.ts":"6315","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/live-ws-cookie-parse.test.ts":"6316","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/live-ws-eaddrinuse-6324.test.ts":"6317","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/live-ws-public-url.test.ts":"6318","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/live-ws-standalone-wiring.test.ts":"6319","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/livews-forward-backoff-4604.test.ts":"6320","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/llama-cpp-local-url.test.ts":"6321","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/llamacpp-model-delete.test.ts":"6322","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/llm-selector-custom-vision-models.test.ts":"6323","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/llm7-byteplus-models-fetch-3976.test.ts":"6324","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/lmarena-provider.test.ts":"6325","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/lmarena-split-cookie-4271.test.ts":"6326","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/lmstudio-embedding-provider-7601.test.ts":"6327","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/local-aliases-precedence.test.ts":"6328","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/local-corpus-index.test.ts":"6329","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/local-corpus-tools.test.ts":"6330","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/local-redis-runtime.test.ts":"6331","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/log-export-routes.test.mjs":"6332","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/log-redaction.test.ts":"6333","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/log-retention.test.ts":"6334","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/log-rotation.test.ts":"6335","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/logenv-datadir-path-6197.test.ts":"6336","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/logger-redaction-wiring.test.ts":"6337","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/logger-write-after-datadir-removed-6360.test.ts":"6338","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/login-bootstrap-route.test.ts":"6339","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/login-shell-path-3321.test.ts":"6340","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/m365-bizchat-frames-4042.test.ts":"6341","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/m365-connection-4042.test.ts":"6342","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/m365-tier-selector-6334.test.ts":"6343","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/m365-tone-model-variants.test.ts":"6344","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/m365-web-token-extraction-7078.test.ts":"6345","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mac-update-manifest-merge.test.ts":"6346","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/machine-id.test.ts":"6347","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/main-server-keepalive-timeout-7003.test.ts":"6348","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/main-server-timeouts-parity.test.ts":"6349","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/managed-available-models.test.ts":"6350","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/managed-model-import.test.ts":"6351","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/management-auth-docs.test.ts":"6352","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/management-auth-hardening.test.ts":"6353","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/management-password-insecure-default.test.ts":"6354","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/management-password.test.ts":"6355","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/manual-config-modal-clipboard.test.ts":"6356","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/maritalk-model-catalog.test.ts":"6357","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mark-account-unavailable-numeric-epoch-guard.test.ts":"6358","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mask-email.test.ts":"6359","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/masked-200-exhaustion-fallback-6427.test.ts":"6360","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/materialize-bundled-symlinks.test.ts":"6361","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mcp/serverSmartFilter.test.ts":"6362","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mcp/tool-cardinality.test.ts":"6363","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mcp/tool-definition-reexport.test.ts":"6364","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mcp-connect-scope.test.ts":"6365","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mcp-extra-forward-6178.test.ts":"6366","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mcp-memory-tools-strategy.test.ts":"6367","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mcp-model-catalog.test.ts":"6368","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mcp-pool-tools-3368.test.ts":"6369","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mcp-published-files-closure-3578.test.ts":"6370","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mcp-server-entry.test.ts":"6371","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mcp-server-hollow-dist-deps.test.ts":"6372","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mcp-session-sweep.test.ts":"6373","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mcp-sse-response-headers-8277.test.ts":"6374","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mcp-tool-collections-shape.test.ts":"6375","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mcp-tool-count-dedup-6854.test.ts":"6376","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mcp-web-fetch-tool.test.ts":"6377","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/media-body-arraybuffer-backing.test.ts":"6378","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/media-cost-headers-handlers.test.ts":"6379","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/media-cost-headers.test.ts":"6380","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/media-provider-ordering.test.ts":"6381","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/memory/typed-decay.test.ts":"6382","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/memory-cache-safe-injection.test.ts":"6383","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/memory-cache.test.ts":"6384","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/memory-embedding-cache.test.ts":"6385","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/memory-embedding-list-providers.test.ts":"6386","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/memory-embedding-remote.test.ts":"6387","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/memory-embedding-resolve.test.ts":"6388","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/memory-embedding-static-potion.test.ts":"6389","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/memory-embedding-transformers.test.ts":"6390","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/memory-engine-status.test.ts":"6391","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/memory-extraction.test.ts":"6392","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/memory-glm-injection.test.ts":"6393","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/memory-needs-reindex.test.ts":"6394","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/memory-reindex-batch.test.ts":"6395","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/memory-retrieval-hybrid.test.ts":"6396","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/memory-retrieval-rerank.test.ts":"6397","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/memory-retrieval-semantic.test.ts":"6398","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/memory-retrieve-preview.test.ts":"6399","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/memory-route.test.ts":"6400","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/memory-schemas-roundtrip.test.ts":"6401","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/memory-settings-default.test.ts":"6402","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/memory-settings-extended.test.ts":"6403","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/memory-settings.test.ts":"6404","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/memory-stats-api.test.ts":"6405","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/memory-store-sync.test.ts":"6406","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/memory-store.test.ts":"6407","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/memory-summarization-older-than.test.ts":"6408","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/memory-summarization.test.ts":"6409","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/memory-system-first-6135.test.ts":"6410","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/memory-tools.test.ts":"6411","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/memory-vec-meta.test.ts":"6412","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/memory-vectorstore-crud.test.ts":"6413","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/memory-vectorstore-ensure-ready.test.ts":"6414","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/memory-vectorstore-int8-quant.test.ts":"6415","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/memory-vectorstore-load.test.ts":"6416","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/memory-vectorstore-rrf.test.ts":"6417","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/memory-vectorstore-stats.test.ts":"6418","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/memory-vectorstore-upsert-self-heal.test.ts":"6419","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/merge-train-plan.test.ts":"6420","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/messages-count-tokens-route.test.ts":"6421","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/microsoft-designer-web-6672.test.ts":"6422","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/middleware-header-strip-5849.test.ts":"6423","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/middleware-hook-sandbox-5872.test.ts":"6424","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/middleware-hooks-error-sanitization.test.ts":"6425","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/migration-107-quota-share-strategy.test.ts":"6426","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/migration-safety-abort-6260.test.ts":"6427","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mimo-thinking-normalize.test.ts":"6428","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mimocode-executor.test.ts":"6429","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/minimax-coding-plan-usage.test.ts":"6430","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/minimax-image-provider-2482.test.ts":"6431","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/minimax-m3-maxtokens.test.ts":"6432","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/minimax-m3-model-registry.test.ts":"6433","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/minimax-media-servicekinds.test.ts":"6434","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/minimax-thinking-signature-2706.test.ts":"6435","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/minimax-tts-1043.test.ts":"6436","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mistral-strip-reasoning-content-1649.test.ts":"6437","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mistral-trailing-assistant.test.ts":"6438","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-alias-config-shim.test.ts":"6439","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-antigravity-reasoning-effort-override.test.ts":"6440","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-cert-install-mode-9442.test.ts":"6441","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-cert-mac-fingerprint.test.ts":"6442","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-cert-migration-6684.test.ts":"6443","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-cert-removal-wiring.test.ts":"6444","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-detection.test.ts":"6445","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-diagnostics.test.ts":"6446","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-dns-graceful-degrade-6127.test.ts":"6447","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-dnsConfig.test.ts":"6448","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-forward-target.test.ts":"6449","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-handler-antigravity.test.ts":"6450","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-handler-base.test.ts":"6451","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-handler-claudeCode.test.ts":"6452","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-handler-codex.test.ts":"6453","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-handler-copilot.test.ts":"6454","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-handler-cursor.test.ts":"6455","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-handler-kiro.test.ts":"6456","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-handler-openCode.test.ts":"6457","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-handler-trae.test.ts":"6458","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-handler-zed.test.ts":"6459","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-hosts-cleanup-on-exit.test.ts":"6460","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-ingest-route-sanitize.test.ts":"6461","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-ingest-shim.test.ts":"6462","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-manager-bypass-json.test.ts":"6463","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-manager-cleanup-symmetry.test.ts":"6464","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-manager-repair.test.ts":"6465","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-manager-stub.test.ts":"6466","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-masksecrets.test.ts":"6467","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-passthrough.test.ts":"6468","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-privileged-steps-sudo-gate.test.ts":"6469","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-root-ca-leaf-issuance-6684.test.ts":"6470","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-root-ca-persistence-6684.test.ts":"6471","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-sanitize-headers.test.ts":"6472","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-server-claude-code-routing.test.ts":"6473","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-server-connect.test.ts":"6474","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-server-loop-guard.test.ts":"6475","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-server-timeouts.test.ts":"6476","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-start-guard.test.ts":"6477","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-startup-error-3606.test.ts":"6478","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-stop-dns-before-kill-1809.test.ts":"6479","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-stub-alias-6344.test.mjs":"6480","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-sudo-gate-822.test.ts":"6481","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-sudo-graceful-degrade.test.ts":"6482","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-system-commands-prefix-3641.test.ts":"6483","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-systemCommands-no-sudo.test.ts":"6484","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-targets-resolve.test.ts":"6485","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-targets-route.test.ts":"6486","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-tool-hosts.test.ts":"6487","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-upstream-ca-wiring.test.ts":"6488","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-upstream-trust.test.ts":"6489","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mixedbread-embedding-provider-6660.test.ts":"6490","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/modal-credential-combine.test.ts":"6491","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/modal-validation-model-prefill.test.ts":"6492","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/modalCost.test.ts":"6493","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-alias-provider-resolution.test.ts":"6494","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-alias-route.test.ts":"6495","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-alias-seed.test.ts":"6496","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-aliases-globalthis-5777.test.ts":"6497","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-aliases-settings-route-selfheal.test.ts":"6498","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-breakdown-sort-8769.test.ts":"6499","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-capabilities-kimi-k3-vision-8250.test.ts":"6500","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-capabilities-mimo-vision-override.test.ts":"6501","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-capabilities-mistral-vision-sync-4073.test.ts":"6502","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-capabilities-path-shaped-vision-8032.test.ts":"6503","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-capabilities-provider-unsupported-tools.test.ts":"6504","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-capabilities-registry.test.ts":"6505","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-capabilities-specialty-8016.test.ts":"6506","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-capability-overrides.test.ts":"6507","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-catalog-name-disambiguation.test.ts":"6508","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-catalog-search.test.ts":"6509","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-catalog-source.test.ts":"6510","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-combo-mappings-db.test.ts":"6511","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-combo-mappings.test.ts":"6512","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-connid-prefix-normalization-6772.test.ts":"6513","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-context-override-readpath.test.ts":"6514","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-cooldowns-route-auth.test.ts":"6515","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-cooldowns-route.test.ts":"6516","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-cross-proxy-compat.test.ts":"6517","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-deprecation.test.ts":"6518","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-discovery-reasoning-levels.test.ts":"6519","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-family-fallback-notation.test.ts":"6520","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-intelligence-db.test.ts":"6521","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-latency-stats-route.test.ts":"6522","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-listing-capability-5420.test.ts":"6523","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-lockout-decay.test.ts":"6524","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-lockout-exact-cooldown-cap.test.ts":"6525","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-lockout-max-cooldown.test.ts":"6526","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-metadata-registry.test.ts":"6527","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-output-cap-synced-fallthrough-6714.test.ts":"6528","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-parse.test.ts":"6529","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-pricing-litellm-gap-9364.test.ts":"6530","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-resolver.test.ts":"6531","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-select-all-confirm-threshold-8526.test.ts":"6532","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-select-hidden-map-helpers-9203.test.ts":"6533","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-select-null-alias-guard-2247.test.ts":"6534","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-select-passthrough-alias-485.test.ts":"6535","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-spec-lookup-index-8697.test.ts":"6536","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-strip.test.ts":"6537","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-sync-custom-preservation.test.ts":"6538","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-sync-route.test.ts":"6539","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-sync-scheduler.test.ts":"6540","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-test-route.test.ts":"6541","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-test-runner-compression-off-6240.test.ts":"6542","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-test-runner.test.ts":"6543","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-token-limit-catalog.test.ts":"6544","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/models-catalog-auto-combos-4164.test.ts":"6545","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/models-catalog-block-auto-5192.test.ts":"6546","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/models-catalog-combo-metadata.test.ts":"6547","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/models-catalog-envkey-6406.test.ts":"6548","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/models-catalog-exact-dup-4424.test.ts":"6549","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/models-catalog-functional-gateway.test.ts":"6550","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/models-catalog-hidden-combo-leaves.test.ts":"6551","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/models-catalog-hide-paid.test.ts":"6552","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/models-catalog-low-noise-flag.test.ts":"6553","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/models-catalog-route.test.ts":"6554","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/models-dev-pricing-memoization-8697.test.ts":"6555","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/models-test-error-shape.test.ts":"6556","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/modelsDevSync-extended.test.ts":"6557","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/modelsDevSync.test.ts":"6558","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/modelscope-policy.test.ts":"6559","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/modelscope-provider.test.ts":"6560","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/modelsdev-specialty-keying-8017.test.ts":"6561","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/modelsdevsync-transform-split.test.ts":"6562","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/moderations-handler.test.ts":"6563","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/modular-schemas.test.ts":"6564","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/monaco-editor-import-path.test.ts":"6565","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/moonshot-k3.test.ts":"6566","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/morph-provider-catalog.test.ts":"6567","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/multipart-body-arraybuffer-backing.test.ts":"6568","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/muse-spark-cookie-copy-5449.test.ts":"6569","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/muse-spark-response-parser-split.test.ts":"6570","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/muse-spark-web-continuation.test.ts":"6571","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/muse-spark-ws-auth-token-9502.test.ts":"6572","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/music-generation-handler.test.ts":"6573","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/namespace-tool-identity-integration.test.ts":"6574","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/nanobanana-image-generation.test.ts":"6575","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/nanobanana-image-handler.test.ts":"6576","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/native-binary-compat.test.ts":"6577","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/new-content-providers.test.ts":"6578","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/newapi-aggregator-preflight-dispatch.test.ts":"6579","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/newapi-aggregator-quota-fetcher.test.ts":"6580","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/next-config.test.ts":"6581","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/nightly-compat-node26-webpack-8090.test.ts":"6582","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ninerouter-embed-port-6205.test.ts":"6583","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ninerouter-executor.test.ts":"6584","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/no-memory-header.test.ts":"6585","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/no-src-open-sse-alias.test.ts":"6586","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/no-thinking-alias.test.ts":"6587","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/noAuthProxyResolution.relayAuth.test.ts":"6588","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/noauth-autocombo-allowlist.test.ts":"6589","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/noauth-autocombo-exclude-7622.test.ts":"6590","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/noauth-autocombo-hidden-7620.test.ts":"6591","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/noauth-autocombo-lockout-7623.test.ts":"6592","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/noauth-blocked-partition-5183.test.ts":"6593","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/noauth-imported-models-3200.test.ts":"6594","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/noauth-provider-validation.test.ts":"6595","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/noauth-proxy-resolution.test.ts":"6596","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/node-runtime-support.test.ts":"6597","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/non-streaming-sse-terminal-typescan-4459.test.ts":"6598","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/nonstream-usage-cache-tokens.test.ts":"6599","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/nonstreaming-gemini-family-response-projection.test.ts":"6600","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/normalize-base-path.test.ts":"6601","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/notification-toast-coercion.test.ts":"6602","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/notificationStore.test.ts":"6603","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/notion-api.test.ts":"6604","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/notion-thread-idor-7900.test.ts":"6605","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/notion-tools.test.ts":"6606","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/notion-web-models-discovery.test.ts":"6607","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/npm-publish-artifact-provenance.test.ts":"6608","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/npm-runtime-deps-fumadocs-mdx-7661.test.ts":"6609","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/nube-provider.test.ts":"6610","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/numeric-helpers.test.ts":"6611","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/nvidia-catalog-drift.test.ts":"6612","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/nvidia-minimax-m3-removed-3329.test.ts":"6613","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/nvidia-minimax-thinking-strip.test.ts":"6614","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/nvidia-nim-catalog-expansion-2373.test.ts":"6615","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/nvidia-nim-image.test.ts":"6616","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/nvidia-nim-registry-6108.test.ts":"6617","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/nvidia-nim-validator.test.ts":"6618","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/nvidia-passthrough-models-6773.test.ts":"6619","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/nvidia-quota-phase1.test.ts":"6620","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/nvidia-strip-prompt-cache-key.test.ts":"6621","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/nvidia-tool-compatibility-2840.test.ts":"6622","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/nvidia-validation-bypass-proxy-3226.test.ts":"6623","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/nvidia-validation-model-3116.test.ts":"6624","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/oauth-callback-path-doc.test.ts":"6625","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/oauth-connection-persistence-codex-dedup.test.ts":"6626","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/oauth-connection-test-codex-endpoint.test.ts":"6627","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/oauth-connection-test-timeout.test.ts":"6628","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/oauth-connection-tokenexpiresat-5326.test.ts":"6629","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/oauth-credential-blob.test.ts":"6630","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/oauth-cursor-auto-import.test.ts":"6631","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/oauth-device-code-endpoints.test.ts":"6632","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/oauth-device-code-error-transparency.test.ts":"6633","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/oauth-error-linkify-5486.test.ts":"6634","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/oauth-google-loopback-guidance.test.ts":"6635","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/oauth-grok-cli-browser.test.ts":"6636","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/oauth-keychain-import-only-6041.test.ts":"6637","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/oauth-keychain-import-only-guard.test.ts":"6638","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/oauth-kiro-idc.test.ts":"6639","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/oauth-kiro.test.ts":"6640","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/oauth-lan-loopback-guidance.test.ts":"6641","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/oauth-legacy-services-removed.test.ts":"6642","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/oauth-modal-codex-lan-ip-8046.test.ts":"6643","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/oauth-modal-grok-cli-browser-login-7013.test.ts":"6644","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/oauth-modal-grok-cli-paste-7610.test.ts":"6645","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/oauth-modal-typescript-regressions.test.ts":"6646","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/oauth-paste-credentials-route.test.ts":"6647","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/oauth-paste-credentials.test.ts":"6648","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/oauth-providers-config.test.ts":"6649","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/oauth-providers-error-handling.test.ts":"6650","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/oauth-redirect-uri-mismatch.test.ts":"6651","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/oauth-refresh-connection-dedup-8059.test.ts":"6652","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/oauth-refresh-error-resilience.test.ts":"6653","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/oauth-test-config-8408.test.ts":"6654","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/oauth-trae.test.ts":"6655","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/observability-fase04.test.ts":"6656","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/observability-payloads.test.ts":"6657","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/obsidian-api.test.ts":"6658","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/obsidian-config.test.ts":"6659","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/obsidian-plugin-sync.test.ts":"6660","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/obsidian-tools.test.ts":"6661","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/obsidian-webdav-route.test.ts":"6662","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ocr-route.test.ts":"6663","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/oidc-callback.test.ts":"6664","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ollama-cloud-usage.test.ts":"6665","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ollama-cloud-weekly-quota-cooldown-3709.test.ts":"6666","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ollama-local-embedding-2824.test.ts":"6667","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ollama-local-provider.test.ts":"6668","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ollama-transform.test.ts":"6669","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/omni-skills-page.test.tsx":"6670","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/omniroute-decision-header.test.ts":"6671","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/omniroute-meta-fallback-attempts.test.ts":"6672","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/omniroute-response-meta.test.ts":"6673","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/onboarding-step-titles-i18n-4698.test.ts":"6674","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/onboarding-wizard-details-link-6145.test.ts":"6675","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/onboarding-wizard-route-5427.test.ts":"6676","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/openai-developer-role-normalize.test.ts":"6677","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/openai-gpt56-catalog.test.ts":"6678","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/openai-gpt56-responses-routing.test.ts":"6679","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/openai-responses-only-models-5842.test.ts":"6680","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/openai-responses-reasoning-effort.test.ts":"6681","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/openai-responses-request-split.test.ts":"6682","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/openai-responses-single-text-content-string.test.ts":"6683","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/openai-responses-subagent-strip-2446.test.ts":"6684","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/openai-responses-verbosity.test.ts":"6685","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/openai-style-providers-4239-4155-3841.test.ts":"6686","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/openai-to-claude-bare-tool.test.ts":"6687","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/openai-to-claude-empty-messages-5245.test.ts":"6688","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/openai-to-claude-file-attachments.test.ts":"6689","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/openai-to-claude-glm-split-tool-name-2077.test.ts":"6690","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/openai-to-claude-redacted-replay-5312.test.ts":"6691","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/openai-to-claude-strip-empty-signature-6953.test.ts":"6692","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/openai-to-claude-strip-empty.test.ts":"6693","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/openai-to-claude-strip-temperature-thinking.test.ts":"6694","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/openai-to-claude-thinking-budget-split.test.ts":"6695","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/openai-to-gemini-gemma-thinking.test.ts":"6696","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/openai-to-gemini-helpers-split.test.ts":"6697","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/openai-to-kiro-helpers-split.test.ts":"6698","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/openai-tool-opaque-object-schema.test.ts":"6699","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/openapi-coverage.test.ts":"6700","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/openapi-security-tiers.test.ts":"6701","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/openapi-spec-example-body.test.ts":"6702","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/openapi-spec-route.test.ts":"6703","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/openapi-try-route.test.ts":"6704","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/openapi-ws-endpoint.test.ts":"6705","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/opencode-cli-headers-synthesis-5997.test.ts":"6706","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/opencode-deepseek-reasoning-injected.test.ts":"6707","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/opencode-executor.test.ts":"6708","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/opencode-free-tier-catalog-stale-6998.test.ts":"6709","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/opencode-go-catalog-alignment.test.ts":"6710","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/opencode-go-effort-aliases-6922.test.ts":"6711","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/opencode-go-effort-aliases-8353.test.ts":"6712","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/opencode-go-quota-no-zai.test.ts":"6713","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/opencode-go-usage.test.ts":"6714","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/opencode-noauth-models-route.test.ts":"6715","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/opencode-proxy-rotation-4954.test.ts":"6716","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/opencode-quota-fetcher.test.ts":"6717","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/opencode-strip-client-metadata-1442.test.ts":"6718","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/opencode-zen-alias-combo-e2e.test.ts":"6719","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/opencodeReasoningSanitizer.test.ts":"6720","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/openrouter-context-length-3202.test.ts":"6721","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/openrouter-embeddings-catalog-6976.test.ts":"6722","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/openrouter-free-window-wiring-6842.test.ts":"6723","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/openrouter-midstream-error-chunk.test.ts":"6724","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/openrouter-provider-stats.test.ts":"6725","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/openrouter-quota-6842.test.ts":"6726","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/openrouter-registry.test.ts":"6727","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/openrouter-vision-sync-4264.test.ts":"6728","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/openvecta-provider-registration.test.ts":"6729","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ops-scripts.test.ts":"6730","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/orphaned-tool-filter.test.ts":"6731","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/outbound-url-guard-feature-flag.test.ts":"6732","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/output-token-budget-model-cap.test.ts":"6733","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/output-token-budget.test.ts":"6734","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/pack-artifact-entrypoint-closures.test.ts":"6735","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/pack-artifact-policy.test.ts":"6736","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/pack-artifact-server-ws-closure.test.ts":"6737","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/pagination.test.ts":"6738","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/paid-model-target-6540.test.ts":"6739","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/paid-model-target-routes-6540.test.ts":"6740","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/param-filters-apply.test.ts":"6741","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/param-filters-auto-learn.test.ts":"6742","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/param-filters-db.test.ts":"6743","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/parse-model-defensive.test.ts":"6744","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/parse-provider-import-6836.test.ts":"6745","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/passthrough-alias-1850.test.ts":"6746","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/payload-rules-restart-persistence.test.ts":"6747","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/payload-rules-route.test.ts":"6748","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/payload-rules.test.ts":"6749","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/peer-routing.test.ts":"6750","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/pending-counter-drift-8141.test.ts":"6751","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/perplexity-key-validation-models.test.ts":"6752","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/perplexity-tls-client.test.ts":"6753","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/perplexity-web-executor-split.test.ts":"6754","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/perplexity-web-model-mappings.test.ts":"6755","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/perplexity-web-streaming-tools-5927.test.ts":"6756","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/perplexity-web.test.ts":"6757","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/persist-429-cooldown-account-fallback.test.ts":"6758","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/pick-internal-api-key-6372.test.ts":"6759","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/pii-opt-in-default.test.ts":"6760","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/piiReproduction.test.ts":"6761","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/piiSanitizer.test.ts":"6762","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/piiSanitizerIpv6.test.ts":"6763","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/pioneer-provider.test.ts":"6764","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/pipeline-router.test.ts":"6765","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/pipeline.test.ts":"6766","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/plan3-p0.test.ts":"6767","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/playground-code-export.test.ts":"6768","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/playground-key-policy-3503.test.ts":"6769","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/playground-model-filter-3505.test.ts":"6770","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/playground-model-qualify.test.ts":"6771","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/playground-model-selection-3731.test.ts":"6772","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/playground-prompt-improver.test.ts":"6773","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/playground-reasoning-controls-6241.test.ts":"6774","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/playground-schemas.test.ts":"6775","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/playground-stream-metrics.test.ts":"6776","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/plugins-analytics.test.ts":"6777","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/plugins-api-routes.test.ts":"6778","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/plugins-config-route.test.ts":"6779","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/plugins-config-validation.test.ts":"6780","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/plugins-config.test.ts":"6781","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/plugins-db.test.ts":"6782","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/plugins-dev-mode.test.ts":"6783","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/plugins-doctor.test.ts":"6784","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/plugins-edge-cases.test.ts":"6785","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/plugins-errors.test.ts":"6786","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/plugins-fs-safety.test.ts":"6787","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/plugins-hook-payload-chaining-3286.test.ts":"6788","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/plugins-hooks-rate-limit.test.ts":"6789","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/plugins-hooks.test.ts":"6790","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/plugins-index.test.ts":"6791","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/plugins-loader-ipc.test.ts":"6792","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/plugins-loader.test.ts":"6793","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/plugins-logger.test.ts":"6794","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/plugins-manager-lifecycle.test.ts":"6795","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/plugins-manager-restart-reload-7806.test.ts":"6796","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/plugins-manager.test.ts":"6797","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/plugins-manifest.test.ts":"6798","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/plugins-marketplace.test.ts":"6799","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/plugins-metrics.test.ts":"6800","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/plugins-permissions.test.ts":"6801","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/plugins-route-error-sanitization.test.ts":"6802","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/plugins-scanner.test.ts":"6803","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/plugins-set-enabled-shim-3473.test.ts":"6804","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/plugins-signing.test.ts":"6805","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/plugins-tools.test.ts":"6806","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/plugins-upgrade.test.ts":"6807","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/plugins-welcome-banner-e2e.test.ts":"6808","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/podman-machine-guidance-8497.test.ts":"6809","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/poe-api-executor-regression.test.ts":"6810","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/poe-provider-models-baseurl.test.ts":"6811","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/policy-engine.test.ts":"6812","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/pollinations-image-anon-fallback-8085.test.ts":"6813","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/pollinations-jsonmode-3981.test.ts":"6814","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/postinstall-support.test.ts":"6815","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/pr-self-target-guard.test.ts":"6816","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/pricing-ag-flash-tiers.test.ts":"6817","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/pricing-cc-anthropic-rates.test.ts":"6818","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/pricing-constants-split.test.ts":"6819","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/pricing-route-sources.test.ts":"6820","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/pricing-sync-cross-instance.test.ts":"6821","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/pricing-sync-extended.test.ts":"6822","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/pricing-sync-status-7955.test.ts":"6823","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/pricing-sync.test.ts":"6824","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/pricingSync.modal.test.ts":"6825","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/probe-6409-turbopack-memory-doc.test.ts":"6826","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/probe-6699-jules-executor-misroute.test.ts":"6827","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/probe-6835-cyclebreaker.test.ts":"6828","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/probe-6835-oom-uncapped.test.ts":"6829","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/probe-7134-claude-web-empty-error-body.test.ts":"6830","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/probe-7293-strict-system-hoist.test.ts":"6831","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/probe-9064-code-execution-beta.test.ts":"6832","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/probe-9408-tool-use-protocol.test.ts":"6833","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/probe-9541-repro.test.ts":"6834","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/probe-9575-tool-name-case.test.ts":"6835","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/processManager.test.ts":"6836","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/progress-tracker.test.ts":"6837","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/prompt-cache-affinity.test.ts":"6838","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/prompt-cache-prefix-analyzer.test.ts":"6839","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/prompt-injection-guard-db-flag.test.ts":"6840","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/prompt-injection-guard.test.ts":"6841","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/prompt-required-routes.test.ts":"6842","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-add-ux-i18n-import-warning.test.ts":"6843","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-alias-transitive-5918.test.ts":"6844","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-alias-uniqueness.test.ts":"6845","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-apikey-cap-6715.test.ts":"6846","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-audit.test.ts":"6847","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-columns.test.ts":"6848","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-connection-apikey-dedup.test.ts":"6849","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-connection-healthcheck-interval-zero.test.ts":"6850","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-connection-status.test.ts":"6851","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-connections-fetch-url-2998.test.ts":"6852","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-connections-pagination-2998.test.ts":"6853","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-connections-quota-threshold.test.ts":"6854","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-connections-ui-regression.test.ts":"6855","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-credential-requirement.test.ts":"6856","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-detect-format-endpoint.test.ts":"6857","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-display-label.test.ts":"6858","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-endpoints-friendliai-novita.test.ts":"6859","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-error-rules.test.ts":"6860","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-field-strips.test.ts":"6861","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-filters-url-sync.test.ts":"6862","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-header-profiles.test.ts":"6863","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-health-matrix.test.ts":"6864","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-hints.test.ts":"6865","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-icon-arena-themed.test.ts":"6866","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-learn-more-link.test.ts":"6867","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-limits-401-reauth-hint.test.ts":"6868","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-limits-accesstoken-fallback-on-refresh-failure.test.ts":"6869","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-limits-apikey-proxy-context.test.ts":"6870","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-limits-chunked-spacing-sync.test.ts":"6871","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-limits-force-refresh-imported.test.ts":"6872","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-limits-local-apikey-sync-spacing.test.ts":"6873","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-limits-oauth-sequential-sync.test.ts":"6874","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-limits-provider-filter.test.ts":"6875","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-limits-proxy-fail-closed.test.ts":"6876","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-limits-recovery.test.ts":"6877","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-limits-rotating-expired-guard.test.ts":"6878","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-limits-sanitize-scope-3821.test.ts":"6879","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-limits-sync-scheduler-public-surface.test.ts":"6880","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-limits-ui.test.ts":"6881","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-metadata-5461-5470-5534.test.ts":"6882","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-metrics-route.test.ts":"6883","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-model-filter-live-catalog-7250.test.ts":"6884","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-models-config.test.ts":"6885","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-models-context-window-override-4125.test.ts":"6886","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-models-custom-merge-6247.test.ts":"6887","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-models-discovery-split.test.ts":"6888","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-models-management-route.test.ts":"6889","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-models-qwen-web-redirect-6267.test.ts":"6890","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-models-route-codex.test.ts":"6891","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-models-route-lan-guard.test.ts":"6892","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-models-route.test.ts":"6893","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-models-token-limits.test.ts":"6894","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-models-v1-route.test.ts":"6895","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-models-vision-override-1904.test.ts":"6896","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-node-dedup-4746.test.ts":"6897","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-node-icon-url.test.ts":"6898","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-node-select-4421.test.ts":"6899","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-nodes-route.test.ts":"6900","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-nodes-validate-docker-hint.test.ts":"6901","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-nodes-validate-modelid.test.ts":"6902","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-nodes-vibeproxy-preset.test.ts":"6903","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-onboarding-href.test.ts":"6904","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-onboarding-wizard.test.ts":"6905","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-page-helpers-3501.test.ts":"6906","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-plugin-manifest-url.test.ts":"6907","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-plugin-manifest.test.ts":"6908","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-proxy-lazy.test.ts":"6909","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-quota-visibility.test.ts":"6910","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-quota-widget-icon-prop.test.ts":"6911","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-rate-limit-overrides-schema.test.ts":"6912","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-registry-freetheai.test.ts":"6913","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-registry-github-copilot-gpt-4.test.ts":"6914","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-registry-github-copilot-gpt-4o.test.ts":"6915","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-registry-github-copilot-targetformat.test.ts":"6916","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-registry-kilocode-format.test.ts":"6917","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-registry-llm7-cohere.test.ts":"6918","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-registry-models-guard.test.ts":"6919","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-registry-openai-gemini-expanded-models.test.ts":"6920","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-registry-qwen-vision.test.ts":"6921","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-request-capture-toolname-antigravity-4181.test.ts":"6922","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-request-capture-toolname-map-4091.test.ts":"6923","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-request-failure-pipeline.test.ts":"6924","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-request-logging.test.ts":"6925","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-route-schemas.test.ts":"6926","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-scoped-aliases.test.ts":"6927","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-scoped-chat-completions-validation.test.ts":"6928","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-scoped-models-route.test.ts":"6929","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-section-visibility.test.ts":"6930","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-service-kind-filter-4240.test.ts":"6931","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-service.test.ts":"6932","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-settings-default.test.ts":"6933","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-setup-links-5572.test.ts":"6934","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-specific-data-schema.test.ts":"6935","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-sweep-live-discovery.test.ts":"6936","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-target-format-badge-4475.test.ts":"6937","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-test-account-deactivated.test.ts":"6938","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-test-mistral-401-classify.test.ts":"6939","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-tier-field-helpers.test.ts":"6940","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-translate-path-golden.test.ts":"6941","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-validation-azure-vertex.test.ts":"6942","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-validation-branches.test.ts":"6943","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-validation-firepass-403.test.ts":"6944","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-validation-hardening.test.ts":"6945","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-validation-image-only.test.ts":"6946","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-validation-qwen-web-5855.test.ts":"6947","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-validation-specialty.test.ts":"6948","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-validation-ssrf-guard.test.ts":"6949","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-validation-tinyfish.test.ts":"6950","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-validation-web-cookie-auth007.test.ts":"6951","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-validation-webfetch-4401.test.ts":"6952","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-wafer.test.ts":"6953","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-window-costs.test.ts":"6954","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/providerlimits-quotanormalize-split.test.ts":"6955","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/providers-autosync-ssrf-323.test.ts":"6956","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/providers-batch-update.test.ts":"6957","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/providers-bulk-route.test.ts":"6958","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/providers-constants-split.test.ts":"6959","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/providers-free-tier-filter.test.ts":"6960","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/providers-page-data-timeout.test.ts":"6961","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/providers-page-utils-kimi.test.ts":"6962","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/providers-page-utils.test.ts":"6963","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/providers-route-managed-catalog.test.ts":"6964","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/providers-test-route-cli-map.test.ts":"6965","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/providers-validate-route.test.ts":"6966","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/providers-yuanbao-web.test.ts":"6967","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxy-assigned-unavailable-6246.test.ts":"6968","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxy-autoselect-optin-3332.test.ts":"6969","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxy-batch-routes-5918.test.ts":"6970","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxy-bulk-import-dedup-7594.test.ts":"6971","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxy-bypass-scope-guard-3226.test.ts":"6972","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxy-concurrency-keepalive-regression.test.ts":"6973","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxy-connection-test.test.ts":"6974","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxy-dispatcher-cache-cap.test.ts":"6975","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxy-dispatcher-family.test.ts":"6976","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxy-egress-isolation-bdd.test.ts":"6977","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxy-egress-validate-pool-default.test.ts":"6978","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxy-egress-visibility.test.ts":"6979","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxy-fallback-cache-key.test.ts":"6980","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxy-fallback-candidates-listproxies-shape.test.ts":"6981","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxy-fallback-ssrf.test.ts":"6982","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxy-family-migration.test.ts":"6983","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxy-family-resolve-cache.test.ts":"6984","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxy-family-resolve.test.ts":"6985","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxy-family.test.ts":"6986","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxy-fetch.test.ts":"6987","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxy-health-6246.test.ts":"6988","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxy-health-decide-action-6246.test.ts":"6989","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxy-health-ipv6.test.ts":"6990","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxy-health-scheduler-listproxies-shape.test.ts":"6991","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxy-logger-client-ip.test.ts":"6992","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxy-logs-egress-ip.test.ts":"6993","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxy-logs-route.test.ts":"6994","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxy-management-v1-route.test.ts":"6995","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxy-nested-context-skip.test.ts":"6996","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxy-noauth-provider-6272.test.ts":"6997","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxy-pool-cloudflare-workers-deployer.test.ts":"6998","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxy-pool-deno-deploy-relay.test.ts":"6999","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxy-pool-rotation-6365.test.ts":"7000","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxy-pool-route-6365.test.ts":"7001","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxy-pool-sync-4878.test.ts":"7002","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxy-registry-manager.test.ts":"7003","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxy-registry-route-handlers.test.ts":"7004","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxy-registry.test.ts":"7005","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxy-relay-mappers.test.ts":"7006","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxy-relay-test-error-5716.test.ts":"7007","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxy-resolution-status-filter.test.ts":"7008","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxy-rotation-latency.test.ts":"7009","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxy-subscriptions-route-validation.test.ts":"7010","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxy-types-socks5-runtime-3508.test.ts":"7011","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxySubscription.coreEndpoint.test.ts":"7012","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxySubscription.due.test.ts":"7013","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxySubscription.fetchGuard.test.ts":"7014","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxySubscription.fetchRetry.test.ts":"7015","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxySubscription.needsCore.test.ts":"7016","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxySubscription.parse.test.ts":"7017","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxySubscription.scopes.test.ts":"7018","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxySubscription.service.test.ts":"7019","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxySubscription.url.test.ts":"7020","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxyfetch-caller-abort-log-suppression.test.ts":"7021","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxyfetch-retry-fresh-socket-4252.test.ts":"7022","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxyfetch-undici-retry.test.ts":"7023","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxyfetch-vercel-relay-2743.test.ts":"7024","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/public-api-routes.test.ts":"7025","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/public-client-ids-3493.test.ts":"7026","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/publicCreds.test.ts":"7027","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/publicai-not-keyless-3558.test.ts":"7028","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/qdrant-schemas.test.ts":"7029","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/qianfan-provider.test.ts":"7030","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/qiniu-provider.test.ts":"7031","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/qoder-cli.test.ts":"7032","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/qoder-display-label.test.ts":"7033","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/qoder-executor.test.ts":"7034","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/qoder-jobtoken-exchange-4683.test.ts":"7035","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/qoder-oauth-config.test.ts":"7036","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/qoder-test-runtime-disambiguation.test.ts":"7037","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/qoder-unwrap-error-envelope.test.ts":"7038","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/qoder-usage-quota.test.ts":"7039","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/qodercli-windows-resolve-6263.test.ts":"7040","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quality-rail-gate-membership.test.ts":"7041","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quality-ratchet.test.ts":"7042","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-account-buckets.test.ts":"7043","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-account-quota-row.test.ts":"7044","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-auto-ping.test.ts":"7045","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-burn-rate.test.ts":"7046","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-cache-hydrate-5015.test.ts":"7047","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-cache-is-exhausted-per-window-5923.test.ts":"7048","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-cache-snapshot-dedup-4438.test.ts":"7049","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-card-expanded-fixed-order-6687.test.ts":"7050","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-card-expanded-loading-placeholder.test.ts":"7051","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-card-expanded-sort-collapse.test.ts":"7052","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-card-grid-density-6815.test.ts":"7053","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-card-grid-horizontal-layout.test.ts":"7054","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-card-grid-mobile-7072.test.ts":"7055","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-catalog-filter.test.ts":"7056","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-combo-balancing.test.ts":"7057","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-combo-cli-providers.test.ts":"7058","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-combo-groups.test.ts":"7059","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-combos-sync.test.ts":"7060","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-concept-card-i18n.test.ts":"7061","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-connection-recovery.test.ts":"7062","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-constrain-connections.test.ts":"7063","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-deactivate-toggle.test.ts":"7064","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-deterministic-order.test.ts":"7065","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-dimensions.test.ts":"7066","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-edit-opens-wizard.test.ts":"7067","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-email-privacy.test.ts":"7068","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-endpoints-card.test.ts":"7069","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-enforce-await-store.test.ts":"7070","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-enforce.test.ts":"7071","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-epsilon-unconfigured-allow.test.ts":"7072","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-equal-split.test.ts":"7073","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-exclusive-catalog-4806.test.ts":"7074","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-exclusive-catalog-short-circuit.test.ts":"7075","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-exclusivity-reconcile.test.ts":"7076","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-fair-share.test.ts":"7077","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-fetch-throttle-6009.test.ts":"7078","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-fetch-throttle-scope-6911.test.ts":"7079","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-group-allocations.test.ts":"7080","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-group-scope.test.ts":"7081","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-groups-crud.test.ts":"7082","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-groups-migration.test.ts":"7083","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-groups-route.test.ts":"7084","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-groups-ui.test.ts":"7085","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-helpers.test.ts":"7086","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-key-models-route.test.ts":"7087","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-key-resolve.test.ts":"7088","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-model-naming.test.ts":"7089","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-monitor.test.ts":"7090","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-multiprovider.test.ts":"7091","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-parsing-claude-extra-usage.test.ts":"7092","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-per-key-model-hotpath.test.ts":"7093","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-per-key-model.test.ts":"7094","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-plan-registry.test.ts":"7095","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-plan-resolver.test.ts":"7096","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-plans-route-retired.test.ts":"7097","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-policy-generalization.test.ts":"7098","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-pool-connections.test.ts":"7099","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-pool-delete-prune.test.ts":"7100","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-pool-log-route.test.ts":"7101","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-pool-single-provider.test.ts":"7102","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-pool-update-full.test.ts":"7103","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-pool-usage-shape.test.ts":"7104","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-pool-wizard-edit.test.ts":"7105","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-pool-wizard-multi.test.ts":"7106","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-pool-wizard.test.ts":"7107","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-preflight.test.ts":"7108","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-redis-store.test.ts":"7109","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-saturation-anthropic-oauth.test.ts":"7110","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-saturation-signals.test.ts":"7111","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-saturation-token-headers.test.ts":"7112","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-schemas.test.ts":"7113","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-share-bugfixes-v388.test.ts":"7114","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-share-grid.test.ts":"7115","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-share-layout-v2.test.ts":"7116","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-share-strategy.test.ts":"7117","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-sharing-fixes.test.ts":"7118","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-spend-recorder.test.ts":"7119","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-sqlite-store.test.ts":"7120","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-store-factory.test.ts":"7121","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-store-pool-total.test.ts":"7122","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-streaming-consumption-usd.test.ts":"7123","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-summed-budget.test.ts":"7124","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-token-expiry-display.test.ts":"7125","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/qwen-cloud-image-media.test.ts":"7126","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/qwen-cloud-token-plan-media.test.ts":"7127","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/qwen-cloud-video-media.test.ts":"7128","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/qwen-code-config.test.ts":"7129","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/qwen-settings-route.test.ts":"7130","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/qwen-web-content-array-serialization.test.ts":"7131","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/qwen-web-cookie-validation-3958.test.ts":"7132","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/qwen-web-models-discovery-3931.test.ts":"7133","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/radar-api-routes.test.ts":"7134","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/radar-apply-feed.test.ts":"7135","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/radar-db.test.ts":"7136","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/radar-flag-default.test.ts":"7137","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/radar-inertia.test.ts":"7138","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/radar-page-state.test.ts":"7139","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/radar-sync.test.ts":"7140","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/rate-limit-enhanced.test.ts":"7141","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/rate-limit-manager.test.ts":"7142","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/rate-limit-provider-default.test.ts":"7143","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/rate-limit-queue-timeout-lockout.test.ts":"7144","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/rate-limit-queue-timeout-message-4165.test.ts":"7145","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/rate-limit-wedge-recovery.test.ts":"7146","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/rate-limiter-eviction-4041.test.ts":"7147","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/rate-limiter-fallback.test.ts":"7148","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/rate-limiter-redis-optional.test.ts":"7149","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/rateLimitManager-idle-eviction.test.ts":"7150","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/rateLimitSemaphore.test.ts":"7151","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ratelimit-admission-control-6593.test.ts":"7152","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ratelimit-reservoir-refresh.test.ts":"7153","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ratelimitmanager-headers-split.test.ts":"7154","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/raycast-auth.test.ts":"7155","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/raycast-local-extract.test.ts":"7156","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/reactive-context-compaction-policy.test.mjs":"7157","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/reasoning-cache-truncation.test.ts":"7158","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/reasoning-cache.test.ts":"7159","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/reasoning-cost-double-billing.test.ts":"7160","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/reasoning-placeholder-strip.test.ts":"7161","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/reasoning-replay-big-pickle.test.ts":"7162","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/reasoning-routing-api.test.ts":"7163","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/reasoning-routing-decision-guards.test.ts":"7164","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/reasoning-routing.test.ts":"7165","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/reasoning-token-buffer-6274.test.ts":"7166","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/reasoning-token-buffer-9507.test.ts":"7167","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/reasoning-token-source-6187.test.ts":"7168","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/reasoningContentInjector.test.ts":"7169","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/redirects-cli-renames.test.ts":"7170","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/refactor-buildHeaders-default.test.ts":"7171","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/refactor-buildHeaders-opencode.test.ts":"7172","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/refactor-buildHeaders-preamble.test.ts":"7173","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/refactor-effortLevel.test.ts":"7174","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/refactor-opencodeHeaders.test.ts":"7175","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/refactor-registryFactory.test.ts":"7176","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/refactor-resolveBaseUrl.test.ts":"7177","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/refactor-urlSanitize.test.ts":"7178","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/refresh-serializer-spacing.test.ts":"7179","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/refresh-serializer.test.ts":"7180","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/regional-provider-cn-notices-5462.test.ts":"7181","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/registry-direct-exports.test.ts":"7182","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/registry-utils.test.ts":"7183","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/regolo-provider.test.ts":"7184","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/rehome-open-prs.test.ts":"7185","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/rejected-request-usage.test.ts":"7186","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/relay-check-rate-limit-existing-token.test.ts":"7187","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/relay-deploy-5128.test.ts":"7188","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/relay-minified-fn-6149.test.ts":"7189","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/relay-probe-stats.test.ts":"7190","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/relay-test-result-awareness.test.ts":"7191","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/release-cycle-base-resolver.test.ts":"7192","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/release-green-docs-drift-7253.test.ts":"7193","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/release-notes.test.ts":"7194","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/releaseChecker.test.ts":"7195","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/remaining-tasks.test.ts":"7196","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/remote-image-fetch-dns-rebinding.test.ts":"7197","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/remote-image-fetch-pin-dns-connection.test.ts":"7198","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/remote-image-fetch.test.ts":"7199","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/replace-custom-models-preserve-hidden-5086.test.ts":"7200","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/repro-6142-devin-cloud-agent-unwired.test.ts":"7201","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/repro-6377-agentrouter-validation.test.ts":"7202","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/repro-6524.test.ts":"7203","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/repro-6557-noauth-connection-disable-ignored.test.ts":"7204","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/repro-6576-kiro-thinking-unsupported-model.test.ts":"7205","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/repro-6637-kimi-token-limit.test.ts":"7206","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/repro-6692-sticky-terminal.test.ts":"7207","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/repro-6701-claude-detect-fallback.test.ts":"7208","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/repro-6912-volcengine-max-completion-tokens.test.ts":"7209","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/repro-6951.test.ts":"7210","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/repro-6952-commentary.test.ts":"7211","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/repro-6953.test.ts":"7212","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/repro-6957.test.ts":"7213","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/repro-6975.test.ts":"7214","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/repro-7023.test.ts":"7215","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/repro-7268-401-model-not-supported-lockout.test.ts":"7216","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/repro-7387-sticky-quota-exhausted.test.ts":"7217","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/repro-7503-no-choices.test.ts":"7218","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/repro-7764-collapsed-quota-order.test.ts":"7219","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/repro-7820-amazon-q-static-models.test.ts":"7220","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/repro-7847-bound-client-raw-request.test.ts":"7221","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/repro-8065-quota-cache-cross-instance.test.ts":"7222","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/repro-8136-antigravity-400-model-not-supported-lockout.test.ts":"7223","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/repro-8429-capability-canonicalization.test.ts":"7224","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/repro-8430.test.ts":"7225","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/repro-8522.test.ts":"7226","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/repro-8956.test.ts":"7227","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/repro-9406-claude-web-429-valid.test.ts":"7228","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/repro-9500-reasoning-separator.test.ts":"7229","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/repro-9550-amazon-q-alias-resolution.test.ts":"7230","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/repro-antigravity-404-family-cooldown-hijack.test.ts":"7231","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/request-defaults-store-session.test.ts":"7232","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/request-log-detail-layout.test.ts":"7233","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/request-log-detail-stream.test.ts":"7234","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/request-log-migration.test.ts":"7235","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/request-log-payloads.test.ts":"7236","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/request-logger-bounded-clone.test.ts":"7237","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/request-logger-bounded-idempotence.test.ts":"7238","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/request-logger-endpoints.test.ts":"7239","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/request-logger-preferences.test.ts":"7240","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/request-logger-signature.test.ts":"7241","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/requesty-provider.test.ts":"7242","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/require-management-auth-access-token.test.ts":"7243","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/rerank-object-documents-response-path.test.ts":"7244","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/rerank-openrouter-6574.test.ts":"7245","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/rerank-providers-5332.test.ts":"7246","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/rerank-proxy-pinning-7350.test.ts":"7247","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/rerank-voyage-7809.test.ts":"7248","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/rerank.test.ts":"7249","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/reset-connection-backoff.test.ts":"7250","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/reset-password-cli-6261-6258.test.ts":"7251","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/resilience-provider-cooldown-api-3556.test.ts":"7252","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/resilience-settings-combo-cooldown-wait.test.ts":"7253","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/resilience-settings-normalize-split.test.ts":"7254","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/resilience-settings-provider-breaker.test.ts":"7255","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/resilience-settings-quota-preflight.test.ts":"7256","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/resilience-settings-quota-share-concurrency.test.ts":"7257","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/resilience-settings-stream-recovery.test.ts":"7258","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/resilience-settings-upstream429-breaker.test.ts":"7259","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/resilience-stream-recovery-feature-flags.test.ts":"7260","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/resilience-tab-response-fields.test.ts":"7261","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/resolve-bare-model-to-connection-default-474.test.ts":"7262","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/resolve-model-alias-index-8697.test.ts":"7263","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/resolve-omniroute-base-url.test.ts":"7264","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/resolve-proxy-family.test.ts":"7265","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/resolve-routing-model.test.ts":"7266","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/resolve-stream-flag.test.ts":"7267","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/resolve-web-provider-host.test.ts":"7268","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/resolveComboContextLimit.test.ts":"7269","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/resource-pressure-policy.test.ts":"7270","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/resource-pressure-runtime.test.ts":"7271","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/resource-pressure-sampler.test.ts":"7272","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/resource-pressure.test.ts":"7273","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/response-model-echo-1311.test.ts":"7274","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/response-openai-responses-purehelpers-split.test.ts":"7275","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/response-sanitizer.test.ts":"7276","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/responses-active-stream-custom-tool.test.ts":"7277","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/responses-additional-tools.test.ts":"7278","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/responses-chat-assistant-role-first-chunk.test.ts":"7279","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/responses-chat-namespace-identity-map.test.ts":"7280","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/responses-chat-namespace-qualified-name.test.ts":"7281","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/responses-chat-translation-gaps.test.ts":"7282","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/responses-combo-resolution-3227.test.ts":"7283","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/responses-commentary-event-frame-6561.test.ts":"7284","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/responses-commentary-passthrough-6199.test.ts":"7285","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/responses-default-text-format.test.ts":"7286","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/responses-handler.test.ts":"7287","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/responses-input-item-status-8083.test.ts":"7288","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/responses-input-sanitizer-name.test.ts":"7289","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/responses-nameless-hosted-tool-filter.test.ts":"7290","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/responses-namespace-flatten.test.ts":"7291","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/responses-parse-once-4041.test.ts":"7292","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/responses-reasoning-close-before-message-466.test.ts":"7293","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/responses-state-policy.test.ts":"7294","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/responses-strip-truncation-2311.test.ts":"7295","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/responses-textless-terminal-3948.test.ts":"7296","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/responses-to-claude-whitespace-9170.test.ts":"7297","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/responses-tool-search-call-skip.test.ts":"7298","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/responses-transformer-dense-output.test.ts":"7299","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/responses-transformer.test.ts":"7300","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/responses-translation-fixes.test.ts":"7301","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/responses-usage-trailing-6906.test.ts":"7302","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/responses-ws-proxy-compression-parity.test.ts":"7303","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/responses-ws-proxy-headers.test.mjs":"7304","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/responses-ws-proxy-multi-turn-history.test.ts":"7305","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/responses-ws-proxy.test.mjs":"7306","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/responsesanitizer-reasoning-split.test.ts":"7307","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/retrieval-scoring-split.test.ts":"7308","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/reverse-models-dev-providers-8697.test.ts":"7309","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/review-reviews-v3814-fixes.test.ts":"7310","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/risk-notice-acknowledged.test.ts":"7311","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/risk-notice-modal-button-import.test.ts":"7312","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/role-normalizer.test.ts":"7313","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/rotation-config-omniroute.test.ts":"7314","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/route-edge-coverage.test.ts":"7315","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/route-error-sanitization-v382.test.ts":"7316","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/route-explainability.test.ts":"7317","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/route-guard-acp-agents-local-only.test.ts":"7318","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/route-guard-forge-jcode-settings-local-only.test.ts":"7319","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/route-guard-grok-build-settings-local-only.test.ts":"7320","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/route-guard-loopback-via-proxy.test.ts":"7321","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/route-guard-middleware-local-only.test.ts":"7322","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/route-guard-plugins-local-only.test.ts":"7323","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/route-guard-private-lan.test.ts":"7324","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/route-guard-provider-login-local-only.test.ts":"7325","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/route-guard-qwen-settings-local-only.test.ts":"7326","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/router-eval-check.test.ts":"7327","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/router-eval-cli.test.ts":"7328","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/router-eval-compare.test.ts":"7329","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/router-eval-e2e-chain.test.ts":"7330","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/router-eval-patch-compare.test.ts":"7331","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/router-eval-search.test.ts":"7332","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/router-eval-trends.test.ts":"7333","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/router-eval.test.ts":"7334","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/router-strategies.test.ts":"7335","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/routing-settings-ux-6147.test.ts":"7336","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/rtk-enable-renderers-6703.test.ts":"7337","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/rtk-gradle-dotnet-filters.test.ts":"7338","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/rtk-new-filters.test.ts":"7339","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/rule12-error-sanitization-sweep.test.ts":"7340","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/run-next-node-env.test.ts":"7341","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/run-next-playwright.test.ts":"7342","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/runtime/live-ws-default.test.ts":"7343","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/runtime/magicBytes.test.ts":"7344","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/runtime/sqliteRuntime-node26-compat.test.ts":"7345","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/runtime/sqliteRuntime.test.ts":"7346","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/runtime-config-globalthis-5312.test.ts":"7347","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/runtime-deps-save-exact-no-prune.test.ts":"7348","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/runtime-env-max-old-space.test.ts":"7349","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/runtime-env.test.ts":"7350","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/runtime-ports.test.ts":"7351","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/runtime-timeouts.test.ts":"7352","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/safe-outbound-fetch.test.ts":"7353","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/safe-resolve-proxy-fail-closed.test.ts":"7354","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/sanitizer-residual-policy.test.ts":"7355","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/save-call-log-persistence.test.ts":"7356","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/schema-coercion.test.ts":"7357","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/search-cache-ttl-zero.test.ts":"7358","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/search-handler-duckduckgo.test.ts":"7359","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/search-handler-extended.test.ts":"7360","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/search-handler-perplexity-options.test.ts":"7361","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/search-provider-validation.test.ts":"7362","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/search-providers-static-model-catalog-7529.test.ts":"7363","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/search-registry.test.ts":"7364","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/search-route.test.ts":"7365","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/search-select-provider-searxng-bug-9543.test.ts":"7366","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/search-tools-schemas.test.ts":"7367","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/secure-random-routing.test.ts":"7368","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/security/build-profile-stubs.test.ts":"7369","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/security/cloud-sync-hmac.test.ts":"7370","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/security/docs-path-traversal.test.ts":"7371","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/security/docs-sanitization.test.ts":"7372","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/security/elevated-powershell-no-encoded.test.ts":"7373","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/security/live-server-allowlist.test.ts":"7374","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/security/local-endpoints.test.ts":"7375","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/security/zed-credential-fingerprint.test.ts":"7376","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/security/zed-import-two-step.test.ts":"7377","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/security-docs-truthfulness-8097.test.ts":"7378","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/security-fase01.test.ts":"7379","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/security-hashkey.test.ts":"7380","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/segmind-image-video-provider-6656.test.ts":"7381","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/select-impacted-tests.test.ts":"7382","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/self-inflicted-upstream-timeout.test.ts":"7383","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/semantic-cache.test.ts":"7384","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/sensenova-image-provider-2233.test.ts":"7385","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/sensenova-provider.test.ts":"7386","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/serial/combo-health-autopilot.test.ts":"7387","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/serial/combo-quota-share-cooldown-wait-timing.test.ts":"7388","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/serial/combo-strategy-fallbacks-half-open-timing.test.ts":"7389","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/serial/glm-coding-plan-monthly-3580.test.ts":"7390","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/serial/provider-health-autopilot.test.ts":"7391","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/serial/quota-division-blocks.test.ts":"7392","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/serve-node-options-preserve-5238.test.ts":"7393","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/service-backends.test.ts":"7394","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/service-batch-processor.test.ts":"7395","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/service-combo-metrics.test.ts":"7396","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/service-context-handoff.test.ts":"7397","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/service-context-manager.test.ts":"7398","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/service-intent-classifier.test.ts":"7399","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/service-payload-rules.test.ts":"7400","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/service-provider-plugin-manifest.test.ts":"7401","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/service-provider-plugin-registry.test.ts":"7402","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/service-quota-monitor.test.ts":"7403","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/service-reasoning-cache.test.ts":"7404","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/service-session-manager.test.ts":"7405","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/service-system-transforms.test.ts":"7406","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/service-thinking-budget.test.ts":"7407","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/service-tier-labels.test.ts":"7408","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/service-token-limit-counter.test.ts":"7409","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/service-token-refresh.test.ts":"7410","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/service-worker-navigation-fallback.test.ts":"7411","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/services/ServiceSupervisor.test.ts":"7412","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/services/bifrost-route-guard.test.ts":"7413","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/services/bifrost-routing-backend.test.ts":"7414","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/services/combo-metrics-memory.test.ts":"7415","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/services/embed-proxy.test.ts":"7416","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/services/embedWsProxy.test.ts":"7417","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/services/emergency-fallback.test.ts":"7418","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/services/end-to-end-shape.test.ts":"7419","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/services/fusion-min-panel-and-failure-detail.test.ts":"7420","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/services/geminiRateLimitTracker.test.ts":"7421","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/services/htmlRewriter.test.ts":"7422","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/services/install-route-helper.test.ts":"7423","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/services/installers/bifrost-transport-version-format.test.ts":"7424","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/services/installers/bifrost.test.ts":"7425","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/services/installers/cliproxy-resolve-spawn-args-6877.test.ts":"7426","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/services/installers/cliproxy.test.ts":"7427","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/services/installers/mux.test.ts":"7428","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/services/installers/ninerouter.test.ts":"7429","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/services/installers/runNpm-shell-5379.test.ts":"7430","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/services/lifecycle.test.ts":"7431","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/services/logs-sse.test.ts":"7432","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/services/modelSync.test.ts":"7433","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/services/providerCooldownTracker.test.ts":"7434","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/services/ringBuffer.test.ts":"7435","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/services-branch-hardening.test.ts":"7436","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/session-affinity-generic-7274.test.ts":"7437","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/session-manager-sweep.test.ts":"7438","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/session-manager.test.ts":"7439","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/session-pool-modular.test.ts":"7440","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/session-pool-rest-api.test.ts":"7441","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/session-pool.test.ts":"7442","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/settings/authz-bypass.test.ts":"7443","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/settings/probe-8950-set-password.test.ts":"7444","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/settings-api.test.ts":"7445","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/settings-cas-7784.test.ts":"7446","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/settings-i18n-keys.test.ts":"7447","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/settings-route-password.test.ts":"7448","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/settings-schema-routing-strategies.test.ts":"7449","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/settings-transform-schema.test.ts":"7450","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/settings-ui-layout-static.test.ts":"7451","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/setup-open-code-win32-shell.test.mjs":"7452","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/shared/analytics-recharts-lazy.test.ts":"7453","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/shared/basePath.test.ts":"7454","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/shared/basePathFetch.test.ts":"7455","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/shared/components/AutoRoutingBanner.test.tsx":"7456","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/shared/components/KiroAuthModal.test.tsx":"7457","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/shared/components/ProxyConfigModal.test.tsx":"7458","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/shared/machineId.test.ts":"7459","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/shared/structuredLogger-raw-write-guard.test.ts":"7460","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/shared-api-utils.test.ts":"7461","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/shared-clipboard.test.tsx":"7462","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/shared-schemas.test.ts":"7463","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/sidebar-back-compat.test.ts":"7464","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/sidebar-cli-renames.test.ts":"7465","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/sidebar-costs-quota-plans.test.ts":"7466","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/sidebar-costs-section.test.ts":"7467","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/sidebar-customization.test.ts":"7468","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/sidebar-icon-accents-3812.test.ts":"7469","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/sidebar-monitoring-reorg.test.ts":"7470","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/sidebar-prefetch-policy-8281.test.ts":"7471","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/sidebar-quota-share-placement.test.ts":"7472","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/sidebar-route-match.test.ts":"7473","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/sidebar-search-filter.test.ts":"7474","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/sidebar-tools-group.test.ts":"7475","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/sidebar-visibility.test.ts":"7476","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/signature-cache-bypass.test.ts":"7477","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/signature-cache.test.ts":"7478","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/silent-sse-close-7699.test.ts":"7479","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/siliconflow-model-sync.test.ts":"7480","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/siliconflow-registry-models.test.ts":"7481","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/skills-builtins-sandbox.test.ts":"7482","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/skills-collect-routes.test.ts":"7483","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/skills-executor.test.ts":"7484","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/skills-injection.test.ts":"7485","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/skills-interception.test.ts":"7486","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/skills-provider-setting.test.ts":"7487","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/skills-registry.test.ts":"7488","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/skills-routes-error-sanitization.test.ts":"7489","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/skills-routes.test.ts":"7490","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/skills-schemas.test.ts":"7491","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/skills-skillssh.test.ts":"7492","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/skip-provider-breaker-consumer-2743.test.ts":"7493","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/sliding-window-limiter.test.ts":"7494","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/small-vps-docs.test.ts":"7495","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/socks-connector-family.test.ts":"7496","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/socks-handshake-timeout-5109.test.ts":"7497","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/socks5-default-on.test.ts":"7498","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/sonar-quality-gate-fixes.test.ts":"7499","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/source-scanner-guards.test.ts":"7500","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/spark-openai-compatible-endpoint-7942.test.ts":"7501","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/specialty-model-catalog-routes.test.ts":"7502","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/specificity-rules.test.ts":"7503","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/speechmatics-transcription-provider.test.ts":"7504","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/spend-batch-writer.test.ts":"7505","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/sqlite-repair-discoverability-3476.test.ts":"7506","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/sqljs-build-warning-8135.test.ts":"7507","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/sre-oncall-rotation.test.ts":"7508","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/sre-redact-logs.test.ts":"7509","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/sre-tcp-close-analyzer.test.ts":"7510","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/sse-auth-antigravity-credits.test.ts":"7511","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/sse-auth-resource-404.test.ts":"7512","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/sse-auth.test.ts":"7513","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/sse-error-passthrough-3324.test.ts":"7514","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/sse-finish-reason-synthesis-7800.test.ts":"7515","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/sse-heartbeat-integration.test.ts":"7516","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/sse-heartbeat.test.ts":"7517","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/sse-nonstream-accept-5305.test.ts":"7518","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/sse-parser-numeric-ids.test.ts":"7519","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/sse-parser.test.ts":"7520","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/sse-shim-contract.test.ts":"7521","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/sseHeartbeat.test.ts":"7522","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/sseTextTransform.test.ts":"7523","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/standalone-server-ws-keepalive-timeout-7003.test.ts":"7524","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/start-ws-server-cwd-4055.test.mjs":"7525","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/startup-stale-cooldown-recovery.test.ts":"7526","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/static-constants-public-surface.test.ts":"7527","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/static-models-venice-web-6269.test.ts":"7528","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/stepfun-mono-fallback-and-sidebar-hydration-7743.test.ts":"7529","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/sticky-affinity-failover-6219.test.ts":"7530","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/stmt-cache-lru.test.ts":"7531","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/stream-continuation-wiring.test.ts":"7532","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/stream-continuation.test.ts":"7533","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/stream-early-eof-affinity-8928.test.ts":"7534","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/stream-early-eof-breaker.test.ts":"7535","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/stream-early-eof-retry-3758.test.ts":"7536","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/stream-failure-499-classification.test.ts":"7537","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/stream-handler-catch-logging-8143.test.ts":"7538","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/stream-handler-client-disconnect.test.ts":"7539","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/stream-handler.test.ts":"7540","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/stream-helpers.test.ts":"7541","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/stream-non-json-sse.test.ts":"7542","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/stream-numeric-ids.test.ts":"7543","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/stream-onfailure-callback-logging.test.ts":"7544","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/stream-options-nonstreaming-3884.test.ts":"7545","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/stream-payload-collector.test.ts":"7546","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/stream-prompt-tokens-zero-upstream.test.ts":"7547","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/stream-readiness-policy.test.ts":"7548","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/stream-readiness.test.ts":"7549","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/stream-recovery.test.ts":"7550","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/stream-request-body-size-mark-7045.test.ts":"7551","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/stream-strip-responses-lifecycle-echo.test.ts":"7552","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/stream-utilities.test.ts":"7553","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/stream-utils.test.ts":"7554","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/streamHelpers.test.ts":"7555","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/streaming-empty-content-block-1382.test.ts":"7556","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/streaming-reasoning-dedup-5786.test.ts":"7557","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/streamingPiiInitialization.test.ts":"7558","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/streamingPiiTransform.test.ts":"7559","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/strict-random-deck.test.ts":"7560","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/strip-reasoning-blobs-agentic-context-1599.test.ts":"7561","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/strip-reasoning-header.test.ts":"7562","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/structured-logger-dedup-bound.test.ts":"7563","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/suggested-models-route.test.ts":"7564","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/sumopod-x5lab-provider.test.ts":"7565","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/supervisor-policy-4425.test.ts":"7566","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/sweep-stale-fragments.test.ts":"7567","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/sync-bundle.test.ts":"7568","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/sync-env-bundled-require-5006.test.ts":"7569","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/sync-env.test.ts":"7570","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/sync-models-degraded-local-catalog-5460-5465.test.ts":"7571","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/sync-next-cycle.test.ts":"7572","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/sync-reasoning-supported-efforts-7694.test.ts":"7573","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/sync-routes.test.ts":"7574","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/sync-search-to-url-8624.test.ts":"7575","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/sync-wiki.test.ts":"7576","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/synced-capability-warmup-8697.test.ts":"7577","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/synced-model-delete-persist-3199.test.ts":"7578","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/synced-model-hide-persist-3782.test.ts":"7579","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/synthetic-provider.test.ts":"7580","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/system-prompt.test.ts":"7581","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/system-role-extraction.test.ts":"7582","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/system-transforms.test.ts":"7583","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/system-trust-test-guard.test.ts":"7584","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/system-version-cache-8278.test.ts":"7585","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/system-version-check-4100.test.ts":"7586","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/t06-schema-hardening.test.ts":"7587","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/t07-no-log-key-config.test.ts":"7588","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/t08-allowed-connections.test.ts":"7589","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/t08-mcp-scope-enforcement.test.ts":"7590","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/t09-a2a-lifecycle.test.ts":"7591","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/t12-pricing-updates.test.ts":"7592","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/t13-stale-quota-display.test.ts":"7593","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/t14-proxy-fast-fail.test.ts":"7594","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/t16-gemini-enum-type-string.test.ts":"7595","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/t19-codex-responses-empty-content.test.ts":"7596","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/t23-t24-fallback-resilience.test.ts":"7597","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/t25-provider-validation-modelid-fallback.test.ts":"7598","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/t26-ai-sdk-accept-header-compat.test.ts":"7599","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/t27-github-copilot-response-format.test.ts":"7600","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/t28-model-catalog-updates.test.ts":"7601","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/t29-vertex-sa-json-executor.test.ts":"7602","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/t3-chat-web-credentials.test.ts":"7603","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/t3-chat-web.test.ts":"7604","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/t30-kiro-400-model-unavailable.test.ts":"7605","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/t31-t33-t34-t38-model-specs.test.ts":"7606","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/t3chat-web-cookie-hint-5465.test.ts":"7607","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/t40-opencode-cli-tools-integration.test.ts":"7608","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/t42-image-size-to-aspect-ratio.test.ts":"7609","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/t43-gemini-tool-call-no-thought-signature.test.ts":"7610","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/t44-antigravity-thought-signature-preserved.test.ts":"7611","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/tag-routing.test.ts":"7612","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/tailscale-authkey.test.ts":"7613","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/tailscaleTunnel.test.ts":"7614","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/task-fitness-missing-table-8603.test.ts":"7615","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/task-router-auto-intent-8602.test.ts":"7616","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/task-routing-config-restore-8601.test.ts":"7617","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/telemetry-auto-cleanup-6848.test.ts":"7618","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/telemetry-summary-route.test.ts":"7619","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/termux-android-cache-dir.test.ts":"7620","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/termux-android-playwright-static-import-7265.test.ts":"7621","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/test-all-model-status.test.ts":"7622","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/test-all-results-i18n.test.ts":"7623","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/test-masking-release-scale.test.ts":"7624","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/test-process-detection.test.ts":"7625","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/test-scoped-selection.test.ts":"7626","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/test-serial-quarantine.test.ts":"7627","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/textual-toolcall-sanitizer-false-positive.test.ts":"7628","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/theoldllm-body-double-read-3296.test.ts":"7629","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/theoldllm-context-length-4184.test.ts":"7630","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/theoldllm-model-refresh-5181.test.ts":"7631","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/theoldllm-provider-proxy.test.ts":"7632","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/theoldllm-request-token-3491.test.ts":"7633","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/think-close-marker-responses-format.test.ts":"7634","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/think-close-marker-suppress-5245.test.ts":"7635","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/think-tag-parser.test.ts":"7636","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/thinking-budget-boot-wiring-5312.test.ts":"7637","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/thinking-budget-globalthis-5312.test.ts":"7638","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/thinking-budget-groq-3258.test.ts":"7639","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/thinking-budget-hydration-5312.test.ts":"7640","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/thinking-budget.test.ts":"7641","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/thundering-herd.test.ts":"7642","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/tier-config-provider-override-route.test.ts":"7643","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/tier-coverage-widget-provider-override.test.ts":"7644","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/tier-resolver-provider-override.test.ts":"7645","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/tiktoken-counter.test.ts":"7646","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/tls-client-download-dir-8579.test.ts":"7647","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/tls-client-node-docker-binary-7802.test.ts":"7648","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/tls-client-proxy-fail-closed.test.ts":"7649","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/tls-options.test.ts":"7650","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/tls-profiles-valid-5591.test.mjs":"7651","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/tlsClient-circuit-breaker.test.ts":"7652","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/token-accounting-input-fix.test.ts":"7653","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/token-health-check-circuit-breaker.test.ts":"7654","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/token-health-check-devin-cli-8407.test.ts":"7655","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/token-health-check-sweep.test.ts":"7656","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/token-health-check-tickms-defined.test.ts":"7657","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/token-health-check.test.ts":"7658","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/token-health-no-refresh-token-expired-5326.test.ts":"7659","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/token-limits.test.ts":"7660","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/token-refresh-cas-guard-4038.test.ts":"7661","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/token-refresh-cas-guard.test.ts":"7662","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/token-refresh-circuit-breaker.test.ts":"7663","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/token-refresh-race-comprehensive.test.ts":"7664","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/token-refresh-rotation-map.test.ts":"7665","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/token-refresh-route-service.test.ts":"7666","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/token-refresh-service.test.ts":"7667","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/tokenExtractionConfig.test.ts":"7668","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/tokenHealthCheck-batchSize.test.ts":"7669","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/tokenHealthCheck-transient.test.ts":"7670","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/tool-call-arguments.test.ts":"7671","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/tool-latency-tracker.test.ts":"7672","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/tool-limit-detector.test.ts":"7673","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/tool-name-case-preserve-4307.test.ts":"7674","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/tool-request-sanitization.test.ts":"7675","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/tool-schema-sanitizer.test.mjs":"7676","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/tool-search-filtered-responses-to-chat-7532.test.ts":"7677","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/tool-source-diagnostics.test.ts":"7678","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/tools-filter-anthropic-format.test.ts":"7679","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/tooltip-portal-behavior.test.ts":"7680","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/topology-active-requests-3507.test.ts":"7681","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/topology-connection-health.test.ts":"7682","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/topology-filtering-and-click.test.ts":"7683","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/topology-label-3198.test.ts":"7684","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/topology-request-lifecycle-emit.test.ts":"7685","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/tproxy-build-native.test.ts":"7686","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/tproxy-ca-trust.test.ts":"7687","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/tproxy-capture-api.test.ts":"7688","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/tproxy-capture-manager.test.ts":"7689","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/tproxy-capture-mode.test.ts":"7690","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/tproxy-commands.test.ts":"7691","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/tproxy-dynamic-cert.test.ts":"7692","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/tproxy-route.test.ts":"7693","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/tproxy-setup.test.ts":"7694","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/tproxy-tls-capture.test.ts":"7695","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/tproxy-transparent-socket.test.ts":"7696","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/trae-executor.test.ts":"7697","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/trae-publiccred.test.ts":"7698","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/traffic-filter-live.test.ts":"7699","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/transform-stream-hwm.test.ts":"7700","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-ai-sdk-image-parts.test.ts":"7701","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-antigravity-to-openai.test.ts":"7702","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-claude-helper-thinking.test.ts":"7703","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-claude-to-gemini.test.ts":"7704","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-claude-to-openai-orphan-tool-4385.test.ts":"7705","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-claude-to-openai-strip-billing-header.test.ts":"7706","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-claude-to-openai.test.ts":"7707","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-format-detection-2949.test.ts":"7708","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-friendly-advanced-section.test.tsx":"7709","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-friendly-compression.test.tsx":"7710","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-friendly-concept-card.test.tsx":"7711","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-friendly-deeplink.test.ts":"7712","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-friendly-i18n-keys.test.ts":"7713","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-friendly-integration.test.tsx":"7714","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-friendly-monitor-tab.test.tsx":"7715","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-friendly-page-client.test.tsx":"7716","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-friendly-pipeline-view.test.tsx":"7717","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-friendly-raw-json-panel.test.tsx":"7718","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-friendly-result-narrated.test.tsx":"7719","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-friendly-session.test.ts":"7720","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-friendly-simple-controls.test.tsx":"7721","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-friendly-stream-transformer.test.tsx":"7722","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-friendly-test-bench.test.tsx":"7723","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-friendly-translate-tab.test.tsx":"7724","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-gemini-audio-input.test.ts":"7725","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-gemini-consecutive-role-2191.test.ts":"7726","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-gemini-schema-pattern-property.test.ts":"7727","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-gemini-thinking-budget-6943.test.ts":"7728","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-gemini-to-openai.test.ts":"7729","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-helper-branches.test.ts":"7730","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-helper-tool-description-coercion.test.ts":"7731","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-json-util.test.ts":"7732","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-mistral-strip-echo-fields.test.ts":"7733","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-openai-responses-custom-tool-1007.test.ts":"7734","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-openai-responses-empty-input-419.test.ts":"7735","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-openai-responses-image-output-8459.test.ts":"7736","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-openai-responses-req.test.ts":"7737","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-openai-to-claude-empty-reasoning.test.ts":"7738","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-openai-to-claude.test.ts":"7739","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-openai-to-cursor.test.ts":"7740","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-openai-to-gemini-defaults.test.ts":"7741","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-openai-to-gemini-sse.test.ts":"7742","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-openai-to-gemini.test.ts":"7743","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-openai-to-kiro.test.ts":"7744","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-redacted-thinking-model-aware-4479.test.ts":"7745","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-request-openai-responses.test.ts":"7746","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-resp-antigravity-thinking-boundary.test.ts":"7747","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-resp-claude-to-openai.test.ts":"7748","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-resp-cursor-to-openai.test.ts":"7749","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-resp-empty-string-tool-arg.test.ts":"7750","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-resp-gemini-to-claude.test.ts":"7751","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-resp-gemini-to-openai.test.ts":"7752","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-resp-kiro-to-openai.test.ts":"7753","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-resp-openai-responses-completed-synthesis.test.ts":"7754","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-resp-openai-responses-namespace-identity.test.ts":"7755","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-resp-openai-responses-roundtrip.test.ts":"7756","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-resp-openai-responses.test.ts":"7757","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-resp-openai-to-antigravity.test.ts":"7758","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-resp-openai-to-claude.test.ts":"7759","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-resp-openai-to-gemini.test.ts":"7760","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-same-format-null-flush.test.ts":"7761","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-stream-transform.test.ts":"7762","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-strip-client-metadata-1157.test.ts":"7763","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-thinking-provider-compat-2043.test.ts":"7764","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-tool-call-shim.test.ts":"7765","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-toolcall-helper.test.ts":"7766","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-tools-anthropic-shape.test.ts":"7767","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-xiaomi-mimo-reasoning-replay-1321.test.ts":"7768","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/tray-kill-orphan-pid.test.ts":"7769","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/tray-systray-loader-4605.test.ts":"7770","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/triage-bugs-2026-08-02.test.ts":"7771","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/tryBackedChat.test.ts":"7772","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ts7-executor-override-signatures.test.ts":"7773","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ts7-executor-result-contract.test.ts":"7774","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ts7-executor-shared-shapes.test.ts":"7775","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ts7-open-sse-type-fixes.test.ts":"7776","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/tsconfig-ts7-readiness.test.ts":"7777","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/tsx-runtime-transform-5757.test.ts":"7778","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/turbopack-cache-heal-6289.test.ts":"7779","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/turkishText.test.ts":"7780","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/types-barrel-model-cooldown.test.ts":"7781","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/AcpAgentsPage.test.tsx":"7782","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/AntigravityToolCard-model-aliases.test.tsx":"7783","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/ClaudeClassifierCompatToggle.test.tsx":"7784","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/ClaudeToolCard-manual-config-fallback.test.tsx":"7785","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/CliAgentsPage.test.tsx":"7786","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/CliCodePage.test.tsx":"7787","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/CliComparisonCard.test.tsx":"7788","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/CliConceptCard.test.tsx":"7789","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/CliToolCard.test.tsx":"7790","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/CompressionHub-patch-only.test.tsx":"7791","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/CoolingConnectionsPanel.test.tsx":"7792","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/HermesAgentToolCard-model-aliases.test.tsx":"7793","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/LocaleAutoDetect-refresh.test.tsx":"7794","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/OpenClawToolCard-manual-config-fallback.test.tsx":"7795","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/ProviderIcon-icon-url.test.tsx":"7796","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/ProxyRegistryManager-tdz-render.test.tsx":"7797","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/ToolDetailClient.test.tsx":"7798","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/activity-page-redirect.test.ts":"7799","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/add-api-key-modal-free-models.test.tsx":"7800","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/add-api-key-modal-unsupported-save-5565.test.tsx":"7801","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/add-api-key-modal-validation-error-5088.test.tsx":"7802","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/agent-bridge-page.test.tsx":"7803","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/agent-bridge-server-card-a11y.test.tsx":"7804","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/agent-card-risk-modal.test.tsx":"7805","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/agent-card.test.tsx":"7806","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/allocation-table.test.tsx":"7807","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/authz-cors-banner.test.tsx":"7808","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/burn-rate-chart.test.tsx":"7809","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/bypass-list-editor.test.tsx":"7810","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/cache-settings-tab-bounds-8219.test.tsx":"7811","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/cli-agents-detail-page.test.tsx":"7812","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/cli-code-detail-page.test.tsx":"7813","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/cli-tools-no-mitm-tab.test.tsx":"7814","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/combo-compression-mode-select.test.tsx":"7815","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/combo-defaults-fusion-5598.test.tsx":"7816","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/combo-form-deselect-handler.test.tsx":"7817","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/combo-form-select-all-handlers.test.tsx":"7818","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/combo-response-validation-editor.test.tsx":"7819","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/comboFlowModel-breakers.test.ts":"7820","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/comboFlowModel-cooldown.test.ts":"7821","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/comboFlowModel.test.ts":"7822","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/comboLiveStudio.test.tsx":"7823","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/combos-error-boundary.test.tsx":"7824","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/combos-page-smoke.test.tsx":"7825","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/compareView.test.tsx":"7826","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/compatible-provider-apikey-setup.test.tsx":"7827","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/compliance-tab-actor-filter.test.tsx":"7828","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/compression-combos-routing-mode-6760.test.tsx":"7829","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/compression-exclusions-page.test.tsx":"7830","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/compression-guidance-7530.test.tsx":"7831","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/compression-log-namespace.test.tsx":"7832","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/compression-pipeline-editor.test.tsx":"7833","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/compression-replay-reducer.test.ts":"7834","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/compression-replay-speed.test.tsx":"7835","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/compression-settings-page.test.tsx":"7836","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/compression-settings-tab-consolidation.test.tsx":"7837","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/compressionAnnotation.test.tsx":"7838","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/compressionCockpit.test.tsx":"7839","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/compressionFlowModel.test.ts":"7840","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/compressionHub-active-selector.test.tsx":"7841","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/compressionHub-context-editing.test.tsx":"7842","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/compressionHub.test.tsx":"7843","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/compressionPanel.test.tsx":"7844","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/compressionStylesPanel.test.tsx":"7845","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/compressionStylesTile.test.tsx":"7846","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/compressionUltraTier.test.tsx":"7847","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/confirm-delete-connection-7361.test.tsx":"7848","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/connection-row-proxy-name-7643.test.tsx":"7849","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/connection-row-token-badge-5836.test.tsx":"7850","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/connectionsSearchFilter.test.tsx":"7851","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/conversation-tab-separators.test.tsx":"7852","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/conversation-tab.test.tsx":"7853","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/costs-toplistcard-legacy-free-label-7272.test.tsx":"7854","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/dashboard-csrf-fetch.test.tsx":"7855","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/diffPane.test.tsx":"7856","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/edgeStyles.test.ts":"7857","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/edit-connection-modal-free-models.test.tsx":"7858","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/edit-memory-modal.test.tsx":"7859","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/embedding-source-selector.test.tsx":"7860","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/engine-pages.test.tsx":"7861","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/engine-tab.test.tsx":"7862","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/engineConfigForm.test.tsx":"7863","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/engineConfigPage.test.tsx":"7864","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/engineNode.test.tsx":"7865","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/evals-tab-smoke.test.tsx":"7866","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/fidelityGateToggle.test.tsx":"7867","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/fleetAggregation.test.ts":"7868","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/flowCanvas.test.tsx":"7869","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/free-budget-card.test.tsx":"7870","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/free-pool-tab.test.tsx":"7871","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/free-provider-rankings-page-authtype-6915.test.tsx":"7872","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/fuzzyDedupToggle.test.tsx":"7873","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/grok-device-oauth-modal.test.tsx":"7874","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/hermes-agent-config-loop.test.tsx":"7875","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/hermes-agent-opencode-free.test.tsx":"7876","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/highlightableProviderCard.test.tsx":"7877","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/historic-session-banner.test.tsx":"7878","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/home-page-client-dashboard-smoke-4615.test.tsx":"7879","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/home-provider-topology-section-4606.test.tsx":"7880","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/home-topology-hidden-4596.test.tsx":"7881","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/home-topology-last-used-node-color.test.tsx":"7882","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/home-update-error-render-5991.test.ts":"7883","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/home-update-step-warning-color-amber.test.ts":"7884","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/ionizerLane.test.tsx":"7885","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/issue-7845-log-detail-structured-error.test.tsx":"7886","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/kimiComboPresetCard.test.tsx":"7887","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/kimiSponsorBanner.test.tsx":"7888","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/live-compression-accumulate.test.ts":"7889","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/livePage.test.tsx":"7890","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/lobe-provider-icons-stepfun.test.tsx":"7891","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/logs-page-detail-modal-reopen-on-close.test.tsx":"7892","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/markdown-message.test.tsx":"7893","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/memories-tab.test.tsx":"7894","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/memory-page.test.tsx":"7895","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/mitm-proxy-error-boundary.test.tsx":"7896","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/mitm-proxy-moved-page.test.tsx":"7897","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/model-alias-edit.test.tsx":"7898","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/model-select-field-6540.test.tsx":"7899","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/model-select-modal-connection-filter.test.tsx":"7900","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/model-select-modal-deselect.test.tsx":"7901","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/model-select-modal-hidden-models-7156.test.tsx":"7902","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/model-select-modal-keep-open.test.tsx":"7903","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/model-select-modal-select-all.test.tsx":"7904","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/model-select-modal-zero-config.test.tsx":"7905","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/model-visibility-toolbar-free.test.tsx":"7906","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/namedCombos-active-badge.test.tsx":"7907","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/noauth-account-card.test.tsx":"7908","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/oauth-callback-postmessage-scope.test.tsx":"7909","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/omniglyphContextPage.test.tsx":"7910","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/onboarding-public-endpoint.test.tsx":"7911","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/open-sse-alias.test.tsx":"7912","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/playView.test.tsx":"7913","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/playground-api-tab.test.tsx":"7914","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/playground-build-tab.test.tsx":"7915","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/playground-chat-tab.test.tsx":"7916","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/playground-compare-column.test.tsx":"7917","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/playground-compare-tab.test.tsx":"7918","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/playground-config-pane.test.tsx":"7919","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/playground-export-modal.test.tsx":"7920","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/playground-improve-prompt-button.test.tsx":"7921","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/playground-model-search-4086.test.tsx":"7922","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/playground-preset-picker.test.tsx":"7923","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/playground-structured-output-editor.test.tsx":"7924","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/playground-studio.test.tsx":"7925","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/playground-tab.test.tsx":"7926","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/playground-token-cost-counter.test.tsx":"7927","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/playground-tools-builder.test.tsx":"7928","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/pool-card.test.tsx":"7929","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/previewToRunModel.test.tsx":"7930","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/provider-breaker-health-hook.test.tsx":"7931","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/provider-quota-widget-auto-refresh-label-4611.test.tsx":"7932","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/providerCardHandle.test.tsx":"7933","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/providerCardKimiPartnerAccent.test.tsx":"7934","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/providerCascadeNode.test.tsx":"7935","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/providerIconKimiLogomark.test.tsx":"7936","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/providerPageHeaderKimiPartnerLink.test.tsx":"7937","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/providerPageHighlightLogic.test.tsx":"7938","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/proxy-config-modal-saved-sort-default-7643.test.tsx":"7939","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/qdrant-config-card.test.tsx":"7940","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/quantumLockBadge.test.tsx":"7941","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/quick-start-api-keys-link-5695.test.ts":"7942","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/quota-cutoff-modal-draft-reset-7889.test.tsx":"7943","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/quota-share-delete-error.test.tsx":"7944","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/quota-share-page.test.tsx":"7945","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/request-logger-autorefresh-visibility-3972.test.tsx":"7946","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/rerank-config-card.test.tsx":"7947","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/riskGateBadge.test.tsx":"7948","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/rtkLearnDiscoverCard.test.tsx":"7949","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/rtkTomlImportCard.test.tsx":"7950","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/rtl-logical-classes.test.tsx":"7951","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/runtime-page-client.test.tsx":"7952","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/saliencyHeatmap.test.tsx":"7953","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/same-context-filter.test.tsx":"7954","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/search-tools-compare-tab.test.tsx":"7955","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/search-tools-concept-card.test.tsx":"7956","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/search-tools-provider-catalog.test.tsx":"7957","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/search-tools-scrape-result.test.tsx":"7958","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/search-tools-scrape-tab.test.tsx":"7959","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/search-tools-search-tab.test.tsx":"7960","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/search-tools-studio.test.tsx":"7961","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/session-recorder-bar.test.tsx":"7962","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/setup-wizard.test.tsx":"7963","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/sidebar-engine-items.test.ts":"7964","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/sidebar-proxy-expansion.test.tsx":"7965","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/stacked-allocation-bar.test.tsx":"7966","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/stats-tab.test.tsx":"7967","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/status-dot.test.tsx":"7968","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/studio-pages.test.tsx":"7969","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/studioTabs.test.tsx":"7970","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/system-storage-manual-vacuum.test.tsx":"7971","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/timeline-page-detail-deeplink.test.tsx":"7972","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/timing-i18n.test.tsx":"7973","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/toonEncoderTable.test.tsx":"7974","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/traffic-inspector-page.test.tsx":"7975","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/use-improve-prompt.test.tsx":"7976","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/use-local-storage-pool-migration.test.tsx":"7977","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/use-model-visibility-handlers-test-all.test.tsx":"7978","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/use-pools-usage-aggregate.test.tsx":"7979","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/use-presets.test.tsx":"7980","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/use-resizable-panels.test.tsx":"7981","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/use-session-recorder.test.tsx":"7982","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/use-stream-metrics.test.tsx":"7983","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/use-structured-output.test.tsx":"7984","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/use-system-proxy-exit-guard.test.tsx":"7985","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/use-tools-builder.test.tsx":"7986","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/use-traffic-stream.test.tsx":"7987","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/use-virtual-list.test.tsx":"7988","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/usePreviewCompression.test.tsx":"7989","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/useToolBatchStatuses.test.tsx":"7990","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/waterfallInspector.test.tsx":"7991","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/web-session-cookie-modal-size-6265.test.tsx":"7992","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui-value-drift-cosmetic.test.ts":"7993","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/universal-handoff.test.ts":"7994","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/unorouter-registry.test.ts":"7995","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/upstream-ca-test-route-3488.test.ts":"7996","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/upstream-error-passthrough.test.ts":"7997","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/upstream-headers-sanitize.test.ts":"7998","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/upstream-response-headers-strip.test.ts":"7999","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/upstream-retry-hints-toggle.test.ts":"8000","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/upstream-timeout-model-override.test.ts":"8001","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/url-sanitize.test.ts":"8002","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/usage/usageHistoryDedup.test.ts":"8003","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/usage-account-analytics-route.test.ts":"8004","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/usage-account-identity.test.ts":"8005","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/usage-analytics-model-dedup-7535.test.ts":"8006","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/usage-analytics-provider-display-name-7534.test.ts":"8007","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/usage-analytics-route.test.ts":"8008","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/usage-analytics.test.ts":"8009","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/usage-antigravity-family-split.test.ts":"8010","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/usage-bailian-split.test.ts":"8011","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/usage-cache-health-route.test.ts":"8012","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/usage-cache-health.test.ts":"8013","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/usage-crof-split.test.ts":"8014","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/usage-deepseek-split.test.ts":"8015","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/usage-endpoint-dimension.test.ts":"8016","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/usage-events.test.ts":"8017","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/usage-extractor.test.ts":"8018","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/usage-families-split.test.ts":"8019","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/usage-github-split.test.ts":"8020","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/usage-glm-family-split.test.ts":"8021","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/usage-history-db.test.ts":"8022","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/usage-history-reset.test.ts":"8023","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/usage-migrations-legacy-archive-safety.test.ts":"8024","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/usage-migrations.test.ts":"8025","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/usage-minimax-family-split.test.ts":"8026","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/usage-nanogpt-split.test.ts":"8027","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/usage-opencode-split.test.ts":"8028","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/usage-pending-sweep.test.ts":"8029","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/usage-providers.test.ts":"8030","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/usage-qoder-split.test.ts":"8031","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/usage-quota-core-split.test.ts":"8032","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/usage-quota-row-visibility.test.ts":"8033","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/usage-scalars-split.test.ts":"8034","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/usage-service-antigravity-credits.test.ts":"8035","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/usage-service-deepseek.test.ts":"8036","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/usage-service-hardening.test.ts":"8037","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/usage-token-buffer.test.ts":"8038","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/usage-utils.test.ts":"8039","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/usage-vertex-split.test.ts":"8040","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/usage-xai-split.test.ts":"8041","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/usage-xiaomi-mimo-split.test.ts":"8042","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/usagehistory-helpers-split.test.ts":"8043","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/useApiKey.test.ts":"8044","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/v0-quota-fetcher.test.ts":"8045","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/v1-chat-completions-content-type-6414.test.ts":"8046","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/v1-combos-projection.test.ts":"8047","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/v1-completions-model-header-match-6426.test.ts":"8048","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/v1-models-aliases-included.test.ts":"8049","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/v1-models-auth-leak-9320.test.ts":"8050","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/v1-models-by-id-4674.test.ts":"8051","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/v1-models-catalog-generation-race.test.ts":"8052","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/v1-models-catalog-ttl.test.ts":"8053","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/v1-models-concurrent-6408.test.ts":"8054","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/v1-models-discovery-conformance.test.ts":"8055","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/v1-ws-bridge.test.ts":"8056","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/v1-ws-route.test.ts":"8057","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/v1beta-gemini-tool-calling-6222.test.ts":"8058","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/v1beta-models-route.test.ts":"8059","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/v388-phase1-screen-fixes.test.ts":"8060","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/v388-phase3-memory.test.ts":"8061","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/v388-phase4-playground.test.ts":"8062","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/v388-quota-share-usage-guard.test.ts":"8063","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/validate-release-green.test.ts":"8064","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/validate-response-quality.test.ts":"8065","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/validation-audio-misc-split.test.ts":"8066","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/validation-badge-unsupported-5442.test.ts":"8067","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/validation-cloud-providers-split.test.ts":"8068","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/validation-format-validators-split.test.ts":"8069","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/validation-helpers-split.test.ts":"8070","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/validation-kiro-split.test.ts":"8071","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/validation-search-embedding-split.test.ts":"8072","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/validation-specialty-inline-split.test.ts":"8073","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/validation-web-cookie-split.test.ts":"8074","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/validation-web-providers-split.test.ts":"8075","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/veoaifree-video-route.test.ts":"8076","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/veoaifree-web-executor.test.ts":"8077","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/verbosity-prompt-cache-key-provider-gate-7533.test.ts":"8078","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/vercel-ai-gateway-media.test.ts":"8079","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/vercel-deploy-relay-path-ssrf.test.ts":"8080","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/vercel-deploy-sso-protection-check.test.ts":"8081","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/vercel-gateway-models-fetch-4249.test.ts":"8082","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/verify-published.test.ts":"8083","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/verify-ratchet-bank.test.ts":"8084","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/version-compare-client-safe.test.ts":"8085","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/version-manager-request.test.ts":"8086","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/version-manager.test.ts":"8087","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/versionManager-orchestrator.test.ts":"8088","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/vertex-express-apikey.test.ts":"8089","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/vertex-functioncall-id-3440.test.ts":"8090","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/vertex-media.test.ts":"8091","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/vertex-oauth-scopes.test.ts":"8092","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/vertex-spend-usage.test.ts":"8093","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/vertex-tts.test.ts":"8094","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/video-deepinfra-6653.test.ts":"8095","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/video-generation-handler.test.ts":"8096","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/video-novita-6658.test.ts":"8097","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/video-xai-grok-imagine.test.ts":"8098","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/virtual-auto-combo.test.ts":"8099","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/vision-bridge-cc-no-reroute.test.ts":"8100","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/vision-bridge-env-override.test.ts":"8101","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/vision-bridge-policy-reroute-6640.test.ts":"8102","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/vision-bridge-preserve-on-failure-4012.test.ts":"8103","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/vision-bridge-settings-schema.test.ts":"8104","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/vision-compression-authoritative-capability-7237.test.ts":"8105","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/vision-detection-consistency.test.ts":"8106","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/vision-models-cc-fragments.test.ts":"8107","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/visionBridgeDefaults.test.ts":"8108","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/vnc-session.test.ts":"8109","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/vps-runner-variable-scope.test.ts":"8110","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/vscode-context-sanitizer.test.ts":"8111","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/vscode-responses-models.test.ts":"8112","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/vscode-shared-metadata.test.ts":"8113","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/vscode-token-in-url-warning.test.ts":"8114","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/vscode-token-routes-gpt56.test.ts":"8115","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/vscode-token-routes-responses-listing.test.ts":"8116","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/vscode-token-routes.test.ts":"8117","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/vscode-tokenized-request.test.ts":"8118","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/wafRateLimit.test.ts":"8119","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/waitForServer-tcp-fallback-6800.test.mjs":"8120","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/web-cookie-auth.test.ts":"8121","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/web-cookie-providers-new.test.ts":"8122","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/web-cookie-validation-fallback.test.ts":"8123","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/web-cookie-validation-false-positive-7857.test.ts":"8124","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/web-cookie-validation-proxy-7058.test.ts":"8125","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/web-fetch-dispatch.test.ts":"8126","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/web-fetch-handler.test.ts":"8127","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/web-fetch-interception.test.ts":"8128","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/web-fetch-quota-fallback.test.ts":"8129","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/web-runtime-env.test.ts":"8130","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/web-search-fallback-format.test.ts":"8131","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/web-search-tool-routing-4481.test.ts":"8132","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/web-session-credentials.test.ts":"8133","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/web-session-dedup-3368.test.ts":"8134","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/web-session-pool-health.test.ts":"8135","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/web-session-provider-link-6316.test.ts":"8136","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/web-tools-translation-2820.test.ts":"8137","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/web-tools-translation-3260.test.ts":"8138","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/web-tools-translation.test.ts":"8139","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/webdav-server-3485.test.ts":"8140","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/webhook-abort-timer-cleanup.test.ts":"8141","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/webhook-deliveries-db.test.ts":"8142","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/webhook-discord-dispatcher.test.ts":"8143","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/webhook-dispatcher-routing.test.ts":"8144","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/webhook-edit-wizard-regression.test.ts":"8145","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/webhook-event-descriptions.test.ts":"8146","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/webhook-metadata-guard-3269.test.ts":"8147","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/webhook-private-optin-3269.test.ts":"8148","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/webhook-slack-dispatcher.test.ts":"8149","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/webhook-ssrf-guard.test.ts":"8150","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/webhook-telegram-dispatcher.test.ts":"8151","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/webshare-sync.test.ts":"8152","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/wildcard-alias-settings-not-applied-7693.test.ts":"8153","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/wildcard-router.test.ts":"8154","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/windows-cert-identity-7275.test.ts":"8155","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/windows-hide-child-process-spawns-8131.test.ts":"8156","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/windows-process-stop-8045.test.ts":"8157","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/windsurf-devin-executors.test.ts":"8158","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/workflows-no-foreign-fork-publishers.test.ts":"8159","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/xai-agent-tools-passthrough.test.ts":"8160","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/xai-exact-cost-2453.test.ts":"8161","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/xai-oauth-provider.test.ts":"8162","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/xai-oauth-quota-fetcher.test.ts":"8163","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/xai-oauth-test-supported.test.ts":"8164","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/xai-oauth-usage.test.ts":"8165","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/xai-translators.test.ts":"8166","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/xai-usage.test.ts":"8167","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/xiaomi-mimo-provider.test.ts":"8168","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/xiaomi-mimo-selftrack-usage.test.ts":"8169","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/xiaomi-providers-registry.test.ts":"8170","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/zai-catalog-glm52.test.ts":"8171","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/zai-execution-credentials-target-format-7364.test.ts":"8172","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/zai-glm-max-tokens-clamp-7364.test.ts":"8173","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/zai-glm-target-format-override.test.ts":"8174","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/zai-validator.test.ts":"8175","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/zai-web-chat-endpoint-8014-probe.test.ts":"8176","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/zai-web-models-discovery-7678.test.ts":"8177","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/zed-docker-detect.test.ts":"8178","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/zed-hosted-think-close-marker.test.ts":"8179","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/zed-import-utils.test.ts":"8180","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/zed-oauth-provider.test.ts":"8181","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/zed-provider.test.ts":"8182","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/zenmux-free-provider.test.ts":"8183","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/zenmux-models-fetch-4202.test.ts":"8184","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/zenmux-provider.test.ts":"8185","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/vitest.config.ts":"8186","/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/vitest.mcp.config.ts":"8187"},{"size":235716,"mtime":1786084507588,"results":"8188","hashOfConfig":"8189"},{"size":2362,"mtime":1786084507589,"results":"8190","hashOfConfig":"8189"},{"size":10081,"mtime":1786084507589,"results":"8191","hashOfConfig":"8189"},{"size":5807,"mtime":1786084507589,"results":"8192","hashOfConfig":"8189"},{"size":2580,"mtime":1786084507589,"results":"8193","hashOfConfig":"8189"},{"size":4332,"mtime":1786084507590,"results":"8194","hashOfConfig":"8189"},{"size":26628,"mtime":1786084507590,"results":"8195","hashOfConfig":"8189"},{"size":63943,"mtime":1786084507591,"results":"8196","hashOfConfig":"8189"},{"size":2088,"mtime":1786084507591,"results":"8197","hashOfConfig":"8189"},{"size":3440,"mtime":1786084507591,"results":"8198","hashOfConfig":"8189"},{"size":41860,"mtime":1786084507592,"results":"8199","hashOfConfig":"8189"},{"size":12297,"mtime":1786084507592,"results":"8200","hashOfConfig":"8189"},{"size":11568,"mtime":1786084507592,"results":"8201","hashOfConfig":"8189"},{"size":16189,"mtime":1786084507592,"results":"8202","hashOfConfig":"8189"},{"size":8552,"mtime":1786084507592,"results":"8203","hashOfConfig":"8189"},{"size":14809,"mtime":1786084507593,"results":"8204","hashOfConfig":"8189"},{"size":5595,"mtime":1786084507593,"results":"8205","hashOfConfig":"8189"},{"size":3732,"mtime":1786084507593,"results":"8206","hashOfConfig":"8189"},{"size":6044,"mtime":1786084507593,"results":"8207","hashOfConfig":"8189"},{"size":11593,"mtime":1786084507593,"results":"8208","hashOfConfig":"8189"},{"size":2926,"mtime":1786084507593,"results":"8209","hashOfConfig":"8189"},{"size":3623,"mtime":1786084507593,"results":"8210","hashOfConfig":"8189"},{"size":552,"mtime":1786084507594,"results":"8211","hashOfConfig":"8189"},{"size":31889,"mtime":1786084507598,"results":"8212","hashOfConfig":"8189"},{"size":24874,"mtime":1786084507599,"results":"8213","hashOfConfig":"8189"},{"size":511,"mtime":1786084507599,"results":"8214","hashOfConfig":"8189"},{"size":7074,"mtime":1786084507907,"results":"8215","hashOfConfig":"8216"},{"size":5126,"mtime":1786084507907,"results":"8217","hashOfConfig":"8216"},{"size":4224,"mtime":1786084507908,"results":"8218","hashOfConfig":"8216"},{"size":4130,"mtime":1786084507908,"results":"8219","hashOfConfig":"8216"},{"size":2038,"mtime":1786084508924,"results":"8220","hashOfConfig":"8216"},{"size":2561,"mtime":1786084508924,"results":"8221","hashOfConfig":"8216"},{"size":7325,"mtime":1786084508925,"results":"8222","hashOfConfig":"8216"},{"size":2063,"mtime":1786084508925,"results":"8223","hashOfConfig":"8216"},{"size":664,"mtime":1786084508925,"results":"8224","hashOfConfig":"8216"},{"size":4448,"mtime":1786084508931,"results":"8225","hashOfConfig":"8216"},{"size":2678,"mtime":1786084508936,"results":"8226","hashOfConfig":"8216"},{"size":3039,"mtime":1786084508940,"results":"8227","hashOfConfig":"8216"},{"size":988,"mtime":1786084508943,"results":"8228","hashOfConfig":"8216"},{"size":26140,"mtime":1786084508994,"results":"8229","hashOfConfig":"8216"},{"size":4827,"mtime":1786084508997,"results":"8230","hashOfConfig":"8231"},{"size":6213,"mtime":1786084508998,"results":"8232","hashOfConfig":"8231"},{"size":8114,"mtime":1786084508999,"results":"8233","hashOfConfig":"8231"},{"size":1214,"mtime":1786084509000,"results":"8234","hashOfConfig":"8231"},{"size":22169,"mtime":1786084509003,"results":"8235","hashOfConfig":"8231"},{"size":2943,"mtime":1786084509006,"results":"8236","hashOfConfig":"8231"},{"size":7336,"mtime":1786084509007,"results":"8237","hashOfConfig":"8231"},{"size":914,"mtime":1786084509008,"results":"8238","hashOfConfig":"8231"},{"size":1391,"mtime":1786084509009,"results":"8239","hashOfConfig":"8231"},{"size":10109,"mtime":1786084509012,"results":"8240","hashOfConfig":"8231"},{"size":2021,"mtime":1786084509013,"results":"8241","hashOfConfig":"8231"},{"size":4377,"mtime":1786084509014,"results":"8242","hashOfConfig":"8231"},{"size":11987,"mtime":1786084509017,"results":"8243","hashOfConfig":"8231"},{"size":3183,"mtime":1786084509018,"results":"8244","hashOfConfig":"8231"},{"size":13827,"mtime":1786084509021,"results":"8245","hashOfConfig":"8231"},{"size":6705,"mtime":1786084509022,"results":"8246","hashOfConfig":"8231"},{"size":4065,"mtime":1786084509023,"results":"8247","hashOfConfig":"8231"},{"size":2356,"mtime":1786084509024,"results":"8248","hashOfConfig":"8231"},{"size":2472,"mtime":1786084509025,"results":"8249","hashOfConfig":"8231"},{"size":19955,"mtime":1786084509026,"results":"8250","hashOfConfig":"8231"},{"size":8416,"mtime":1786084509027,"results":"8251","hashOfConfig":"8231"},{"size":105734,"mtime":1786084509031,"results":"8252","hashOfConfig":"8231"},{"size":5254,"mtime":1786084509032,"results":"8253","hashOfConfig":"8231"},{"size":3346,"mtime":1786084509032,"results":"8254","hashOfConfig":"8231"},{"size":14748,"mtime":1786084509033,"results":"8255","hashOfConfig":"8231"},{"size":4519,"mtime":1786084509034,"results":"8256","hashOfConfig":"8231"},{"size":34636,"mtime":1786084509038,"results":"8257","hashOfConfig":"8231"},{"size":728,"mtime":1786084509040,"results":"8258","hashOfConfig":"8231"},{"size":2958,"mtime":1786084509042,"results":"8259","hashOfConfig":"8231"},{"size":2411,"mtime":1786084509044,"results":"8260","hashOfConfig":"8231"},{"size":2958,"mtime":1786084509048,"results":"8261","hashOfConfig":"8231"},{"size":1371,"mtime":1786084509049,"results":"8262","hashOfConfig":"8231"},{"size":2064,"mtime":1786084509050,"results":"8263","hashOfConfig":"8231"},{"size":602,"mtime":1786084509050,"results":"8264","hashOfConfig":"8231"},{"size":11444,"mtime":1786084509052,"results":"8265","hashOfConfig":"8231"},{"size":2791,"mtime":1786084509054,"results":"8266","hashOfConfig":"8231"},{"size":6003,"mtime":1786084509056,"results":"8267","hashOfConfig":"8231"},{"size":11733,"mtime":1786084509059,"results":"8268","hashOfConfig":"8231"},{"size":6299,"mtime":1786084509063,"results":"8269","hashOfConfig":"8231"},{"size":1027,"mtime":1786084509065,"results":"8270","hashOfConfig":"8231"},{"size":1035,"mtime":1786084509066,"results":"8271","hashOfConfig":"8231"},{"size":10438,"mtime":1786084509085,"results":"8272","hashOfConfig":"8231"},{"size":1275,"mtime":1786084509087,"results":"8273","hashOfConfig":"8231"},{"size":21965,"mtime":1786084509089,"results":"8274","hashOfConfig":"8231"},{"size":877,"mtime":1786084509091,"results":"8275","hashOfConfig":"8231"},{"size":1416,"mtime":1786084509092,"results":"8276","hashOfConfig":"8231"},{"size":725,"mtime":1786084509093,"results":"8277","hashOfConfig":"8231"},{"size":828,"mtime":1786084509094,"results":"8278","hashOfConfig":"8231"},{"size":388,"mtime":1786084509094,"results":"8279","hashOfConfig":"8231"},{"size":2950,"mtime":1786084509095,"results":"8280","hashOfConfig":"8231"},{"size":858,"mtime":1786084509096,"results":"8281","hashOfConfig":"8231"},{"size":1529,"mtime":1786084509097,"results":"8282","hashOfConfig":"8231"},{"size":1022,"mtime":1786084509097,"results":"8283","hashOfConfig":"8231"},{"size":519,"mtime":1786084509098,"results":"8284","hashOfConfig":"8231"},{"size":1211,"mtime":1786084509099,"results":"8285","hashOfConfig":"8231"},{"size":988,"mtime":1786084509099,"results":"8286","hashOfConfig":"8231"},{"size":2067,"mtime":1786084509101,"results":"8287","hashOfConfig":"8231"},{"size":859,"mtime":1786084509102,"results":"8288","hashOfConfig":"8231"},{"size":391,"mtime":1786084509102,"results":"8289","hashOfConfig":"8231"},{"size":1471,"mtime":1786084509103,"results":"8290","hashOfConfig":"8231"},{"size":3433,"mtime":1786084509103,"results":"8291","hashOfConfig":"8231"},{"size":355,"mtime":1786084509104,"results":"8292","hashOfConfig":"8231"},{"size":856,"mtime":1786084509104,"results":"8293","hashOfConfig":"8231"},{"size":1694,"mtime":1786084509104,"results":"8294","hashOfConfig":"8231"},{"size":1706,"mtime":1786084509105,"results":"8295","hashOfConfig":"8231"},{"size":401,"mtime":1786084509106,"results":"8296","hashOfConfig":"8231"},{"size":2185,"mtime":1786084509106,"results":"8297","hashOfConfig":"8231"},{"size":1238,"mtime":1786084509107,"results":"8298","hashOfConfig":"8231"},{"size":912,"mtime":1786084509107,"results":"8299","hashOfConfig":"8231"},{"size":723,"mtime":1786084509108,"results":"8300","hashOfConfig":"8231"},{"size":1676,"mtime":1786084509108,"results":"8301","hashOfConfig":"8231"},{"size":810,"mtime":1786084509109,"results":"8302","hashOfConfig":"8231"},{"size":748,"mtime":1786084509109,"results":"8303","hashOfConfig":"8231"},{"size":452,"mtime":1786084509110,"results":"8304","hashOfConfig":"8231"},{"size":440,"mtime":1786084509110,"results":"8305","hashOfConfig":"8231"},{"size":994,"mtime":1786084509111,"results":"8306","hashOfConfig":"8231"},{"size":1680,"mtime":1786084509111,"results":"8307","hashOfConfig":"8231"},{"size":6854,"mtime":1786084509112,"results":"8308","hashOfConfig":"8231"},{"size":400,"mtime":1786084509112,"results":"8309","hashOfConfig":"8231"},{"size":411,"mtime":1786084509113,"results":"8310","hashOfConfig":"8231"},{"size":350,"mtime":1786084509113,"results":"8311","hashOfConfig":"8231"},{"size":3276,"mtime":1786084509114,"results":"8312","hashOfConfig":"8231"},{"size":1137,"mtime":1786084509114,"results":"8313","hashOfConfig":"8231"},{"size":4263,"mtime":1786084509114,"results":"8314","hashOfConfig":"8231"},{"size":4351,"mtime":1786084509115,"results":"8315","hashOfConfig":"8231"},{"size":1463,"mtime":1786084509115,"results":"8316","hashOfConfig":"8231"},{"size":546,"mtime":1786084509115,"results":"8317","hashOfConfig":"8231"},{"size":3894,"mtime":1786084509116,"results":"8318","hashOfConfig":"8231"},{"size":409,"mtime":1786084509116,"results":"8319","hashOfConfig":"8231"},{"size":5881,"mtime":1786084509116,"results":"8320","hashOfConfig":"8231"},{"size":1384,"mtime":1786084509117,"results":"8321","hashOfConfig":"8231"},{"size":3965,"mtime":1786084509117,"results":"8322","hashOfConfig":"8231"},{"size":788,"mtime":1786084509117,"results":"8323","hashOfConfig":"8231"},{"size":558,"mtime":1786084509118,"results":"8324","hashOfConfig":"8231"},{"size":355,"mtime":1786084509118,"results":"8325","hashOfConfig":"8231"},{"size":1850,"mtime":1786084509118,"results":"8326","hashOfConfig":"8231"},{"size":9041,"mtime":1786084509119,"results":"8327","hashOfConfig":"8231"},{"size":895,"mtime":1786084509119,"results":"8328","hashOfConfig":"8231"},{"size":433,"mtime":1786084509119,"results":"8329","hashOfConfig":"8231"},{"size":413,"mtime":1786084509120,"results":"8330","hashOfConfig":"8231"},{"size":471,"mtime":1786084509120,"results":"8331","hashOfConfig":"8231"},{"size":1842,"mtime":1786084509121,"results":"8332","hashOfConfig":"8231"},{"size":5914,"mtime":1786084509122,"results":"8333","hashOfConfig":"8231"},{"size":418,"mtime":1786084509121,"results":"8334","hashOfConfig":"8231"},{"size":682,"mtime":1786084509121,"results":"8335","hashOfConfig":"8231"},{"size":457,"mtime":1786084509123,"results":"8336","hashOfConfig":"8231"},{"size":319,"mtime":1786084509123,"results":"8337","hashOfConfig":"8231"},{"size":421,"mtime":1786084509123,"results":"8338","hashOfConfig":"8231"},{"size":1408,"mtime":1786084509124,"results":"8339","hashOfConfig":"8231"},{"size":1317,"mtime":1786084509124,"results":"8340","hashOfConfig":"8231"},{"size":435,"mtime":1786084509124,"results":"8341","hashOfConfig":"8231"},{"size":857,"mtime":1786084509125,"results":"8342","hashOfConfig":"8231"},{"size":416,"mtime":1786084509125,"results":"8343","hashOfConfig":"8231"},{"size":1846,"mtime":1786084509126,"results":"8344","hashOfConfig":"8231"},{"size":419,"mtime":1786084509126,"results":"8345","hashOfConfig":"8231"},{"size":427,"mtime":1786084509127,"results":"8346","hashOfConfig":"8231"},{"size":647,"mtime":1786084509127,"results":"8347","hashOfConfig":"8231"},{"size":1169,"mtime":1786084509127,"results":"8348","hashOfConfig":"8231"},{"size":1133,"mtime":1786084509128,"results":"8349","hashOfConfig":"8231"},{"size":629,"mtime":1786084509128,"results":"8350","hashOfConfig":"8231"},{"size":1194,"mtime":1786084509129,"results":"8351","hashOfConfig":"8231"},{"size":835,"mtime":1786084509129,"results":"8352","hashOfConfig":"8231"},{"size":657,"mtime":1786084509130,"results":"8353","hashOfConfig":"8231"},{"size":802,"mtime":1786084509131,"results":"8354","hashOfConfig":"8231"},{"size":800,"mtime":1786084509131,"results":"8355","hashOfConfig":"8231"},{"size":918,"mtime":1786084509131,"results":"8356","hashOfConfig":"8231"},{"size":731,"mtime":1786084509131,"results":"8357","hashOfConfig":"8231"},{"size":781,"mtime":1786084509132,"results":"8358","hashOfConfig":"8231"},{"size":405,"mtime":1786084509132,"results":"8359","hashOfConfig":"8231"},{"size":1574,"mtime":1786084509132,"results":"8360","hashOfConfig":"8231"},{"size":1780,"mtime":1786084509133,"results":"8361","hashOfConfig":"8231"},{"size":542,"mtime":1786084509133,"results":"8362","hashOfConfig":"8231"},{"size":4860,"mtime":1786084509133,"results":"8363","hashOfConfig":"8231"},{"size":400,"mtime":1786084509133,"results":"8364","hashOfConfig":"8231"},{"size":6044,"mtime":1786084509134,"results":"8365","hashOfConfig":"8231"},{"size":4840,"mtime":1786084509134,"results":"8366","hashOfConfig":"8231"},{"size":502,"mtime":1786084509134,"results":"8367","hashOfConfig":"8231"},{"size":1278,"mtime":1786084509135,"results":"8368","hashOfConfig":"8231"},{"size":609,"mtime":1786084509135,"results":"8369","hashOfConfig":"8231"},{"size":562,"mtime":1786084509135,"results":"8370","hashOfConfig":"8231"},{"size":559,"mtime":1786084509136,"results":"8371","hashOfConfig":"8231"},{"size":510,"mtime":1786084509136,"results":"8372","hashOfConfig":"8231"},{"size":523,"mtime":1786084509136,"results":"8373","hashOfConfig":"8231"},{"size":1491,"mtime":1786084509137,"results":"8374","hashOfConfig":"8231"},{"size":619,"mtime":1786084509137,"results":"8375","hashOfConfig":"8231"},{"size":902,"mtime":1786084509138,"results":"8376","hashOfConfig":"8231"},{"size":638,"mtime":1786084509138,"results":"8377","hashOfConfig":"8231"},{"size":373,"mtime":1786084509138,"results":"8378","hashOfConfig":"8231"},{"size":391,"mtime":1786084509139,"results":"8379","hashOfConfig":"8231"},{"size":400,"mtime":1786084509139,"results":"8380","hashOfConfig":"8231"},{"size":3795,"mtime":1786084509141,"results":"8381","hashOfConfig":"8231"},{"size":756,"mtime":1786084509145,"results":"8382","hashOfConfig":"8231"},{"size":1021,"mtime":1786084509149,"results":"8383","hashOfConfig":"8231"},{"size":830,"mtime":1786084509152,"results":"8384","hashOfConfig":"8231"},{"size":369,"mtime":1786084509155,"results":"8385","hashOfConfig":"8231"},{"size":1171,"mtime":1786084509158,"results":"8386","hashOfConfig":"8231"},{"size":438,"mtime":1786084509160,"results":"8387","hashOfConfig":"8231"},{"size":416,"mtime":1786084509162,"results":"8388","hashOfConfig":"8231"},{"size":1784,"mtime":1786084509166,"results":"8389","hashOfConfig":"8231"},{"size":671,"mtime":1786084509169,"results":"8390","hashOfConfig":"8231"},{"size":366,"mtime":1786084509171,"results":"8391","hashOfConfig":"8231"},{"size":3400,"mtime":1786084509173,"results":"8392","hashOfConfig":"8231"},{"size":1046,"mtime":1786084509174,"results":"8393","hashOfConfig":"8231"},{"size":2996,"mtime":1786084509175,"results":"8394","hashOfConfig":"8231"},{"size":828,"mtime":1786084509176,"results":"8395","hashOfConfig":"8231"},{"size":2004,"mtime":1786084509179,"results":"8396","hashOfConfig":"8231"},{"size":1759,"mtime":1786084509187,"results":"8397","hashOfConfig":"8231"},{"size":2784,"mtime":1786084509189,"results":"8398","hashOfConfig":"8231"},{"size":269,"mtime":1786084509183,"results":"8399","hashOfConfig":"8231"},{"size":523,"mtime":1786084509191,"results":"8400","hashOfConfig":"8231"},{"size":1013,"mtime":1786084509194,"results":"8401","hashOfConfig":"8231"},{"size":2316,"mtime":1786084509196,"results":"8402","hashOfConfig":"8231"},{"size":2424,"mtime":1786084509200,"results":"8403","hashOfConfig":"8231"},{"size":402,"mtime":1786084509202,"results":"8404","hashOfConfig":"8231"},{"size":373,"mtime":1786084509205,"results":"8405","hashOfConfig":"8231"},{"size":782,"mtime":1786084509208,"results":"8406","hashOfConfig":"8231"},{"size":401,"mtime":1786084509212,"results":"8407","hashOfConfig":"8231"},{"size":466,"mtime":1786084509215,"results":"8408","hashOfConfig":"8231"},{"size":793,"mtime":1786084509217,"results":"8409","hashOfConfig":"8231"},{"size":411,"mtime":1786084509220,"results":"8410","hashOfConfig":"8231"},{"size":20220,"mtime":1786084509227,"results":"8411","hashOfConfig":"8231"},{"size":568,"mtime":1786084509229,"results":"8412","hashOfConfig":"8231"},{"size":874,"mtime":1786084509231,"results":"8413","hashOfConfig":"8231"},{"size":404,"mtime":1786084509233,"results":"8414","hashOfConfig":"8231"},{"size":410,"mtime":1786084509236,"results":"8415","hashOfConfig":"8231"},{"size":589,"mtime":1786084509237,"results":"8416","hashOfConfig":"8231"},{"size":1099,"mtime":1786084509239,"results":"8417","hashOfConfig":"8231"},{"size":1002,"mtime":1786084509241,"results":"8418","hashOfConfig":"8231"},{"size":953,"mtime":1786084509244,"results":"8419","hashOfConfig":"8231"},{"size":592,"mtime":1786084509247,"results":"8420","hashOfConfig":"8231"},{"size":354,"mtime":1786084509251,"results":"8421","hashOfConfig":"8231"},{"size":1261,"mtime":1786084509254,"results":"8422","hashOfConfig":"8231"},{"size":654,"mtime":1786084509258,"results":"8423","hashOfConfig":"8231"},{"size":2264,"mtime":1786084509261,"results":"8424","hashOfConfig":"8231"},{"size":389,"mtime":1786084509263,"results":"8425","hashOfConfig":"8231"},{"size":615,"mtime":1786084509265,"results":"8426","hashOfConfig":"8231"},{"size":448,"mtime":1786084509268,"results":"8427","hashOfConfig":"8231"},{"size":851,"mtime":1786084509271,"results":"8428","hashOfConfig":"8231"},{"size":1717,"mtime":1786084509274,"results":"8429","hashOfConfig":"8231"},{"size":405,"mtime":1786084509276,"results":"8430","hashOfConfig":"8231"},{"size":694,"mtime":1786084509277,"results":"8431","hashOfConfig":"8231"},{"size":962,"mtime":1786084509279,"results":"8432","hashOfConfig":"8231"},{"size":463,"mtime":1786084509280,"results":"8433","hashOfConfig":"8231"},{"size":5964,"mtime":1786084509282,"results":"8434","hashOfConfig":"8231"},{"size":401,"mtime":1786084509283,"results":"8435","hashOfConfig":"8231"},{"size":631,"mtime":1786084509285,"results":"8436","hashOfConfig":"8231"},{"size":6608,"mtime":1786084509286,"results":"8437","hashOfConfig":"8231"},{"size":1445,"mtime":1786084509287,"results":"8438","hashOfConfig":"8231"},{"size":1129,"mtime":1786084509288,"results":"8439","hashOfConfig":"8231"},{"size":2292,"mtime":1786084509291,"results":"8440","hashOfConfig":"8231"},{"size":6477,"mtime":1786084509295,"results":"8441","hashOfConfig":"8231"},{"size":1627,"mtime":1786084509297,"results":"8442","hashOfConfig":"8231"},{"size":5360,"mtime":1786084509300,"results":"8443","hashOfConfig":"8231"},{"size":495,"mtime":1786084509301,"results":"8444","hashOfConfig":"8231"},{"size":1623,"mtime":1786084509303,"results":"8445","hashOfConfig":"8231"},{"size":2478,"mtime":1786084509305,"results":"8446","hashOfConfig":"8231"},{"size":964,"mtime":1786084509306,"results":"8447","hashOfConfig":"8231"},{"size":658,"mtime":1786084509309,"results":"8448","hashOfConfig":"8231"},{"size":1273,"mtime":1786084509313,"results":"8449","hashOfConfig":"8231"},{"size":1804,"mtime":1786084509316,"results":"8450","hashOfConfig":"8231"},{"size":445,"mtime":1786084509319,"results":"8451","hashOfConfig":"8231"},{"size":3809,"mtime":1786084509321,"results":"8452","hashOfConfig":"8231"},{"size":3083,"mtime":1786084509322,"results":"8453","hashOfConfig":"8231"},{"size":414,"mtime":1786084509326,"results":"8454","hashOfConfig":"8231"},{"size":736,"mtime":1786084509329,"results":"8455","hashOfConfig":"8231"},{"size":400,"mtime":1786084509332,"results":"8456","hashOfConfig":"8231"},{"size":3592,"mtime":1786084509334,"results":"8457","hashOfConfig":"8231"},{"size":587,"mtime":1786084509336,"results":"8458","hashOfConfig":"8231"},{"size":405,"mtime":1786084509337,"results":"8459","hashOfConfig":"8231"},{"size":1945,"mtime":1786084509338,"results":"8460","hashOfConfig":"8231"},{"size":1693,"mtime":1786084509348,"results":"8461","hashOfConfig":"8231"},{"size":1255,"mtime":1786084509345,"results":"8462","hashOfConfig":"8231"},{"size":1587,"mtime":1786084509341,"results":"8463","hashOfConfig":"8231"},{"size":1179,"mtime":1786084509350,"results":"8464","hashOfConfig":"8231"},{"size":405,"mtime":1786084509353,"results":"8465","hashOfConfig":"8231"},{"size":611,"mtime":1786084509354,"results":"8466","hashOfConfig":"8231"},{"size":407,"mtime":1786084509356,"results":"8467","hashOfConfig":"8231"},{"size":1713,"mtime":1786084509357,"results":"8468","hashOfConfig":"8231"},{"size":401,"mtime":1786084509358,"results":"8469","hashOfConfig":"8231"},{"size":441,"mtime":1786084509361,"results":"8470","hashOfConfig":"8231"},{"size":837,"mtime":1786084509364,"results":"8471","hashOfConfig":"8231"},{"size":1117,"mtime":1786084509366,"results":"8472","hashOfConfig":"8231"},{"size":1332,"mtime":1786084509369,"results":"8473","hashOfConfig":"8231"},{"size":811,"mtime":1786084509369,"results":"8474","hashOfConfig":"8231"},{"size":1237,"mtime":1786084509371,"results":"8475","hashOfConfig":"8231"},{"size":4790,"mtime":1786084509372,"results":"8476","hashOfConfig":"8231"},{"size":408,"mtime":1786084509373,"results":"8477","hashOfConfig":"8231"},{"size":1078,"mtime":1786084509374,"results":"8478","hashOfConfig":"8231"},{"size":2876,"mtime":1786084509375,"results":"8479","hashOfConfig":"8231"},{"size":838,"mtime":1786084509376,"results":"8480","hashOfConfig":"8231"},{"size":411,"mtime":1786084509377,"results":"8481","hashOfConfig":"8231"},{"size":543,"mtime":1786084509380,"results":"8482","hashOfConfig":"8231"},{"size":2200,"mtime":1786084509382,"results":"8483","hashOfConfig":"8231"},{"size":2295,"mtime":1786084509384,"results":"8484","hashOfConfig":"8231"},{"size":1215,"mtime":1786084509385,"results":"8485","hashOfConfig":"8231"},{"size":3355,"mtime":1786084509387,"results":"8486","hashOfConfig":"8231"},{"size":922,"mtime":1786084509388,"results":"8487","hashOfConfig":"8231"},{"size":1791,"mtime":1786084509389,"results":"8488","hashOfConfig":"8231"},{"size":841,"mtime":1786084509390,"results":"8489","hashOfConfig":"8231"},{"size":440,"mtime":1786084509391,"results":"8490","hashOfConfig":"8231"},{"size":335,"mtime":1786084509391,"results":"8491","hashOfConfig":"8231"},{"size":556,"mtime":1786084509392,"results":"8492","hashOfConfig":"8231"},{"size":415,"mtime":1786084509393,"results":"8493","hashOfConfig":"8231"},{"size":395,"mtime":1786084509395,"results":"8494","hashOfConfig":"8231"},{"size":395,"mtime":1786084509397,"results":"8495","hashOfConfig":"8231"},{"size":394,"mtime":1786084509398,"results":"8496","hashOfConfig":"8231"},{"size":442,"mtime":1786084509399,"results":"8497","hashOfConfig":"8231"},{"size":430,"mtime":1786084509401,"results":"8498","hashOfConfig":"8231"},{"size":1774,"mtime":1786084509402,"results":"8499","hashOfConfig":"8231"},{"size":854,"mtime":1786084509404,"results":"8500","hashOfConfig":"8231"},{"size":422,"mtime":1786084509408,"results":"8501","hashOfConfig":"8231"},{"size":598,"mtime":1786084509410,"results":"8502","hashOfConfig":"8231"},{"size":395,"mtime":1786084509412,"results":"8503","hashOfConfig":"8231"},{"size":8864,"mtime":1786084509414,"results":"8504","hashOfConfig":"8231"},{"size":442,"mtime":1786084509415,"results":"8505","hashOfConfig":"8231"},{"size":403,"mtime":1786084509418,"results":"8506","hashOfConfig":"8231"},{"size":1112,"mtime":1786084509423,"results":"8507","hashOfConfig":"8231"},{"size":739,"mtime":1786084509421,"results":"8508","hashOfConfig":"8231"},{"size":851,"mtime":1786084509426,"results":"8509","hashOfConfig":"8231"},{"size":1037,"mtime":1786084509425,"results":"8510","hashOfConfig":"8231"},{"size":329,"mtime":1786084509428,"results":"8511","hashOfConfig":"8231"},{"size":1136,"mtime":1786084509430,"results":"8512","hashOfConfig":"8231"},{"size":1198,"mtime":1786084509433,"results":"8513","hashOfConfig":"8231"},{"size":665,"mtime":1786084509431,"results":"8514","hashOfConfig":"8231"},{"size":1384,"mtime":1786084509434,"results":"8515","hashOfConfig":"8231"},{"size":2223,"mtime":1786084509436,"results":"8516","hashOfConfig":"8231"},{"size":1729,"mtime":1786084509435,"results":"8517","hashOfConfig":"8231"},{"size":25954,"mtime":1786084509437,"results":"8518","hashOfConfig":"8231"},{"size":4426,"mtime":1786084509438,"results":"8519","hashOfConfig":"8231"},{"size":7539,"mtime":1786084509439,"results":"8520","hashOfConfig":"8231"},{"size":1312,"mtime":1786084509439,"results":"8521","hashOfConfig":"8231"},{"size":1865,"mtime":1786084509441,"results":"8522","hashOfConfig":"8231"},{"size":9071,"mtime":1786084509443,"results":"8523","hashOfConfig":"8231"},{"size":2463,"mtime":1786084509445,"results":"8524","hashOfConfig":"8231"},{"size":8152,"mtime":1786084509446,"results":"8525","hashOfConfig":"8231"},{"size":13148,"mtime":1786084509447,"results":"8526","hashOfConfig":"8231"},{"size":1323,"mtime":1786084509448,"results":"8527","hashOfConfig":"8231"},{"size":18199,"mtime":1786084509451,"results":"8528","hashOfConfig":"8231"},{"size":1387,"mtime":1786084509451,"results":"8529","hashOfConfig":"8231"},{"size":24007,"mtime":1786084509460,"results":"8530","hashOfConfig":"8231"},{"size":3877,"mtime":1786084509460,"results":"8531","hashOfConfig":"8231"},{"size":6678,"mtime":1786084509461,"results":"8532","hashOfConfig":"8231"},{"size":6554,"mtime":1786084509463,"results":"8533","hashOfConfig":"8231"},{"size":58757,"mtime":1786084509458,"results":"8534","hashOfConfig":"8231"},{"size":941,"mtime":1786084509466,"results":"8535","hashOfConfig":"8231"},{"size":26114,"mtime":1786084509471,"results":"8536","hashOfConfig":"8231"},{"size":5287,"mtime":1786084509473,"results":"8537","hashOfConfig":"8231"},{"size":3072,"mtime":1786084509475,"results":"8538","hashOfConfig":"8231"},{"size":3389,"mtime":1786084509484,"results":"8539","hashOfConfig":"8231"},{"size":13872,"mtime":1786084509486,"results":"8540","hashOfConfig":"8231"},{"size":72444,"mtime":1786084509483,"results":"8541","hashOfConfig":"8231"},{"size":22657,"mtime":1786084509487,"results":"8542","hashOfConfig":"8231"},{"size":23016,"mtime":1786084509489,"results":"8543","hashOfConfig":"8231"},{"size":14021,"mtime":1786084509495,"results":"8544","hashOfConfig":"8231"},{"size":4308,"mtime":1786084509496,"results":"8545","hashOfConfig":"8231"},{"size":4782,"mtime":1786084509496,"results":"8546","hashOfConfig":"8231"},{"size":120733,"mtime":1786084509495,"results":"8547","hashOfConfig":"8231"},{"size":1275,"mtime":1786084509497,"results":"8548","hashOfConfig":"8231"},{"size":4520,"mtime":1786084509497,"results":"8549","hashOfConfig":"8231"},{"size":3108,"mtime":1786084509498,"results":"8550","hashOfConfig":"8231"},{"size":13051,"mtime":1786084509498,"results":"8551","hashOfConfig":"8231"},{"size":15825,"mtime":1786084509500,"results":"8552","hashOfConfig":"8231"},{"size":11652,"mtime":1786084509500,"results":"8553","hashOfConfig":"8231"},{"size":16003,"mtime":1786084509501,"results":"8554","hashOfConfig":"8231"},{"size":24313,"mtime":1786084509502,"results":"8555","hashOfConfig":"8231"},{"size":3157,"mtime":1786084509502,"results":"8556","hashOfConfig":"8231"},{"size":17079,"mtime":1786084509499,"results":"8557","hashOfConfig":"8231"},{"size":17409,"mtime":1786084509503,"results":"8558","hashOfConfig":"8231"},{"size":18751,"mtime":1786084509504,"results":"8559","hashOfConfig":"8231"},{"size":4167,"mtime":1786084509505,"results":"8560","hashOfConfig":"8231"},{"size":2139,"mtime":1786084509505,"results":"8561","hashOfConfig":"8231"},{"size":3321,"mtime":1786084509508,"results":"8562","hashOfConfig":"8231"},{"size":4491,"mtime":1786084509508,"results":"8563","hashOfConfig":"8231"},{"size":1364,"mtime":1786084509508,"results":"8564","hashOfConfig":"8231"},{"size":7065,"mtime":1786084509509,"results":"8565","hashOfConfig":"8231"},{"size":61267,"mtime":1786084509507,"results":"8566","hashOfConfig":"8231"},{"size":25680,"mtime":1786084509511,"results":"8567","hashOfConfig":"8231"},{"size":10780,"mtime":1786084509514,"results":"8568","hashOfConfig":"8231"},{"size":14695,"mtime":1786084509517,"results":"8569","hashOfConfig":"8231"},{"size":13634,"mtime":1786084509520,"results":"8570","hashOfConfig":"8231"},{"size":26658,"mtime":1786084509523,"results":"8571","hashOfConfig":"8231"},{"size":14535,"mtime":1786084509531,"results":"8572","hashOfConfig":"8231"},{"size":2465,"mtime":1786084509532,"results":"8573","hashOfConfig":"8231"},{"size":2937,"mtime":1786084509532,"results":"8574","hashOfConfig":"8231"},{"size":59476,"mtime":1786084509530,"results":"8575","hashOfConfig":"8231"},{"size":10939,"mtime":1786084509533,"results":"8576","hashOfConfig":"8231"},{"size":1383,"mtime":1786084509545,"results":"8577","hashOfConfig":"8231"},{"size":2297,"mtime":1786084509533,"results":"8578","hashOfConfig":"8231"},{"size":5995,"mtime":1786084509535,"results":"8579","hashOfConfig":"8231"},{"size":42051,"mtime":1786084509542,"results":"8580","hashOfConfig":"8231"},{"size":1945,"mtime":1786084509555,"results":"8581","hashOfConfig":"8231"},{"size":2412,"mtime":1786084509555,"results":"8582","hashOfConfig":"8231"},{"size":1119,"mtime":1786084509556,"results":"8583","hashOfConfig":"8231"},{"size":45636,"mtime":1786084509552,"results":"8584","hashOfConfig":"8231"},{"size":3021,"mtime":1786084509557,"results":"8585","hashOfConfig":"8231"},{"size":7559,"mtime":1786084509558,"results":"8586","hashOfConfig":"8231"},{"size":4141,"mtime":1786084509559,"results":"8587","hashOfConfig":"8231"},{"size":1189,"mtime":1786084509560,"results":"8588","hashOfConfig":"8231"},{"size":19031,"mtime":1786084509561,"results":"8589","hashOfConfig":"8231"},{"size":20515,"mtime":1786084509562,"results":"8590","hashOfConfig":"8231"},{"size":20756,"mtime":1786084509564,"results":"8591","hashOfConfig":"8231"},{"size":13743,"mtime":1786084509568,"results":"8592","hashOfConfig":"8231"},{"size":32042,"mtime":1786084509567,"results":"8593","hashOfConfig":"8231"},{"size":13160,"mtime":1786084509569,"results":"8594","hashOfConfig":"8231"},{"size":13066,"mtime":1786084509570,"results":"8595","hashOfConfig":"8231"},{"size":6504,"mtime":1786084509570,"results":"8596","hashOfConfig":"8231"},{"size":2244,"mtime":1786084509570,"results":"8597","hashOfConfig":"8231"},{"size":15859,"mtime":1786084509571,"results":"8598","hashOfConfig":"8231"},{"size":24622,"mtime":1786084509572,"results":"8599","hashOfConfig":"8231"},{"size":10689,"mtime":1786084509572,"results":"8600","hashOfConfig":"8231"},{"size":20281,"mtime":1786084509573,"results":"8601","hashOfConfig":"8231"},{"size":26645,"mtime":1786084509574,"results":"8602","hashOfConfig":"8231"},{"size":4588,"mtime":1786084509574,"results":"8603","hashOfConfig":"8231"},{"size":18904,"mtime":1786084509575,"results":"8604","hashOfConfig":"8231"},{"size":10861,"mtime":1786084509575,"results":"8605","hashOfConfig":"8231"},{"size":7309,"mtime":1786084509578,"results":"8606","hashOfConfig":"8231"},{"size":4477,"mtime":1786084509578,"results":"8607","hashOfConfig":"8231"},{"size":25817,"mtime":1786084509578,"results":"8608","hashOfConfig":"8231"},{"size":1503,"mtime":1786084509579,"results":"8609","hashOfConfig":"8231"},{"size":34318,"mtime":1786084509577,"results":"8610","hashOfConfig":"8231"},{"size":7721,"mtime":1786084509579,"results":"8611","hashOfConfig":"8231"},{"size":18661,"mtime":1786084509579,"results":"8612","hashOfConfig":"8231"},{"size":5610,"mtime":1786084509580,"results":"8613","hashOfConfig":"8231"},{"size":19964,"mtime":1786084509580,"results":"8614","hashOfConfig":"8231"},{"size":35098,"mtime":1786084509581,"results":"8615","hashOfConfig":"8231"},{"size":14325,"mtime":1786084509582,"results":"8616","hashOfConfig":"8231"},{"size":28121,"mtime":1786084509582,"results":"8617","hashOfConfig":"8231"},{"size":3850,"mtime":1786084509583,"results":"8618","hashOfConfig":"8231"},{"size":2780,"mtime":1786084509583,"results":"8619","hashOfConfig":"8231"},{"size":20958,"mtime":1786084509583,"results":"8620","hashOfConfig":"8231"},{"size":13665,"mtime":1786084509584,"results":"8621","hashOfConfig":"8231"},{"size":1856,"mtime":1786084509584,"results":"8622","hashOfConfig":"8231"},{"size":6251,"mtime":1786084509587,"results":"8623","hashOfConfig":"8231"},{"size":42596,"mtime":1786084509586,"results":"8624","hashOfConfig":"8231"},{"size":4468,"mtime":1786084509587,"results":"8625","hashOfConfig":"8231"},{"size":3303,"mtime":1786084509587,"results":"8626","hashOfConfig":"8231"},{"size":3688,"mtime":1786084509588,"results":"8627","hashOfConfig":"8231"},{"size":11084,"mtime":1786084509588,"results":"8628","hashOfConfig":"8231"},{"size":9173,"mtime":1786084509589,"results":"8629","hashOfConfig":"8231"},{"size":4091,"mtime":1786084509589,"results":"8630","hashOfConfig":"8231"},{"size":7149,"mtime":1786084509588,"results":"8631","hashOfConfig":"8231"},{"size":2494,"mtime":1786084509589,"results":"8632","hashOfConfig":"8231"},{"size":24022,"mtime":1786084509590,"results":"8633","hashOfConfig":"8231"},{"size":4304,"mtime":1786084509590,"results":"8634","hashOfConfig":"8231"},{"size":9855,"mtime":1786084509592,"results":"8635","hashOfConfig":"8231"},{"size":49903,"mtime":1786084509592,"results":"8636","hashOfConfig":"8231"},{"size":7607,"mtime":1786084509592,"results":"8637","hashOfConfig":"8231"},{"size":14710,"mtime":1786084509593,"results":"8638","hashOfConfig":"8231"},{"size":27716,"mtime":1786084509594,"results":"8639","hashOfConfig":"8231"},{"size":14193,"mtime":1786084509594,"results":"8640","hashOfConfig":"8231"},{"size":28194,"mtime":1786084509596,"results":"8641","hashOfConfig":"8231"},{"size":21742,"mtime":1786084509596,"results":"8642","hashOfConfig":"8231"},{"size":4997,"mtime":1786084509597,"results":"8643","hashOfConfig":"8231"},{"size":4053,"mtime":1786084509598,"results":"8644","hashOfConfig":"8231"},{"size":1937,"mtime":1786084509599,"results":"8645","hashOfConfig":"8231"},{"size":3533,"mtime":1786084509599,"results":"8646","hashOfConfig":"8231"},{"size":13702,"mtime":1786084509599,"results":"8647","hashOfConfig":"8231"},{"size":23487,"mtime":1786084509599,"results":"8648","hashOfConfig":"8231"},{"size":2054,"mtime":1786084509600,"results":"8649","hashOfConfig":"8231"},{"size":13167,"mtime":1786084509600,"results":"8650","hashOfConfig":"8231"},{"size":17922,"mtime":1786084509600,"results":"8651","hashOfConfig":"8231"},{"size":7186,"mtime":1786084509600,"results":"8652","hashOfConfig":"8231"},{"size":20777,"mtime":1786084509601,"results":"8653","hashOfConfig":"8231"},{"size":3400,"mtime":1786084509601,"results":"8654","hashOfConfig":"8231"},{"size":15345,"mtime":1786084509601,"results":"8655","hashOfConfig":"8231"},{"size":4136,"mtime":1786084509601,"results":"8656","hashOfConfig":"8231"},{"size":17947,"mtime":1786084509602,"results":"8657","hashOfConfig":"8231"},{"size":5891,"mtime":1786084509602,"results":"8658","hashOfConfig":"8231"},{"size":5361,"mtime":1786084509602,"results":"8659","hashOfConfig":"8231"},{"size":23126,"mtime":1786084509603,"results":"8660","hashOfConfig":"8231"},{"size":7884,"mtime":1786084509603,"results":"8661","hashOfConfig":"8231"},{"size":13486,"mtime":1786084509603,"results":"8662","hashOfConfig":"8231"},{"size":28296,"mtime":1786084509604,"results":"8663","hashOfConfig":"8231"},{"size":6091,"mtime":1786084509604,"results":"8664","hashOfConfig":"8231"},{"size":18661,"mtime":1786084509605,"results":"8665","hashOfConfig":"8231"},{"size":13865,"mtime":1786084509606,"results":"8666","hashOfConfig":"8231"},{"size":15467,"mtime":1786084509606,"results":"8667","hashOfConfig":"8231"},{"size":9884,"mtime":1786084509606,"results":"8668","hashOfConfig":"8231"},{"size":27761,"mtime":1786084509607,"results":"8669","hashOfConfig":"8231"},{"size":26251,"mtime":1786084509608,"results":"8670","hashOfConfig":"8231"},{"size":4344,"mtime":1786084509608,"results":"8671","hashOfConfig":"8231"},{"size":6194,"mtime":1786084509608,"results":"8672","hashOfConfig":"8231"},{"size":1295,"mtime":1786084509613,"results":"8673","hashOfConfig":"8231"},{"size":10361,"mtime":1786084509614,"results":"8674","hashOfConfig":"8231"},{"size":1884,"mtime":1786084509614,"results":"8675","hashOfConfig":"8231"},{"size":2421,"mtime":1786084509614,"results":"8676","hashOfConfig":"8231"},{"size":1818,"mtime":1786084509614,"results":"8677","hashOfConfig":"8231"},{"size":3567,"mtime":1786084509614,"results":"8678","hashOfConfig":"8231"},{"size":3990,"mtime":1786084509615,"results":"8679","hashOfConfig":"8231"},{"size":2888,"mtime":1786084509615,"results":"8680","hashOfConfig":"8231"},{"size":523,"mtime":1786084509615,"results":"8681","hashOfConfig":"8231"},{"size":2417,"mtime":1786084509615,"results":"8682","hashOfConfig":"8231"},{"size":1395,"mtime":1786084509615,"results":"8683","hashOfConfig":"8231"},{"size":5869,"mtime":1786084509615,"results":"8684","hashOfConfig":"8231"},{"size":5229,"mtime":1786084509615,"results":"8685","hashOfConfig":"8231"},{"size":731,"mtime":1786084509615,"results":"8686","hashOfConfig":"8231"},{"size":2534,"mtime":1786084509616,"results":"8687","hashOfConfig":"8231"},{"size":3066,"mtime":1786084509616,"results":"8688","hashOfConfig":"8231"},{"size":1635,"mtime":1786084509616,"results":"8689","hashOfConfig":"8231"},{"size":3326,"mtime":1786084509616,"results":"8690","hashOfConfig":"8231"},{"size":2922,"mtime":1786084509616,"results":"8691","hashOfConfig":"8231"},{"size":6310,"mtime":1786084509616,"results":"8692","hashOfConfig":"8231"},{"size":2311,"mtime":1786084509616,"results":"8693","hashOfConfig":"8231"},{"size":1587,"mtime":1786084509617,"results":"8694","hashOfConfig":"8231"},{"size":1322,"mtime":1786084509617,"results":"8695","hashOfConfig":"8231"},{"size":1173,"mtime":1786084509617,"results":"8696","hashOfConfig":"8231"},{"size":1707,"mtime":1786084509617,"results":"8697","hashOfConfig":"8231"},{"size":1097,"mtime":1786084509617,"results":"8698","hashOfConfig":"8231"},{"size":1126,"mtime":1786084509617,"results":"8699","hashOfConfig":"8231"},{"size":6556,"mtime":1786084509617,"results":"8700","hashOfConfig":"8231"},{"size":1365,"mtime":1786084509617,"results":"8701","hashOfConfig":"8231"},{"size":5280,"mtime":1786084509618,"results":"8702","hashOfConfig":"8231"},{"size":8113,"mtime":1786084509618,"results":"8703","hashOfConfig":"8231"},{"size":1684,"mtime":1786084509618,"results":"8704","hashOfConfig":"8231"},{"size":1059,"mtime":1786084509618,"results":"8705","hashOfConfig":"8231"},{"size":2777,"mtime":1786084509618,"results":"8706","hashOfConfig":"8231"},{"size":4214,"mtime":1786084509618,"results":"8707","hashOfConfig":"8231"},{"size":6102,"mtime":1786084509619,"results":"8708","hashOfConfig":"8231"},{"size":4819,"mtime":1786084509619,"results":"8709","hashOfConfig":"8231"},{"size":4008,"mtime":1786084509619,"results":"8710","hashOfConfig":"8231"},{"size":4711,"mtime":1786084509619,"results":"8711","hashOfConfig":"8231"},{"size":5582,"mtime":1786084509619,"results":"8712","hashOfConfig":"8231"},{"size":451,"mtime":1786084509619,"results":"8713","hashOfConfig":"8231"},{"size":5877,"mtime":1786084509620,"results":"8714","hashOfConfig":"8231"},{"size":1981,"mtime":1786084509620,"results":"8715","hashOfConfig":"8231"},{"size":5014,"mtime":1786084509620,"results":"8716","hashOfConfig":"8231"},{"size":7217,"mtime":1786084509620,"results":"8717","hashOfConfig":"8231"},{"size":3632,"mtime":1786084509620,"results":"8718","hashOfConfig":"8231"},{"size":2104,"mtime":1786084509620,"results":"8719","hashOfConfig":"8231"},{"size":5941,"mtime":1786084509621,"results":"8720","hashOfConfig":"8231"},{"size":9235,"mtime":1786084509621,"results":"8721","hashOfConfig":"8231"},{"size":3456,"mtime":1786084509621,"results":"8722","hashOfConfig":"8231"},{"size":2315,"mtime":1786084509621,"results":"8723","hashOfConfig":"8231"},{"size":1566,"mtime":1786084509622,"results":"8724","hashOfConfig":"8231"},{"size":1811,"mtime":1786084509622,"results":"8725","hashOfConfig":"8231"},{"size":1486,"mtime":1786084509622,"results":"8726","hashOfConfig":"8231"},{"size":4586,"mtime":1786084509622,"results":"8727","hashOfConfig":"8231"},{"size":2367,"mtime":1786084509622,"results":"8728","hashOfConfig":"8231"},{"size":8894,"mtime":1786084509622,"results":"8729","hashOfConfig":"8231"},{"size":2068,"mtime":1786084509623,"results":"8730","hashOfConfig":"8231"},{"size":3596,"mtime":1786084509623,"results":"8731","hashOfConfig":"8231"},{"size":2617,"mtime":1786084509623,"results":"8732","hashOfConfig":"8231"},{"size":2877,"mtime":1786084509623,"results":"8733","hashOfConfig":"8231"},{"size":929,"mtime":1786084509623,"results":"8734","hashOfConfig":"8231"},{"size":1102,"mtime":1786084509624,"results":"8735","hashOfConfig":"8231"},{"size":1788,"mtime":1786084509624,"results":"8736","hashOfConfig":"8231"},{"size":1230,"mtime":1786084509624,"results":"8737","hashOfConfig":"8231"},{"size":1438,"mtime":1786084509624,"results":"8738","hashOfConfig":"8231"},{"size":5192,"mtime":1786084509624,"results":"8739","hashOfConfig":"8231"},{"size":2047,"mtime":1786084509624,"results":"8740","hashOfConfig":"8231"},{"size":1663,"mtime":1786084509625,"results":"8741","hashOfConfig":"8231"},{"size":3399,"mtime":1786084509625,"results":"8742","hashOfConfig":"8231"},{"size":3121,"mtime":1786084509625,"results":"8743","hashOfConfig":"8231"},{"size":2492,"mtime":1786084509625,"results":"8744","hashOfConfig":"8231"},{"size":3016,"mtime":1786084509625,"results":"8745","hashOfConfig":"8231"},{"size":2678,"mtime":1786084509626,"results":"8746","hashOfConfig":"8231"},{"size":1427,"mtime":1786084509626,"results":"8747","hashOfConfig":"8231"},{"size":2285,"mtime":1786084509626,"results":"8748","hashOfConfig":"8231"},{"size":5728,"mtime":1786084509626,"results":"8749","hashOfConfig":"8231"},{"size":3584,"mtime":1786084509626,"results":"8750","hashOfConfig":"8231"},{"size":6648,"mtime":1786084509626,"results":"8751","hashOfConfig":"8231"},{"size":215136,"mtime":1786084509613,"results":"8752","hashOfConfig":"8231"},{"size":6618,"mtime":1786084509627,"results":"8753","hashOfConfig":"8231"},{"size":17607,"mtime":1786084509627,"results":"8754","hashOfConfig":"8231"},{"size":2924,"mtime":1786084509629,"results":"8755","hashOfConfig":"8231"},{"size":5806,"mtime":1786084509630,"results":"8756","hashOfConfig":"8231"},{"size":5793,"mtime":1786084509630,"results":"8757","hashOfConfig":"8231"},{"size":6197,"mtime":1786084509630,"results":"8758","hashOfConfig":"8231"},{"size":3552,"mtime":1786084509630,"results":"8759","hashOfConfig":"8231"},{"size":10435,"mtime":1786084509630,"results":"8760","hashOfConfig":"8231"},{"size":8604,"mtime":1786084509631,"results":"8761","hashOfConfig":"8231"},{"size":5028,"mtime":1786084509631,"results":"8762","hashOfConfig":"8231"},{"size":4042,"mtime":1786084509631,"results":"8763","hashOfConfig":"8231"},{"size":2693,"mtime":1786084509631,"results":"8764","hashOfConfig":"8231"},{"size":2891,"mtime":1786084509631,"results":"8765","hashOfConfig":"8231"},{"size":3091,"mtime":1786084509631,"results":"8766","hashOfConfig":"8231"},{"size":3870,"mtime":1786084509632,"results":"8767","hashOfConfig":"8231"},{"size":4626,"mtime":1786084509632,"results":"8768","hashOfConfig":"8231"},{"size":6195,"mtime":1786084509632,"results":"8769","hashOfConfig":"8231"},{"size":10501,"mtime":1786084509632,"results":"8770","hashOfConfig":"8231"},{"size":2923,"mtime":1786084509632,"results":"8771","hashOfConfig":"8231"},{"size":2584,"mtime":1786084509632,"results":"8772","hashOfConfig":"8231"},{"size":93442,"mtime":1786084509629,"results":"8773","hashOfConfig":"8231"},{"size":5363,"mtime":1786084509633,"results":"8774","hashOfConfig":"8231"},{"size":13149,"mtime":1786084509633,"results":"8775","hashOfConfig":"8231"},{"size":10863,"mtime":1786084509633,"results":"8776","hashOfConfig":"8231"},{"size":9088,"mtime":1786084509633,"results":"8777","hashOfConfig":"8231"},{"size":3396,"mtime":1786084509632,"results":"8778","hashOfConfig":"8231"},{"size":2483,"mtime":1786084509634,"results":"8779","hashOfConfig":"8231"},{"size":19797,"mtime":1786084509634,"results":"8780","hashOfConfig":"8231"},{"size":2362,"mtime":1786084509634,"results":"8781","hashOfConfig":"8231"},{"size":4017,"mtime":1786084509634,"results":"8782","hashOfConfig":"8231"},{"size":11796,"mtime":1786084509635,"results":"8783","hashOfConfig":"8231"},{"size":5498,"mtime":1786084509636,"results":"8784","hashOfConfig":"8231"},{"size":37888,"mtime":1786084509635,"results":"8785","hashOfConfig":"8231"},{"size":31375,"mtime":1786084509636,"results":"8786","hashOfConfig":"8231"},{"size":3673,"mtime":1786084509636,"results":"8787","hashOfConfig":"8231"},{"size":4684,"mtime":1786084509637,"results":"8788","hashOfConfig":"8231"},{"size":3444,"mtime":1786084509637,"results":"8789","hashOfConfig":"8231"},{"size":46690,"mtime":1786084509637,"results":"8790","hashOfConfig":"8231"},{"size":7246,"mtime":1786084509638,"results":"8791","hashOfConfig":"8231"},{"size":27986,"mtime":1786084509638,"results":"8792","hashOfConfig":"8231"},{"size":4640,"mtime":1786084509638,"results":"8793","hashOfConfig":"8231"},{"size":5153,"mtime":1786084509639,"results":"8794","hashOfConfig":"8231"},{"size":18714,"mtime":1786084509639,"results":"8795","hashOfConfig":"8231"},{"size":6224,"mtime":1786084509639,"results":"8796","hashOfConfig":"8231"},{"size":8819,"mtime":1786084509639,"results":"8797","hashOfConfig":"8231"},{"size":5057,"mtime":1786084509639,"results":"8798","hashOfConfig":"8231"},{"size":3604,"mtime":1786084509640,"results":"8799","hashOfConfig":"8231"},{"size":5118,"mtime":1786084509640,"results":"8800","hashOfConfig":"8231"},{"size":5318,"mtime":1786084509640,"results":"8801","hashOfConfig":"8231"},{"size":1899,"mtime":1786084509640,"results":"8802","hashOfConfig":"8231"},{"size":7259,"mtime":1786084509640,"results":"8803","hashOfConfig":"8231"},{"size":32051,"mtime":1786084509639,"results":"8804","hashOfConfig":"8231"},{"size":3687,"mtime":1786084509640,"results":"8805","hashOfConfig":"8231"},{"size":3945,"mtime":1786084509641,"results":"8806","hashOfConfig":"8231"},{"size":5417,"mtime":1786084509641,"results":"8807","hashOfConfig":"8808"},{"size":5865,"mtime":1786084509641,"results":"8809","hashOfConfig":"8231"},{"size":2768,"mtime":1786084509642,"results":"8810","hashOfConfig":"8231"},{"size":5633,"mtime":1786084509642,"results":"8811","hashOfConfig":"8231"},{"size":5246,"mtime":1786084509643,"results":"8812","hashOfConfig":"8231"},{"size":2208,"mtime":1786084509643,"results":"8813","hashOfConfig":"8231"},{"size":6475,"mtime":1786084509643,"results":"8814","hashOfConfig":"8231"},{"size":2732,"mtime":1786084509643,"results":"8815","hashOfConfig":"8231"},{"size":9676,"mtime":1786084509643,"results":"8816","hashOfConfig":"8231"},{"size":7513,"mtime":1786084509643,"results":"8817","hashOfConfig":"8231"},{"size":6080,"mtime":1786084509643,"results":"8818","hashOfConfig":"8231"},{"size":1913,"mtime":1786084509643,"results":"8819","hashOfConfig":"8231"},{"size":1930,"mtime":1786084509644,"results":"8820","hashOfConfig":"8231"},{"size":1002,"mtime":1786084509644,"results":"8821","hashOfConfig":"8231"},{"size":1100,"mtime":1786084509644,"results":"8822","hashOfConfig":"8231"},{"size":1042,"mtime":1786084509644,"results":"8823","hashOfConfig":"8231"},{"size":1490,"mtime":1786084509644,"results":"8824","hashOfConfig":"8231"},{"size":15032,"mtime":1786084509644,"results":"8825","hashOfConfig":"8231"},{"size":9508,"mtime":1786084509644,"results":"8826","hashOfConfig":"8231"},{"size":8631,"mtime":1786084509645,"results":"8827","hashOfConfig":"8231"},{"size":3195,"mtime":1786084509645,"results":"8828","hashOfConfig":"8231"},{"size":11018,"mtime":1786084509645,"results":"8829","hashOfConfig":"8231"},{"size":517,"mtime":1786084509645,"results":"8830","hashOfConfig":"8231"},{"size":4223,"mtime":1786084509645,"results":"8831","hashOfConfig":"8231"},{"size":4708,"mtime":1786084509645,"results":"8832","hashOfConfig":"8231"},{"size":5629,"mtime":1786084509645,"results":"8833","hashOfConfig":"8231"},{"size":3723,"mtime":1786084509646,"results":"8834","hashOfConfig":"8231"},{"size":6676,"mtime":1786084509646,"results":"8835","hashOfConfig":"8231"},{"size":2812,"mtime":1786084509646,"results":"8836","hashOfConfig":"8231"},{"size":3152,"mtime":1786084509646,"results":"8837","hashOfConfig":"8231"},{"size":1082,"mtime":1786084509646,"results":"8838","hashOfConfig":"8231"},{"size":1156,"mtime":1786084509646,"results":"8839","hashOfConfig":"8231"},{"size":47899,"mtime":1786084509647,"results":"8840","hashOfConfig":"8231"},{"size":3636,"mtime":1786084509647,"results":"8841","hashOfConfig":"8231"},{"size":51370,"mtime":1786084509648,"results":"8842","hashOfConfig":"8231"},{"size":9272,"mtime":1786084509648,"results":"8843","hashOfConfig":"8231"},{"size":1526,"mtime":1786084509648,"results":"8844","hashOfConfig":"8231"},{"size":3257,"mtime":1786084509648,"results":"8845","hashOfConfig":"8231"},{"size":629,"mtime":1786084509648,"results":"8846","hashOfConfig":"8231"},{"size":262,"mtime":1786084509648,"results":"8847","hashOfConfig":"8231"},{"size":1238,"mtime":1786084509648,"results":"8848","hashOfConfig":"8231"},{"size":2466,"mtime":1786084509649,"results":"8849","hashOfConfig":"8231"},{"size":3254,"mtime":1786084509649,"results":"8850","hashOfConfig":"8231"},{"size":39656,"mtime":1786084509650,"results":"8851","hashOfConfig":"8231"},{"size":3272,"mtime":1786084509650,"results":"8852","hashOfConfig":"8231"},{"size":23303,"mtime":1786084509650,"results":"8853","hashOfConfig":"8231"},{"size":5044,"mtime":1786084509651,"results":"8854","hashOfConfig":"8231"},{"size":5124,"mtime":1786084509651,"results":"8855","hashOfConfig":"8231"},{"size":2263,"mtime":1786084509651,"results":"8856","hashOfConfig":"8231"},{"size":4261,"mtime":1786084509651,"results":"8857","hashOfConfig":"8231"},{"size":4428,"mtime":1786084509652,"results":"8858","hashOfConfig":"8231"},{"size":15052,"mtime":1786084509652,"results":"8859","hashOfConfig":"8231"},{"size":12131,"mtime":1786084509652,"results":"8860","hashOfConfig":"8231"},{"size":7273,"mtime":1786084509652,"results":"8861","hashOfConfig":"8231"},{"size":7422,"mtime":1786084509653,"results":"8862","hashOfConfig":"8231"},{"size":3689,"mtime":1786084509653,"results":"8863","hashOfConfig":"8231"},{"size":4967,"mtime":1786084509654,"results":"8864","hashOfConfig":"8231"},{"size":3523,"mtime":1786084509654,"results":"8865","hashOfConfig":"8231"},{"size":10095,"mtime":1786084509654,"results":"8866","hashOfConfig":"8231"},{"size":1242,"mtime":1786084509654,"results":"8867","hashOfConfig":"8231"},{"size":3098,"mtime":1786084509654,"results":"8868","hashOfConfig":"8231"},{"size":4635,"mtime":1786084509654,"results":"8869","hashOfConfig":"8231"},{"size":8836,"mtime":1786084509655,"results":"8870","hashOfConfig":"8231"},{"size":11489,"mtime":1786084509655,"results":"8871","hashOfConfig":"8231"},{"size":4577,"mtime":1786084509655,"results":"8872","hashOfConfig":"8231"},{"size":1230,"mtime":1786084509656,"results":"8873","hashOfConfig":"8231"},{"size":5728,"mtime":1786084509656,"results":"8874","hashOfConfig":"8231"},{"size":2321,"mtime":1786084509657,"results":"8875","hashOfConfig":"8231"},{"size":3677,"mtime":1786084509657,"results":"8876","hashOfConfig":"8231"},{"size":77415,"mtime":1786084509656,"results":"8877","hashOfConfig":"8231"},{"size":2338,"mtime":1786084509657,"results":"8878","hashOfConfig":"8231"},{"size":10430,"mtime":1786086911035,"results":"8879","hashOfConfig":"8231"},{"size":5640,"mtime":1786084509657,"results":"8880","hashOfConfig":"8231"},{"size":5258,"mtime":1786084509657,"results":"8881","hashOfConfig":"8231"},{"size":20940,"mtime":1786084509658,"results":"8882","hashOfConfig":"8231"},{"size":3506,"mtime":1786084509658,"results":"8883","hashOfConfig":"8231"},{"size":926,"mtime":1786084509658,"results":"8884","hashOfConfig":"8231"},{"size":5860,"mtime":1786084509658,"results":"8885","hashOfConfig":"8231"},{"size":5794,"mtime":1786084509658,"results":"8886","hashOfConfig":"8231"},{"size":19423,"mtime":1786084509658,"results":"8887","hashOfConfig":"8231"},{"size":4798,"mtime":1786084509658,"results":"8888","hashOfConfig":"8231"},{"size":16686,"mtime":1786084509658,"results":"8889","hashOfConfig":"8231"},{"size":85140,"mtime":1786084509660,"results":"8890","hashOfConfig":"8231"},{"size":9422,"mtime":1786084509660,"results":"8891","hashOfConfig":"8231"},{"size":15071,"mtime":1786084509660,"results":"8892","hashOfConfig":"8231"},{"size":6340,"mtime":1786084509660,"results":"8893","hashOfConfig":"8231"},{"size":5543,"mtime":1786084509660,"results":"8894","hashOfConfig":"8231"},{"size":3038,"mtime":1786084509661,"results":"8895","hashOfConfig":"8231"},{"size":2375,"mtime":1786084509661,"results":"8896","hashOfConfig":"8231"},{"size":2361,"mtime":1786084509661,"results":"8897","hashOfConfig":"8231"},{"size":2715,"mtime":1786084509661,"results":"8898","hashOfConfig":"8231"},{"size":2670,"mtime":1786084509661,"results":"8899","hashOfConfig":"8231"},{"size":10031,"mtime":1786084509661,"results":"8900","hashOfConfig":"8231"},{"size":3310,"mtime":1786085706846,"results":"8901","hashOfConfig":"8231"},{"size":1904,"mtime":1786084509661,"results":"8902","hashOfConfig":"8231"},{"size":5409,"mtime":1786084509662,"results":"8903","hashOfConfig":"8231"},{"size":13120,"mtime":1786084509662,"results":"8904","hashOfConfig":"8231"},{"size":22984,"mtime":1786084509663,"results":"8905","hashOfConfig":"8231"},{"size":7051,"mtime":1786084509663,"results":"8906","hashOfConfig":"8231"},{"size":2088,"mtime":1786084509663,"results":"8907","hashOfConfig":"8231"},{"size":3855,"mtime":1786084509663,"results":"8908","hashOfConfig":"8231"},{"size":8010,"mtime":1786084509663,"results":"8909","hashOfConfig":"8231"},{"size":2629,"mtime":1786084509663,"results":"8910","hashOfConfig":"8231"},{"size":1998,"mtime":1786084509663,"results":"8911","hashOfConfig":"8231"},{"size":5870,"mtime":1786084509663,"results":"8912","hashOfConfig":"8231"},{"size":1705,"mtime":1786084509663,"results":"8913","hashOfConfig":"8231"},{"size":17872,"mtime":1786084509664,"results":"8914","hashOfConfig":"8231"},{"size":4748,"mtime":1786084509664,"results":"8915","hashOfConfig":"8231"},{"size":12052,"mtime":1786084509664,"results":"8916","hashOfConfig":"8231"},{"size":695,"mtime":1786084509664,"results":"8917","hashOfConfig":"8231"},{"size":3563,"mtime":1786084509664,"results":"8918","hashOfConfig":"8231"},{"size":3942,"mtime":1786084509665,"results":"8919","hashOfConfig":"8231"},{"size":1814,"mtime":1786084509665,"results":"8920","hashOfConfig":"8231"},{"size":3176,"mtime":1786084509665,"results":"8921","hashOfConfig":"8231"},{"size":16330,"mtime":1786084509665,"results":"8922","hashOfConfig":"8231"},{"size":4982,"mtime":1786084509665,"results":"8923","hashOfConfig":"8231"},{"size":296,"mtime":1786084509665,"results":"8924","hashOfConfig":"8231"},{"size":5460,"mtime":1786084509665,"results":"8925","hashOfConfig":"8231"},{"size":3418,"mtime":1786084509665,"results":"8926","hashOfConfig":"8231"},{"size":14366,"mtime":1786084509666,"results":"8927","hashOfConfig":"8231"},{"size":10385,"mtime":1786084509666,"results":"8928","hashOfConfig":"8231"},{"size":4795,"mtime":1786084509666,"results":"8929","hashOfConfig":"8231"},{"size":13121,"mtime":1786084509666,"results":"8930","hashOfConfig":"8231"},{"size":5118,"mtime":1786084509666,"results":"8931","hashOfConfig":"8231"},{"size":14543,"mtime":1786084509666,"results":"8932","hashOfConfig":"8231"},{"size":28553,"mtime":1786084509667,"results":"8933","hashOfConfig":"8231"},{"size":6545,"mtime":1786084509667,"results":"8934","hashOfConfig":"8231"},{"size":8930,"mtime":1786084509667,"results":"8935","hashOfConfig":"8231"},{"size":11850,"mtime":1786084509667,"results":"8936","hashOfConfig":"8231"},{"size":28085,"mtime":1786084509668,"results":"8937","hashOfConfig":"8231"},{"size":4773,"mtime":1786084509668,"results":"8938","hashOfConfig":"8231"},{"size":27174,"mtime":1786084509668,"results":"8939","hashOfConfig":"8231"},{"size":15884,"mtime":1786084509668,"results":"8940","hashOfConfig":"8231"},{"size":22412,"mtime":1786084509669,"results":"8941","hashOfConfig":"8231"},{"size":3704,"mtime":1786084509669,"results":"8942","hashOfConfig":"8231"},{"size":1211,"mtime":1786084509669,"results":"8943","hashOfConfig":"8231"},{"size":4900,"mtime":1786084509669,"results":"8944","hashOfConfig":"8231"},{"size":23044,"mtime":1786084509669,"results":"8945","hashOfConfig":"8231"},{"size":3970,"mtime":1786084509669,"results":"8946","hashOfConfig":"8231"},{"size":1531,"mtime":1786084509670,"results":"8947","hashOfConfig":"8231"},{"size":38600,"mtime":1786084509670,"results":"8948","hashOfConfig":"8231"},{"size":710,"mtime":1786084509670,"results":"8949","hashOfConfig":"8231"},{"size":978,"mtime":1786084509671,"results":"8950","hashOfConfig":"8231"},{"size":5093,"mtime":1786084509671,"results":"8951","hashOfConfig":"8231"},{"size":684,"mtime":1786084509671,"results":"8952","hashOfConfig":"8231"},{"size":1483,"mtime":1786084509671,"results":"8953","hashOfConfig":"8231"},{"size":4196,"mtime":1786084509671,"results":"8954","hashOfConfig":"8231"},{"size":14510,"mtime":1786084509671,"results":"8955","hashOfConfig":"8231"},{"size":3694,"mtime":1786084509672,"results":"8956","hashOfConfig":"8231"},{"size":23271,"mtime":1786084509672,"results":"8957","hashOfConfig":"8231"},{"size":5521,"mtime":1786084509672,"results":"8958","hashOfConfig":"8231"},{"size":1891,"mtime":1786084509672,"results":"8959","hashOfConfig":"8231"},{"size":6119,"mtime":1786084509672,"results":"8960","hashOfConfig":"8231"},{"size":5110,"mtime":1786084509672,"results":"8961","hashOfConfig":"8231"},{"size":1072,"mtime":1786084509672,"results":"8962","hashOfConfig":"8231"},{"size":2187,"mtime":1786084509672,"results":"8963","hashOfConfig":"8231"},{"size":2753,"mtime":1786084509673,"results":"8964","hashOfConfig":"8231"},{"size":20018,"mtime":1786084509673,"results":"8965","hashOfConfig":"8231"},{"size":13873,"mtime":1786084509673,"results":"8966","hashOfConfig":"8231"},{"size":2208,"mtime":1786084509673,"results":"8967","hashOfConfig":"8231"},{"size":10281,"mtime":1786084509675,"results":"8968","hashOfConfig":"8231"},{"size":3149,"mtime":1786084509675,"results":"8969","hashOfConfig":"8231"},{"size":21313,"mtime":1786084509675,"results":"8970","hashOfConfig":"8231"},{"size":3232,"mtime":1786084509675,"results":"8971","hashOfConfig":"8231"},{"size":9989,"mtime":1786084509675,"results":"8972","hashOfConfig":"8231"},{"size":948,"mtime":1786084509675,"results":"8973","hashOfConfig":"8231"},{"size":21180,"mtime":1786084509676,"results":"8974","hashOfConfig":"8231"},{"size":5639,"mtime":1786084509676,"results":"8975","hashOfConfig":"8231"},{"size":32164,"mtime":1786087572594,"results":"8976","hashOfConfig":"8231"},{"size":891,"mtime":1786084509676,"results":"8977","hashOfConfig":"8231"},{"size":3349,"mtime":1786084509676,"results":"8978","hashOfConfig":"8231"},{"size":2032,"mtime":1786084509676,"results":"8979","hashOfConfig":"8231"},{"size":4254,"mtime":1786084509676,"results":"8980","hashOfConfig":"8231"},{"size":5691,"mtime":1786084509677,"results":"8981","hashOfConfig":"8231"},{"size":24819,"mtime":1786084509677,"results":"8982","hashOfConfig":"8231"},{"size":6238,"mtime":1786084509677,"results":"8983","hashOfConfig":"8231"},{"size":5532,"mtime":1786084509677,"results":"8984","hashOfConfig":"8231"},{"size":3123,"mtime":1786087599987,"results":"8985","hashOfConfig":"8231"},{"size":3594,"mtime":1786084509677,"results":"8986","hashOfConfig":"8231"},{"size":4000,"mtime":1786084509678,"results":"8987","hashOfConfig":"8231"},{"size":4691,"mtime":1786084509678,"results":"8988","hashOfConfig":"8231"},{"size":10860,"mtime":1786084509678,"results":"8989","hashOfConfig":"8231"},{"size":8174,"mtime":1786084509678,"results":"8990","hashOfConfig":"8231"},{"size":5824,"mtime":1786084509678,"results":"8991","hashOfConfig":"8231"},{"size":12074,"mtime":1786084509679,"results":"8992","hashOfConfig":"8231"},{"size":3264,"mtime":1786084509679,"results":"8993","hashOfConfig":"8231"},{"size":5288,"mtime":1786084509679,"results":"8994","hashOfConfig":"8231"},{"size":14323,"mtime":1786084509679,"results":"8995","hashOfConfig":"8231"},{"size":23802,"mtime":1786085206209,"results":"8996","hashOfConfig":"8231"},{"size":17245,"mtime":1786084509680,"results":"8997","hashOfConfig":"8231"},{"size":6803,"mtime":1786084509680,"results":"8998","hashOfConfig":"8231"},{"size":4305,"mtime":1786084509680,"results":"8999","hashOfConfig":"8231"},{"size":2872,"mtime":1786084509680,"results":"9000","hashOfConfig":"8231"},{"size":9985,"mtime":1786084509680,"results":"9001","hashOfConfig":"8231"},{"size":21140,"mtime":1786084509681,"results":"9002","hashOfConfig":"8231"},{"size":6465,"mtime":1786084509681,"results":"9003","hashOfConfig":"8231"},{"size":2887,"mtime":1786084509681,"results":"9004","hashOfConfig":"8231"},{"size":10701,"mtime":1786084509681,"results":"9005","hashOfConfig":"8231"},{"size":29791,"mtime":1786084509681,"results":"9006","hashOfConfig":"8231"},{"size":6366,"mtime":1786084509682,"results":"9007","hashOfConfig":"8231"},{"size":4212,"mtime":1786084509682,"results":"9008","hashOfConfig":"8231"},{"size":6843,"mtime":1786084509682,"results":"9009","hashOfConfig":"8231"},{"size":1789,"mtime":1786084509682,"results":"9010","hashOfConfig":"8231"},{"size":32462,"mtime":1786084509682,"results":"9011","hashOfConfig":"8231"},{"size":128674,"mtime":1786084509674,"results":"9012","hashOfConfig":"8231"},{"size":9548,"mtime":1786084509682,"results":"9013","hashOfConfig":"8231"},{"size":13550,"mtime":1786084509682,"results":"9014","hashOfConfig":"8231"},{"size":343,"mtime":1786084509683,"results":"9015","hashOfConfig":"8231"},{"size":14361,"mtime":1786084509683,"results":"9016","hashOfConfig":"8231"},{"size":1363,"mtime":1786084509683,"results":"9017","hashOfConfig":"8231"},{"size":4588,"mtime":1786084509683,"results":"9018","hashOfConfig":"8231"},{"size":4250,"mtime":1786084509683,"results":"9019","hashOfConfig":"8231"},{"size":2356,"mtime":1786084509684,"results":"9020","hashOfConfig":"8231"},{"size":7232,"mtime":1786084509684,"results":"9021","hashOfConfig":"8231"},{"size":21480,"mtime":1786084509684,"results":"9022","hashOfConfig":"8231"},{"size":2754,"mtime":1786084509684,"results":"9023","hashOfConfig":"8231"},{"size":4591,"mtime":1786084509684,"results":"9024","hashOfConfig":"8231"},{"size":19186,"mtime":1786084509684,"results":"9025","hashOfConfig":"8231"},{"size":13588,"mtime":1786084509685,"results":"9026","hashOfConfig":"8231"},{"size":2006,"mtime":1786084509685,"results":"9027","hashOfConfig":"8231"},{"size":6626,"mtime":1786084509685,"results":"9028","hashOfConfig":"8231"},{"size":3052,"mtime":1786084509685,"results":"9029","hashOfConfig":"8231"},{"size":7398,"mtime":1786084509685,"results":"9030","hashOfConfig":"8231"},{"size":13922,"mtime":1786084509685,"results":"9031","hashOfConfig":"8231"},{"size":3622,"mtime":1786084509685,"results":"9032","hashOfConfig":"8231"},{"size":37044,"mtime":1786087989002,"results":"9033","hashOfConfig":"8231"},{"size":4242,"mtime":1786084509686,"results":"9034","hashOfConfig":"8231"},{"size":11344,"mtime":1786084509686,"results":"9035","hashOfConfig":"8231"},{"size":2400,"mtime":1786084509687,"results":"9036","hashOfConfig":"8231"},{"size":28807,"mtime":1786084509687,"results":"9037","hashOfConfig":"8231"},{"size":21162,"mtime":1786084509687,"results":"9038","hashOfConfig":"8231"},{"size":419,"mtime":1786084509687,"results":"9039","hashOfConfig":"8231"},{"size":9599,"mtime":1786084509687,"results":"9040","hashOfConfig":"8231"},{"size":10208,"mtime":1786084509688,"results":"9041","hashOfConfig":"8231"},{"size":9008,"mtime":1786084509688,"results":"9042","hashOfConfig":"8231"},{"size":8502,"mtime":1786084509688,"results":"9043","hashOfConfig":"8231"},{"size":1517,"mtime":1786084509688,"results":"9044","hashOfConfig":"8231"},{"size":2171,"mtime":1786084509688,"results":"9045","hashOfConfig":"8231"},{"size":3957,"mtime":1786084509689,"results":"9046","hashOfConfig":"8231"},{"size":6910,"mtime":1786084509689,"results":"9047","hashOfConfig":"8231"},{"size":12821,"mtime":1786084509689,"results":"9048","hashOfConfig":"8231"},{"size":1766,"mtime":1786084509689,"results":"9049","hashOfConfig":"8231"},{"size":17998,"mtime":1786084509690,"results":"9050","hashOfConfig":"8231"},{"size":2510,"mtime":1786084509690,"results":"9051","hashOfConfig":"8231"},{"size":4736,"mtime":1786084509690,"results":"9052","hashOfConfig":"8231"},{"size":4588,"mtime":1786084509690,"results":"9053","hashOfConfig":"8231"},{"size":13206,"mtime":1786084509690,"results":"9054","hashOfConfig":"8231"},{"size":3615,"mtime":1786084509690,"results":"9055","hashOfConfig":"8231"},{"size":2689,"mtime":1786084509691,"results":"9056","hashOfConfig":"8231"},{"size":2415,"mtime":1786084509691,"results":"9057","hashOfConfig":"8231"},{"size":4875,"mtime":1786084509691,"results":"9058","hashOfConfig":"8231"},{"size":1051,"mtime":1786084509691,"results":"9059","hashOfConfig":"8231"},{"size":10697,"mtime":1786084509691,"results":"9060","hashOfConfig":"8231"},{"size":2529,"mtime":1786084509691,"results":"9061","hashOfConfig":"8231"},{"size":2057,"mtime":1786084509691,"results":"9062","hashOfConfig":"8231"},{"size":7174,"mtime":1786084509692,"results":"9063","hashOfConfig":"8231"},{"size":2060,"mtime":1786084509692,"results":"9064","hashOfConfig":"8231"},{"size":7348,"mtime":1786084509692,"results":"9065","hashOfConfig":"8231"},{"size":13045,"mtime":1786084509692,"results":"9066","hashOfConfig":"8231"},{"size":3437,"mtime":1786084509692,"results":"9067","hashOfConfig":"8231"},{"size":944,"mtime":1786084509692,"results":"9068","hashOfConfig":"8231"},{"size":6344,"mtime":1786084509692,"results":"9069","hashOfConfig":"8231"},{"size":11031,"mtime":1786084509693,"results":"9070","hashOfConfig":"8231"},{"size":7423,"mtime":1786084509693,"results":"9071","hashOfConfig":"8231"},{"size":3374,"mtime":1786084509697,"results":"9072","hashOfConfig":"8231"},{"size":27046,"mtime":1786084509698,"results":"9073","hashOfConfig":"8231"},{"size":10716,"mtime":1786084509698,"results":"9074","hashOfConfig":"8231"},{"size":7635,"mtime":1786084509698,"results":"9075","hashOfConfig":"8231"},{"size":7561,"mtime":1786084509698,"results":"9076","hashOfConfig":"8231"},{"size":1241,"mtime":1786084509698,"results":"9077","hashOfConfig":"8231"},{"size":2038,"mtime":1786084509699,"results":"9078","hashOfConfig":"8231"},{"size":3170,"mtime":1786084509699,"results":"9079","hashOfConfig":"8231"},{"size":1450,"mtime":1786084509699,"results":"9080","hashOfConfig":"8231"},{"size":2826,"mtime":1786084509699,"results":"9081","hashOfConfig":"8231"},{"size":501,"mtime":1786084509699,"results":"9082","hashOfConfig":"8231"},{"size":2429,"mtime":1786084509699,"results":"9083","hashOfConfig":"8231"},{"size":3069,"mtime":1786084509699,"results":"9084","hashOfConfig":"8231"},{"size":10467,"mtime":1786084509699,"results":"9085","hashOfConfig":"8231"},{"size":3137,"mtime":1786084509699,"results":"9086","hashOfConfig":"8231"},{"size":5240,"mtime":1786084509700,"results":"9087","hashOfConfig":"8231"},{"size":17336,"mtime":1786084509700,"results":"9088","hashOfConfig":"8231"},{"size":2880,"mtime":1786084509700,"results":"9089","hashOfConfig":"8231"},{"size":1406,"mtime":1786084509700,"results":"9090","hashOfConfig":"8231"},{"size":2234,"mtime":1786084509700,"results":"9091","hashOfConfig":"8231"},{"size":1863,"mtime":1786084509700,"results":"9092","hashOfConfig":"8231"},{"size":909,"mtime":1786084509700,"results":"9093","hashOfConfig":"8231"},{"size":2018,"mtime":1786084509700,"results":"9094","hashOfConfig":"8231"},{"size":1923,"mtime":1786084509700,"results":"9095","hashOfConfig":"8231"},{"size":1266,"mtime":1786084509700,"results":"9096","hashOfConfig":"8231"},{"size":3217,"mtime":1786084509701,"results":"9097","hashOfConfig":"8231"},{"size":1915,"mtime":1786084509701,"results":"9098","hashOfConfig":"8231"},{"size":5631,"mtime":1786084509701,"results":"9099","hashOfConfig":"8231"},{"size":1294,"mtime":1786084509701,"results":"9100","hashOfConfig":"8231"},{"size":2593,"mtime":1786084509701,"results":"9101","hashOfConfig":"8231"},{"size":2147,"mtime":1786084509701,"results":"9102","hashOfConfig":"8231"},{"size":2886,"mtime":1786084509701,"results":"9103","hashOfConfig":"8231"},{"size":3904,"mtime":1786084509701,"results":"9104","hashOfConfig":"8231"},{"size":1886,"mtime":1786084509701,"results":"9105","hashOfConfig":"8231"},{"size":7079,"mtime":1786084509702,"results":"9106","hashOfConfig":"8231"},{"size":12965,"mtime":1786084509702,"results":"9107","hashOfConfig":"8231"},{"size":2058,"mtime":1786084509702,"results":"9108","hashOfConfig":"8231"},{"size":1198,"mtime":1786084509702,"results":"9109","hashOfConfig":"8231"},{"size":3255,"mtime":1786084509703,"results":"9110","hashOfConfig":"8231"},{"size":2837,"mtime":1786084509703,"results":"9111","hashOfConfig":"8231"},{"size":1803,"mtime":1786084509703,"results":"9112","hashOfConfig":"8231"},{"size":4695,"mtime":1786084509703,"results":"9113","hashOfConfig":"8231"},{"size":2494,"mtime":1786084509703,"results":"9114","hashOfConfig":"8231"},{"size":8890,"mtime":1786084509703,"results":"9115","hashOfConfig":"8231"},{"size":12014,"mtime":1786084509704,"results":"9116","hashOfConfig":"8231"},{"size":2751,"mtime":1786084509704,"results":"9117","hashOfConfig":"8231"},{"size":8945,"mtime":1786084509704,"results":"9118","hashOfConfig":"8231"},{"size":5081,"mtime":1786084509704,"results":"9119","hashOfConfig":"8231"},{"size":983,"mtime":1786084509704,"results":"9120","hashOfConfig":"8231"},{"size":14190,"mtime":1786084509705,"results":"9121","hashOfConfig":"8231"},{"size":1658,"mtime":1786084509705,"results":"9122","hashOfConfig":"8231"},{"size":5131,"mtime":1786084509705,"results":"9123","hashOfConfig":"8231"},{"size":4548,"mtime":1786084509705,"results":"9124","hashOfConfig":"8231"},{"size":6239,"mtime":1786084509705,"results":"9125","hashOfConfig":"8231"},{"size":5043,"mtime":1786084509705,"results":"9126","hashOfConfig":"8231"},{"size":7682,"mtime":1786084509705,"results":"9127","hashOfConfig":"8231"},{"size":2864,"mtime":1786084509705,"results":"9128","hashOfConfig":"8231"},{"size":5342,"mtime":1786084509705,"results":"9129","hashOfConfig":"8231"},{"size":428,"mtime":1786084509706,"results":"9130","hashOfConfig":"8231"},{"size":2144,"mtime":1786084509706,"results":"9131","hashOfConfig":"8231"},{"size":2897,"mtime":1786084509706,"results":"9132","hashOfConfig":"8231"},{"size":2896,"mtime":1786084509706,"results":"9133","hashOfConfig":"8231"},{"size":2854,"mtime":1786084509706,"results":"9134","hashOfConfig":"8231"},{"size":1041,"mtime":1786084509706,"results":"9135","hashOfConfig":"8231"},{"size":4888,"mtime":1786084509706,"results":"9136","hashOfConfig":"8231"},{"size":251,"mtime":1786084509706,"results":"9137","hashOfConfig":"8231"},{"size":4938,"mtime":1786084509707,"results":"9138","hashOfConfig":"8231"},{"size":3815,"mtime":1786084509707,"results":"9139","hashOfConfig":"8231"},{"size":1951,"mtime":1786084509707,"results":"9140","hashOfConfig":"8231"},{"size":1646,"mtime":1786084509707,"results":"9141","hashOfConfig":"8231"},{"size":9209,"mtime":1786084509707,"results":"9142","hashOfConfig":"8231"},{"size":5084,"mtime":1786084509713,"results":"9143","hashOfConfig":"8231"},{"size":7408,"mtime":1786084509713,"results":"9144","hashOfConfig":"8231"},{"size":1097,"mtime":1786084509713,"results":"9145","hashOfConfig":"8231"},{"size":40624,"mtime":1786084509714,"results":"9146","hashOfConfig":"8231"},{"size":6690,"mtime":1786084509714,"results":"9147","hashOfConfig":"8231"},{"size":8830,"mtime":1786084509714,"results":"9148","hashOfConfig":"8231"},{"size":20687,"mtime":1786084509714,"results":"9149","hashOfConfig":"8231"},{"size":11986,"mtime":1786084509715,"results":"9150","hashOfConfig":"8231"},{"size":2960,"mtime":1786084509715,"results":"9151","hashOfConfig":"8231"},{"size":12102,"mtime":1786084509715,"results":"9152","hashOfConfig":"8231"},{"size":26030,"mtime":1786084509715,"results":"9153","hashOfConfig":"8231"},{"size":34190,"mtime":1786084509716,"results":"9154","hashOfConfig":"8231"},{"size":2483,"mtime":1786084509716,"results":"9155","hashOfConfig":"8231"},{"size":6353,"mtime":1786084509716,"results":"9156","hashOfConfig":"8231"},{"size":7362,"mtime":1786084509716,"results":"9157","hashOfConfig":"8231"},{"size":8132,"mtime":1786084509716,"results":"9158","hashOfConfig":"8231"},{"size":2284,"mtime":1786084509716,"results":"9159","hashOfConfig":"8231"},{"size":10144,"mtime":1786084509716,"results":"9160","hashOfConfig":"8231"},{"size":4957,"mtime":1786084509717,"results":"9161","hashOfConfig":"8231"},{"size":12053,"mtime":1786084509717,"results":"9162","hashOfConfig":"8231"},{"size":8510,"mtime":1786084509717,"results":"9163","hashOfConfig":"8231"},{"size":6154,"mtime":1786087910327,"results":"9164","hashOfConfig":"8231"},{"size":6457,"mtime":1786084509717,"results":"9165","hashOfConfig":"8231"},{"size":6334,"mtime":1786084509717,"results":"9166","hashOfConfig":"8231"},{"size":19193,"mtime":1786084509718,"results":"9167","hashOfConfig":"8231"},{"size":9521,"mtime":1786084509718,"results":"9168","hashOfConfig":"8231"},{"size":9530,"mtime":1786084509718,"results":"9169","hashOfConfig":"8231"},{"size":7867,"mtime":1786084509718,"results":"9170","hashOfConfig":"8231"},{"size":3369,"mtime":1786084509718,"results":"9171","hashOfConfig":"8231"},{"size":8832,"mtime":1786084509719,"results":"9172","hashOfConfig":"8231"},{"size":6605,"mtime":1786084509719,"results":"9173","hashOfConfig":"8231"},{"size":3260,"mtime":1786084509719,"results":"9174","hashOfConfig":"8231"},{"size":6938,"mtime":1786084509719,"results":"9175","hashOfConfig":"8231"},{"size":11167,"mtime":1786084509719,"results":"9176","hashOfConfig":"8231"},{"size":17420,"mtime":1786084509719,"results":"9177","hashOfConfig":"8231"},{"size":21268,"mtime":1786084509720,"results":"9178","hashOfConfig":"8231"},{"size":2269,"mtime":1786084509720,"results":"9179","hashOfConfig":"8231"},{"size":1174,"mtime":1786084509720,"results":"9180","hashOfConfig":"8231"},{"size":5863,"mtime":1786084509720,"results":"9181","hashOfConfig":"8231"},{"size":9519,"mtime":1786084509720,"results":"9182","hashOfConfig":"8231"},{"size":11784,"mtime":1786084509720,"results":"9183","hashOfConfig":"8231"},{"size":10257,"mtime":1786084509721,"results":"9184","hashOfConfig":"8231"},{"size":2668,"mtime":1786084509721,"results":"9185","hashOfConfig":"8231"},{"size":7333,"mtime":1786084509721,"results":"9186","hashOfConfig":"8231"},{"size":13959,"mtime":1786084509721,"results":"9187","hashOfConfig":"8231"},{"size":9332,"mtime":1786084509721,"results":"9188","hashOfConfig":"8231"},{"size":4921,"mtime":1786084509721,"results":"9189","hashOfConfig":"8231"},{"size":20597,"mtime":1786084509722,"results":"9190","hashOfConfig":"8231"},{"size":4265,"mtime":1786084509722,"results":"9191","hashOfConfig":"8231"},{"size":2899,"mtime":1786084509722,"results":"9192","hashOfConfig":"8231"},{"size":34592,"mtime":1786084509722,"results":"9193","hashOfConfig":"8231"},{"size":130,"mtime":1786084509722,"results":"9194","hashOfConfig":"8231"},{"size":6000,"mtime":1786084509723,"results":"9195","hashOfConfig":"8231"},{"size":10198,"mtime":1786084509723,"results":"9196","hashOfConfig":"8231"},{"size":1905,"mtime":1786084509723,"results":"9197","hashOfConfig":"8231"},{"size":3326,"mtime":1786084509723,"results":"9198","hashOfConfig":"8231"},{"size":7253,"mtime":1786084509723,"results":"9199","hashOfConfig":"8231"},{"size":11033,"mtime":1786084509723,"results":"9200","hashOfConfig":"8231"},{"size":19058,"mtime":1786084509724,"results":"9201","hashOfConfig":"8231"},{"size":21503,"mtime":1786084509724,"results":"9202","hashOfConfig":"8231"},{"size":6870,"mtime":1786084509724,"results":"9203","hashOfConfig":"8231"},{"size":4088,"mtime":1786084509724,"results":"9204","hashOfConfig":"8231"},{"size":27493,"mtime":1786084509724,"results":"9205","hashOfConfig":"8231"},{"size":21416,"mtime":1786084509725,"results":"9206","hashOfConfig":"8231"},{"size":13667,"mtime":1786084509725,"results":"9207","hashOfConfig":"8231"},{"size":1933,"mtime":1786084509725,"results":"9208","hashOfConfig":"8231"},{"size":8913,"mtime":1786084509725,"results":"9209","hashOfConfig":"8231"},{"size":12999,"mtime":1786084509725,"results":"9210","hashOfConfig":"8231"},{"size":14979,"mtime":1786084509726,"results":"9211","hashOfConfig":"8231"},{"size":21487,"mtime":1786084509726,"results":"9212","hashOfConfig":"8231"},{"size":10736,"mtime":1786084509726,"results":"9213","hashOfConfig":"8231"},{"size":6506,"mtime":1786084509726,"results":"9214","hashOfConfig":"8231"},{"size":6049,"mtime":1786084509726,"results":"9215","hashOfConfig":"8231"},{"size":17665,"mtime":1786084509727,"results":"9216","hashOfConfig":"8231"},{"size":6356,"mtime":1786084509727,"results":"9217","hashOfConfig":"8231"},{"size":2561,"mtime":1786084509727,"results":"9218","hashOfConfig":"8231"},{"size":6339,"mtime":1786084509727,"results":"9219","hashOfConfig":"8231"},{"size":2705,"mtime":1786084509727,"results":"9220","hashOfConfig":"8231"},{"size":2037,"mtime":1786084509727,"results":"9221","hashOfConfig":"8231"},{"size":33010,"mtime":1786084509728,"results":"9222","hashOfConfig":"8231"},{"size":4819,"mtime":1786084509728,"results":"9223","hashOfConfig":"8231"},{"size":4258,"mtime":1786084509728,"results":"9224","hashOfConfig":"8231"},{"size":12912,"mtime":1786084509728,"results":"9225","hashOfConfig":"8231"},{"size":13597,"mtime":1786084509728,"results":"9226","hashOfConfig":"8231"},{"size":2136,"mtime":1786084509729,"results":"9227","hashOfConfig":"8231"},{"size":6537,"mtime":1786084509729,"results":"9228","hashOfConfig":"8231"},{"size":1361,"mtime":1786084509729,"results":"9229","hashOfConfig":"8231"},{"size":1133,"mtime":1786084509729,"results":"9230","hashOfConfig":"8231"},{"size":2167,"mtime":1786084509730,"results":"9231","hashOfConfig":"8231"},{"size":2872,"mtime":1786084509730,"results":"9232","hashOfConfig":"8231"},{"size":42134,"mtime":1786084509730,"results":"9233","hashOfConfig":"8231"},{"size":7065,"mtime":1786084509731,"results":"9234","hashOfConfig":"8231"},{"size":8530,"mtime":1786084509731,"results":"9235","hashOfConfig":"8231"},{"size":14564,"mtime":1786084509731,"results":"9236","hashOfConfig":"8231"},{"size":2320,"mtime":1786084509731,"results":"9237","hashOfConfig":"8231"},{"size":5749,"mtime":1786084509731,"results":"9238","hashOfConfig":"8231"},{"size":3716,"mtime":1786084509732,"results":"9239","hashOfConfig":"8231"},{"size":4342,"mtime":1786084509732,"results":"9240","hashOfConfig":"8231"},{"size":6149,"mtime":1786084509732,"results":"9241","hashOfConfig":"8231"},{"size":3629,"mtime":1786084509732,"results":"9242","hashOfConfig":"8231"},{"size":10801,"mtime":1786084509732,"results":"9243","hashOfConfig":"8231"},{"size":8226,"mtime":1786084509732,"results":"9244","hashOfConfig":"8231"},{"size":16365,"mtime":1786084509732,"results":"9245","hashOfConfig":"8231"},{"size":3956,"mtime":1786084509733,"results":"9246","hashOfConfig":"8231"},{"size":12376,"mtime":1786084509733,"results":"9247","hashOfConfig":"8231"},{"size":4423,"mtime":1786084509733,"results":"9248","hashOfConfig":"8231"},{"size":877,"mtime":1786084509733,"results":"9249","hashOfConfig":"8231"},{"size":2763,"mtime":1786084509733,"results":"9250","hashOfConfig":"8231"},{"size":3476,"mtime":1786084509733,"results":"9251","hashOfConfig":"8231"},{"size":1806,"mtime":1786084509733,"results":"9252","hashOfConfig":"8231"},{"size":10475,"mtime":1786084509733,"results":"9253","hashOfConfig":"8231"},{"size":3017,"mtime":1786084509734,"results":"9254","hashOfConfig":"8231"},{"size":3730,"mtime":1786084509734,"results":"9255","hashOfConfig":"8231"},{"size":5821,"mtime":1786084509734,"results":"9256","hashOfConfig":"8231"},{"size":5023,"mtime":1786084509734,"results":"9257","hashOfConfig":"8231"},{"size":2770,"mtime":1786084509734,"results":"9258","hashOfConfig":"8231"},{"size":8208,"mtime":1786084509734,"results":"9259","hashOfConfig":"8231"},{"size":1031,"mtime":1786084509734,"results":"9260","hashOfConfig":"8231"},{"size":21232,"mtime":1786084509734,"results":"9261","hashOfConfig":"8231"},{"size":6311,"mtime":1786084509735,"results":"9262","hashOfConfig":"8231"},{"size":22791,"mtime":1786084509735,"results":"9263","hashOfConfig":"8231"},{"size":3086,"mtime":1786084509735,"results":"9264","hashOfConfig":"8231"},{"size":13060,"mtime":1786084509735,"results":"9265","hashOfConfig":"8231"},{"size":20260,"mtime":1786084509736,"results":"9266","hashOfConfig":"8231"},{"size":13276,"mtime":1786084509736,"results":"9267","hashOfConfig":"8231"},{"size":4160,"mtime":1786084509736,"results":"9268","hashOfConfig":"8231"},{"size":4714,"mtime":1786084509736,"results":"9269","hashOfConfig":"8231"},{"size":825,"mtime":1786084509736,"results":"9270","hashOfConfig":"8231"},{"size":675,"mtime":1786084509736,"results":"9271","hashOfConfig":"8231"},{"size":1152,"mtime":1786084509736,"results":"9272","hashOfConfig":"8231"},{"size":16514,"mtime":1786084509737,"results":"9273","hashOfConfig":"8231"},{"size":12631,"mtime":1786084509737,"results":"9274","hashOfConfig":"8231"},{"size":3527,"mtime":1786084509738,"results":"9275","hashOfConfig":"8231"},{"size":5804,"mtime":1786084509738,"results":"9276","hashOfConfig":"8231"},{"size":2415,"mtime":1786084509738,"results":"9277","hashOfConfig":"8231"},{"size":2284,"mtime":1786084509739,"results":"9278","hashOfConfig":"8231"},{"size":2393,"mtime":1786084509739,"results":"9279","hashOfConfig":"8231"},{"size":4453,"mtime":1786084509739,"results":"9280","hashOfConfig":"8231"},{"size":1806,"mtime":1786084509739,"results":"9281","hashOfConfig":"8231"},{"size":1816,"mtime":1786084509739,"results":"9282","hashOfConfig":"8231"},{"size":3502,"mtime":1786084509740,"results":"9283","hashOfConfig":"8231"},{"size":2103,"mtime":1786084509740,"results":"9284","hashOfConfig":"8231"},{"size":4299,"mtime":1786084509740,"results":"9285","hashOfConfig":"8231"},{"size":10716,"mtime":1786084509740,"results":"9286","hashOfConfig":"8231"},{"size":2194,"mtime":1786084509740,"results":"9287","hashOfConfig":"8231"},{"size":4180,"mtime":1786084509740,"results":"9288","hashOfConfig":"8231"},{"size":3319,"mtime":1786084509740,"results":"9289","hashOfConfig":"8231"},{"size":5095,"mtime":1786084509740,"results":"9290","hashOfConfig":"8231"},{"size":31414,"mtime":1786084509738,"results":"9291","hashOfConfig":"8231"},{"size":2038,"mtime":1786084509740,"results":"9292","hashOfConfig":"8231"},{"size":2698,"mtime":1786084509741,"results":"9293","hashOfConfig":"8231"},{"size":6659,"mtime":1786084509741,"results":"9294","hashOfConfig":"8231"},{"size":4592,"mtime":1786084509741,"results":"9295","hashOfConfig":"8231"},{"size":28729,"mtime":1786084509741,"results":"9296","hashOfConfig":"8231"},{"size":7844,"mtime":1786084509742,"results":"9297","hashOfConfig":"8231"},{"size":1723,"mtime":1786084509742,"results":"9298","hashOfConfig":"8231"},{"size":7953,"mtime":1786084509742,"results":"9299","hashOfConfig":"8231"},{"size":7020,"mtime":1786084509742,"results":"9300","hashOfConfig":"8231"},{"size":2731,"mtime":1786084509742,"results":"9301","hashOfConfig":"8231"},{"size":4487,"mtime":1786084509742,"results":"9302","hashOfConfig":"8231"},{"size":6036,"mtime":1786084509742,"results":"9303","hashOfConfig":"8231"},{"size":2174,"mtime":1786084509743,"results":"9304","hashOfConfig":"8231"},{"size":2080,"mtime":1786084509743,"results":"9305","hashOfConfig":"8231"},{"size":9141,"mtime":1786084509743,"results":"9306","hashOfConfig":"8231"},{"size":7781,"mtime":1786084509743,"results":"9307","hashOfConfig":"8231"},{"size":7972,"mtime":1786084509743,"results":"9308","hashOfConfig":"8231"},{"size":5156,"mtime":1786084509743,"results":"9309","hashOfConfig":"8231"},{"size":7104,"mtime":1786084509743,"results":"9310","hashOfConfig":"8231"},{"size":16050,"mtime":1786084509744,"results":"9311","hashOfConfig":"8231"},{"size":12180,"mtime":1786084509744,"results":"9312","hashOfConfig":"8231"},{"size":3298,"mtime":1786084509744,"results":"9313","hashOfConfig":"8231"},{"size":2909,"mtime":1786084509744,"results":"9314","hashOfConfig":"8231"},{"size":3268,"mtime":1786084509744,"results":"9315","hashOfConfig":"8231"},{"size":9183,"mtime":1786084509744,"results":"9316","hashOfConfig":"8231"},{"size":5243,"mtime":1786084509744,"results":"9317","hashOfConfig":"8231"},{"size":2699,"mtime":1786084509745,"results":"9318","hashOfConfig":"8231"},{"size":2372,"mtime":1786084509745,"results":"9319","hashOfConfig":"8231"},{"size":2510,"mtime":1786084509745,"results":"9320","hashOfConfig":"8231"},{"size":2267,"mtime":1786084509745,"results":"9321","hashOfConfig":"8231"},{"size":2988,"mtime":1786084509745,"results":"9322","hashOfConfig":"8231"},{"size":2323,"mtime":1786084509745,"results":"9323","hashOfConfig":"8231"},{"size":9369,"mtime":1786084509741,"results":"9324","hashOfConfig":"8231"},{"size":8734,"mtime":1786084509745,"results":"9325","hashOfConfig":"8231"},{"size":7042,"mtime":1786084509745,"results":"9326","hashOfConfig":"8231"},{"size":2419,"mtime":1786084509745,"results":"9327","hashOfConfig":"8231"},{"size":6560,"mtime":1786084509746,"results":"9328","hashOfConfig":"8231"},{"size":9174,"mtime":1786084509746,"results":"9329","hashOfConfig":"8231"},{"size":3201,"mtime":1786084509746,"results":"9330","hashOfConfig":"8231"},{"size":9133,"mtime":1786084509746,"results":"9331","hashOfConfig":"8231"},{"size":3910,"mtime":1786084509746,"results":"9332","hashOfConfig":"8231"},{"size":8409,"mtime":1786084509746,"results":"9333","hashOfConfig":"8231"},{"size":4618,"mtime":1786084509746,"results":"9334","hashOfConfig":"8231"},{"size":18698,"mtime":1786084509747,"results":"9335","hashOfConfig":"8231"},{"size":28682,"mtime":1786084509747,"results":"9336","hashOfConfig":"8231"},{"size":1013,"mtime":1786084509747,"results":"9337","hashOfConfig":"8231"},{"size":20439,"mtime":1786084509748,"results":"9338","hashOfConfig":"8231"},{"size":272,"mtime":1786084509748,"results":"9339","hashOfConfig":"8231"},{"size":747,"mtime":1786084509748,"results":"9340","hashOfConfig":"8231"},{"size":818,"mtime":1786084509748,"results":"9341","hashOfConfig":"8231"},{"size":30234,"mtime":1786084509748,"results":"9342","hashOfConfig":"8231"},{"size":23389,"mtime":1786084509749,"results":"9343","hashOfConfig":"8231"},{"size":8321,"mtime":1786084509749,"results":"9344","hashOfConfig":"8231"},{"size":721,"mtime":1786084509749,"results":"9345","hashOfConfig":"8231"},{"size":736,"mtime":1786084509749,"results":"9346","hashOfConfig":"8231"},{"size":10303,"mtime":1786084509749,"results":"9347","hashOfConfig":"8231"},{"size":769,"mtime":1786084509749,"results":"9348","hashOfConfig":"8231"},{"size":20259,"mtime":1786084509749,"results":"9349","hashOfConfig":"8231"},{"size":2750,"mtime":1786084509750,"results":"9350","hashOfConfig":"8231"},{"size":13145,"mtime":1786084509750,"results":"9351","hashOfConfig":"8231"},{"size":4528,"mtime":1786084509750,"results":"9352","hashOfConfig":"8231"},{"size":644,"mtime":1786084509750,"results":"9353","hashOfConfig":"8231"},{"size":29179,"mtime":1786084509751,"results":"9354","hashOfConfig":"8231"},{"size":9780,"mtime":1786084509751,"results":"9355","hashOfConfig":"8231"},{"size":999,"mtime":1786084509751,"results":"9356","hashOfConfig":"8231"},{"size":13207,"mtime":1786084509751,"results":"9357","hashOfConfig":"8231"},{"size":13792,"mtime":1786084509751,"results":"9358","hashOfConfig":"8231"},{"size":19536,"mtime":1786084509752,"results":"9359","hashOfConfig":"8231"},{"size":7215,"mtime":1786084509752,"results":"9360","hashOfConfig":"8231"},{"size":5059,"mtime":1786084509753,"results":"9361","hashOfConfig":"8231"},{"size":3797,"mtime":1786084509753,"results":"9362","hashOfConfig":"8231"},{"size":2113,"mtime":1786084509753,"results":"9363","hashOfConfig":"8231"},{"size":16866,"mtime":1786084509753,"results":"9364","hashOfConfig":"8231"},{"size":35418,"mtime":1786084509752,"results":"9365","hashOfConfig":"8231"},{"size":851,"mtime":1786084509753,"results":"9366","hashOfConfig":"8231"},{"size":3668,"mtime":1786084509754,"results":"9367","hashOfConfig":"8231"},{"size":4092,"mtime":1786084509754,"results":"9368","hashOfConfig":"8231"},{"size":33662,"mtime":1786084509753,"results":"9369","hashOfConfig":"8231"},{"size":8158,"mtime":1786084509754,"results":"9370","hashOfConfig":"8231"},{"size":5277,"mtime":1786084509754,"results":"9371","hashOfConfig":"8231"},{"size":35872,"mtime":1786084509754,"results":"9372","hashOfConfig":"8231"},{"size":2412,"mtime":1786084509755,"results":"9373","hashOfConfig":"8231"},{"size":3411,"mtime":1786084509755,"results":"9374","hashOfConfig":"8231"},{"size":37806,"mtime":1786084509755,"results":"9375","hashOfConfig":"8231"},{"size":13867,"mtime":1786084509755,"results":"9376","hashOfConfig":"8231"},{"size":951,"mtime":1786084509755,"results":"9377","hashOfConfig":"8231"},{"size":9822,"mtime":1786084509756,"results":"9378","hashOfConfig":"8231"},{"size":29796,"mtime":1786084509756,"results":"9379","hashOfConfig":"8231"},{"size":6329,"mtime":1786084509756,"results":"9380","hashOfConfig":"8231"},{"size":692,"mtime":1786084509757,"results":"9381","hashOfConfig":"8231"},{"size":8225,"mtime":1786084509757,"results":"9382","hashOfConfig":"8231"},{"size":902,"mtime":1786084509757,"results":"9383","hashOfConfig":"8231"},{"size":7930,"mtime":1786084509757,"results":"9384","hashOfConfig":"8231"},{"size":1295,"mtime":1786084509757,"results":"9385","hashOfConfig":"8231"},{"size":42220,"mtime":1786084509757,"results":"9386","hashOfConfig":"8231"},{"size":4243,"mtime":1786084509757,"results":"9387","hashOfConfig":"8231"},{"size":18419,"mtime":1786084509758,"results":"9388","hashOfConfig":"8231"},{"size":13484,"mtime":1786084509758,"results":"9389","hashOfConfig":"8231"},{"size":899,"mtime":1786084509758,"results":"9390","hashOfConfig":"8231"},{"size":1034,"mtime":1786084509758,"results":"9391","hashOfConfig":"8231"},{"size":17130,"mtime":1786084509758,"results":"9392","hashOfConfig":"8231"},{"size":5233,"mtime":1786084509759,"results":"9393","hashOfConfig":"8231"},{"size":3911,"mtime":1786084509759,"results":"9394","hashOfConfig":"8231"},{"size":8213,"mtime":1786084509759,"results":"9395","hashOfConfig":"8231"},{"size":1002,"mtime":1786084509759,"results":"9396","hashOfConfig":"8231"},{"size":1986,"mtime":1786084509759,"results":"9397","hashOfConfig":"8231"},{"size":3861,"mtime":1786084509759,"results":"9398","hashOfConfig":"8231"},{"size":3004,"mtime":1786084509759,"results":"9399","hashOfConfig":"8231"},{"size":7521,"mtime":1786084509760,"results":"9400","hashOfConfig":"8231"},{"size":14336,"mtime":1786084509760,"results":"9401","hashOfConfig":"8231"},{"size":4279,"mtime":1786084509760,"results":"9402","hashOfConfig":"8231"},{"size":3106,"mtime":1786084509760,"results":"9403","hashOfConfig":"8231"},{"size":7117,"mtime":1786084509760,"results":"9404","hashOfConfig":"8231"},{"size":2095,"mtime":1786084509760,"results":"9405","hashOfConfig":"8231"},{"size":4423,"mtime":1786084509760,"results":"9406","hashOfConfig":"8231"},{"size":11427,"mtime":1786084509760,"results":"9407","hashOfConfig":"8231"},{"size":591,"mtime":1786084509761,"results":"9408","hashOfConfig":"8231"},{"size":3899,"mtime":1786084509761,"results":"9409","hashOfConfig":"8231"},{"size":4029,"mtime":1786084509761,"results":"9410","hashOfConfig":"8231"},{"size":5614,"mtime":1786084509762,"results":"9411","hashOfConfig":"8231"},{"size":56993,"mtime":1786084509761,"results":"9412","hashOfConfig":"8231"},{"size":4367,"mtime":1786084509762,"results":"9413","hashOfConfig":"8231"},{"size":13848,"mtime":1786084509762,"results":"9414","hashOfConfig":"8231"},{"size":2451,"mtime":1786084509762,"results":"9415","hashOfConfig":"8231"},{"size":12109,"mtime":1786084509762,"results":"9416","hashOfConfig":"8231"},{"size":16940,"mtime":1786084509762,"results":"9417","hashOfConfig":"8231"},{"size":28258,"mtime":1786084509763,"results":"9418","hashOfConfig":"8231"},{"size":3578,"mtime":1786084509763,"results":"9419","hashOfConfig":"8231"},{"size":3186,"mtime":1786084509763,"results":"9420","hashOfConfig":"8231"},{"size":3757,"mtime":1786084509763,"results":"9421","hashOfConfig":"8231"},{"size":4182,"mtime":1786084509763,"results":"9422","hashOfConfig":"8231"},{"size":2086,"mtime":1786084509763,"results":"9423","hashOfConfig":"8231"},{"size":3415,"mtime":1786084509763,"results":"9424","hashOfConfig":"8231"},{"size":4965,"mtime":1786084509763,"results":"9425","hashOfConfig":"8231"},{"size":4802,"mtime":1786084509764,"results":"9426","hashOfConfig":"8231"},{"size":2363,"mtime":1786084509764,"results":"9427","hashOfConfig":"8231"},{"size":3758,"mtime":1786084509764,"results":"9428","hashOfConfig":"8231"},{"size":961,"mtime":1786084509764,"results":"9429","hashOfConfig":"8231"},{"size":4002,"mtime":1786084509764,"results":"9430","hashOfConfig":"8231"},{"size":6386,"mtime":1786084509764,"results":"9431","hashOfConfig":"8231"},{"size":2011,"mtime":1786084509764,"results":"9432","hashOfConfig":"8231"},{"size":2790,"mtime":1786084509764,"results":"9433","hashOfConfig":"8231"},{"size":7118,"mtime":1786084509764,"results":"9434","hashOfConfig":"8231"},{"size":134,"mtime":1786084509764,"results":"9435","hashOfConfig":"8231"},{"size":5224,"mtime":1786084509765,"results":"9436","hashOfConfig":"8231"},{"size":1168,"mtime":1786084509765,"results":"9437","hashOfConfig":"8231"},{"size":4611,"mtime":1786084509765,"results":"9438","hashOfConfig":"8231"},{"size":10695,"mtime":1786084509765,"results":"9439","hashOfConfig":"8231"},{"size":3140,"mtime":1786084509765,"results":"9440","hashOfConfig":"8231"},{"size":8078,"mtime":1786084509765,"results":"9441","hashOfConfig":"8231"},{"size":23055,"mtime":1786084509765,"results":"9442","hashOfConfig":"8231"},{"size":5215,"mtime":1786084509766,"results":"9443","hashOfConfig":"8231"},{"size":14417,"mtime":1786084509766,"results":"9444","hashOfConfig":"8231"},{"size":847,"mtime":1786084509766,"results":"9445","hashOfConfig":"8231"},{"size":3380,"mtime":1786084509766,"results":"9446","hashOfConfig":"8231"},{"size":41627,"mtime":1786084509767,"results":"9447","hashOfConfig":"8231"},{"size":10643,"mtime":1786084509767,"results":"9448","hashOfConfig":"8231"},{"size":3794,"mtime":1786084509767,"results":"9449","hashOfConfig":"8231"},{"size":2751,"mtime":1786084509767,"results":"9450","hashOfConfig":"8231"},{"size":1431,"mtime":1786084509767,"results":"9451","hashOfConfig":"8231"},{"size":1209,"mtime":1786084509768,"results":"9452","hashOfConfig":"8231"},{"size":14610,"mtime":1786084509768,"results":"9453","hashOfConfig":"8231"},{"size":7651,"mtime":1786084509768,"results":"9454","hashOfConfig":"8231"},{"size":11386,"mtime":1786084509768,"results":"9455","hashOfConfig":"8231"},{"size":8762,"mtime":1786084509768,"results":"9456","hashOfConfig":"8231"},{"size":4173,"mtime":1786084509768,"results":"9457","hashOfConfig":"8231"},{"size":297,"mtime":1786084509768,"results":"9458","hashOfConfig":"8231"},{"size":5457,"mtime":1786084509769,"results":"9459","hashOfConfig":"8231"},{"size":2721,"mtime":1786084509769,"results":"9460","hashOfConfig":"8231"},{"size":6751,"mtime":1786084509769,"results":"9461","hashOfConfig":"8231"},{"size":4037,"mtime":1786084509769,"results":"9462","hashOfConfig":"8231"},{"size":1097,"mtime":1786084509769,"results":"9463","hashOfConfig":"8231"},{"size":5628,"mtime":1786084509769,"results":"9464","hashOfConfig":"8231"},{"size":309,"mtime":1786084509769,"results":"9465","hashOfConfig":"8231"},{"size":3503,"mtime":1786084509769,"results":"9466","hashOfConfig":"8231"},{"size":4517,"mtime":1786084509770,"results":"9467","hashOfConfig":"8231"},{"size":119848,"mtime":1786084509771,"results":"9468","hashOfConfig":"8231"},{"size":3859,"mtime":1786084509771,"results":"9469","hashOfConfig":"8231"},{"size":4891,"mtime":1786084509771,"results":"9470","hashOfConfig":"8231"},{"size":25899,"mtime":1786084509771,"results":"9471","hashOfConfig":"8231"},{"size":19514,"mtime":1786084509771,"results":"9472","hashOfConfig":"8231"},{"size":22419,"mtime":1786084509772,"results":"9473","hashOfConfig":"8231"},{"size":16569,"mtime":1786084509772,"results":"9474","hashOfConfig":"8231"},{"size":6639,"mtime":1786084509772,"results":"9475","hashOfConfig":"8231"},{"size":5083,"mtime":1786084509772,"results":"9476","hashOfConfig":"8231"},{"size":3716,"mtime":1786084509772,"results":"9477","hashOfConfig":"8231"},{"size":4192,"mtime":1786084509773,"results":"9478","hashOfConfig":"8231"},{"size":9132,"mtime":1786084509773,"results":"9479","hashOfConfig":"8231"},{"size":7259,"mtime":1786084509773,"results":"9480","hashOfConfig":"8231"},{"size":2472,"mtime":1786084509773,"results":"9481","hashOfConfig":"8231"},{"size":2766,"mtime":1786084509773,"results":"9482","hashOfConfig":"8231"},{"size":1749,"mtime":1786084509773,"results":"9483","hashOfConfig":"8231"},{"size":1640,"mtime":1786084509773,"results":"9484","hashOfConfig":"8231"},{"size":905,"mtime":1786084509773,"results":"9485","hashOfConfig":"8231"},{"size":22639,"mtime":1786084509774,"results":"9486","hashOfConfig":"8231"},{"size":2507,"mtime":1786084509783,"results":"9487","hashOfConfig":"8189"},{"size":108,"mtime":1786084509783,"results":"9488","hashOfConfig":"8216"},{"size":154,"mtime":1786084509783,"results":"9489","hashOfConfig":"8216"},{"size":5495,"mtime":1786084509820,"results":"9490","hashOfConfig":"8216"},{"size":410,"mtime":1786084509868,"results":"9491","hashOfConfig":"8189"},{"size":2255,"mtime":1786084509868,"results":"9492","hashOfConfig":"9493"},{"size":54186,"mtime":1786084509869,"results":"9494","hashOfConfig":"9493"},{"size":2510,"mtime":1786084509869,"results":"9495","hashOfConfig":"9493"},{"size":4467,"mtime":1786084509869,"results":"9496","hashOfConfig":"9493"},{"size":4384,"mtime":1786084509869,"results":"9497","hashOfConfig":"9493"},{"size":7432,"mtime":1786084509869,"results":"9498","hashOfConfig":"9493"},{"size":14708,"mtime":1786084509870,"results":"9499","hashOfConfig":"9493"},{"size":4184,"mtime":1786084509870,"results":"9500","hashOfConfig":"9493"},{"size":1751,"mtime":1786084509870,"results":"9501","hashOfConfig":"9493"},{"size":2039,"mtime":1786084509871,"results":"9502","hashOfConfig":"9493"},{"size":953,"mtime":1786084509871,"results":"9503","hashOfConfig":"9493"},{"size":2104,"mtime":1786084509871,"results":"9504","hashOfConfig":"9493"},{"size":173,"mtime":1786084509871,"results":"9505","hashOfConfig":"9493"},{"size":12308,"mtime":1786084509871,"results":"9506","hashOfConfig":"9493"},{"size":2768,"mtime":1786084509871,"results":"9507","hashOfConfig":"9493"},{"size":3058,"mtime":1786084509871,"results":"9508","hashOfConfig":"9493"},{"size":3587,"mtime":1786084509872,"results":"9509","hashOfConfig":"9493"},{"size":4905,"mtime":1786084509872,"results":"9510","hashOfConfig":"9493"},{"size":137,"mtime":1786084509872,"results":"9511","hashOfConfig":"9493"},{"size":6283,"mtime":1786084509872,"results":"9512","hashOfConfig":"9493"},{"size":10514,"mtime":1786084509872,"results":"9513","hashOfConfig":"9493"},{"size":40509,"mtime":1786084509873,"results":"9514","hashOfConfig":"9493"},{"size":14494,"mtime":1786084509873,"results":"9515","hashOfConfig":"9493"},{"size":14825,"mtime":1786084509873,"results":"9516","hashOfConfig":"9493"},{"size":29329,"mtime":1786084509873,"results":"9517","hashOfConfig":"9493"},{"size":5908,"mtime":1786084509874,"results":"9518","hashOfConfig":"9493"},{"size":148,"mtime":1786084509874,"results":"9519","hashOfConfig":"9493"},{"size":6256,"mtime":1786084509874,"results":"9520","hashOfConfig":"9493"},{"size":2986,"mtime":1786084509874,"results":"9521","hashOfConfig":"9493"},{"size":175,"mtime":1786084509874,"results":"9522","hashOfConfig":"9493"},{"size":144,"mtime":1786084509875,"results":"9523","hashOfConfig":"9493"},{"size":519,"mtime":1786084509875,"results":"9524","hashOfConfig":"9493"},{"size":5164,"mtime":1786084509875,"results":"9525","hashOfConfig":"9493"},{"size":155,"mtime":1786084509875,"results":"9526","hashOfConfig":"9493"},{"size":172,"mtime":1786084509875,"results":"9527","hashOfConfig":"9493"},{"size":152,"mtime":1786084509875,"results":"9528","hashOfConfig":"9493"},{"size":132538,"mtime":1786084509876,"results":"9529","hashOfConfig":"9493"},{"size":1039,"mtime":1786084509877,"results":"9530","hashOfConfig":"9493"},{"size":3950,"mtime":1786084509877,"results":"9531","hashOfConfig":"9493"},{"size":1911,"mtime":1786084509877,"results":"9532","hashOfConfig":"9493"},{"size":5767,"mtime":1786084509877,"results":"9533","hashOfConfig":"9493"},{"size":989,"mtime":1786084509877,"results":"9534","hashOfConfig":"9493"},{"size":1551,"mtime":1786084509877,"results":"9535","hashOfConfig":"9493"},{"size":1691,"mtime":1786084509877,"results":"9536","hashOfConfig":"9493"},{"size":2578,"mtime":1786084509877,"results":"9537","hashOfConfig":"9493"},{"size":140,"mtime":1786084509878,"results":"9538","hashOfConfig":"9493"},{"size":9047,"mtime":1786084509878,"results":"9539","hashOfConfig":"9493"},{"size":16294,"mtime":1786084509878,"results":"9540","hashOfConfig":"9493"},{"size":10765,"mtime":1786084509878,"results":"9541","hashOfConfig":"9493"},{"size":127,"mtime":1786084509878,"results":"9542","hashOfConfig":"9493"},{"size":127,"mtime":1786084509879,"results":"9543","hashOfConfig":"9493"},{"size":129,"mtime":1786084509879,"results":"9544","hashOfConfig":"9493"},{"size":149,"mtime":1786084509879,"results":"9545","hashOfConfig":"9493"},{"size":21288,"mtime":1786084509879,"results":"9546","hashOfConfig":"9493"},{"size":24829,"mtime":1786084509880,"results":"9547","hashOfConfig":"9493"},{"size":11619,"mtime":1786084509880,"results":"9548","hashOfConfig":"9493"},{"size":15521,"mtime":1786084509880,"results":"9549","hashOfConfig":"9493"},{"size":1144,"mtime":1786084509880,"results":"9550","hashOfConfig":"9493"},{"size":3558,"mtime":1786084509880,"results":"9551","hashOfConfig":"9493"},{"size":2737,"mtime":1786084509881,"results":"9552","hashOfConfig":"9493"},{"size":4513,"mtime":1786084509881,"results":"9553","hashOfConfig":"9493"},{"size":14767,"mtime":1786084509881,"results":"9554","hashOfConfig":"9493"},{"size":1168,"mtime":1786084509881,"results":"9555","hashOfConfig":"9493"},{"size":8894,"mtime":1786084509881,"results":"9556","hashOfConfig":"9493"},{"size":7098,"mtime":1786084509881,"results":"9557","hashOfConfig":"9493"},{"size":5960,"mtime":1786084509881,"results":"9558","hashOfConfig":"9493"},{"size":6934,"mtime":1786084509882,"results":"9559","hashOfConfig":"9493"},{"size":5039,"mtime":1786084509882,"results":"9560","hashOfConfig":"9493"},{"size":7847,"mtime":1786084509882,"results":"9561","hashOfConfig":"9493"},{"size":5747,"mtime":1786084509882,"results":"9562","hashOfConfig":"9493"},{"size":2418,"mtime":1786084509882,"results":"9563","hashOfConfig":"9493"},{"size":12128,"mtime":1786084509882,"results":"9564","hashOfConfig":"9493"},{"size":7262,"mtime":1786084509883,"results":"9565","hashOfConfig":"9493"},{"size":3602,"mtime":1786084509883,"results":"9566","hashOfConfig":"9493"},{"size":3698,"mtime":1786084509883,"results":"9567","hashOfConfig":"9493"},{"size":3529,"mtime":1786084509883,"results":"9568","hashOfConfig":"9493"},{"size":3333,"mtime":1786084509883,"results":"9569","hashOfConfig":"9493"},{"size":6408,"mtime":1786084509883,"results":"9570","hashOfConfig":"9493"},{"size":6246,"mtime":1786084509883,"results":"9571","hashOfConfig":"9493"},{"size":4864,"mtime":1786084509883,"results":"9572","hashOfConfig":"9493"},{"size":3785,"mtime":1786084509884,"results":"9573","hashOfConfig":"9493"},{"size":4057,"mtime":1786084509884,"results":"9574","hashOfConfig":"9493"},{"size":18590,"mtime":1786084509884,"results":"9575","hashOfConfig":"9493"},{"size":42471,"mtime":1786084509884,"results":"9576","hashOfConfig":"9493"},{"size":1192,"mtime":1786084509885,"results":"9577","hashOfConfig":"9493"},{"size":120,"mtime":1786084509885,"results":"9578","hashOfConfig":"9493"},{"size":31392,"mtime":1786084509885,"results":"9579","hashOfConfig":"9493"},{"size":4554,"mtime":1786084509885,"results":"9580","hashOfConfig":"9493"},{"size":2939,"mtime":1786084509885,"results":"9581","hashOfConfig":"9493"},{"size":1074,"mtime":1786084509885,"results":"9582","hashOfConfig":"9493"},{"size":3313,"mtime":1786084509886,"results":"9583","hashOfConfig":"9493"},{"size":703,"mtime":1786084509886,"results":"9584","hashOfConfig":"9493"},{"size":4083,"mtime":1786084509886,"results":"9585","hashOfConfig":"9493"},{"size":2455,"mtime":1786084509886,"results":"9586","hashOfConfig":"9493"},{"size":2073,"mtime":1786084509886,"results":"9587","hashOfConfig":"9493"},{"size":4961,"mtime":1786084509886,"results":"9588","hashOfConfig":"9493"},{"size":751,"mtime":1786084509886,"results":"9589","hashOfConfig":"9493"},{"size":2188,"mtime":1786084509886,"results":"9590","hashOfConfig":"9493"},{"size":266,"mtime":1786084509886,"results":"9591","hashOfConfig":"9493"},{"size":3267,"mtime":1786084509887,"results":"9592","hashOfConfig":"9493"},{"size":2194,"mtime":1786084509887,"results":"9593","hashOfConfig":"9493"},{"size":2118,"mtime":1786084509887,"results":"9594","hashOfConfig":"9493"},{"size":1692,"mtime":1786084509887,"results":"9595","hashOfConfig":"9493"},{"size":5898,"mtime":1786084509887,"results":"9596","hashOfConfig":"9493"},{"size":461,"mtime":1786084509887,"results":"9597","hashOfConfig":"9493"},{"size":261,"mtime":1786084509887,"results":"9598","hashOfConfig":"9493"},{"size":10077,"mtime":1786084509888,"results":"9599","hashOfConfig":"9493"},{"size":445,"mtime":1786084509888,"results":"9600","hashOfConfig":"9493"},{"size":20162,"mtime":1786084509888,"results":"9601","hashOfConfig":"9493"},{"size":1765,"mtime":1786084509888,"results":"9602","hashOfConfig":"9493"},{"size":3848,"mtime":1786084509888,"results":"9603","hashOfConfig":"9493"},{"size":2379,"mtime":1786084509889,"results":"9604","hashOfConfig":"9493"},{"size":25076,"mtime":1786084509889,"results":"9605","hashOfConfig":"9493"},{"size":3598,"mtime":1786084509889,"results":"9606","hashOfConfig":"9493"},{"size":3380,"mtime":1786084509889,"results":"9607","hashOfConfig":"9493"},{"size":19075,"mtime":1786084509890,"results":"9608","hashOfConfig":"9493"},{"size":9607,"mtime":1786084509890,"results":"9609","hashOfConfig":"9493"},{"size":36569,"mtime":1786084509890,"results":"9610","hashOfConfig":"9493"},{"size":17994,"mtime":1786084509890,"results":"9611","hashOfConfig":"9493"},{"size":15970,"mtime":1786084509891,"results":"9612","hashOfConfig":"9493"},{"size":28421,"mtime":1786084509891,"results":"9613","hashOfConfig":"9493"},{"size":24877,"mtime":1786084509891,"results":"9614","hashOfConfig":"9493"},{"size":23146,"mtime":1786084509892,"results":"9615","hashOfConfig":"9493"},{"size":18876,"mtime":1786084509892,"results":"9616","hashOfConfig":"9493"},{"size":22316,"mtime":1786084509892,"results":"9617","hashOfConfig":"9493"},{"size":11164,"mtime":1786084509892,"results":"9618","hashOfConfig":"9493"},{"size":2236,"mtime":1786084509892,"results":"9619","hashOfConfig":"9493"},{"size":183,"mtime":1786084509892,"results":"9620","hashOfConfig":"9493"},{"size":3666,"mtime":1786084509892,"results":"9621","hashOfConfig":"9493"},{"size":698,"mtime":1786084509892,"results":"9622","hashOfConfig":"9493"},{"size":253,"mtime":1786084509892,"results":"9623","hashOfConfig":"9493"},{"size":39682,"mtime":1786084509893,"results":"9624","hashOfConfig":"9493"},{"size":3555,"mtime":1786084509893,"results":"9625","hashOfConfig":"9493"},{"size":16019,"mtime":1786084509893,"results":"9626","hashOfConfig":"9493"},{"size":22469,"mtime":1786084509893,"results":"9627","hashOfConfig":"9493"},{"size":715,"mtime":1786084509893,"results":"9628","hashOfConfig":"9493"},{"size":12959,"mtime":1786084509894,"results":"9629","hashOfConfig":"9493"},{"size":1955,"mtime":1786084509894,"results":"9630","hashOfConfig":"9493"},{"size":1784,"mtime":1786084509894,"results":"9631","hashOfConfig":"9493"},{"size":7333,"mtime":1786084509894,"results":"9632","hashOfConfig":"9493"},{"size":2881,"mtime":1786084509894,"results":"9633","hashOfConfig":"9493"},{"size":264,"mtime":1786084509894,"results":"9634","hashOfConfig":"9493"},{"size":1209,"mtime":1786084509894,"results":"9635","hashOfConfig":"9493"},{"size":1837,"mtime":1786084509894,"results":"9636","hashOfConfig":"9493"},{"size":14778,"mtime":1786084509895,"results":"9637","hashOfConfig":"9493"},{"size":17820,"mtime":1786084509895,"results":"9638","hashOfConfig":"9493"},{"size":3003,"mtime":1786084509895,"results":"9639","hashOfConfig":"9493"},{"size":8529,"mtime":1786084509895,"results":"9640","hashOfConfig":"9493"},{"size":1638,"mtime":1786084509896,"results":"9641","hashOfConfig":"9493"},{"size":3065,"mtime":1786084509896,"results":"9642","hashOfConfig":"9493"},{"size":2902,"mtime":1786084509896,"results":"9643","hashOfConfig":"9493"},{"size":1307,"mtime":1786084509896,"results":"9644","hashOfConfig":"9493"},{"size":433,"mtime":1786084509896,"results":"9645","hashOfConfig":"9493"},{"size":195393,"mtime":1786084509898,"results":"9646","hashOfConfig":"9493"},{"size":131,"mtime":1786084509898,"results":"9647","hashOfConfig":"9493"},{"size":12872,"mtime":1786084509899,"results":"9648","hashOfConfig":"9493"},{"size":325,"mtime":1786084509899,"results":"9649","hashOfConfig":"9493"},{"size":1372,"mtime":1786084509899,"results":"9650","hashOfConfig":"9493"},{"size":3189,"mtime":1786084509899,"results":"9651","hashOfConfig":"9493"},{"size":3510,"mtime":1786084509899,"results":"9652","hashOfConfig":"9493"},{"size":220,"mtime":1786084509899,"results":"9653","hashOfConfig":"9493"},{"size":372,"mtime":1786084509899,"results":"9654","hashOfConfig":"9493"},{"size":277,"mtime":1786084509900,"results":"9655","hashOfConfig":"9493"},{"size":7207,"mtime":1786084509900,"results":"9656","hashOfConfig":"9493"},{"size":1214,"mtime":1786084509900,"results":"9657","hashOfConfig":"9493"},{"size":11040,"mtime":1786084509900,"results":"9658","hashOfConfig":"9493"},{"size":1585,"mtime":1786084509900,"results":"9659","hashOfConfig":"9493"},{"size":2104,"mtime":1786084509900,"results":"9660","hashOfConfig":"9493"},{"size":5584,"mtime":1786084509900,"results":"9661","hashOfConfig":"9493"},{"size":3850,"mtime":1786084509901,"results":"9662","hashOfConfig":"9493"},{"size":678,"mtime":1786084509901,"results":"9663","hashOfConfig":"9493"},{"size":592,"mtime":1786084509901,"results":"9664","hashOfConfig":"9493"},{"size":1473,"mtime":1786084509901,"results":"9665","hashOfConfig":"9493"},{"size":6679,"mtime":1786084509901,"results":"9666","hashOfConfig":"9493"},{"size":11408,"mtime":1786084509901,"results":"9667","hashOfConfig":"9493"},{"size":5554,"mtime":1786084509901,"results":"9668","hashOfConfig":"9493"},{"size":2165,"mtime":1786084509901,"results":"9669","hashOfConfig":"9493"},{"size":1027,"mtime":1786084509902,"results":"9670","hashOfConfig":"9493"},{"size":6760,"mtime":1786084509902,"results":"9671","hashOfConfig":"9493"},{"size":1969,"mtime":1786084509902,"results":"9672","hashOfConfig":"9493"},{"size":199,"mtime":1786084509902,"results":"9673","hashOfConfig":"9493"},{"size":10654,"mtime":1786084509902,"results":"9674","hashOfConfig":"9493"},{"size":156,"mtime":1786084509902,"results":"9675","hashOfConfig":"9493"},{"size":185,"mtime":1786084509903,"results":"9676","hashOfConfig":"9493"},{"size":13997,"mtime":1786084509903,"results":"9677","hashOfConfig":"9493"},{"size":10474,"mtime":1786084509903,"results":"9678","hashOfConfig":"9493"},{"size":168,"mtime":1786084509903,"results":"9679","hashOfConfig":"9493"},{"size":195,"mtime":1786084509903,"results":"9680","hashOfConfig":"9493"},{"size":187,"mtime":1786084509904,"results":"9681","hashOfConfig":"9493"},{"size":197,"mtime":1786084509904,"results":"9682","hashOfConfig":"9493"},{"size":9004,"mtime":1786084509904,"results":"9683","hashOfConfig":"9493"},{"size":164,"mtime":1786084509904,"results":"9684","hashOfConfig":"9493"},{"size":7787,"mtime":1786084509904,"results":"9685","hashOfConfig":"9493"},{"size":1466,"mtime":1786084509904,"results":"9686","hashOfConfig":"9493"},{"size":14668,"mtime":1786084509905,"results":"9687","hashOfConfig":"9493"},{"size":6537,"mtime":1786084509905,"results":"9688","hashOfConfig":"9493"},{"size":8327,"mtime":1786084509905,"results":"9689","hashOfConfig":"9493"},{"size":140,"mtime":1786084509905,"results":"9690","hashOfConfig":"9493"},{"size":204,"mtime":1786084509905,"results":"9691","hashOfConfig":"9493"},{"size":22084,"mtime":1786084509905,"results":"9692","hashOfConfig":"9493"},{"size":2571,"mtime":1786084509905,"results":"9693","hashOfConfig":"9493"},{"size":1753,"mtime":1786084509906,"results":"9694","hashOfConfig":"9493"},{"size":398,"mtime":1786084509906,"results":"9695","hashOfConfig":"9493"},{"size":189,"mtime":1786084509906,"results":"9696","hashOfConfig":"9493"},{"size":45332,"mtime":1786084509906,"results":"9697","hashOfConfig":"9493"},{"size":144,"mtime":1786084509906,"results":"9698","hashOfConfig":"9493"},{"size":7618,"mtime":1786084509907,"results":"9699","hashOfConfig":"9493"},{"size":6576,"mtime":1786084509907,"results":"9700","hashOfConfig":"9493"},{"size":584,"mtime":1786084509907,"results":"9701","hashOfConfig":"9493"},{"size":2321,"mtime":1786084509907,"results":"9702","hashOfConfig":"9493"},{"size":1354,"mtime":1786084509907,"results":"9703","hashOfConfig":"9493"},{"size":5294,"mtime":1786084509907,"results":"9704","hashOfConfig":"9493"},{"size":135,"mtime":1786084509907,"results":"9705","hashOfConfig":"9493"},{"size":151,"mtime":1786084509907,"results":"9706","hashOfConfig":"9493"},{"size":29067,"mtime":1786084509908,"results":"9707","hashOfConfig":"9493"},{"size":6287,"mtime":1786084509908,"results":"9708","hashOfConfig":"9493"},{"size":5104,"mtime":1786084509908,"results":"9709","hashOfConfig":"9493"},{"size":402,"mtime":1786084509908,"results":"9710","hashOfConfig":"9493"},{"size":3066,"mtime":1786084509908,"results":"9711","hashOfConfig":"9493"},{"size":6228,"mtime":1786084509908,"results":"9712","hashOfConfig":"9493"},{"size":2087,"mtime":1786084509908,"results":"9713","hashOfConfig":"9493"},{"size":6884,"mtime":1786084509909,"results":"9714","hashOfConfig":"9493"},{"size":44308,"mtime":1786084509909,"results":"9715","hashOfConfig":"9493"},{"size":2673,"mtime":1786084509909,"results":"9716","hashOfConfig":"9493"},{"size":19154,"mtime":1786084509909,"results":"9717","hashOfConfig":"9493"},{"size":3669,"mtime":1786084509909,"results":"9718","hashOfConfig":"9493"},{"size":3806,"mtime":1786084509910,"results":"9719","hashOfConfig":"9493"},{"size":2818,"mtime":1786084509910,"results":"9720","hashOfConfig":"9493"},{"size":1814,"mtime":1786084509910,"results":"9721","hashOfConfig":"9493"},{"size":1559,"mtime":1786084509910,"results":"9722","hashOfConfig":"9493"},{"size":2276,"mtime":1786084509910,"results":"9723","hashOfConfig":"9493"},{"size":181,"mtime":1786084509910,"results":"9724","hashOfConfig":"9493"},{"size":1485,"mtime":1786084509910,"results":"9725","hashOfConfig":"9493"},{"size":9399,"mtime":1786084509910,"results":"9726","hashOfConfig":"9493"},{"size":2162,"mtime":1786084509911,"results":"9727","hashOfConfig":"9493"},{"size":140,"mtime":1786084509911,"results":"9728","hashOfConfig":"9493"},{"size":33386,"mtime":1786084509911,"results":"9729","hashOfConfig":"9493"},{"size":97670,"mtime":1786084509912,"results":"9730","hashOfConfig":"9493"},{"size":6550,"mtime":1786084509912,"results":"9731","hashOfConfig":"9493"},{"size":7688,"mtime":1786084509913,"results":"9732","hashOfConfig":"9493"},{"size":13733,"mtime":1786084509913,"results":"9733","hashOfConfig":"9493"},{"size":20689,"mtime":1786084509913,"results":"9734","hashOfConfig":"9493"},{"size":22356,"mtime":1786084509913,"results":"9735","hashOfConfig":"9493"},{"size":6199,"mtime":1786084509914,"results":"9736","hashOfConfig":"9493"},{"size":18044,"mtime":1786084509915,"results":"9737","hashOfConfig":"9493"},{"size":145,"mtime":1786084509915,"results":"9738","hashOfConfig":"9493"},{"size":13817,"mtime":1786084509915,"results":"9739","hashOfConfig":"9493"},{"size":244,"mtime":1786084509916,"results":"9740","hashOfConfig":"9493"},{"size":2850,"mtime":1786084509916,"results":"9741","hashOfConfig":"9493"},{"size":15068,"mtime":1786084509916,"results":"9742","hashOfConfig":"9493"},{"size":20744,"mtime":1786084509916,"results":"9743","hashOfConfig":"9493"},{"size":10844,"mtime":1786084509917,"results":"9744","hashOfConfig":"9493"},{"size":51064,"mtime":1786084509917,"results":"9745","hashOfConfig":"9493"},{"size":967,"mtime":1786084509917,"results":"9746","hashOfConfig":"9493"},{"size":1796,"mtime":1786084509917,"results":"9747","hashOfConfig":"9493"},{"size":7353,"mtime":1786084509918,"results":"9748","hashOfConfig":"9493"},{"size":122,"mtime":1786084509918,"results":"9749","hashOfConfig":"9493"},{"size":4520,"mtime":1786084509918,"results":"9750","hashOfConfig":"9493"},{"size":149,"mtime":1786084509918,"results":"9751","hashOfConfig":"9493"},{"size":162,"mtime":1786084509919,"results":"9752","hashOfConfig":"9493"},{"size":9738,"mtime":1786084509919,"results":"9753","hashOfConfig":"9493"},{"size":145,"mtime":1786084509919,"results":"9754","hashOfConfig":"9493"},{"size":707,"mtime":1786084509919,"results":"9755","hashOfConfig":"9493"},{"size":11530,"mtime":1786084509919,"results":"9756","hashOfConfig":"9493"},{"size":7384,"mtime":1786084509920,"results":"9757","hashOfConfig":"9493"},{"size":2194,"mtime":1786084509920,"results":"9758","hashOfConfig":"9493"},{"size":3992,"mtime":1786084509920,"results":"9759","hashOfConfig":"9493"},{"size":4027,"mtime":1786084509920,"results":"9760","hashOfConfig":"9493"},{"size":8791,"mtime":1786084509920,"results":"9761","hashOfConfig":"9493"},{"size":20684,"mtime":1786084509921,"results":"9762","hashOfConfig":"9493"},{"size":2355,"mtime":1786084509921,"results":"9763","hashOfConfig":"9493"},{"size":1173,"mtime":1786084509921,"results":"9764","hashOfConfig":"9493"},{"size":5775,"mtime":1786084509921,"results":"9765","hashOfConfig":"9493"},{"size":4127,"mtime":1786084509921,"results":"9766","hashOfConfig":"9493"},{"size":5237,"mtime":1786084509921,"results":"9767","hashOfConfig":"9493"},{"size":1962,"mtime":1786084509921,"results":"9768","hashOfConfig":"9493"},{"size":6706,"mtime":1786084509921,"results":"9769","hashOfConfig":"9493"},{"size":6741,"mtime":1786084509921,"results":"9770","hashOfConfig":"9493"},{"size":4899,"mtime":1786084509922,"results":"9771","hashOfConfig":"9493"},{"size":4805,"mtime":1786084509922,"results":"9772","hashOfConfig":"9493"},{"size":5214,"mtime":1786084509922,"results":"9773","hashOfConfig":"9493"},{"size":323,"mtime":1786084509922,"results":"9774","hashOfConfig":"9493"},{"size":232,"mtime":1786084509922,"results":"9775","hashOfConfig":"9493"},{"size":5031,"mtime":1786084509922,"results":"9776","hashOfConfig":"9493"},{"size":6712,"mtime":1786084509922,"results":"9777","hashOfConfig":"9493"},{"size":1694,"mtime":1786084509922,"results":"9778","hashOfConfig":"9493"},{"size":4621,"mtime":1786084509923,"results":"9779","hashOfConfig":"9493"},{"size":16447,"mtime":1786084509923,"results":"9780","hashOfConfig":"9493"},{"size":4270,"mtime":1786084509923,"results":"9781","hashOfConfig":"9493"},{"size":3902,"mtime":1786084509923,"results":"9782","hashOfConfig":"9493"},{"size":5014,"mtime":1786084509923,"results":"9783","hashOfConfig":"9493"},{"size":23310,"mtime":1786084509923,"results":"9784","hashOfConfig":"9493"},{"size":4969,"mtime":1786084509923,"results":"9785","hashOfConfig":"9493"},{"size":1759,"mtime":1786084509924,"results":"9786","hashOfConfig":"9493"},{"size":2028,"mtime":1786084509924,"results":"9787","hashOfConfig":"9493"},{"size":3203,"mtime":1786084509924,"results":"9788","hashOfConfig":"9493"},{"size":14537,"mtime":1786084509924,"results":"9789","hashOfConfig":"9493"},{"size":3547,"mtime":1786084509924,"results":"9790","hashOfConfig":"9493"},{"size":8910,"mtime":1786084509924,"results":"9791","hashOfConfig":"9493"},{"size":1807,"mtime":1786084509925,"results":"9792","hashOfConfig":"9493"},{"size":3255,"mtime":1786084509925,"results":"9793","hashOfConfig":"9493"},{"size":5465,"mtime":1786084509925,"results":"9794","hashOfConfig":"9493"},{"size":11062,"mtime":1786084509925,"results":"9795","hashOfConfig":"9493"},{"size":134,"mtime":1786084509925,"results":"9796","hashOfConfig":"9493"},{"size":870,"mtime":1786084509925,"results":"9797","hashOfConfig":"9493"},{"size":21773,"mtime":1786084509925,"results":"9798","hashOfConfig":"9493"},{"size":2147,"mtime":1786084509926,"results":"9799","hashOfConfig":"9493"},{"size":151,"mtime":1786084509926,"results":"9800","hashOfConfig":"9493"},{"size":3987,"mtime":1786084509926,"results":"9801","hashOfConfig":"9493"},{"size":4040,"mtime":1786084509926,"results":"9802","hashOfConfig":"9493"},{"size":6167,"mtime":1786084509926,"results":"9803","hashOfConfig":"9493"},{"size":4646,"mtime":1786084509926,"results":"9804","hashOfConfig":"9493"},{"size":4656,"mtime":1786084509926,"results":"9805","hashOfConfig":"9493"},{"size":5457,"mtime":1786084509927,"results":"9806","hashOfConfig":"9493"},{"size":7280,"mtime":1786084509927,"results":"9807","hashOfConfig":"9493"},{"size":1727,"mtime":1786084509927,"results":"9808","hashOfConfig":"9493"},{"size":2968,"mtime":1786084509927,"results":"9809","hashOfConfig":"9493"},{"size":4969,"mtime":1786084509927,"results":"9810","hashOfConfig":"9493"},{"size":12758,"mtime":1786084509927,"results":"9811","hashOfConfig":"9493"},{"size":4418,"mtime":1786084509927,"results":"9812","hashOfConfig":"9493"},{"size":834,"mtime":1786084509928,"results":"9813","hashOfConfig":"9493"},{"size":9706,"mtime":1786084509928,"results":"9814","hashOfConfig":"9493"},{"size":2726,"mtime":1786084509928,"results":"9815","hashOfConfig":"9493"},{"size":3329,"mtime":1786084509928,"results":"9816","hashOfConfig":"9493"},{"size":31406,"mtime":1786084509928,"results":"9817","hashOfConfig":"9493"},{"size":10640,"mtime":1786084509929,"results":"9818","hashOfConfig":"9493"},{"size":15438,"mtime":1786084509929,"results":"9819","hashOfConfig":"9493"},{"size":14999,"mtime":1786084509929,"results":"9820","hashOfConfig":"9493"},{"size":10260,"mtime":1786084509930,"results":"9821","hashOfConfig":"9493"},{"size":1926,"mtime":1786084509930,"results":"9822","hashOfConfig":"9493"},{"size":4554,"mtime":1786084509930,"results":"9823","hashOfConfig":"9493"},{"size":3709,"mtime":1786084509930,"results":"9824","hashOfConfig":"9493"},{"size":4084,"mtime":1786084509930,"results":"9825","hashOfConfig":"9493"},{"size":3556,"mtime":1786084509930,"results":"9826","hashOfConfig":"9493"},{"size":398,"mtime":1786084509930,"results":"9827","hashOfConfig":"9493"},{"size":4796,"mtime":1786084509930,"results":"9828","hashOfConfig":"9493"},{"size":4727,"mtime":1786084509931,"results":"9829","hashOfConfig":"9493"},{"size":13693,"mtime":1786084509931,"results":"9830","hashOfConfig":"9493"},{"size":22985,"mtime":1786084509931,"results":"9831","hashOfConfig":"9493"},{"size":33937,"mtime":1786084509935,"results":"9832","hashOfConfig":"9493"},{"size":4434,"mtime":1786084509935,"results":"9833","hashOfConfig":"9493"},{"size":3480,"mtime":1786084509935,"results":"9834","hashOfConfig":"9493"},{"size":2731,"mtime":1786084509935,"results":"9835","hashOfConfig":"9493"},{"size":2741,"mtime":1786084509936,"results":"9836","hashOfConfig":"9493"},{"size":3050,"mtime":1786084509936,"results":"9837","hashOfConfig":"9493"},{"size":13191,"mtime":1786084509936,"results":"9838","hashOfConfig":"9493"},{"size":11932,"mtime":1786084509936,"results":"9839","hashOfConfig":"9493"},{"size":7999,"mtime":1786084509936,"results":"9840","hashOfConfig":"9493"},{"size":4464,"mtime":1786084509936,"results":"9841","hashOfConfig":"9493"},{"size":7693,"mtime":1786084509937,"results":"9842","hashOfConfig":"9493"},{"size":3156,"mtime":1786084509937,"results":"9843","hashOfConfig":"9493"},{"size":894,"mtime":1786084509937,"results":"9844","hashOfConfig":"9493"},{"size":4952,"mtime":1786084509937,"results":"9845","hashOfConfig":"9493"},{"size":4973,"mtime":1786084509937,"results":"9846","hashOfConfig":"9493"},{"size":17242,"mtime":1786084509937,"results":"9847","hashOfConfig":"9493"},{"size":4290,"mtime":1786084509938,"results":"9848","hashOfConfig":"9493"},{"size":38704,"mtime":1786084509938,"results":"9849","hashOfConfig":"9493"},{"size":14769,"mtime":1786084509938,"results":"9850","hashOfConfig":"9493"},{"size":29207,"mtime":1786084509939,"results":"9851","hashOfConfig":"9493"},{"size":3736,"mtime":1786084509939,"results":"9852","hashOfConfig":"9493"},{"size":33877,"mtime":1786084509939,"results":"9853","hashOfConfig":"9493"},{"size":4365,"mtime":1786084509941,"results":"9854","hashOfConfig":"9493"},{"size":2629,"mtime":1786084509941,"results":"9855","hashOfConfig":"9493"},{"size":5181,"mtime":1786084509941,"results":"9856","hashOfConfig":"9493"},{"size":1906,"mtime":1786084509942,"results":"9857","hashOfConfig":"9493"},{"size":20359,"mtime":1786084509943,"results":"9858","hashOfConfig":"9493"},{"size":17453,"mtime":1786084509943,"results":"9859","hashOfConfig":"9493"},{"size":6426,"mtime":1786084509943,"results":"9860","hashOfConfig":"9493"},{"size":1793,"mtime":1786084509943,"results":"9861","hashOfConfig":"9493"},{"size":10102,"mtime":1786084509943,"results":"9862","hashOfConfig":"9493"},{"size":16871,"mtime":1786084509944,"results":"9863","hashOfConfig":"9493"},{"size":11567,"mtime":1786084509944,"results":"9864","hashOfConfig":"9493"},{"size":1287,"mtime":1786084509944,"results":"9865","hashOfConfig":"9493"},{"size":5227,"mtime":1786084509944,"results":"9866","hashOfConfig":"9493"},{"size":16230,"mtime":1786084509945,"results":"9867","hashOfConfig":"9493"},{"size":18295,"mtime":1786084509945,"results":"9868","hashOfConfig":"9493"},{"size":4526,"mtime":1786084509945,"results":"9869","hashOfConfig":"9493"},{"size":11227,"mtime":1786084509945,"results":"9870","hashOfConfig":"9493"},{"size":4001,"mtime":1786084509945,"results":"9871","hashOfConfig":"9493"},{"size":1459,"mtime":1786084509945,"results":"9872","hashOfConfig":"9493"},{"size":1618,"mtime":1786084509945,"results":"9873","hashOfConfig":"9493"},{"size":1898,"mtime":1786084509946,"results":"9874","hashOfConfig":"9493"},{"size":1925,"mtime":1786084509946,"results":"9875","hashOfConfig":"9493"},{"size":5239,"mtime":1786084509946,"results":"9876","hashOfConfig":"9493"},{"size":6131,"mtime":1786084509946,"results":"9877","hashOfConfig":"9493"},{"size":6745,"mtime":1786084509946,"results":"9878","hashOfConfig":"9493"},{"size":3227,"mtime":1786084509946,"results":"9879","hashOfConfig":"9493"},{"size":38766,"mtime":1786084509947,"results":"9880","hashOfConfig":"9493"},{"size":1703,"mtime":1786084509947,"results":"9881","hashOfConfig":"9493"},{"size":5721,"mtime":1786084509947,"results":"9882","hashOfConfig":"9493"},{"size":1516,"mtime":1786084509947,"results":"9883","hashOfConfig":"9493"},{"size":12797,"mtime":1786084509947,"results":"9884","hashOfConfig":"9493"},{"size":54554,"mtime":1786084509948,"results":"9885","hashOfConfig":"9493"},{"size":1813,"mtime":1786084509948,"results":"9886","hashOfConfig":"9493"},{"size":27080,"mtime":1786084509949,"results":"9887","hashOfConfig":"9493"},{"size":28938,"mtime":1786084509949,"results":"9888","hashOfConfig":"9493"},{"size":7495,"mtime":1786084509949,"results":"9889","hashOfConfig":"9493"},{"size":1934,"mtime":1786084509949,"results":"9890","hashOfConfig":"9493"},{"size":2257,"mtime":1786084509949,"results":"9891","hashOfConfig":"9493"},{"size":3869,"mtime":1786084509949,"results":"9892","hashOfConfig":"9493"},{"size":2229,"mtime":1786084509949,"results":"9893","hashOfConfig":"9493"},{"size":12984,"mtime":1786084509949,"results":"9894","hashOfConfig":"9493"},{"size":1953,"mtime":1786084509950,"results":"9895","hashOfConfig":"9493"},{"size":1677,"mtime":1786084509950,"results":"9896","hashOfConfig":"9493"},{"size":549,"mtime":1786084509950,"results":"9897","hashOfConfig":"9493"},{"size":644,"mtime":1786084509950,"results":"9898","hashOfConfig":"9493"},{"size":7015,"mtime":1786084509950,"results":"9899","hashOfConfig":"9493"},{"size":896,"mtime":1786084509950,"results":"9900","hashOfConfig":"9493"},{"size":2233,"mtime":1786084509950,"results":"9901","hashOfConfig":"9493"},{"size":1941,"mtime":1786084509950,"results":"9902","hashOfConfig":"9493"},{"size":1894,"mtime":1786084509950,"results":"9903","hashOfConfig":"9493"},{"size":1523,"mtime":1786084509950,"results":"9904","hashOfConfig":"9493"},{"size":959,"mtime":1786084509951,"results":"9905","hashOfConfig":"9493"},{"size":6036,"mtime":1786084509951,"results":"9906","hashOfConfig":"9493"},{"size":7278,"mtime":1786084509951,"results":"9907","hashOfConfig":"9493"},{"size":9539,"mtime":1786084509951,"results":"9908","hashOfConfig":"9493"},{"size":1889,"mtime":1786084509951,"results":"9909","hashOfConfig":"9493"},{"size":2387,"mtime":1786084509951,"results":"9910","hashOfConfig":"9493"},{"size":1590,"mtime":1786084509951,"results":"9911","hashOfConfig":"9493"},{"size":3962,"mtime":1786084509951,"results":"9912","hashOfConfig":"9493"},{"size":3910,"mtime":1786084509951,"results":"9913","hashOfConfig":"9493"},{"size":14238,"mtime":1786084509952,"results":"9914","hashOfConfig":"9493"},{"size":16318,"mtime":1786084509952,"results":"9915","hashOfConfig":"9493"},{"size":38115,"mtime":1786084509952,"results":"9916","hashOfConfig":"9493"},{"size":4989,"mtime":1786084509953,"results":"9917","hashOfConfig":"9493"},{"size":1953,"mtime":1786084509953,"results":"9918","hashOfConfig":"9493"},{"size":1425,"mtime":1786084509953,"results":"9919","hashOfConfig":"9493"},{"size":10563,"mtime":1786084509953,"results":"9920","hashOfConfig":"9493"},{"size":3344,"mtime":1786084509953,"results":"9921","hashOfConfig":"9493"},{"size":403,"mtime":1786084509953,"results":"9922","hashOfConfig":"9493"},{"size":4667,"mtime":1786084509953,"results":"9923","hashOfConfig":"9493"},{"size":395,"mtime":1786084509953,"results":"9924","hashOfConfig":"9493"},{"size":939,"mtime":1786084509953,"results":"9925","hashOfConfig":"9493"},{"size":35931,"mtime":1786084509954,"results":"9926","hashOfConfig":"9493"},{"size":300,"mtime":1786084509954,"results":"9927","hashOfConfig":"9493"},{"size":14993,"mtime":1786084509954,"results":"9928","hashOfConfig":"9493"},{"size":581,"mtime":1786084509954,"results":"9929","hashOfConfig":"9493"},{"size":6051,"mtime":1786084509954,"results":"9930","hashOfConfig":"9493"},{"size":1415,"mtime":1786084509954,"results":"9931","hashOfConfig":"9493"},{"size":6485,"mtime":1786084509955,"results":"9932","hashOfConfig":"9493"},{"size":6379,"mtime":1786084509955,"results":"9933","hashOfConfig":"9493"},{"size":22557,"mtime":1786084509955,"results":"9934","hashOfConfig":"9493"},{"size":646,"mtime":1786084509955,"results":"9935","hashOfConfig":"9493"},{"size":3475,"mtime":1786084509955,"results":"9936","hashOfConfig":"9493"},{"size":10832,"mtime":1786084509955,"results":"9937","hashOfConfig":"9493"},{"size":2360,"mtime":1786084509956,"results":"9938","hashOfConfig":"9493"},{"size":3024,"mtime":1786084509956,"results":"9939","hashOfConfig":"9493"},{"size":35180,"mtime":1786084509956,"results":"9940","hashOfConfig":"9493"},{"size":8485,"mtime":1786084509956,"results":"9941","hashOfConfig":"9493"},{"size":3935,"mtime":1786084509957,"results":"9942","hashOfConfig":"9493"},{"size":1167,"mtime":1786084509957,"results":"9943","hashOfConfig":"9493"},{"size":5993,"mtime":1786084509957,"results":"9944","hashOfConfig":"9493"},{"size":2933,"mtime":1786084509957,"results":"9945","hashOfConfig":"9493"},{"size":1203,"mtime":1786084509957,"results":"9946","hashOfConfig":"9493"},{"size":1218,"mtime":1786084509957,"results":"9947","hashOfConfig":"9493"},{"size":5262,"mtime":1786084509957,"results":"9948","hashOfConfig":"9493"},{"size":1715,"mtime":1786084509957,"results":"9949","hashOfConfig":"9493"},{"size":3802,"mtime":1786084509958,"results":"9950","hashOfConfig":"9493"},{"size":3250,"mtime":1786084509958,"results":"9951","hashOfConfig":"9493"},{"size":2054,"mtime":1786084509958,"results":"9952","hashOfConfig":"9493"},{"size":1251,"mtime":1786084509958,"results":"9953","hashOfConfig":"9493"},{"size":459,"mtime":1786084509958,"results":"9954","hashOfConfig":"9493"},{"size":651,"mtime":1786084509958,"results":"9955","hashOfConfig":"9493"},{"size":83124,"mtime":1786084509959,"results":"9956","hashOfConfig":"9493"},{"size":4661,"mtime":1786084509959,"results":"9957","hashOfConfig":"9493"},{"size":934,"mtime":1786084509959,"results":"9958","hashOfConfig":"9493"},{"size":3011,"mtime":1786084509959,"results":"9959","hashOfConfig":"9493"},{"size":22264,"mtime":1786084509959,"results":"9960","hashOfConfig":"9493"},{"size":2451,"mtime":1786084509960,"results":"9961","hashOfConfig":"9493"},{"size":5155,"mtime":1786084509960,"results":"9962","hashOfConfig":"9493"},{"size":2226,"mtime":1786084509960,"results":"9963","hashOfConfig":"9493"},{"size":1452,"mtime":1786084509960,"results":"9964","hashOfConfig":"9493"},{"size":4745,"mtime":1786084509960,"results":"9965","hashOfConfig":"9493"},{"size":7691,"mtime":1786084509960,"results":"9966","hashOfConfig":"9493"},{"size":3085,"mtime":1786084509960,"results":"9967","hashOfConfig":"9493"},{"size":14685,"mtime":1786084509961,"results":"9968","hashOfConfig":"9493"},{"size":1916,"mtime":1786084509961,"results":"9969","hashOfConfig":"9493"},{"size":4492,"mtime":1786084509961,"results":"9970","hashOfConfig":"9493"},{"size":5788,"mtime":1786084509961,"results":"9971","hashOfConfig":"9493"},{"size":3385,"mtime":1786084509961,"results":"9972","hashOfConfig":"9493"},{"size":2965,"mtime":1786084509961,"results":"9973","hashOfConfig":"9493"},{"size":3533,"mtime":1786084509961,"results":"9974","hashOfConfig":"9493"},{"size":3272,"mtime":1786084509961,"results":"9975","hashOfConfig":"9493"},{"size":2601,"mtime":1786084509961,"results":"9976","hashOfConfig":"9493"},{"size":2193,"mtime":1786084509962,"results":"9977","hashOfConfig":"9493"},{"size":2561,"mtime":1786084509962,"results":"9978","hashOfConfig":"9493"},{"size":715,"mtime":1786084509962,"results":"9979","hashOfConfig":"9493"},{"size":1086,"mtime":1786084509962,"results":"9980","hashOfConfig":"9493"},{"size":808,"mtime":1786084509962,"results":"9981","hashOfConfig":"9493"},{"size":707,"mtime":1786084509962,"results":"9982","hashOfConfig":"9493"},{"size":1589,"mtime":1786084509962,"results":"9983","hashOfConfig":"9493"},{"size":2214,"mtime":1786084509962,"results":"9984","hashOfConfig":"9493"},{"size":1086,"mtime":1786084509962,"results":"9985","hashOfConfig":"9493"},{"size":16082,"mtime":1786084509963,"results":"9986","hashOfConfig":"9493"},{"size":10021,"mtime":1786084509963,"results":"9987","hashOfConfig":"9493"},{"size":9798,"mtime":1786084509963,"results":"9988","hashOfConfig":"9493"},{"size":324,"mtime":1786084509963,"results":"9989","hashOfConfig":"9493"},{"size":44639,"mtime":1786084509964,"results":"9990","hashOfConfig":"9493"},{"size":5345,"mtime":1786084509964,"results":"9991","hashOfConfig":"9493"},{"size":169,"mtime":1786084509964,"results":"9992","hashOfConfig":"9493"},{"size":4841,"mtime":1786084509964,"results":"9993","hashOfConfig":"9493"},{"size":7761,"mtime":1786084509965,"results":"9994","hashOfConfig":"9493"},{"size":5972,"mtime":1786084509965,"results":"9995","hashOfConfig":"9493"},{"size":5405,"mtime":1786084509965,"results":"9996","hashOfConfig":"9493"},{"size":7538,"mtime":1786084509965,"results":"9997","hashOfConfig":"9493"},{"size":6818,"mtime":1786084509965,"results":"9998","hashOfConfig":"9493"},{"size":3056,"mtime":1786084509965,"results":"9999","hashOfConfig":"9493"},{"size":14551,"mtime":1786084509965,"results":"10000","hashOfConfig":"9493"},{"size":2307,"mtime":1786084509966,"results":"10001","hashOfConfig":"9493"},{"size":7482,"mtime":1786084509966,"results":"10002","hashOfConfig":"9493"},{"size":3366,"mtime":1786084509966,"results":"10003","hashOfConfig":"9493"},{"size":17190,"mtime":1786084509966,"results":"10004","hashOfConfig":"9493"},{"size":5470,"mtime":1786084509967,"results":"10005","hashOfConfig":"9493"},{"size":6071,"mtime":1786084509967,"results":"10006","hashOfConfig":"9493"},{"size":2657,"mtime":1786084509967,"results":"10007","hashOfConfig":"9493"},{"size":132,"mtime":1786084509967,"results":"10008","hashOfConfig":"9493"},{"size":162,"mtime":1786084509967,"results":"10009","hashOfConfig":"9493"},{"size":588,"mtime":1786084509967,"results":"10010","hashOfConfig":"9493"},{"size":1352,"mtime":1786084509967,"results":"10011","hashOfConfig":"9493"},{"size":154,"mtime":1786084509968,"results":"10012","hashOfConfig":"9493"},{"size":158,"mtime":1786084509968,"results":"10013","hashOfConfig":"9493"},{"size":10398,"mtime":1786084509968,"results":"10014","hashOfConfig":"9493"},{"size":1310,"mtime":1786084509968,"results":"10015","hashOfConfig":"9493"},{"size":32624,"mtime":1786084509969,"results":"10016","hashOfConfig":"9493"},{"size":17843,"mtime":1786084509969,"results":"10017","hashOfConfig":"9493"},{"size":4606,"mtime":1786084509969,"results":"10018","hashOfConfig":"9493"},{"size":9538,"mtime":1786084509969,"results":"10019","hashOfConfig":"9493"},{"size":5235,"mtime":1786084509969,"results":"10020","hashOfConfig":"9493"},{"size":8320,"mtime":1786084509969,"results":"10021","hashOfConfig":"9493"},{"size":5596,"mtime":1786084509970,"results":"10022","hashOfConfig":"9493"},{"size":10810,"mtime":1786084509970,"results":"10023","hashOfConfig":"9493"},{"size":5241,"mtime":1786084509970,"results":"10024","hashOfConfig":"9493"},{"size":7529,"mtime":1786084509970,"results":"10025","hashOfConfig":"9493"},{"size":35792,"mtime":1786084509970,"results":"10026","hashOfConfig":"9493"},{"size":4236,"mtime":1786084509971,"results":"10027","hashOfConfig":"9493"},{"size":33543,"mtime":1786084509971,"results":"10028","hashOfConfig":"9493"},{"size":4457,"mtime":1786084509971,"results":"10029","hashOfConfig":"9493"},{"size":5579,"mtime":1786084509971,"results":"10030","hashOfConfig":"9493"},{"size":2001,"mtime":1786084509972,"results":"10031","hashOfConfig":"9493"},{"size":7035,"mtime":1786084509972,"results":"10032","hashOfConfig":"9493"},{"size":8831,"mtime":1786084509972,"results":"10033","hashOfConfig":"9493"},{"size":18025,"mtime":1786084509972,"results":"10034","hashOfConfig":"9493"},{"size":3519,"mtime":1786084509972,"results":"10035","hashOfConfig":"9493"},{"size":8734,"mtime":1786084509973,"results":"10036","hashOfConfig":"9493"},{"size":2177,"mtime":1786084509973,"results":"10037","hashOfConfig":"9493"},{"size":35854,"mtime":1786084509973,"results":"10038","hashOfConfig":"9493"},{"size":16319,"mtime":1786084509973,"results":"10039","hashOfConfig":"9493"},{"size":6875,"mtime":1786084509973,"results":"10040","hashOfConfig":"9493"},{"size":15320,"mtime":1786084509974,"results":"10041","hashOfConfig":"9493"},{"size":13829,"mtime":1786084509974,"results":"10042","hashOfConfig":"9493"},{"size":16783,"mtime":1786084509974,"results":"10043","hashOfConfig":"9493"},{"size":12900,"mtime":1786084509975,"results":"10044","hashOfConfig":"9493"},{"size":12742,"mtime":1786084509975,"results":"10045","hashOfConfig":"9493"},{"size":9482,"mtime":1786084509975,"results":"10046","hashOfConfig":"9493"},{"size":4934,"mtime":1786084509975,"results":"10047","hashOfConfig":"9493"},{"size":36504,"mtime":1786084509976,"results":"10048","hashOfConfig":"9493"},{"size":4944,"mtime":1786084509976,"results":"10049","hashOfConfig":"9493"},{"size":1757,"mtime":1786084509976,"results":"10050","hashOfConfig":"9493"},{"size":8632,"mtime":1786084509976,"results":"10051","hashOfConfig":"9493"},{"size":453,"mtime":1786084509976,"results":"10052","hashOfConfig":"9493"},{"size":1479,"mtime":1786084509976,"results":"10053","hashOfConfig":"9493"},{"size":54088,"mtime":1786084509977,"results":"10054","hashOfConfig":"9493"},{"size":636,"mtime":1786084509977,"results":"10055","hashOfConfig":"9493"},{"size":2967,"mtime":1786084509977,"results":"10056","hashOfConfig":"9493"},{"size":5424,"mtime":1786084509977,"results":"10057","hashOfConfig":"9493"},{"size":5525,"mtime":1786084509978,"results":"10058","hashOfConfig":"9493"},{"size":2220,"mtime":1786084509978,"results":"10059","hashOfConfig":"9493"},{"size":39136,"mtime":1786084509978,"results":"10060","hashOfConfig":"9493"},{"size":4033,"mtime":1786084509978,"results":"10061","hashOfConfig":"9493"},{"size":9992,"mtime":1786084509978,"results":"10062","hashOfConfig":"9493"},{"size":64142,"mtime":1786084509979,"results":"10063","hashOfConfig":"9493"},{"size":19325,"mtime":1786084509979,"results":"10064","hashOfConfig":"9493"},{"size":4775,"mtime":1786084509979,"results":"10065","hashOfConfig":"9493"},{"size":26501,"mtime":1786084509980,"results":"10066","hashOfConfig":"9493"},{"size":5530,"mtime":1786084509980,"results":"10067","hashOfConfig":"9493"},{"size":56751,"mtime":1786084509981,"results":"10068","hashOfConfig":"9493"},{"size":6013,"mtime":1786084509981,"results":"10069","hashOfConfig":"9493"},{"size":3580,"mtime":1786084509981,"results":"10070","hashOfConfig":"9493"},{"size":6844,"mtime":1786084509981,"results":"10071","hashOfConfig":"9493"},{"size":8192,"mtime":1786084509981,"results":"10072","hashOfConfig":"9493"},{"size":5959,"mtime":1786084509982,"results":"10073","hashOfConfig":"9493"},{"size":5502,"mtime":1786084509982,"results":"10074","hashOfConfig":"9493"},{"size":2363,"mtime":1786084509982,"results":"10075","hashOfConfig":"9493"},{"size":16212,"mtime":1786084509982,"results":"10076","hashOfConfig":"9493"},{"size":2438,"mtime":1786084509982,"results":"10077","hashOfConfig":"9493"},{"size":9780,"mtime":1786084509982,"results":"10078","hashOfConfig":"9493"},{"size":5548,"mtime":1786084509982,"results":"10079","hashOfConfig":"9493"},{"size":2157,"mtime":1786084509982,"results":"10080","hashOfConfig":"9493"},{"size":20339,"mtime":1786084509983,"results":"10081","hashOfConfig":"9493"},{"size":4631,"mtime":1786084509983,"results":"10082","hashOfConfig":"9493"},{"size":835,"mtime":1786084509983,"results":"10083","hashOfConfig":"9493"},{"size":857,"mtime":1786084509983,"results":"10084","hashOfConfig":"9493"},{"size":578,"mtime":1786084509983,"results":"10085","hashOfConfig":"9493"},{"size":4745,"mtime":1786084509983,"results":"10086","hashOfConfig":"9493"},{"size":4788,"mtime":1786084509984,"results":"10087","hashOfConfig":"9493"},{"size":2512,"mtime":1786084509984,"results":"10088","hashOfConfig":"9493"},{"size":1205,"mtime":1786084509984,"results":"10089","hashOfConfig":"9493"},{"size":157,"mtime":1786084509984,"results":"10090","hashOfConfig":"9493"},{"size":160,"mtime":1786084509984,"results":"10091","hashOfConfig":"9493"},{"size":527,"mtime":1786084509984,"results":"10092","hashOfConfig":"9493"},{"size":1130,"mtime":1786084509984,"results":"10093","hashOfConfig":"9493"},{"size":135,"mtime":1786084509985,"results":"10094","hashOfConfig":"9493"},{"size":422,"mtime":1786084509985,"results":"10095","hashOfConfig":"9493"},{"size":1080,"mtime":1786084509985,"results":"10096","hashOfConfig":"9493"},{"size":146,"mtime":1786084509985,"results":"10097","hashOfConfig":"9493"},{"size":142,"mtime":1786084509985,"results":"10098","hashOfConfig":"9493"},{"size":141,"mtime":1786084509985,"results":"10099","hashOfConfig":"9493"},{"size":1221,"mtime":1786084509986,"results":"10100","hashOfConfig":"9493"},{"size":1481,"mtime":1786084509986,"results":"10101","hashOfConfig":"9493"},{"size":159,"mtime":1786084509986,"results":"10102","hashOfConfig":"9493"},{"size":22540,"mtime":1786084509986,"results":"10103","hashOfConfig":"9493"},{"size":13277,"mtime":1786084509986,"results":"10104","hashOfConfig":"9493"},{"size":15274,"mtime":1786084509987,"results":"10105","hashOfConfig":"9493"},{"size":8412,"mtime":1786084509987,"results":"10106","hashOfConfig":"9493"},{"size":10351,"mtime":1786084509987,"results":"10107","hashOfConfig":"9493"},{"size":4905,"mtime":1786084509987,"results":"10108","hashOfConfig":"9493"},{"size":2493,"mtime":1786084509987,"results":"10109","hashOfConfig":"9493"},{"size":1406,"mtime":1786084509987,"results":"10110","hashOfConfig":"9493"},{"size":6266,"mtime":1786084509987,"results":"10111","hashOfConfig":"9493"},{"size":3817,"mtime":1786084509988,"results":"10112","hashOfConfig":"9493"},{"size":2587,"mtime":1786084509988,"results":"10113","hashOfConfig":"9493"},{"size":15381,"mtime":1786084509988,"results":"10114","hashOfConfig":"9493"},{"size":3020,"mtime":1786084509988,"results":"10115","hashOfConfig":"9493"},{"size":535,"mtime":1786084509988,"results":"10116","hashOfConfig":"9493"},{"size":633,"mtime":1786084509988,"results":"10117","hashOfConfig":"9493"},{"size":592,"mtime":1786084509988,"results":"10118","hashOfConfig":"9493"},{"size":2274,"mtime":1786084509989,"results":"10119","hashOfConfig":"9493"},{"size":4481,"mtime":1786084509989,"results":"10120","hashOfConfig":"9493"},{"size":3733,"mtime":1786084509989,"results":"10121","hashOfConfig":"9493"},{"size":2137,"mtime":1786084509989,"results":"10122","hashOfConfig":"9493"},{"size":6963,"mtime":1786084509989,"results":"10123","hashOfConfig":"9493"},{"size":6169,"mtime":1786084509989,"results":"10124","hashOfConfig":"9493"},{"size":4755,"mtime":1786084509989,"results":"10125","hashOfConfig":"9493"},{"size":4234,"mtime":1786084509990,"results":"10126","hashOfConfig":"9493"},{"size":3388,"mtime":1786084509990,"results":"10127","hashOfConfig":"9493"},{"size":3724,"mtime":1786084509990,"results":"10128","hashOfConfig":"9493"},{"size":3480,"mtime":1786084509990,"results":"10129","hashOfConfig":"9493"},{"size":7036,"mtime":1786084509990,"results":"10130","hashOfConfig":"9493"},{"size":1916,"mtime":1786084509990,"results":"10131","hashOfConfig":"9493"},{"size":1058,"mtime":1786084509990,"results":"10132","hashOfConfig":"9493"},{"size":1100,"mtime":1786084509990,"results":"10133","hashOfConfig":"9493"},{"size":1124,"mtime":1786084509991,"results":"10134","hashOfConfig":"9493"},{"size":1033,"mtime":1786084509991,"results":"10135","hashOfConfig":"9493"},{"size":3256,"mtime":1786084509991,"results":"10136","hashOfConfig":"9493"},{"size":2225,"mtime":1786084509991,"results":"10137","hashOfConfig":"9493"},{"size":1410,"mtime":1786084509991,"results":"10138","hashOfConfig":"9493"},{"size":1234,"mtime":1786084509991,"results":"10139","hashOfConfig":"9493"},{"size":710,"mtime":1786084509991,"results":"10140","hashOfConfig":"9493"},{"size":1866,"mtime":1786084509991,"results":"10141","hashOfConfig":"9493"},{"size":2946,"mtime":1786084509991,"results":"10142","hashOfConfig":"9493"},{"size":669,"mtime":1786084509992,"results":"10143","hashOfConfig":"9493"},{"size":858,"mtime":1786084509992,"results":"10144","hashOfConfig":"9493"},{"size":1842,"mtime":1786084509992,"results":"10145","hashOfConfig":"9493"},{"size":596,"mtime":1786084509992,"results":"10146","hashOfConfig":"9493"},{"size":2269,"mtime":1786084509992,"results":"10147","hashOfConfig":"9493"},{"size":786,"mtime":1786084509992,"results":"10148","hashOfConfig":"9493"},{"size":2074,"mtime":1786084509992,"results":"10149","hashOfConfig":"9493"},{"size":2011,"mtime":1786084509992,"results":"10150","hashOfConfig":"9493"},{"size":2552,"mtime":1786084509993,"results":"10151","hashOfConfig":"9493"},{"size":3541,"mtime":1786084509993,"results":"10152","hashOfConfig":"9493"},{"size":887,"mtime":1786084509993,"results":"10153","hashOfConfig":"9493"},{"size":1459,"mtime":1786084509993,"results":"10154","hashOfConfig":"9493"},{"size":1342,"mtime":1786084509993,"results":"10155","hashOfConfig":"9493"},{"size":890,"mtime":1786084509993,"results":"10156","hashOfConfig":"9493"},{"size":2687,"mtime":1786084509993,"results":"10157","hashOfConfig":"9493"},{"size":6621,"mtime":1786084509993,"results":"10158","hashOfConfig":"9493"},{"size":1847,"mtime":1786084509993,"results":"10159","hashOfConfig":"9493"},{"size":1727,"mtime":1786084509993,"results":"10160","hashOfConfig":"9493"},{"size":5164,"mtime":1786084509994,"results":"10161","hashOfConfig":"9493"},{"size":3295,"mtime":1786084509994,"results":"10162","hashOfConfig":"9493"},{"size":318,"mtime":1786084509994,"results":"10163","hashOfConfig":"9493"},{"size":11258,"mtime":1786084509994,"results":"10164","hashOfConfig":"9493"},{"size":14856,"mtime":1786084509994,"results":"10165","hashOfConfig":"9493"},{"size":6588,"mtime":1786084509994,"results":"10166","hashOfConfig":"9493"},{"size":8238,"mtime":1786084509994,"results":"10167","hashOfConfig":"9493"},{"size":4501,"mtime":1786084509995,"results":"10168","hashOfConfig":"9493"},{"size":4888,"mtime":1786084509995,"results":"10169","hashOfConfig":"9493"},{"size":2741,"mtime":1786084509995,"results":"10170","hashOfConfig":"9493"},{"size":2573,"mtime":1786084509995,"results":"10171","hashOfConfig":"9493"},{"size":11503,"mtime":1786084509995,"results":"10172","hashOfConfig":"9493"},{"size":10825,"mtime":1786084509996,"results":"10173","hashOfConfig":"9493"},{"size":28003,"mtime":1786084509996,"results":"10174","hashOfConfig":"9493"},{"size":20209,"mtime":1786084509996,"results":"10175","hashOfConfig":"9493"},{"size":18974,"mtime":1786084509996,"results":"10176","hashOfConfig":"9493"},{"size":12949,"mtime":1786084509997,"results":"10177","hashOfConfig":"9493"},{"size":3567,"mtime":1786084509997,"results":"10178","hashOfConfig":"9493"},{"size":3943,"mtime":1786084509997,"results":"10179","hashOfConfig":"9493"},{"size":2034,"mtime":1786084509997,"results":"10180","hashOfConfig":"9493"},{"size":7899,"mtime":1786084509998,"results":"10181","hashOfConfig":"9493"},{"size":369,"mtime":1786084509998,"results":"10182","hashOfConfig":"9493"},{"size":2669,"mtime":1786084509998,"results":"10183","hashOfConfig":"9493"},{"size":39164,"mtime":1786084509998,"results":"10184","hashOfConfig":"9493"},{"size":5272,"mtime":1786084509998,"results":"10185","hashOfConfig":"9493"},{"size":80463,"mtime":1786084509999,"results":"10186","hashOfConfig":"9493"},{"size":27348,"mtime":1786084510000,"results":"10187","hashOfConfig":"9493"},{"size":8138,"mtime":1786084510000,"results":"10188","hashOfConfig":"9493"},{"size":5827,"mtime":1786084510000,"results":"10189","hashOfConfig":"9493"},{"size":12488,"mtime":1786084510000,"results":"10190","hashOfConfig":"9493"},{"size":5494,"mtime":1786084510001,"results":"10191","hashOfConfig":"9493"},{"size":4356,"mtime":1786084510001,"results":"10192","hashOfConfig":"9493"},{"size":8015,"mtime":1786084510001,"results":"10193","hashOfConfig":"9493"},{"size":881,"mtime":1786084510001,"results":"10194","hashOfConfig":"9493"},{"size":3929,"mtime":1786084510001,"results":"10195","hashOfConfig":"9493"},{"size":5919,"mtime":1786084510002,"results":"10196","hashOfConfig":"9493"},{"size":1346,"mtime":1786084510002,"results":"10197","hashOfConfig":"9493"},{"size":295,"mtime":1786084510002,"results":"10198","hashOfConfig":"9493"},{"size":678,"mtime":1786084510002,"results":"10199","hashOfConfig":"9493"},{"size":42399,"mtime":1786084510002,"results":"10200","hashOfConfig":"9493"},{"size":4180,"mtime":1786084510003,"results":"10201","hashOfConfig":"9493"},{"size":17782,"mtime":1786084510003,"results":"10202","hashOfConfig":"9493"},{"size":5717,"mtime":1786084510003,"results":"10203","hashOfConfig":"9493"},{"size":1670,"mtime":1786084510003,"results":"10204","hashOfConfig":"9493"},{"size":4890,"mtime":1786084510003,"results":"10205","hashOfConfig":"9493"},{"size":9411,"mtime":1786084510004,"results":"10206","hashOfConfig":"9493"},{"size":7311,"mtime":1786084510004,"results":"10207","hashOfConfig":"9493"},{"size":2991,"mtime":1786084510004,"results":"10208","hashOfConfig":"9493"},{"size":1952,"mtime":1786084510004,"results":"10209","hashOfConfig":"9493"},{"size":25936,"mtime":1786084510005,"results":"10210","hashOfConfig":"9493"},{"size":3797,"mtime":1786084510005,"results":"10211","hashOfConfig":"9493"},{"size":4520,"mtime":1786084510005,"results":"10212","hashOfConfig":"9493"},{"size":124,"mtime":1786084510005,"results":"10213","hashOfConfig":"9493"},{"size":9424,"mtime":1786084510006,"results":"10214","hashOfConfig":"9493"},{"size":9829,"mtime":1786084510006,"results":"10215","hashOfConfig":"9493"},{"size":10750,"mtime":1786084510006,"results":"10216","hashOfConfig":"9493"},{"size":2027,"mtime":1786084510006,"results":"10217","hashOfConfig":"9493"},{"size":5591,"mtime":1786084510006,"results":"10218","hashOfConfig":"9493"},{"size":3034,"mtime":1786084510006,"results":"10219","hashOfConfig":"9493"},{"size":1325,"mtime":1786084510007,"results":"10220","hashOfConfig":"9493"},{"size":764,"mtime":1786084510007,"results":"10221","hashOfConfig":"9493"},{"size":1719,"mtime":1786084510007,"results":"10222","hashOfConfig":"9493"},{"size":2137,"mtime":1786084510007,"results":"10223","hashOfConfig":"9493"},{"size":2355,"mtime":1786084510007,"results":"10224","hashOfConfig":"9493"},{"size":543,"mtime":1786084510007,"results":"10225","hashOfConfig":"9493"},{"size":1272,"mtime":1786084510007,"results":"10226","hashOfConfig":"9493"},{"size":1661,"mtime":1786084510008,"results":"10227","hashOfConfig":"9493"},{"size":5260,"mtime":1786084510008,"results":"10228","hashOfConfig":"9493"},{"size":3778,"mtime":1786084510008,"results":"10229","hashOfConfig":"9493"},{"size":3165,"mtime":1786084510008,"results":"10230","hashOfConfig":"9493"},{"size":3146,"mtime":1786084510008,"results":"10231","hashOfConfig":"9493"},{"size":2278,"mtime":1786084510008,"results":"10232","hashOfConfig":"9493"},{"size":136,"mtime":1786084510008,"results":"10233","hashOfConfig":"9493"},{"size":10636,"mtime":1786084510009,"results":"10234","hashOfConfig":"9493"},{"size":12181,"mtime":1786084510009,"results":"10235","hashOfConfig":"9493"},{"size":795,"mtime":1786084510009,"results":"10236","hashOfConfig":"9493"},{"size":857,"mtime":1786084510009,"results":"10237","hashOfConfig":"9493"},{"size":869,"mtime":1786084510009,"results":"10238","hashOfConfig":"9493"},{"size":174,"mtime":1786084510009,"results":"10239","hashOfConfig":"9493"},{"size":4633,"mtime":1786084510010,"results":"10240","hashOfConfig":"9493"},{"size":104,"mtime":1786084510010,"results":"10241","hashOfConfig":"9493"},{"size":716,"mtime":1786084510010,"results":"10242","hashOfConfig":"9493"},{"size":104,"mtime":1786084510010,"results":"10243","hashOfConfig":"9493"},{"size":678,"mtime":1786084510011,"results":"10244","hashOfConfig":"9493"},{"size":104,"mtime":1786084510011,"results":"10245","hashOfConfig":"9493"},{"size":739,"mtime":1786084510011,"results":"10246","hashOfConfig":"9493"},{"size":104,"mtime":1786084510011,"results":"10247","hashOfConfig":"9493"},{"size":688,"mtime":1786084510011,"results":"10248","hashOfConfig":"9493"},{"size":104,"mtime":1786084510011,"results":"10249","hashOfConfig":"9493"},{"size":750,"mtime":1786084510012,"results":"10250","hashOfConfig":"9493"},{"size":104,"mtime":1786084510012,"results":"10251","hashOfConfig":"9493"},{"size":721,"mtime":1786084510012,"results":"10252","hashOfConfig":"9493"},{"size":104,"mtime":1786084510012,"results":"10253","hashOfConfig":"9493"},{"size":703,"mtime":1786084510012,"results":"10254","hashOfConfig":"9493"},{"size":104,"mtime":1786084510012,"results":"10255","hashOfConfig":"9493"},{"size":692,"mtime":1786084510013,"results":"10256","hashOfConfig":"9493"},{"size":9791,"mtime":1786084510013,"results":"10257","hashOfConfig":"9493"},{"size":1712,"mtime":1786084510013,"results":"10258","hashOfConfig":"9493"},{"size":1347,"mtime":1786084510014,"results":"10259","hashOfConfig":"9493"},{"size":624,"mtime":1786084510014,"results":"10260","hashOfConfig":"9493"},{"size":633,"mtime":1786084510014,"results":"10261","hashOfConfig":"9493"},{"size":1447,"mtime":1786084510015,"results":"10262","hashOfConfig":"9493"},{"size":5277,"mtime":1786084510015,"results":"10263","hashOfConfig":"9493"},{"size":1063,"mtime":1786084510015,"results":"10264","hashOfConfig":"9493"},{"size":2503,"mtime":1786084510016,"results":"10265","hashOfConfig":"9493"},{"size":1036,"mtime":1786084510016,"results":"10266","hashOfConfig":"9493"},{"size":714,"mtime":1786084510016,"results":"10267","hashOfConfig":"9493"},{"size":2189,"mtime":1786084510016,"results":"10268","hashOfConfig":"9493"},{"size":1468,"mtime":1786084510016,"results":"10269","hashOfConfig":"9493"},{"size":1306,"mtime":1786084510017,"results":"10270","hashOfConfig":"9493"},{"size":1085,"mtime":1786084510017,"results":"10271","hashOfConfig":"9493"},{"size":496,"mtime":1786084510017,"results":"10272","hashOfConfig":"9493"},{"size":5298,"mtime":1786084510017,"results":"10273","hashOfConfig":"9493"},{"size":500,"mtime":1786084510017,"results":"10274","hashOfConfig":"9493"},{"size":7769,"mtime":1786084510018,"results":"10275","hashOfConfig":"9493"},{"size":737,"mtime":1786084510018,"results":"10276","hashOfConfig":"9493"},{"size":8362,"mtime":1786084510018,"results":"10277","hashOfConfig":"9493"},{"size":3325,"mtime":1786084510018,"results":"10278","hashOfConfig":"9493"},{"size":705,"mtime":1786084510018,"results":"10279","hashOfConfig":"9493"},{"size":689,"mtime":1786084510019,"results":"10280","hashOfConfig":"9493"},{"size":684,"mtime":1786084510019,"results":"10281","hashOfConfig":"9493"},{"size":2164,"mtime":1786084510019,"results":"10282","hashOfConfig":"9493"},{"size":2555,"mtime":1786084510019,"results":"10283","hashOfConfig":"9493"},{"size":3388,"mtime":1786084510019,"results":"10284","hashOfConfig":"9493"},{"size":1055,"mtime":1786084510020,"results":"10285","hashOfConfig":"9493"},{"size":2693,"mtime":1786084510020,"results":"10286","hashOfConfig":"9493"},{"size":2810,"mtime":1786084510021,"results":"10287","hashOfConfig":"9493"},{"size":5466,"mtime":1786084510028,"results":"10288","hashOfConfig":"9493"},{"size":838,"mtime":1786084510029,"results":"10289","hashOfConfig":"9493"},{"size":2092,"mtime":1786084510029,"results":"10290","hashOfConfig":"9493"},{"size":1504,"mtime":1786084510029,"results":"10291","hashOfConfig":"9493"},{"size":1826,"mtime":1786084510021,"results":"10292","hashOfConfig":"9493"},{"size":7443,"mtime":1786084510021,"results":"10293","hashOfConfig":"9493"},{"size":2924,"mtime":1786084510022,"results":"10294","hashOfConfig":"9493"},{"size":5719,"mtime":1786084510022,"results":"10295","hashOfConfig":"9493"},{"size":2961,"mtime":1786084510022,"results":"10296","hashOfConfig":"9493"},{"size":4392,"mtime":1786084510022,"results":"10297","hashOfConfig":"9493"},{"size":7846,"mtime":1786084510023,"results":"10298","hashOfConfig":"9493"},{"size":8805,"mtime":1786084510023,"results":"10299","hashOfConfig":"9493"},{"size":7614,"mtime":1786084510023,"results":"10300","hashOfConfig":"9493"},{"size":8931,"mtime":1786084510023,"results":"10301","hashOfConfig":"9493"},{"size":13254,"mtime":1786084510023,"results":"10302","hashOfConfig":"9493"},{"size":2220,"mtime":1786084510024,"results":"10303","hashOfConfig":"9493"},{"size":8298,"mtime":1786084510024,"results":"10304","hashOfConfig":"9493"},{"size":6186,"mtime":1786084510024,"results":"10305","hashOfConfig":"9493"},{"size":959,"mtime":1786084510024,"results":"10306","hashOfConfig":"9493"},{"size":8385,"mtime":1786084510024,"results":"10307","hashOfConfig":"9493"},{"size":6176,"mtime":1786084510025,"results":"10308","hashOfConfig":"9493"},{"size":10617,"mtime":1786084510025,"results":"10309","hashOfConfig":"9493"},{"size":8807,"mtime":1786084510025,"results":"10310","hashOfConfig":"9493"},{"size":4309,"mtime":1786084510025,"results":"10311","hashOfConfig":"9493"},{"size":6944,"mtime":1786084510026,"results":"10312","hashOfConfig":"9493"},{"size":876,"mtime":1786084510026,"results":"10313","hashOfConfig":"9493"},{"size":8986,"mtime":1786084510026,"results":"10314","hashOfConfig":"9493"},{"size":12159,"mtime":1786084510026,"results":"10315","hashOfConfig":"9493"},{"size":5268,"mtime":1786084510026,"results":"10316","hashOfConfig":"9493"},{"size":5594,"mtime":1786084510027,"results":"10317","hashOfConfig":"9493"},{"size":2818,"mtime":1786084510027,"results":"10318","hashOfConfig":"9493"},{"size":7980,"mtime":1786084510027,"results":"10319","hashOfConfig":"9493"},{"size":6884,"mtime":1786084510027,"results":"10320","hashOfConfig":"9493"},{"size":7390,"mtime":1786084510027,"results":"10321","hashOfConfig":"9493"},{"size":1395,"mtime":1786084510028,"results":"10322","hashOfConfig":"9493"},{"size":6944,"mtime":1786084510028,"results":"10323","hashOfConfig":"9493"},{"size":2976,"mtime":1786084510028,"results":"10324","hashOfConfig":"9493"},{"size":2039,"mtime":1786084510029,"results":"10325","hashOfConfig":"9493"},{"size":2436,"mtime":1786084510029,"results":"10326","hashOfConfig":"9493"},{"size":1999,"mtime":1786084510030,"results":"10327","hashOfConfig":"9493"},{"size":3121,"mtime":1786084510030,"results":"10328","hashOfConfig":"9493"},{"size":3771,"mtime":1786084510030,"results":"10329","hashOfConfig":"9493"},{"size":10718,"mtime":1786084510031,"results":"10330","hashOfConfig":"9493"},{"size":7795,"mtime":1786084510031,"results":"10331","hashOfConfig":"9493"},{"size":617,"mtime":1786084510031,"results":"10332","hashOfConfig":"9493"},{"size":1817,"mtime":1786084510031,"results":"10333","hashOfConfig":"9493"},{"size":1721,"mtime":1786084510031,"results":"10334","hashOfConfig":"9493"},{"size":5543,"mtime":1786084510032,"results":"10335","hashOfConfig":"9493"},{"size":7005,"mtime":1786084510032,"results":"10336","hashOfConfig":"9493"},{"size":2394,"mtime":1786084510032,"results":"10337","hashOfConfig":"9493"},{"size":1904,"mtime":1786084510032,"results":"10338","hashOfConfig":"9493"},{"size":3047,"mtime":1786084510032,"results":"10339","hashOfConfig":"9493"},{"size":1028,"mtime":1786084510033,"results":"10340","hashOfConfig":"9493"},{"size":495,"mtime":1786084510033,"results":"10341","hashOfConfig":"9493"},{"size":14039,"mtime":1786084510033,"results":"10342","hashOfConfig":"9493"},{"size":2121,"mtime":1786084510033,"results":"10343","hashOfConfig":"9493"},{"size":420,"mtime":1786084510033,"results":"10344","hashOfConfig":"9493"},{"size":1346,"mtime":1786084510034,"results":"10345","hashOfConfig":"9493"},{"size":258,"mtime":1786084510034,"results":"10346","hashOfConfig":"9493"},{"size":65,"mtime":1786084510034,"results":"10347","hashOfConfig":"9493"},{"size":1674,"mtime":1786084510034,"results":"10348","hashOfConfig":"9493"},{"size":2750,"mtime":1786084510034,"results":"10349","hashOfConfig":"9493"},{"size":1916,"mtime":1786084510034,"results":"10350","hashOfConfig":"9493"},{"size":1798,"mtime":1786084510034,"results":"10351","hashOfConfig":"9493"},{"size":1343,"mtime":1786084510035,"results":"10352","hashOfConfig":"9493"},{"size":1137,"mtime":1786084510035,"results":"10353","hashOfConfig":"9493"},{"size":517,"mtime":1786084510035,"results":"10354","hashOfConfig":"9493"},{"size":2546,"mtime":1786084510035,"results":"10355","hashOfConfig":"9493"},{"size":1677,"mtime":1786084510035,"results":"10356","hashOfConfig":"9493"},{"size":874,"mtime":1786084510036,"results":"10357","hashOfConfig":"9493"},{"size":1338,"mtime":1786084510036,"results":"10358","hashOfConfig":"9493"},{"size":1595,"mtime":1786084510036,"results":"10359","hashOfConfig":"9493"},{"size":1793,"mtime":1786084510036,"results":"10360","hashOfConfig":"9493"},{"size":1360,"mtime":1786084510037,"results":"10361","hashOfConfig":"9493"},{"size":1985,"mtime":1786084510036,"results":"10362","hashOfConfig":"9493"},{"size":4647,"mtime":1786084510037,"results":"10363","hashOfConfig":"9493"},{"size":8032,"mtime":1786084510037,"results":"10364","hashOfConfig":"9493"},{"size":6097,"mtime":1786084510037,"results":"10365","hashOfConfig":"9493"},{"size":1999,"mtime":1786084510037,"results":"10366","hashOfConfig":"9493"},{"size":1245,"mtime":1786084510037,"results":"10367","hashOfConfig":"9493"},{"size":1830,"mtime":1786084510038,"results":"10368","hashOfConfig":"9493"},{"size":1184,"mtime":1786084510038,"results":"10369","hashOfConfig":"9493"},{"size":430,"mtime":1786084510038,"results":"10370","hashOfConfig":"9493"},{"size":3655,"mtime":1786084510038,"results":"10371","hashOfConfig":"9493"},{"size":783,"mtime":1786084510038,"results":"10372","hashOfConfig":"9493"},{"size":3406,"mtime":1786084510038,"results":"10373","hashOfConfig":"9493"},{"size":2720,"mtime":1786084510039,"results":"10374","hashOfConfig":"9493"},{"size":1213,"mtime":1786084510039,"results":"10375","hashOfConfig":"9493"},{"size":2321,"mtime":1786084510039,"results":"10376","hashOfConfig":"9493"},{"size":1049,"mtime":1786084510039,"results":"10377","hashOfConfig":"9493"},{"size":665,"mtime":1786084510039,"results":"10378","hashOfConfig":"9493"},{"size":887,"mtime":1786084510039,"results":"10379","hashOfConfig":"9493"},{"size":1797,"mtime":1786084510040,"results":"10380","hashOfConfig":"9493"},{"size":1400,"mtime":1786084510040,"results":"10381","hashOfConfig":"9493"},{"size":654,"mtime":1786084510040,"results":"10382","hashOfConfig":"9493"},{"size":958,"mtime":1786084510040,"results":"10383","hashOfConfig":"9493"},{"size":1106,"mtime":1786084510040,"results":"10384","hashOfConfig":"9493"},{"size":1690,"mtime":1786084510040,"results":"10385","hashOfConfig":"9493"},{"size":1649,"mtime":1786084510041,"results":"10386","hashOfConfig":"9493"},{"size":1333,"mtime":1786084510041,"results":"10387","hashOfConfig":"9493"},{"size":2266,"mtime":1786084510041,"results":"10388","hashOfConfig":"9493"},{"size":1091,"mtime":1786084510041,"results":"10389","hashOfConfig":"9493"},{"size":942,"mtime":1786084510041,"results":"10390","hashOfConfig":"9493"},{"size":1041,"mtime":1786084510041,"results":"10391","hashOfConfig":"9493"},{"size":1012,"mtime":1786084510042,"results":"10392","hashOfConfig":"9493"},{"size":2007,"mtime":1786084510042,"results":"10393","hashOfConfig":"9493"},{"size":2424,"mtime":1786084510042,"results":"10394","hashOfConfig":"9493"},{"size":2071,"mtime":1786084510042,"results":"10395","hashOfConfig":"9493"},{"size":3688,"mtime":1786084510042,"results":"10396","hashOfConfig":"9493"},{"size":1205,"mtime":1786084510042,"results":"10397","hashOfConfig":"9493"},{"size":2118,"mtime":1786084510043,"results":"10398","hashOfConfig":"9493"},{"size":1625,"mtime":1786084510043,"results":"10399","hashOfConfig":"9493"},{"size":929,"mtime":1786084510043,"results":"10400","hashOfConfig":"9493"},{"size":586,"mtime":1786084510043,"results":"10401","hashOfConfig":"9493"},{"size":836,"mtime":1786084510043,"results":"10402","hashOfConfig":"9493"},{"size":1380,"mtime":1786084510044,"results":"10403","hashOfConfig":"9493"},{"size":259,"mtime":1786084510044,"results":"10404","hashOfConfig":"9493"},{"size":2491,"mtime":1786084510044,"results":"10405","hashOfConfig":"9493"},{"size":4916,"mtime":1786084510044,"results":"10406","hashOfConfig":"9493"},{"size":9102,"mtime":1786084510044,"results":"10407","hashOfConfig":"9493"},{"size":4412,"mtime":1786084510045,"results":"10408","hashOfConfig":"9493"},{"size":21492,"mtime":1786084510045,"results":"10409","hashOfConfig":"9493"},{"size":5205,"mtime":1786084510045,"results":"10410","hashOfConfig":"9493"},{"size":1919,"mtime":1786084510045,"results":"10411","hashOfConfig":"9493"},{"size":1085,"mtime":1786084510046,"results":"10412","hashOfConfig":"9493"},{"size":1046,"mtime":1786084510046,"results":"10413","hashOfConfig":"9493"},{"size":7357,"mtime":1786084510046,"results":"10414","hashOfConfig":"9493"},{"size":1772,"mtime":1786084510046,"results":"10415","hashOfConfig":"9493"},{"size":2560,"mtime":1786084510046,"results":"10416","hashOfConfig":"9493"},{"size":2775,"mtime":1786084510046,"results":"10417","hashOfConfig":"9493"},{"size":2450,"mtime":1786084510047,"results":"10418","hashOfConfig":"9493"},{"size":1295,"mtime":1786084510047,"results":"10419","hashOfConfig":"9493"},{"size":5278,"mtime":1786084510047,"results":"10420","hashOfConfig":"9493"},{"size":2332,"mtime":1786084510047,"results":"10421","hashOfConfig":"9493"},{"size":1974,"mtime":1786084510047,"results":"10422","hashOfConfig":"9493"},{"size":2465,"mtime":1786084510048,"results":"10423","hashOfConfig":"9493"},{"size":1530,"mtime":1786084510048,"results":"10424","hashOfConfig":"9493"},{"size":4279,"mtime":1786084510048,"results":"10425","hashOfConfig":"9493"},{"size":4569,"mtime":1786084510048,"results":"10426","hashOfConfig":"9493"},{"size":1871,"mtime":1786084510049,"results":"10427","hashOfConfig":"9493"},{"size":2219,"mtime":1786084510049,"results":"10428","hashOfConfig":"9493"},{"size":1507,"mtime":1786084510049,"results":"10429","hashOfConfig":"9493"},{"size":601,"mtime":1786084510049,"results":"10430","hashOfConfig":"9493"},{"size":1502,"mtime":1786084510049,"results":"10431","hashOfConfig":"9493"},{"size":3145,"mtime":1786084510049,"results":"10432","hashOfConfig":"9493"},{"size":1878,"mtime":1786084510049,"results":"10433","hashOfConfig":"9493"},{"size":923,"mtime":1786084510050,"results":"10434","hashOfConfig":"9493"},{"size":2733,"mtime":1786084510050,"results":"10435","hashOfConfig":"9493"},{"size":714,"mtime":1786084510050,"results":"10436","hashOfConfig":"9493"},{"size":684,"mtime":1786084510050,"results":"10437","hashOfConfig":"9493"},{"size":672,"mtime":1786084510051,"results":"10438","hashOfConfig":"9493"},{"size":1842,"mtime":1786084510051,"results":"10439","hashOfConfig":"9493"},{"size":1834,"mtime":1786084510051,"results":"10440","hashOfConfig":"9493"},{"size":4422,"mtime":1786084510051,"results":"10441","hashOfConfig":"9493"},{"size":1514,"mtime":1786084510051,"results":"10442","hashOfConfig":"9493"},{"size":4808,"mtime":1786084510052,"results":"10443","hashOfConfig":"9493"},{"size":3910,"mtime":1786084510052,"results":"10444","hashOfConfig":"9493"},{"size":4188,"mtime":1786084510052,"results":"10445","hashOfConfig":"9493"},{"size":2795,"mtime":1786084510052,"results":"10446","hashOfConfig":"9493"},{"size":2592,"mtime":1786084510052,"results":"10447","hashOfConfig":"9493"},{"size":6039,"mtime":1786084510052,"results":"10448","hashOfConfig":"9493"},{"size":2803,"mtime":1786084510053,"results":"10449","hashOfConfig":"9493"},{"size":2038,"mtime":1786084510053,"results":"10450","hashOfConfig":"9493"},{"size":5914,"mtime":1786084510053,"results":"10451","hashOfConfig":"9493"},{"size":3548,"mtime":1786084510054,"results":"10452","hashOfConfig":"9493"},{"size":9311,"mtime":1786084510053,"results":"10453","hashOfConfig":"9493"},{"size":8153,"mtime":1786084510054,"results":"10454","hashOfConfig":"9493"},{"size":1141,"mtime":1786084510054,"results":"10455","hashOfConfig":"9493"},{"size":1859,"mtime":1786084510054,"results":"10456","hashOfConfig":"9493"},{"size":1381,"mtime":1786084510055,"results":"10457","hashOfConfig":"9493"},{"size":36056,"mtime":1786084510055,"results":"10458","hashOfConfig":"9493"},{"size":3471,"mtime":1786084510055,"results":"10459","hashOfConfig":"9493"},{"size":2939,"mtime":1786084510056,"results":"10460","hashOfConfig":"9493"},{"size":5835,"mtime":1786084510056,"results":"10461","hashOfConfig":"9493"},{"size":5348,"mtime":1786084510056,"results":"10462","hashOfConfig":"9493"},{"size":12371,"mtime":1786084510057,"results":"10463","hashOfConfig":"9493"},{"size":5052,"mtime":1786084510057,"results":"10464","hashOfConfig":"9493"},{"size":900,"mtime":1786084510057,"results":"10465","hashOfConfig":"9493"},{"size":4393,"mtime":1786084510057,"results":"10466","hashOfConfig":"9493"},{"size":24243,"mtime":1786084510058,"results":"10467","hashOfConfig":"9493"},{"size":10400,"mtime":1786084510058,"results":"10468","hashOfConfig":"9493"},{"size":1896,"mtime":1786084510058,"results":"10469","hashOfConfig":"9493"},{"size":4598,"mtime":1786084510058,"results":"10470","hashOfConfig":"9493"},{"size":4097,"mtime":1786084510059,"results":"10471","hashOfConfig":"9493"},{"size":4462,"mtime":1786084510059,"results":"10472","hashOfConfig":"9493"},{"size":4820,"mtime":1786084510059,"results":"10473","hashOfConfig":"9493"},{"size":7172,"mtime":1786084510060,"results":"10474","hashOfConfig":"9493"},{"size":4595,"mtime":1786084510060,"results":"10475","hashOfConfig":"9493"},{"size":4928,"mtime":1786084510060,"results":"10476","hashOfConfig":"9493"},{"size":6066,"mtime":1786084510061,"results":"10477","hashOfConfig":"9493"},{"size":5292,"mtime":1786084510061,"results":"10478","hashOfConfig":"9493"},{"size":7507,"mtime":1786084510061,"results":"10479","hashOfConfig":"9493"},{"size":1107,"mtime":1786084510062,"results":"10480","hashOfConfig":"9493"},{"size":3464,"mtime":1786084510062,"results":"10481","hashOfConfig":"9493"},{"size":1119,"mtime":1786084510062,"results":"10482","hashOfConfig":"9493"},{"size":2527,"mtime":1786084510062,"results":"10483","hashOfConfig":"9493"},{"size":1027,"mtime":1786084510062,"results":"10484","hashOfConfig":"9493"},{"size":3030,"mtime":1786084510062,"results":"10485","hashOfConfig":"9493"},{"size":1044,"mtime":1786084510063,"results":"10486","hashOfConfig":"9493"},{"size":1586,"mtime":1786084510063,"results":"10487","hashOfConfig":"9493"},{"size":495,"mtime":1786084510063,"results":"10488","hashOfConfig":"9493"},{"size":5378,"mtime":1786084510063,"results":"10489","hashOfConfig":"9493"},{"size":3055,"mtime":1786084510063,"results":"10490","hashOfConfig":"9493"},{"size":2494,"mtime":1786084510064,"results":"10491","hashOfConfig":"9493"},{"size":3202,"mtime":1786084510064,"results":"10492","hashOfConfig":"9493"},{"size":16755,"mtime":1786084510064,"results":"10493","hashOfConfig":"9493"},{"size":5758,"mtime":1786084510064,"results":"10494","hashOfConfig":"9493"},{"size":7551,"mtime":1786084510065,"results":"10495","hashOfConfig":"9493"},{"size":1201,"mtime":1786084510065,"results":"10496","hashOfConfig":"9493"},{"size":13348,"mtime":1786084510065,"results":"10497","hashOfConfig":"9493"},{"size":1941,"mtime":1786084510065,"results":"10498","hashOfConfig":"9493"},{"size":2900,"mtime":1786084510065,"results":"10499","hashOfConfig":"9493"},{"size":2373,"mtime":1786084510066,"results":"10500","hashOfConfig":"9493"},{"size":1395,"mtime":1786084510066,"results":"10501","hashOfConfig":"9493"},{"size":2195,"mtime":1786084510066,"results":"10502","hashOfConfig":"9493"},{"size":1388,"mtime":1786084510066,"results":"10503","hashOfConfig":"9493"},{"size":2768,"mtime":1786084510066,"results":"10504","hashOfConfig":"9493"},{"size":5531,"mtime":1786084510066,"results":"10505","hashOfConfig":"9493"},{"size":16573,"mtime":1786084510067,"results":"10506","hashOfConfig":"9493"},{"size":4152,"mtime":1786084510067,"results":"10507","hashOfConfig":"9493"},{"size":9975,"mtime":1786084510067,"results":"10508","hashOfConfig":"9493"},{"size":27484,"mtime":1786084510067,"results":"10509","hashOfConfig":"9493"},{"size":4377,"mtime":1786084510067,"results":"10510","hashOfConfig":"9493"},{"size":2351,"mtime":1786084510068,"results":"10511","hashOfConfig":"9493"},{"size":1919,"mtime":1786084510068,"results":"10512","hashOfConfig":"9493"},{"size":89395,"mtime":1786084510069,"results":"10513","hashOfConfig":"9493"},{"size":1482,"mtime":1786084510069,"results":"10514","hashOfConfig":"9493"},{"size":2876,"mtime":1786084510069,"results":"10515","hashOfConfig":"9493"},{"size":8761,"mtime":1786084510069,"results":"10516","hashOfConfig":"9493"},{"size":16003,"mtime":1786084510069,"results":"10517","hashOfConfig":"9493"},{"size":975,"mtime":1786084510070,"results":"10518","hashOfConfig":"9493"},{"size":22384,"mtime":1786084510070,"results":"10519","hashOfConfig":"9493"},{"size":606,"mtime":1786084510070,"results":"10520","hashOfConfig":"9493"},{"size":2016,"mtime":1786084510070,"results":"10521","hashOfConfig":"9493"},{"size":6849,"mtime":1786084510071,"results":"10522","hashOfConfig":"9493"},{"size":27942,"mtime":1786084510071,"results":"10523","hashOfConfig":"9493"},{"size":4502,"mtime":1786084510071,"results":"10524","hashOfConfig":"9493"},{"size":3192,"mtime":1786084510072,"results":"10525","hashOfConfig":"9493"},{"size":3629,"mtime":1786084510071,"results":"10526","hashOfConfig":"9493"},{"size":1707,"mtime":1786084510072,"results":"10527","hashOfConfig":"9493"},{"size":8507,"mtime":1786084510072,"results":"10528","hashOfConfig":"9493"},{"size":5932,"mtime":1786084510072,"results":"10529","hashOfConfig":"9493"},{"size":3264,"mtime":1786084510073,"results":"10530","hashOfConfig":"9493"},{"size":3767,"mtime":1786084510072,"results":"10531","hashOfConfig":"9493"},{"size":1725,"mtime":1786084510073,"results":"10532","hashOfConfig":"9493"},{"size":776,"mtime":1786084510073,"results":"10533","hashOfConfig":"9493"},{"size":3123,"mtime":1786084510073,"results":"10534","hashOfConfig":"9493"},{"size":3675,"mtime":1786084510073,"results":"10535","hashOfConfig":"9493"},{"size":1722,"mtime":1786084510073,"results":"10536","hashOfConfig":"9493"},{"size":3566,"mtime":1786084510074,"results":"10537","hashOfConfig":"9493"},{"size":1947,"mtime":1786084510074,"results":"10538","hashOfConfig":"9493"},{"size":4162,"mtime":1786084510074,"results":"10539","hashOfConfig":"9493"},{"size":1005,"mtime":1786084510074,"results":"10540","hashOfConfig":"9493"},{"size":1335,"mtime":1786084510074,"results":"10541","hashOfConfig":"9493"},{"size":515,"mtime":1786084510074,"results":"10542","hashOfConfig":"9493"},{"size":2147,"mtime":1786084510075,"results":"10543","hashOfConfig":"9493"},{"size":1151,"mtime":1786084510075,"results":"10544","hashOfConfig":"9493"},{"size":1732,"mtime":1786084510075,"results":"10545","hashOfConfig":"9493"},{"size":10121,"mtime":1786084510075,"results":"10546","hashOfConfig":"9493"},{"size":1496,"mtime":1786084510075,"results":"10547","hashOfConfig":"9493"},{"size":1556,"mtime":1786084510076,"results":"10548","hashOfConfig":"9493"},{"size":15186,"mtime":1786084510076,"results":"10549","hashOfConfig":"9493"},{"size":9595,"mtime":1786084510076,"results":"10550","hashOfConfig":"9493"},{"size":5205,"mtime":1786084510076,"results":"10551","hashOfConfig":"9493"},{"size":3814,"mtime":1786084510076,"results":"10552","hashOfConfig":"9493"},{"size":7544,"mtime":1786084510077,"results":"10553","hashOfConfig":"9493"},{"size":1872,"mtime":1786084510077,"results":"10554","hashOfConfig":"9493"},{"size":3389,"mtime":1786084510077,"results":"10555","hashOfConfig":"9493"},{"size":3840,"mtime":1786084510078,"results":"10556","hashOfConfig":"9493"},{"size":1952,"mtime":1786084510078,"results":"10557","hashOfConfig":"9493"},{"size":2639,"mtime":1786084510078,"results":"10558","hashOfConfig":"9493"},{"size":4556,"mtime":1786084510078,"results":"10559","hashOfConfig":"9493"},{"size":2419,"mtime":1786084510078,"results":"10560","hashOfConfig":"9493"},{"size":1677,"mtime":1786084510079,"results":"10561","hashOfConfig":"9493"},{"size":5725,"mtime":1786084510079,"results":"10562","hashOfConfig":"9493"},{"size":2476,"mtime":1786084510079,"results":"10563","hashOfConfig":"9493"},{"size":2689,"mtime":1786084510079,"results":"10564","hashOfConfig":"9493"},{"size":2946,"mtime":1786084510079,"results":"10565","hashOfConfig":"9493"},{"size":1491,"mtime":1786084510079,"results":"10566","hashOfConfig":"9493"},{"size":2941,"mtime":1786084510080,"results":"10567","hashOfConfig":"9493"},{"size":1857,"mtime":1786084510080,"results":"10568","hashOfConfig":"9493"},{"size":475,"mtime":1786084510080,"results":"10569","hashOfConfig":"9493"},{"size":3544,"mtime":1786084510080,"results":"10570","hashOfConfig":"9493"},{"size":2779,"mtime":1786084510080,"results":"10571","hashOfConfig":"9493"},{"size":2145,"mtime":1786084510081,"results":"10572","hashOfConfig":"9493"},{"size":2413,"mtime":1786084510081,"results":"10573","hashOfConfig":"9493"},{"size":1402,"mtime":1786084510081,"results":"10574","hashOfConfig":"9493"},{"size":9276,"mtime":1786084510081,"results":"10575","hashOfConfig":"9493"},{"size":492,"mtime":1786084510081,"results":"10576","hashOfConfig":"9493"},{"size":877,"mtime":1786084510082,"results":"10577","hashOfConfig":"9493"},{"size":7086,"mtime":1786084510082,"results":"10578","hashOfConfig":"9493"},{"size":1814,"mtime":1786084510082,"results":"10579","hashOfConfig":"9493"},{"size":2010,"mtime":1786084510082,"results":"10580","hashOfConfig":"9493"},{"size":973,"mtime":1786084510083,"results":"10581","hashOfConfig":"9493"},{"size":964,"mtime":1786084510083,"results":"10582","hashOfConfig":"9493"},{"size":262,"mtime":1786084510083,"results":"10583","hashOfConfig":"9493"},{"size":1914,"mtime":1786084510083,"results":"10584","hashOfConfig":"9493"},{"size":1338,"mtime":1786084510083,"results":"10585","hashOfConfig":"9493"},{"size":810,"mtime":1786084510083,"results":"10586","hashOfConfig":"9493"},{"size":1521,"mtime":1786084510084,"results":"10587","hashOfConfig":"9493"},{"size":809,"mtime":1786084510084,"results":"10588","hashOfConfig":"9493"},{"size":2928,"mtime":1786084510084,"results":"10589","hashOfConfig":"9493"},{"size":643,"mtime":1786084510084,"results":"10590","hashOfConfig":"9493"},{"size":1490,"mtime":1786084510084,"results":"10591","hashOfConfig":"9493"},{"size":4233,"mtime":1786084510084,"results":"10592","hashOfConfig":"9493"},{"size":2227,"mtime":1786084510085,"results":"10593","hashOfConfig":"9493"},{"size":1205,"mtime":1786084510085,"results":"10594","hashOfConfig":"9493"},{"size":973,"mtime":1786084510085,"results":"10595","hashOfConfig":"9493"},{"size":964,"mtime":1786084510085,"results":"10596","hashOfConfig":"9493"},{"size":259,"mtime":1786084510085,"results":"10597","hashOfConfig":"9493"},{"size":810,"mtime":1786084510085,"results":"10598","hashOfConfig":"9493"},{"size":808,"mtime":1786084510085,"results":"10599","hashOfConfig":"9493"},{"size":1591,"mtime":1786084510086,"results":"10600","hashOfConfig":"9493"},{"size":643,"mtime":1786084510086,"results":"10601","hashOfConfig":"9493"},{"size":1497,"mtime":1786084510086,"results":"10602","hashOfConfig":"9493"},{"size":1214,"mtime":1786084510086,"results":"10603","hashOfConfig":"9493"},{"size":974,"mtime":1786084510086,"results":"10604","hashOfConfig":"9493"},{"size":965,"mtime":1786084510086,"results":"10605","hashOfConfig":"9493"},{"size":260,"mtime":1786084510086,"results":"10606","hashOfConfig":"9493"},{"size":1353,"mtime":1786084510086,"results":"10607","hashOfConfig":"9493"},{"size":815,"mtime":1786084510087,"results":"10608","hashOfConfig":"9493"},{"size":813,"mtime":1786084510087,"results":"10609","hashOfConfig":"9493"},{"size":1647,"mtime":1786084510087,"results":"10610","hashOfConfig":"9493"},{"size":644,"mtime":1786084510087,"results":"10611","hashOfConfig":"9493"},{"size":1500,"mtime":1786084510087,"results":"10612","hashOfConfig":"9493"},{"size":1806,"mtime":1786084510087,"results":"10613","hashOfConfig":"9493"},{"size":3625,"mtime":1786084510087,"results":"10614","hashOfConfig":"9493"},{"size":1740,"mtime":1786084510088,"results":"10615","hashOfConfig":"9493"},{"size":7150,"mtime":1786084510088,"results":"10616","hashOfConfig":"9493"},{"size":1216,"mtime":1786084510088,"results":"10617","hashOfConfig":"9493"},{"size":1213,"mtime":1786084510088,"results":"10618","hashOfConfig":"9493"},{"size":971,"mtime":1786084510088,"results":"10619","hashOfConfig":"9493"},{"size":962,"mtime":1786084510088,"results":"10620","hashOfConfig":"9493"},{"size":257,"mtime":1786084510088,"results":"10621","hashOfConfig":"9493"},{"size":806,"mtime":1786084510089,"results":"10622","hashOfConfig":"9493"},{"size":804,"mtime":1786084510089,"results":"10623","hashOfConfig":"9493"},{"size":1583,"mtime":1786084510089,"results":"10624","hashOfConfig":"9493"},{"size":641,"mtime":1786084510089,"results":"10625","hashOfConfig":"9493"},{"size":1491,"mtime":1786084510089,"results":"10626","hashOfConfig":"9493"},{"size":1302,"mtime":1786084510089,"results":"10627","hashOfConfig":"9493"},{"size":969,"mtime":1786084510089,"results":"10628","hashOfConfig":"9493"},{"size":960,"mtime":1786084510090,"results":"10629","hashOfConfig":"9493"},{"size":255,"mtime":1786084510090,"results":"10630","hashOfConfig":"9493"},{"size":802,"mtime":1786084510090,"results":"10631","hashOfConfig":"9493"},{"size":800,"mtime":1786084510090,"results":"10632","hashOfConfig":"9493"},{"size":1575,"mtime":1786084510091,"results":"10633","hashOfConfig":"9493"},{"size":639,"mtime":1786084510091,"results":"10634","hashOfConfig":"9493"},{"size":1485,"mtime":1786084510091,"results":"10635","hashOfConfig":"9493"},{"size":1110,"mtime":1786084510091,"results":"10636","hashOfConfig":"9493"},{"size":741,"mtime":1786084510091,"results":"10637","hashOfConfig":"9493"},{"size":615,"mtime":1786084510092,"results":"10638","hashOfConfig":"9493"},{"size":2992,"mtime":1786084510092,"results":"10639","hashOfConfig":"9493"},{"size":3257,"mtime":1786084510092,"results":"10640","hashOfConfig":"9493"},{"size":5770,"mtime":1786084510092,"results":"10641","hashOfConfig":"9493"},{"size":2193,"mtime":1786084510092,"results":"10642","hashOfConfig":"9493"},{"size":4815,"mtime":1786084510092,"results":"10643","hashOfConfig":"9493"},{"size":4772,"mtime":1786084510093,"results":"10644","hashOfConfig":"9493"},{"size":1009,"mtime":1786084510093,"results":"10645","hashOfConfig":"9493"},{"size":1008,"mtime":1786084510093,"results":"10646","hashOfConfig":"9493"},{"size":4806,"mtime":1786084510093,"results":"10647","hashOfConfig":"9493"},{"size":2285,"mtime":1786084510093,"results":"10648","hashOfConfig":"9493"},{"size":1692,"mtime":1786084510093,"results":"10649","hashOfConfig":"9493"},{"size":57,"mtime":1786084510094,"results":"10650","hashOfConfig":"9493"},{"size":777,"mtime":1786084510094,"results":"10651","hashOfConfig":"9493"},{"size":631,"mtime":1786084510094,"results":"10652","hashOfConfig":"9493"},{"size":1703,"mtime":1786084510094,"results":"10653","hashOfConfig":"9493"},{"size":1772,"mtime":1786084510094,"results":"10654","hashOfConfig":"9493"},{"size":4479,"mtime":1786084510094,"results":"10655","hashOfConfig":"9493"},{"size":3368,"mtime":1786084510095,"results":"10656","hashOfConfig":"9493"},{"size":6472,"mtime":1786084510095,"results":"10657","hashOfConfig":"9493"},{"size":3734,"mtime":1786084510095,"results":"10658","hashOfConfig":"9493"},{"size":3889,"mtime":1786084510095,"results":"10659","hashOfConfig":"9493"},{"size":4094,"mtime":1786084510095,"results":"10660","hashOfConfig":"9493"},{"size":994,"mtime":1786084510096,"results":"10661","hashOfConfig":"9493"},{"size":2066,"mtime":1786084510096,"results":"10662","hashOfConfig":"9493"},{"size":3574,"mtime":1786084510096,"results":"10663","hashOfConfig":"9493"},{"size":2460,"mtime":1786084510096,"results":"10664","hashOfConfig":"9493"},{"size":559,"mtime":1786084510097,"results":"10665","hashOfConfig":"9493"},{"size":2517,"mtime":1786084510097,"results":"10666","hashOfConfig":"9493"},{"size":2062,"mtime":1786084510097,"results":"10667","hashOfConfig":"9493"},{"size":8700,"mtime":1786084510097,"results":"10668","hashOfConfig":"9493"},{"size":5531,"mtime":1786084510098,"results":"10669","hashOfConfig":"9493"},{"size":2586,"mtime":1786084510098,"results":"10670","hashOfConfig":"9493"},{"size":2717,"mtime":1786084510098,"results":"10671","hashOfConfig":"9493"},{"size":3410,"mtime":1786084510098,"results":"10672","hashOfConfig":"9493"},{"size":2449,"mtime":1786084510098,"results":"10673","hashOfConfig":"9493"},{"size":527,"mtime":1786084510099,"results":"10674","hashOfConfig":"9493"},{"size":992,"mtime":1786084510099,"results":"10675","hashOfConfig":"9493"},{"size":1859,"mtime":1786084510099,"results":"10676","hashOfConfig":"9493"},{"size":4086,"mtime":1786084510099,"results":"10677","hashOfConfig":"9493"},{"size":2508,"mtime":1786084510099,"results":"10678","hashOfConfig":"9493"},{"size":5101,"mtime":1786084510099,"results":"10679","hashOfConfig":"9493"},{"size":2558,"mtime":1786084510100,"results":"10680","hashOfConfig":"9493"},{"size":2093,"mtime":1786084510100,"results":"10681","hashOfConfig":"9493"},{"size":1712,"mtime":1786084510100,"results":"10682","hashOfConfig":"9493"},{"size":2187,"mtime":1786084510100,"results":"10683","hashOfConfig":"9493"},{"size":1636,"mtime":1786084510100,"results":"10684","hashOfConfig":"9493"},{"size":706,"mtime":1786084510100,"results":"10685","hashOfConfig":"9493"},{"size":1367,"mtime":1786084510100,"results":"10686","hashOfConfig":"9493"},{"size":5781,"mtime":1786084510101,"results":"10687","hashOfConfig":"9493"},{"size":2643,"mtime":1786084510101,"results":"10688","hashOfConfig":"9493"},{"size":7566,"mtime":1786084510101,"results":"10689","hashOfConfig":"9493"},{"size":14014,"mtime":1786084510101,"results":"10690","hashOfConfig":"9493"},{"size":9648,"mtime":1786084510101,"results":"10691","hashOfConfig":"9493"},{"size":2582,"mtime":1786084510102,"results":"10692","hashOfConfig":"9493"},{"size":9672,"mtime":1786084510102,"results":"10693","hashOfConfig":"9493"},{"size":12589,"mtime":1786084510102,"results":"10694","hashOfConfig":"9493"},{"size":750,"mtime":1786084510102,"results":"10695","hashOfConfig":"9493"},{"size":637,"mtime":1786084510102,"results":"10696","hashOfConfig":"9493"},{"size":869,"mtime":1786084510103,"results":"10697","hashOfConfig":"9493"},{"size":641,"mtime":1786084510103,"results":"10698","hashOfConfig":"9493"},{"size":991,"mtime":1786084510103,"results":"10699","hashOfConfig":"9493"},{"size":2309,"mtime":1786084510103,"results":"10700","hashOfConfig":"9493"},{"size":1014,"mtime":1786084510103,"results":"10701","hashOfConfig":"9493"},{"size":3543,"mtime":1786084510103,"results":"10702","hashOfConfig":"9493"},{"size":708,"mtime":1786084510103,"results":"10703","hashOfConfig":"9493"},{"size":4147,"mtime":1786084510103,"results":"10704","hashOfConfig":"9493"},{"size":1356,"mtime":1786084510104,"results":"10705","hashOfConfig":"9493"},{"size":4356,"mtime":1786084510104,"results":"10706","hashOfConfig":"9493"},{"size":2447,"mtime":1786084510104,"results":"10707","hashOfConfig":"9493"},{"size":1378,"mtime":1786084510104,"results":"10708","hashOfConfig":"9493"},{"size":4076,"mtime":1786084510104,"results":"10709","hashOfConfig":"9493"},{"size":4059,"mtime":1786084510104,"results":"10710","hashOfConfig":"9493"},{"size":20116,"mtime":1786084510104,"results":"10711","hashOfConfig":"9493"},{"size":1823,"mtime":1786084510105,"results":"10712","hashOfConfig":"9493"},{"size":4213,"mtime":1786084510105,"results":"10713","hashOfConfig":"9493"},{"size":1966,"mtime":1786084510105,"results":"10714","hashOfConfig":"9493"},{"size":2239,"mtime":1786084510105,"results":"10715","hashOfConfig":"9493"},{"size":442,"mtime":1786084510105,"results":"10716","hashOfConfig":"9493"},{"size":2789,"mtime":1786084510105,"results":"10717","hashOfConfig":"9493"},{"size":6170,"mtime":1786084510106,"results":"10718","hashOfConfig":"9493"},{"size":5330,"mtime":1786084510106,"results":"10719","hashOfConfig":"9493"},{"size":4791,"mtime":1786084510106,"results":"10720","hashOfConfig":"9493"},{"size":2335,"mtime":1786084510106,"results":"10721","hashOfConfig":"9493"},{"size":1785,"mtime":1786084510106,"results":"10722","hashOfConfig":"9493"},{"size":2115,"mtime":1786084510107,"results":"10723","hashOfConfig":"9493"},{"size":2173,"mtime":1786084510107,"results":"10724","hashOfConfig":"9493"},{"size":2585,"mtime":1786084510107,"results":"10725","hashOfConfig":"9493"},{"size":2247,"mtime":1786084510107,"results":"10726","hashOfConfig":"9493"},{"size":1032,"mtime":1786084510107,"results":"10727","hashOfConfig":"9493"},{"size":2567,"mtime":1786084510107,"results":"10728","hashOfConfig":"9493"},{"size":1585,"mtime":1786084510107,"results":"10729","hashOfConfig":"9493"},{"size":8524,"mtime":1786084510108,"results":"10730","hashOfConfig":"9493"},{"size":1400,"mtime":1786084510108,"results":"10731","hashOfConfig":"9493"},{"size":1717,"mtime":1786084510108,"results":"10732","hashOfConfig":"9493"},{"size":2580,"mtime":1786084510108,"results":"10733","hashOfConfig":"9493"},{"size":1021,"mtime":1786084510108,"results":"10734","hashOfConfig":"9493"},{"size":3031,"mtime":1786084510108,"results":"10735","hashOfConfig":"9493"},{"size":13002,"mtime":1786084510109,"results":"10736","hashOfConfig":"9493"},{"size":383,"mtime":1786084510109,"results":"10737","hashOfConfig":"9493"},{"size":1365,"mtime":1786084510109,"results":"10738","hashOfConfig":"9493"},{"size":1345,"mtime":1786084510109,"results":"10739","hashOfConfig":"9493"},{"size":1139,"mtime":1786084510110,"results":"10740","hashOfConfig":"9493"},{"size":1968,"mtime":1786084510110,"results":"10741","hashOfConfig":"9493"},{"size":2644,"mtime":1786084510110,"results":"10742","hashOfConfig":"9493"},{"size":2002,"mtime":1786084510110,"results":"10743","hashOfConfig":"9493"},{"size":2174,"mtime":1786084510110,"results":"10744","hashOfConfig":"9493"},{"size":871,"mtime":1786084510110,"results":"10745","hashOfConfig":"9493"},{"size":2438,"mtime":1786084510110,"results":"10746","hashOfConfig":"9493"},{"size":1043,"mtime":1786084510111,"results":"10747","hashOfConfig":"9493"},{"size":1011,"mtime":1786084510111,"results":"10748","hashOfConfig":"9493"},{"size":4958,"mtime":1786084510111,"results":"10749","hashOfConfig":"9493"},{"size":1623,"mtime":1786084510111,"results":"10750","hashOfConfig":"9493"},{"size":3285,"mtime":1786084510111,"results":"10751","hashOfConfig":"9493"},{"size":1987,"mtime":1786084510111,"results":"10752","hashOfConfig":"9493"},{"size":5853,"mtime":1786084510112,"results":"10753","hashOfConfig":"9493"},{"size":3375,"mtime":1786084510112,"results":"10754","hashOfConfig":"9493"},{"size":3007,"mtime":1786084510112,"results":"10755","hashOfConfig":"9493"},{"size":3018,"mtime":1786084510112,"results":"10756","hashOfConfig":"9493"},{"size":2211,"mtime":1786084510112,"results":"10757","hashOfConfig":"9493"},{"size":2910,"mtime":1786084510112,"results":"10758","hashOfConfig":"9493"},{"size":1600,"mtime":1786084510113,"results":"10759","hashOfConfig":"9493"},{"size":3043,"mtime":1786084510113,"results":"10760","hashOfConfig":"9493"},{"size":1423,"mtime":1786084510113,"results":"10761","hashOfConfig":"9493"},{"size":2051,"mtime":1786084510113,"results":"10762","hashOfConfig":"9493"},{"size":3339,"mtime":1786084510113,"results":"10763","hashOfConfig":"9493"},{"size":2900,"mtime":1786084510113,"results":"10764","hashOfConfig":"9493"},{"size":5272,"mtime":1786084510114,"results":"10765","hashOfConfig":"9493"},{"size":1851,"mtime":1786084510114,"results":"10766","hashOfConfig":"9493"},{"size":2059,"mtime":1786084510114,"results":"10767","hashOfConfig":"9493"},{"size":710,"mtime":1786084510114,"results":"10768","hashOfConfig":"9493"},{"size":1527,"mtime":1786084510114,"results":"10769","hashOfConfig":"9493"},{"size":1880,"mtime":1786084510114,"results":"10770","hashOfConfig":"9493"},{"size":2178,"mtime":1786084510115,"results":"10771","hashOfConfig":"9493"},{"size":3724,"mtime":1786084510115,"results":"10772","hashOfConfig":"9493"},{"size":1690,"mtime":1786084510115,"results":"10773","hashOfConfig":"9493"},{"size":4239,"mtime":1786084510115,"results":"10774","hashOfConfig":"9493"},{"size":1308,"mtime":1786084510115,"results":"10775","hashOfConfig":"9493"},{"size":1763,"mtime":1786084510115,"results":"10776","hashOfConfig":"9493"},{"size":4722,"mtime":1786084510116,"results":"10777","hashOfConfig":"9493"},{"size":1288,"mtime":1786084510116,"results":"10778","hashOfConfig":"9493"},{"size":6998,"mtime":1786084510116,"results":"10779","hashOfConfig":"9493"},{"size":1883,"mtime":1786084510116,"results":"10780","hashOfConfig":"9493"},{"size":1890,"mtime":1786084510116,"results":"10781","hashOfConfig":"9493"},{"size":635,"mtime":1786084510117,"results":"10782","hashOfConfig":"9493"},{"size":821,"mtime":1786084510117,"results":"10783","hashOfConfig":"9493"},{"size":822,"mtime":1786084510117,"results":"10784","hashOfConfig":"9493"},{"size":1620,"mtime":1786084510117,"results":"10785","hashOfConfig":"9493"},{"size":814,"mtime":1786084510117,"results":"10786","hashOfConfig":"9493"},{"size":636,"mtime":1786084510117,"results":"10787","hashOfConfig":"9493"},{"size":1278,"mtime":1786084510117,"results":"10788","hashOfConfig":"9493"},{"size":900,"mtime":1786084510118,"results":"10789","hashOfConfig":"9493"},{"size":3735,"mtime":1786084510118,"results":"10790","hashOfConfig":"9493"},{"size":1384,"mtime":1786084510118,"results":"10791","hashOfConfig":"9493"},{"size":32641,"mtime":1786084510119,"results":"10792","hashOfConfig":"9493"},{"size":1450,"mtime":1786084510119,"results":"10793","hashOfConfig":"9493"},{"size":2888,"mtime":1786084510119,"results":"10794","hashOfConfig":"9493"},{"size":1142,"mtime":1786084510119,"results":"10795","hashOfConfig":"9493"},{"size":714,"mtime":1786084510119,"results":"10796","hashOfConfig":"9493"},{"size":7038,"mtime":1786084510119,"results":"10797","hashOfConfig":"9493"},{"size":2517,"mtime":1786084510120,"results":"10798","hashOfConfig":"9493"},{"size":1546,"mtime":1786084510120,"results":"10799","hashOfConfig":"9493"},{"size":1261,"mtime":1786084510120,"results":"10800","hashOfConfig":"9493"},{"size":1982,"mtime":1786084510120,"results":"10801","hashOfConfig":"9493"},{"size":1725,"mtime":1786084510120,"results":"10802","hashOfConfig":"9493"},{"size":1705,"mtime":1786084510120,"results":"10803","hashOfConfig":"9493"},{"size":563,"mtime":1786084510121,"results":"10804","hashOfConfig":"9493"},{"size":550,"mtime":1786084510121,"results":"10805","hashOfConfig":"9493"},{"size":1979,"mtime":1786084510121,"results":"10806","hashOfConfig":"9493"},{"size":512,"mtime":1786084510121,"results":"10807","hashOfConfig":"9493"},{"size":1480,"mtime":1786084510121,"results":"10808","hashOfConfig":"9493"},{"size":1092,"mtime":1786084510121,"results":"10809","hashOfConfig":"9493"},{"size":1619,"mtime":1786084510122,"results":"10810","hashOfConfig":"9493"},{"size":5743,"mtime":1786084510122,"results":"10811","hashOfConfig":"9493"},{"size":620,"mtime":1786084510122,"results":"10812","hashOfConfig":"9493"},{"size":4013,"mtime":1786084510122,"results":"10813","hashOfConfig":"9493"},{"size":834,"mtime":1786084510122,"results":"10814","hashOfConfig":"9493"},{"size":3354,"mtime":1786084510122,"results":"10815","hashOfConfig":"9493"},{"size":2139,"mtime":1786084510123,"results":"10816","hashOfConfig":"9493"},{"size":1659,"mtime":1786084510123,"results":"10817","hashOfConfig":"9493"},{"size":910,"mtime":1786084510123,"results":"10818","hashOfConfig":"9493"},{"size":4444,"mtime":1786084510123,"results":"10819","hashOfConfig":"9493"},{"size":4320,"mtime":1786084510123,"results":"10820","hashOfConfig":"9493"},{"size":802,"mtime":1786084510123,"results":"10821","hashOfConfig":"9493"},{"size":1017,"mtime":1786084510123,"results":"10822","hashOfConfig":"9493"},{"size":1966,"mtime":1786084510124,"results":"10823","hashOfConfig":"9493"},{"size":2669,"mtime":1786084510124,"results":"10824","hashOfConfig":"9493"},{"size":2852,"mtime":1786084510124,"results":"10825","hashOfConfig":"9493"},{"size":7247,"mtime":1786084510124,"results":"10826","hashOfConfig":"9493"},{"size":5680,"mtime":1786084510124,"results":"10827","hashOfConfig":"9493"},{"size":1523,"mtime":1786084510125,"results":"10828","hashOfConfig":"9493"},{"size":938,"mtime":1786084510125,"results":"10829","hashOfConfig":"9493"},{"size":4281,"mtime":1786084510125,"results":"10830","hashOfConfig":"9493"},{"size":6375,"mtime":1786084510125,"results":"10831","hashOfConfig":"9493"},{"size":3955,"mtime":1786084510126,"results":"10832","hashOfConfig":"9493"},{"size":1999,"mtime":1786084510126,"results":"10833","hashOfConfig":"9493"},{"size":1562,"mtime":1786084510126,"results":"10834","hashOfConfig":"9493"},{"size":2224,"mtime":1786084510126,"results":"10835","hashOfConfig":"9493"},{"size":986,"mtime":1786084510126,"results":"10836","hashOfConfig":"9493"},{"size":1035,"mtime":1786084510126,"results":"10837","hashOfConfig":"9493"},{"size":1316,"mtime":1786084510127,"results":"10838","hashOfConfig":"9493"},{"size":3466,"mtime":1786084510127,"results":"10839","hashOfConfig":"9493"},{"size":10109,"mtime":1786084510127,"results":"10840","hashOfConfig":"9493"},{"size":1752,"mtime":1786084510127,"results":"10841","hashOfConfig":"9493"},{"size":5031,"mtime":1786084510127,"results":"10842","hashOfConfig":"9493"},{"size":2491,"mtime":1786084510127,"results":"10843","hashOfConfig":"9493"},{"size":4488,"mtime":1786084510128,"results":"10844","hashOfConfig":"9493"},{"size":5588,"mtime":1786084510128,"results":"10845","hashOfConfig":"9493"},{"size":3122,"mtime":1786084510128,"results":"10846","hashOfConfig":"9493"},{"size":1518,"mtime":1786084510128,"results":"10847","hashOfConfig":"9493"},{"size":1978,"mtime":1786084510128,"results":"10848","hashOfConfig":"9493"},{"size":3488,"mtime":1786084510129,"results":"10849","hashOfConfig":"9493"},{"size":20062,"mtime":1786084510129,"results":"10850","hashOfConfig":"9493"},{"size":11571,"mtime":1786084510129,"results":"10851","hashOfConfig":"9493"},{"size":9933,"mtime":1786084510129,"results":"10852","hashOfConfig":"9493"},{"size":4131,"mtime":1786084510130,"results":"10853","hashOfConfig":"9493"},{"size":2870,"mtime":1786084510130,"results":"10854","hashOfConfig":"9493"},{"size":1712,"mtime":1786084510130,"results":"10855","hashOfConfig":"9493"},{"size":706,"mtime":1786084510130,"results":"10856","hashOfConfig":"9493"},{"size":1817,"mtime":1786084510130,"results":"10857","hashOfConfig":"9493"},{"size":1142,"mtime":1786084510130,"results":"10858","hashOfConfig":"9493"},{"size":901,"mtime":1786084510130,"results":"10859","hashOfConfig":"9493"},{"size":2575,"mtime":1786084510131,"results":"10860","hashOfConfig":"9493"},{"size":2095,"mtime":1786084510131,"results":"10861","hashOfConfig":"9493"},{"size":1558,"mtime":1786084510131,"results":"10862","hashOfConfig":"9493"},{"size":6473,"mtime":1786084510131,"results":"10863","hashOfConfig":"9493"},{"size":2862,"mtime":1786084510131,"results":"10864","hashOfConfig":"9493"},{"size":1202,"mtime":1786084510131,"results":"10865","hashOfConfig":"9493"},{"size":1827,"mtime":1786084510131,"results":"10866","hashOfConfig":"9493"},{"size":66949,"mtime":1786084510132,"results":"10867","hashOfConfig":"9493"},{"size":15663,"mtime":1786084510132,"results":"10868","hashOfConfig":"9493"},{"size":2888,"mtime":1786084510132,"results":"10869","hashOfConfig":"9493"},{"size":4454,"mtime":1786084510133,"results":"10870","hashOfConfig":"9493"},{"size":1838,"mtime":1786084510133,"results":"10871","hashOfConfig":"9493"},{"size":4085,"mtime":1786084510133,"results":"10872","hashOfConfig":"9493"},{"size":6606,"mtime":1786084510133,"results":"10873","hashOfConfig":"9493"},{"size":2739,"mtime":1786084510133,"results":"10874","hashOfConfig":"9493"},{"size":10325,"mtime":1786084510133,"results":"10875","hashOfConfig":"9493"},{"size":2613,"mtime":1786084510133,"results":"10876","hashOfConfig":"9493"},{"size":2154,"mtime":1786084510133,"results":"10877","hashOfConfig":"9493"},{"size":3026,"mtime":1786084510133,"results":"10878","hashOfConfig":"9493"},{"size":1676,"mtime":1786084510133,"results":"10879","hashOfConfig":"9493"},{"size":2495,"mtime":1786084510134,"results":"10880","hashOfConfig":"9493"},{"size":965,"mtime":1786084510134,"results":"10881","hashOfConfig":"9493"},{"size":1893,"mtime":1786084510134,"results":"10882","hashOfConfig":"9493"},{"size":2535,"mtime":1786084510134,"results":"10883","hashOfConfig":"9493"},{"size":3968,"mtime":1786084510134,"results":"10884","hashOfConfig":"9493"},{"size":2455,"mtime":1786084510134,"results":"10885","hashOfConfig":"9493"},{"size":6822,"mtime":1786084510134,"results":"10886","hashOfConfig":"9493"},{"size":3434,"mtime":1786084510135,"results":"10887","hashOfConfig":"9493"},{"size":3270,"mtime":1786084510135,"results":"10888","hashOfConfig":"9493"},{"size":4243,"mtime":1786084510135,"results":"10889","hashOfConfig":"9493"},{"size":1926,"mtime":1786084510135,"results":"10890","hashOfConfig":"9493"},{"size":3765,"mtime":1786084510135,"results":"10891","hashOfConfig":"9493"},{"size":4368,"mtime":1786084510135,"results":"10892","hashOfConfig":"9493"},{"size":1230,"mtime":1786084510136,"results":"10893","hashOfConfig":"9493"},{"size":883,"mtime":1786084510136,"results":"10894","hashOfConfig":"9493"},{"size":1561,"mtime":1786084510136,"results":"10895","hashOfConfig":"9493"},{"size":4327,"mtime":1786084510136,"results":"10896","hashOfConfig":"9493"},{"size":12192,"mtime":1786084510136,"results":"10897","hashOfConfig":"9493"},{"size":1244,"mtime":1786084510137,"results":"10898","hashOfConfig":"9493"},{"size":2816,"mtime":1786084510137,"results":"10899","hashOfConfig":"9493"},{"size":13182,"mtime":1786084510137,"results":"10900","hashOfConfig":"9493"},{"size":4121,"mtime":1786084510137,"results":"10901","hashOfConfig":"9493"},{"size":856,"mtime":1786084510137,"results":"10902","hashOfConfig":"9493"},{"size":6309,"mtime":1786084510137,"results":"10903","hashOfConfig":"9493"},{"size":850,"mtime":1786084510137,"results":"10904","hashOfConfig":"9493"},{"size":4648,"mtime":1786084510138,"results":"10905","hashOfConfig":"9493"},{"size":528,"mtime":1786084510138,"results":"10906","hashOfConfig":"9493"},{"size":2096,"mtime":1786084510138,"results":"10907","hashOfConfig":"9493"},{"size":12524,"mtime":1786084510138,"results":"10908","hashOfConfig":"9493"},{"size":5052,"mtime":1786084510138,"results":"10909","hashOfConfig":"9493"},{"size":301,"mtime":1786084510138,"results":"10910","hashOfConfig":"9493"},{"size":10621,"mtime":1786084510139,"results":"10911","hashOfConfig":"9493"},{"size":7988,"mtime":1786084510139,"results":"10912","hashOfConfig":"9493"},{"size":353,"mtime":1786084510139,"results":"10913","hashOfConfig":"9493"},{"size":494,"mtime":1786084510139,"results":"10914","hashOfConfig":"9493"},{"size":1700,"mtime":1786084510140,"results":"10915","hashOfConfig":"9493"},{"size":157,"mtime":1786084510140,"results":"10916","hashOfConfig":"9493"},{"size":138,"mtime":1786084510140,"results":"10917","hashOfConfig":"9493"},{"size":14319,"mtime":1786084510140,"results":"10918","hashOfConfig":"9493"},{"size":376,"mtime":1786084510140,"results":"10919","hashOfConfig":"9493"},{"size":487,"mtime":1786084510140,"results":"10920","hashOfConfig":"9493"},{"size":616,"mtime":1786084510140,"results":"10921","hashOfConfig":"9493"},{"size":419,"mtime":1786084510140,"results":"10922","hashOfConfig":"9493"},{"size":99,"mtime":1786084510140,"results":"10923","hashOfConfig":"9493"},{"size":2152,"mtime":1786084510140,"results":"10924","hashOfConfig":"9493"},{"size":494,"mtime":1786084510141,"results":"10925","hashOfConfig":"9493"},{"size":73,"mtime":1786084510141,"results":"10926","hashOfConfig":"9493"},{"size":14326,"mtime":1786084510141,"results":"10927","hashOfConfig":"9493"},{"size":7770,"mtime":1786084510141,"results":"10928","hashOfConfig":"9493"},{"size":305,"mtime":1786084510141,"results":"10929","hashOfConfig":"9493"},{"size":10589,"mtime":1786084510142,"results":"10930","hashOfConfig":"9493"},{"size":6327,"mtime":1786084510142,"results":"10931","hashOfConfig":"9493"},{"size":353,"mtime":1786084510142,"results":"10932","hashOfConfig":"9493"},{"size":502,"mtime":1786084510142,"results":"10933","hashOfConfig":"9493"},{"size":1708,"mtime":1786084510142,"results":"10934","hashOfConfig":"9493"},{"size":157,"mtime":1786084510142,"results":"10935","hashOfConfig":"9493"},{"size":138,"mtime":1786084510142,"results":"10936","hashOfConfig":"9493"},{"size":1279,"mtime":1786084510142,"results":"10937","hashOfConfig":"9493"},{"size":376,"mtime":1786084510143,"results":"10938","hashOfConfig":"9493"},{"size":495,"mtime":1786084510143,"results":"10939","hashOfConfig":"9493"},{"size":620,"mtime":1786084510143,"results":"10940","hashOfConfig":"9493"},{"size":419,"mtime":1786084510143,"results":"10941","hashOfConfig":"9493"},{"size":128,"mtime":1786084510143,"results":"10942","hashOfConfig":"9493"},{"size":502,"mtime":1786084510143,"results":"10943","hashOfConfig":"9493"},{"size":76,"mtime":1786084510143,"results":"10944","hashOfConfig":"9493"},{"size":10241,"mtime":1786084510143,"results":"10945","hashOfConfig":"9493"},{"size":3234,"mtime":1786084510144,"results":"10946","hashOfConfig":"9493"},{"size":5816,"mtime":1786084510144,"results":"10947","hashOfConfig":"9493"},{"size":4626,"mtime":1786084510144,"results":"10948","hashOfConfig":"9493"},{"size":7764,"mtime":1786084510144,"results":"10949","hashOfConfig":"9493"},{"size":1526,"mtime":1786084510144,"results":"10950","hashOfConfig":"9493"},{"size":1669,"mtime":1786084510144,"results":"10951","hashOfConfig":"9493"},{"size":1537,"mtime":1786084510144,"results":"10952","hashOfConfig":"9493"},{"size":1205,"mtime":1786084510145,"results":"10953","hashOfConfig":"9493"},{"size":1207,"mtime":1786084510145,"results":"10954","hashOfConfig":"9493"},{"size":1409,"mtime":1786084510145,"results":"10955","hashOfConfig":"9493"},{"size":939,"mtime":1786084510145,"results":"10956","hashOfConfig":"9493"},{"size":4935,"mtime":1786084510145,"results":"10957","hashOfConfig":"9493"},{"size":935,"mtime":1786084510145,"results":"10958","hashOfConfig":"9493"},{"size":1155,"mtime":1786084510146,"results":"10959","hashOfConfig":"9493"},{"size":4450,"mtime":1786084510146,"results":"10960","hashOfConfig":"9493"},{"size":5578,"mtime":1786084510146,"results":"10961","hashOfConfig":"9493"},{"size":3447,"mtime":1786084510146,"results":"10962","hashOfConfig":"9493"},{"size":1422,"mtime":1786084510146,"results":"10963","hashOfConfig":"9493"},{"size":504,"mtime":1786084510146,"results":"10964","hashOfConfig":"9493"},{"size":3043,"mtime":1786084510146,"results":"10965","hashOfConfig":"9493"},{"size":3889,"mtime":1786084510147,"results":"10966","hashOfConfig":"9493"},{"size":6587,"mtime":1786084510147,"results":"10967","hashOfConfig":"9493"},{"size":7742,"mtime":1786084510147,"results":"10968","hashOfConfig":"9493"},{"size":596,"mtime":1786084510147,"results":"10969","hashOfConfig":"9493"},{"size":4617,"mtime":1786084510147,"results":"10970","hashOfConfig":"9493"},{"size":153,"mtime":1786084510148,"results":"10971","hashOfConfig":"9493"},{"size":657,"mtime":1786084510148,"results":"10972","hashOfConfig":"9493"},{"size":10698,"mtime":1786084510148,"results":"10973","hashOfConfig":"9493"},{"size":2147,"mtime":1786084510148,"results":"10974","hashOfConfig":"9493"},{"size":1809,"mtime":1786084510148,"results":"10975","hashOfConfig":"9493"},{"size":1546,"mtime":1786084510148,"results":"10976","hashOfConfig":"9493"},{"size":7120,"mtime":1786084510149,"results":"10977","hashOfConfig":"9493"},{"size":4653,"mtime":1786084510149,"results":"10978","hashOfConfig":"9493"},{"size":2810,"mtime":1786084510149,"results":"10979","hashOfConfig":"9493"},{"size":1427,"mtime":1786084510149,"results":"10980","hashOfConfig":"9493"},{"size":8760,"mtime":1786084510149,"results":"10981","hashOfConfig":"9493"},{"size":2786,"mtime":1786084510149,"results":"10982","hashOfConfig":"9493"},{"size":773,"mtime":1786084510150,"results":"10983","hashOfConfig":"9493"},{"size":1904,"mtime":1786084510150,"results":"10984","hashOfConfig":"9493"},{"size":4254,"mtime":1786084510150,"results":"10985","hashOfConfig":"9493"},{"size":6419,"mtime":1786084510150,"results":"10986","hashOfConfig":"9493"},{"size":4751,"mtime":1786084510151,"results":"10987","hashOfConfig":"9493"},{"size":5396,"mtime":1786084510151,"results":"10988","hashOfConfig":"9493"},{"size":2543,"mtime":1786084510151,"results":"10989","hashOfConfig":"9493"},{"size":3330,"mtime":1786084510151,"results":"10990","hashOfConfig":"9493"},{"size":4855,"mtime":1786084510151,"results":"10991","hashOfConfig":"9493"},{"size":4675,"mtime":1786084510151,"results":"10992","hashOfConfig":"9493"},{"size":6657,"mtime":1786084510151,"results":"10993","hashOfConfig":"9493"},{"size":173,"mtime":1786084510151,"results":"10994","hashOfConfig":"9493"},{"size":13903,"mtime":1786084510152,"results":"10995","hashOfConfig":"9493"},{"size":2296,"mtime":1786084510152,"results":"10996","hashOfConfig":"9493"},{"size":1320,"mtime":1786084510152,"results":"10997","hashOfConfig":"9493"},{"size":1692,"mtime":1786084510152,"results":"10998","hashOfConfig":"9493"},{"size":2530,"mtime":1786084510152,"results":"10999","hashOfConfig":"9493"},{"size":110,"mtime":1786084510152,"results":"11000","hashOfConfig":"9493"},{"size":5722,"mtime":1786084510152,"results":"11001","hashOfConfig":"9493"},{"size":6045,"mtime":1786084510153,"results":"11002","hashOfConfig":"9493"},{"size":3264,"mtime":1786084510153,"results":"11003","hashOfConfig":"9493"},{"size":6509,"mtime":1786084510153,"results":"11004","hashOfConfig":"11005"},{"size":4433,"mtime":1786084510153,"results":"11006","hashOfConfig":"11005"},{"size":505,"mtime":1786084510153,"results":"11007","hashOfConfig":"11005"},{"size":3704,"mtime":1786084510153,"results":"11008","hashOfConfig":"11005"},{"size":7630,"mtime":1786084510153,"results":"11009","hashOfConfig":"11005"},{"size":11585,"mtime":1786084510154,"results":"11010","hashOfConfig":"11005"},{"size":3351,"mtime":1786084510154,"results":"11011","hashOfConfig":"11005"},{"size":7713,"mtime":1786084510154,"results":"11012","hashOfConfig":"11005"},{"size":2740,"mtime":1786084510154,"results":"11013","hashOfConfig":"11005"},{"size":19205,"mtime":1786084510154,"results":"11014","hashOfConfig":"11005"},{"size":7745,"mtime":1786084510154,"results":"11015","hashOfConfig":"11005"},{"size":3952,"mtime":1786084510155,"results":"11016","hashOfConfig":"11005"},{"size":5247,"mtime":1786084510155,"results":"11017","hashOfConfig":"11005"},{"size":1210,"mtime":1786084510155,"results":"11018","hashOfConfig":"11005"},{"size":8827,"mtime":1786084510155,"results":"11019","hashOfConfig":"11005"},{"size":1841,"mtime":1786084510155,"results":"11020","hashOfConfig":"11005"},{"size":8958,"mtime":1786084510155,"results":"11021","hashOfConfig":"11005"},{"size":5372,"mtime":1786084510155,"results":"11022","hashOfConfig":"11005"},{"size":3566,"mtime":1786084510155,"results":"11023","hashOfConfig":"11005"},{"size":7186,"mtime":1786084510156,"results":"11024","hashOfConfig":"11005"},{"size":23200,"mtime":1786084510156,"results":"11025","hashOfConfig":"11005"},{"size":3498,"mtime":1786084510156,"results":"11026","hashOfConfig":"11005"},{"size":2056,"mtime":1786084510156,"results":"11027","hashOfConfig":"11005"},{"size":5214,"mtime":1786084510156,"results":"11028","hashOfConfig":"11005"},{"size":3401,"mtime":1786084510157,"results":"11029","hashOfConfig":"11005"},{"size":18016,"mtime":1786084510157,"results":"11030","hashOfConfig":"11005"},{"size":3088,"mtime":1786084510157,"results":"11031","hashOfConfig":"11005"},{"size":3064,"mtime":1786084510157,"results":"11032","hashOfConfig":"11005"},{"size":1618,"mtime":1786084510157,"results":"11033","hashOfConfig":"11005"},{"size":1785,"mtime":1786084510157,"results":"11034","hashOfConfig":"11005"},{"size":5734,"mtime":1786084510656,"results":"11035","hashOfConfig":"11005"},{"size":28861,"mtime":1786084510657,"results":"11036","hashOfConfig":"11005"},{"size":772,"mtime":1786084510657,"results":"11037","hashOfConfig":"11005"},{"size":1758,"mtime":1786084510659,"results":"11038","hashOfConfig":"11005"},{"size":5084,"mtime":1786084510659,"results":"11039","hashOfConfig":"11005"},{"size":5012,"mtime":1786084510659,"results":"11040","hashOfConfig":"11005"},{"size":2058,"mtime":1786084510659,"results":"11041","hashOfConfig":"11005"},{"size":6796,"mtime":1786084510660,"results":"11042","hashOfConfig":"11005"},{"size":4622,"mtime":1786084510660,"results":"11043","hashOfConfig":"11005"},{"size":3292,"mtime":1786084510660,"results":"11044","hashOfConfig":"11005"},{"size":3961,"mtime":1786084510660,"results":"11045","hashOfConfig":"11005"},{"size":2038,"mtime":1786084510660,"results":"11046","hashOfConfig":"11005"},{"size":6618,"mtime":1786084510660,"results":"11047","hashOfConfig":"11005"},{"size":2163,"mtime":1786084510661,"results":"11048","hashOfConfig":"11005"},{"size":336,"mtime":1786084510661,"results":"11049","hashOfConfig":"11005"},{"size":5498,"mtime":1786084510661,"results":"11050","hashOfConfig":"11005"},{"size":9117,"mtime":1786084510661,"results":"11051","hashOfConfig":"11005"},{"size":8186,"mtime":1786084510662,"results":"11052","hashOfConfig":"11005"},{"size":8680,"mtime":1786084510662,"results":"11053","hashOfConfig":"11005"},{"size":13191,"mtime":1786084510662,"results":"11054","hashOfConfig":"11005"},{"size":6375,"mtime":1786084510662,"results":"11055","hashOfConfig":"11005"},{"size":1163,"mtime":1786084510663,"results":"11056","hashOfConfig":"11005"},{"size":2843,"mtime":1786084510663,"results":"11057","hashOfConfig":"11005"},{"size":2872,"mtime":1786084510663,"results":"11058","hashOfConfig":"11005"},{"size":1297,"mtime":1786084510663,"results":"11059","hashOfConfig":"11005"},{"size":1350,"mtime":1786084510663,"results":"11060","hashOfConfig":"11005"},{"size":20841,"mtime":1786084510664,"results":"11061","hashOfConfig":"11005"},{"size":4664,"mtime":1786084510664,"results":"11062","hashOfConfig":"11005"},{"size":205,"mtime":1786084510665,"results":"11063","hashOfConfig":"11005"},{"size":4132,"mtime":1786084510665,"results":"11064","hashOfConfig":"11005"},{"size":1462,"mtime":1786084510665,"results":"11065","hashOfConfig":"11005"},{"size":6647,"mtime":1786084510665,"results":"11066","hashOfConfig":"11005"},{"size":549,"mtime":1786084510665,"results":"11067","hashOfConfig":"11005"},{"size":18113,"mtime":1786084510666,"results":"11068","hashOfConfig":"11005"},{"size":2982,"mtime":1786084510666,"results":"11069","hashOfConfig":"11005"},{"size":1771,"mtime":1786084510666,"results":"11070","hashOfConfig":"11005"},{"size":4058,"mtime":1786084510666,"results":"11071","hashOfConfig":"11005"},{"size":3881,"mtime":1786084510666,"results":"11072","hashOfConfig":"11005"},{"size":4633,"mtime":1786084510667,"results":"11073","hashOfConfig":"11005"},{"size":7787,"mtime":1786084510667,"results":"11074","hashOfConfig":"11005"},{"size":1877,"mtime":1786084510667,"results":"11075","hashOfConfig":"11005"},{"size":2254,"mtime":1786084510667,"results":"11076","hashOfConfig":"11005"},{"size":1442,"mtime":1786084510667,"results":"11077","hashOfConfig":"11005"},{"size":3485,"mtime":1786084510668,"results":"11078","hashOfConfig":"11005"},{"size":4811,"mtime":1786084510668,"results":"11079","hashOfConfig":"11005"},{"size":685,"mtime":1786084510668,"results":"11080","hashOfConfig":"11005"},{"size":918,"mtime":1786084510668,"results":"11081","hashOfConfig":"11005"},{"size":739,"mtime":1786084510668,"results":"11082","hashOfConfig":"11005"},{"size":5807,"mtime":1786084510668,"results":"11083","hashOfConfig":"11005"},{"size":4709,"mtime":1786084510669,"results":"11084","hashOfConfig":"11005"},{"size":11588,"mtime":1786084510669,"results":"11085","hashOfConfig":"11005"},{"size":7945,"mtime":1786084510669,"results":"11086","hashOfConfig":"11005"},{"size":3822,"mtime":1786084510669,"results":"11087","hashOfConfig":"11005"},{"size":15157,"mtime":1786084510670,"results":"11088","hashOfConfig":"11005"},{"size":3490,"mtime":1786084510670,"results":"11089","hashOfConfig":"11005"},{"size":2891,"mtime":1786084510670,"results":"11090","hashOfConfig":"11005"},{"size":682,"mtime":1786084510670,"results":"11091","hashOfConfig":"11005"},{"size":608,"mtime":1786084510671,"results":"11092","hashOfConfig":"11005"},{"size":808,"mtime":1786084510671,"results":"11093","hashOfConfig":"11005"},{"size":861,"mtime":1786084510671,"results":"11094","hashOfConfig":"11005"},{"size":7500,"mtime":1786084510671,"results":"11095","hashOfConfig":"11005"},{"size":1049,"mtime":1786084510671,"results":"11096","hashOfConfig":"11005"},{"size":1377,"mtime":1786084510671,"results":"11097","hashOfConfig":"11005"},{"size":3894,"mtime":1786084510671,"results":"11098","hashOfConfig":"11005"},{"size":601,"mtime":1786084510671,"results":"11099","hashOfConfig":"11005"},{"size":17131,"mtime":1786084510672,"results":"11100","hashOfConfig":"11005"},{"size":1066,"mtime":1786084510672,"results":"11101","hashOfConfig":"11005"},{"size":2114,"mtime":1786084510672,"results":"11102","hashOfConfig":"11005"},{"size":6557,"mtime":1786084510672,"results":"11103","hashOfConfig":"11005"},{"size":1594,"mtime":1786084510673,"results":"11104","hashOfConfig":"11005"},{"size":3817,"mtime":1786084510673,"results":"11105","hashOfConfig":"11005"},{"size":4109,"mtime":1786084510673,"results":"11106","hashOfConfig":"11005"},{"size":7192,"mtime":1786084510673,"results":"11107","hashOfConfig":"11005"},{"size":3759,"mtime":1786084510674,"results":"11108","hashOfConfig":"11005"},{"size":11442,"mtime":1786084510674,"results":"11109","hashOfConfig":"11005"},{"size":3934,"mtime":1786084510674,"results":"11110","hashOfConfig":"11005"},{"size":2637,"mtime":1786084510674,"results":"11111","hashOfConfig":"11005"},{"size":2979,"mtime":1786084510674,"results":"11112","hashOfConfig":"11005"},{"size":3982,"mtime":1786084510674,"results":"11113","hashOfConfig":"11005"},{"size":200,"mtime":1786084510674,"results":"11114","hashOfConfig":"11005"},{"size":315,"mtime":1786084510675,"results":"11115","hashOfConfig":"11005"},{"size":1040,"mtime":1786084510675,"results":"11116","hashOfConfig":"11005"},{"size":2235,"mtime":1786084510675,"results":"11117","hashOfConfig":"11005"},{"size":1102,"mtime":1786084510675,"results":"11118","hashOfConfig":"11005"},{"size":8300,"mtime":1786084510675,"results":"11119","hashOfConfig":"11005"},{"size":25952,"mtime":1786084510676,"results":"11120","hashOfConfig":"11005"},{"size":3704,"mtime":1786084510676,"results":"11121","hashOfConfig":"11005"},{"size":12608,"mtime":1786084510676,"results":"11122","hashOfConfig":"11005"},{"size":27765,"mtime":1786084510677,"results":"11123","hashOfConfig":"11005"},{"size":6084,"mtime":1786084510677,"results":"11124","hashOfConfig":"11005"},{"size":5468,"mtime":1786084510677,"results":"11125","hashOfConfig":"11005"},{"size":9401,"mtime":1786084510677,"results":"11126","hashOfConfig":"11005"},{"size":7413,"mtime":1786084510677,"results":"11127","hashOfConfig":"11005"},{"size":2337,"mtime":1786084510678,"results":"11128","hashOfConfig":"11005"},{"size":3539,"mtime":1786084510678,"results":"11129","hashOfConfig":"11005"},{"size":13647,"mtime":1786084510678,"results":"11130","hashOfConfig":"11005"},{"size":8704,"mtime":1786084510678,"results":"11131","hashOfConfig":"11005"},{"size":18887,"mtime":1786084510679,"results":"11132","hashOfConfig":"11005"},{"size":2352,"mtime":1786084510679,"results":"11133","hashOfConfig":"11005"},{"size":3023,"mtime":1786084510679,"results":"11134","hashOfConfig":"11005"},{"size":1761,"mtime":1786084510679,"results":"11135","hashOfConfig":"11005"},{"size":3405,"mtime":1786084510679,"results":"11136","hashOfConfig":"11005"},{"size":18437,"mtime":1786084510680,"results":"11137","hashOfConfig":"11005"},{"size":10487,"mtime":1786084510680,"results":"11138","hashOfConfig":"11005"},{"size":3086,"mtime":1786084510680,"results":"11139","hashOfConfig":"11005"},{"size":5551,"mtime":1786084510680,"results":"11140","hashOfConfig":"11005"},{"size":6975,"mtime":1786084510681,"results":"11141","hashOfConfig":"11005"},{"size":2337,"mtime":1786084510681,"results":"11142","hashOfConfig":"11005"},{"size":13300,"mtime":1786084510681,"results":"11143","hashOfConfig":"11005"},{"size":7349,"mtime":1786084510682,"results":"11144","hashOfConfig":"11005"},{"size":15790,"mtime":1786084510682,"results":"11145","hashOfConfig":"11005"},{"size":5997,"mtime":1786084510682,"results":"11146","hashOfConfig":"11005"},{"size":10971,"mtime":1786084510683,"results":"11147","hashOfConfig":"11005"},{"size":3691,"mtime":1786084510683,"results":"11148","hashOfConfig":"11005"},{"size":17834,"mtime":1786084510684,"results":"11149","hashOfConfig":"11150"},{"size":1068,"mtime":1786084510684,"results":"11151","hashOfConfig":"11150"},{"size":5906,"mtime":1786084510684,"results":"11152","hashOfConfig":"11150"},{"size":1435,"mtime":1786084510685,"results":"11153","hashOfConfig":"11150"},{"size":4065,"mtime":1786084510685,"results":"11154","hashOfConfig":"11150"},{"size":11637,"mtime":1786084510685,"results":"11155","hashOfConfig":"11150"},{"size":1678,"mtime":1786084510685,"results":"11156","hashOfConfig":"11150"},{"size":4735,"mtime":1786084510685,"results":"11157","hashOfConfig":"11150"},{"size":9614,"mtime":1786084510686,"results":"11158","hashOfConfig":"11150"},{"size":1007,"mtime":1786084510686,"results":"11159","hashOfConfig":"11150"},{"size":2308,"mtime":1786084510686,"results":"11160","hashOfConfig":"11150"},{"size":2569,"mtime":1786084510686,"results":"11161","hashOfConfig":"11150"},{"size":3555,"mtime":1786084510686,"results":"11162","hashOfConfig":"11150"},{"size":2412,"mtime":1786084510687,"results":"11163","hashOfConfig":"11150"},{"size":3113,"mtime":1786084510687,"results":"11164","hashOfConfig":"11150"},{"size":9800,"mtime":1786084510687,"results":"11165","hashOfConfig":"11150"},{"size":2203,"mtime":1786084510687,"results":"11166","hashOfConfig":"11150"},{"size":5556,"mtime":1786084510688,"results":"11167","hashOfConfig":"11150"},{"size":4947,"mtime":1786084510689,"results":"11168","hashOfConfig":"11150"},{"size":584,"mtime":1786084510689,"results":"11169","hashOfConfig":"11150"},{"size":56768,"mtime":1786084510688,"results":"11170","hashOfConfig":"11150"},{"size":3968,"mtime":1786084510689,"results":"11171","hashOfConfig":"11150"},{"size":24364,"mtime":1786084510690,"results":"11172","hashOfConfig":"11150"},{"size":13071,"mtime":1786084510690,"results":"11173","hashOfConfig":"11150"},{"size":7638,"mtime":1786084510690,"results":"11174","hashOfConfig":"11150"},{"size":2783,"mtime":1786084510690,"results":"11175","hashOfConfig":"11150"},{"size":5409,"mtime":1786084510691,"results":"11176","hashOfConfig":"11150"},{"size":4032,"mtime":1786084510691,"results":"11177","hashOfConfig":"11150"},{"size":4260,"mtime":1786084510691,"results":"11178","hashOfConfig":"11150"},{"size":2680,"mtime":1786084510692,"results":"11179","hashOfConfig":"11150"},{"size":25357,"mtime":1786084510692,"results":"11180","hashOfConfig":"11150"},{"size":4931,"mtime":1786084510692,"results":"11181","hashOfConfig":"11150"},{"size":4152,"mtime":1786084510693,"results":"11182","hashOfConfig":"11150"},{"size":4522,"mtime":1786084510693,"results":"11183","hashOfConfig":"11150"},{"size":6487,"mtime":1786084510693,"results":"11184","hashOfConfig":"11150"},{"size":32468,"mtime":1786084510694,"results":"11185","hashOfConfig":"11150"},{"size":23101,"mtime":1786084510694,"results":"11186","hashOfConfig":"11150"},{"size":3541,"mtime":1786084510695,"results":"11187","hashOfConfig":"11150"},{"size":16276,"mtime":1786084510695,"results":"11188","hashOfConfig":"11150"},{"size":3164,"mtime":1786084510695,"results":"11189","hashOfConfig":"11150"},{"size":2794,"mtime":1786084510695,"results":"11190","hashOfConfig":"11150"},{"size":3901,"mtime":1786084510696,"results":"11191","hashOfConfig":"11150"},{"size":9838,"mtime":1786084510696,"results":"11192","hashOfConfig":"11150"},{"size":58948,"mtime":1786084510697,"results":"11193","hashOfConfig":"11150"},{"size":2714,"mtime":1786084510697,"results":"11194","hashOfConfig":"11150"},{"size":10048,"mtime":1786084510698,"results":"11195","hashOfConfig":"11150"},{"size":6244,"mtime":1786084510698,"results":"11196","hashOfConfig":"11150"},{"size":3615,"mtime":1786084510698,"results":"11197","hashOfConfig":"11150"},{"size":5668,"mtime":1786084510698,"results":"11198","hashOfConfig":"11150"},{"size":20149,"mtime":1786084510699,"results":"11199","hashOfConfig":"11150"},{"size":11852,"mtime":1786084510699,"results":"11200","hashOfConfig":"11150"},{"size":23963,"mtime":1786084510700,"results":"11201","hashOfConfig":"11150"},{"size":2467,"mtime":1786084510700,"results":"11202","hashOfConfig":"11150"},{"size":5031,"mtime":1786084510700,"results":"11203","hashOfConfig":"11150"},{"size":14925,"mtime":1786084510700,"results":"11204","hashOfConfig":"11150"},{"size":3971,"mtime":1786084510701,"results":"11205","hashOfConfig":"11150"},{"size":18078,"mtime":1786084510701,"results":"11206","hashOfConfig":"11150"},{"size":17263,"mtime":1786084510702,"results":"11207","hashOfConfig":"11150"},{"size":2710,"mtime":1786084510702,"results":"11208","hashOfConfig":"11150"},{"size":4977,"mtime":1786084510702,"results":"11209","hashOfConfig":"11150"},{"size":8761,"mtime":1786084510702,"results":"11210","hashOfConfig":"11150"},{"size":14230,"mtime":1786084510703,"results":"11211","hashOfConfig":"11150"},{"size":1333,"mtime":1786084510703,"results":"11212","hashOfConfig":"11150"},{"size":4349,"mtime":1786084510703,"results":"11213","hashOfConfig":"11150"},{"size":7227,"mtime":1786084510703,"results":"11214","hashOfConfig":"11150"},{"size":4163,"mtime":1786084510705,"results":"11215","hashOfConfig":"11150"},{"size":6939,"mtime":1786084510705,"results":"11216","hashOfConfig":"11150"},{"size":40729,"mtime":1786084510705,"results":"11217","hashOfConfig":"11150"},{"size":4166,"mtime":1786084510725,"results":"11218","hashOfConfig":"11150"},{"size":1341,"mtime":1786084510725,"results":"11219","hashOfConfig":"11150"},{"size":4752,"mtime":1786084510725,"results":"11220","hashOfConfig":"11150"},{"size":6917,"mtime":1786084510725,"results":"11221","hashOfConfig":"11150"},{"size":5736,"mtime":1786084510726,"results":"11222","hashOfConfig":"11150"},{"size":4366,"mtime":1786084510727,"results":"11223","hashOfConfig":"11150"},{"size":9273,"mtime":1786084510727,"results":"11224","hashOfConfig":"11150"},{"size":1134,"mtime":1786084510727,"results":"11225","hashOfConfig":"11150"},{"size":728,"mtime":1786084510727,"results":"11226","hashOfConfig":"11150"},{"size":3879,"mtime":1786084510727,"results":"11227","hashOfConfig":"11150"},{"size":36914,"mtime":1786084510726,"results":"11228","hashOfConfig":"11150"},{"size":1325,"mtime":1786084510727,"results":"11229","hashOfConfig":"11150"},{"size":8059,"mtime":1786084510728,"results":"11230","hashOfConfig":"11150"},{"size":2552,"mtime":1786084510728,"results":"11231","hashOfConfig":"11150"},{"size":8954,"mtime":1786084510728,"results":"11232","hashOfConfig":"11150"},{"size":10316,"mtime":1786084510729,"results":"11233","hashOfConfig":"11150"},{"size":8627,"mtime":1786084510729,"results":"11234","hashOfConfig":"11150"},{"size":5097,"mtime":1786084510729,"results":"11235","hashOfConfig":"11150"},{"size":2930,"mtime":1786084510729,"results":"11236","hashOfConfig":"11150"},{"size":7746,"mtime":1786084510730,"results":"11237","hashOfConfig":"11150"},{"size":3379,"mtime":1786084510730,"results":"11238","hashOfConfig":"11150"},{"size":8376,"mtime":1786084510730,"results":"11239","hashOfConfig":"11150"},{"size":4767,"mtime":1786084510731,"results":"11240","hashOfConfig":"11150"},{"size":1854,"mtime":1786084510731,"results":"11241","hashOfConfig":"11150"},{"size":4564,"mtime":1786084510731,"results":"11242","hashOfConfig":"11150"},{"size":2026,"mtime":1786084510731,"results":"11243","hashOfConfig":"11150"},{"size":4445,"mtime":1786084510733,"results":"11244","hashOfConfig":"11150"},{"size":5139,"mtime":1786084510733,"results":"11245","hashOfConfig":"11150"},{"size":6899,"mtime":1786084510733,"results":"11246","hashOfConfig":"11150"},{"size":4307,"mtime":1786084510734,"results":"11247","hashOfConfig":"11150"},{"size":6651,"mtime":1786084510734,"results":"11248","hashOfConfig":"11150"},{"size":8108,"mtime":1786084510735,"results":"11249","hashOfConfig":"11150"},{"size":3141,"mtime":1786084510735,"results":"11250","hashOfConfig":"11150"},{"size":35241,"mtime":1786084510733,"results":"11251","hashOfConfig":"11150"},{"size":2810,"mtime":1786084510736,"results":"11252","hashOfConfig":"11150"},{"size":8734,"mtime":1786084510736,"results":"11253","hashOfConfig":"11150"},{"size":398,"mtime":1786084510737,"results":"11254","hashOfConfig":"11150"},{"size":11800,"mtime":1786084510738,"results":"11255","hashOfConfig":"11150"},{"size":2267,"mtime":1786084510738,"results":"11256","hashOfConfig":"11150"},{"size":31401,"mtime":1786084510736,"results":"11257","hashOfConfig":"11150"},{"size":2128,"mtime":1786084510738,"results":"11258","hashOfConfig":"11150"},{"size":1333,"mtime":1786084510738,"results":"11259","hashOfConfig":"11150"},{"size":2417,"mtime":1786084510738,"results":"11260","hashOfConfig":"11150"},{"size":9032,"mtime":1786084510739,"results":"11261","hashOfConfig":"11150"},{"size":4200,"mtime":1786084510739,"results":"11262","hashOfConfig":"11150"},{"size":3833,"mtime":1786084510739,"results":"11263","hashOfConfig":"11150"},{"size":21417,"mtime":1786084510739,"results":"11264","hashOfConfig":"11150"},{"size":10646,"mtime":1786084510740,"results":"11265","hashOfConfig":"11150"},{"size":6324,"mtime":1786084510740,"results":"11266","hashOfConfig":"11150"},{"size":3897,"mtime":1786084510740,"results":"11267","hashOfConfig":"11150"},{"size":10479,"mtime":1786084510740,"results":"11268","hashOfConfig":"11150"},{"size":8419,"mtime":1786084510740,"results":"11269","hashOfConfig":"11150"},{"size":9291,"mtime":1786084510741,"results":"11270","hashOfConfig":"11150"},{"size":1111,"mtime":1786084510741,"results":"11271","hashOfConfig":"11150"},{"size":16675,"mtime":1786084510741,"results":"11272","hashOfConfig":"11150"},{"size":862,"mtime":1786084510741,"results":"11273","hashOfConfig":"11150"},{"size":11341,"mtime":1786084510742,"results":"11274","hashOfConfig":"11150"},{"size":1028,"mtime":1786084510742,"results":"11275","hashOfConfig":"11150"},{"size":10881,"mtime":1786084510742,"results":"11276","hashOfConfig":"11150"},{"size":8023,"mtime":1786084510743,"results":"11277","hashOfConfig":"11150"},{"size":14258,"mtime":1786084510743,"results":"11278","hashOfConfig":"11150"},{"size":797,"mtime":1786084510743,"results":"11279","hashOfConfig":"11150"},{"size":3505,"mtime":1786084510744,"results":"11280","hashOfConfig":"11150"},{"size":2585,"mtime":1786084510744,"results":"11281","hashOfConfig":"11150"},{"size":6840,"mtime":1786084510744,"results":"11282","hashOfConfig":"11150"},{"size":6931,"mtime":1786084510746,"results":"11283","hashOfConfig":"11150"},{"size":1400,"mtime":1786084510746,"results":"11284","hashOfConfig":"11150"},{"size":3015,"mtime":1786084510746,"results":"11285","hashOfConfig":"11150"},{"size":8512,"mtime":1786084510746,"results":"11286","hashOfConfig":"11150"},{"size":288,"mtime":1786084510747,"results":"11287","hashOfConfig":"11150"},{"size":31167,"mtime":1786084510745,"results":"11288","hashOfConfig":"11150"},{"size":2036,"mtime":1786084510747,"results":"11289","hashOfConfig":"11150"},{"size":782,"mtime":1786084510747,"results":"11290","hashOfConfig":"11150"},{"size":2175,"mtime":1786084510747,"results":"11291","hashOfConfig":"11150"},{"size":5039,"mtime":1786084510747,"results":"11292","hashOfConfig":"11150"},{"size":3026,"mtime":1786084510747,"results":"11293","hashOfConfig":"11150"},{"size":11050,"mtime":1786084510748,"results":"11294","hashOfConfig":"11150"},{"size":8766,"mtime":1786084510748,"results":"11295","hashOfConfig":"11150"},{"size":7644,"mtime":1786084510749,"results":"11296","hashOfConfig":"11150"},{"size":27679,"mtime":1786084510748,"results":"11297","hashOfConfig":"11150"},{"size":2473,"mtime":1786084510749,"results":"11298","hashOfConfig":"11150"},{"size":677,"mtime":1786084510749,"results":"11299","hashOfConfig":"11150"},{"size":10719,"mtime":1786084510749,"results":"11300","hashOfConfig":"11150"},{"size":12567,"mtime":1786084510749,"results":"11301","hashOfConfig":"11150"},{"size":1993,"mtime":1786084510750,"results":"11302","hashOfConfig":"11150"},{"size":2511,"mtime":1786084510750,"results":"11303","hashOfConfig":"11150"},{"size":5183,"mtime":1786084510750,"results":"11304","hashOfConfig":"11150"},{"size":3707,"mtime":1786084510750,"results":"11305","hashOfConfig":"11005"},{"size":2552,"mtime":1786084510751,"results":"11306","hashOfConfig":"11005"},{"size":2235,"mtime":1786084510751,"results":"11307","hashOfConfig":"11005"},{"size":1300,"mtime":1786084510751,"results":"11308","hashOfConfig":"11005"},{"size":1544,"mtime":1786084510751,"results":"11309","hashOfConfig":"11005"},{"size":1205,"mtime":1786084510751,"results":"11310","hashOfConfig":"11005"},{"size":13343,"mtime":1786084510752,"results":"11311","hashOfConfig":"11005"},{"size":5259,"mtime":1786084510752,"results":"11312","hashOfConfig":"11005"},{"size":20068,"mtime":1786084510753,"results":"11313","hashOfConfig":"11005"},{"size":8421,"mtime":1786084510753,"results":"11314","hashOfConfig":"11005"},{"size":9306,"mtime":1786084510753,"results":"11315","hashOfConfig":"11005"},{"size":4148,"mtime":1786084510754,"results":"11316","hashOfConfig":"11005"},{"size":5630,"mtime":1786084510754,"results":"11317","hashOfConfig":"11005"},{"size":13641,"mtime":1786084510754,"results":"11318","hashOfConfig":"11005"},{"size":1753,"mtime":1786084510754,"results":"11319","hashOfConfig":"11005"},{"size":747,"mtime":1786084510755,"results":"11320","hashOfConfig":"11005"},{"size":3695,"mtime":1786084510755,"results":"11321","hashOfConfig":"11005"},{"size":4021,"mtime":1786084510755,"results":"11322","hashOfConfig":"11005"},{"size":4719,"mtime":1786084510755,"results":"11323","hashOfConfig":"11005"},{"size":5835,"mtime":1786084510755,"results":"11324","hashOfConfig":"11005"},{"size":2087,"mtime":1786084510755,"results":"11325","hashOfConfig":"11005"},{"size":888,"mtime":1786084510756,"results":"11326","hashOfConfig":"11005"},{"size":5025,"mtime":1786084510756,"results":"11327","hashOfConfig":"11005"},{"size":4982,"mtime":1786084510756,"results":"11328","hashOfConfig":"11005"},{"size":16507,"mtime":1786084510756,"results":"11329","hashOfConfig":"11005"},{"size":5769,"mtime":1786084510757,"results":"11330","hashOfConfig":"11005"},{"size":924,"mtime":1786084510757,"results":"11331","hashOfConfig":"11005"},{"size":3412,"mtime":1786084510757,"results":"11332","hashOfConfig":"11005"},{"size":2176,"mtime":1786084510757,"results":"11333","hashOfConfig":"11005"},{"size":3321,"mtime":1786084510757,"results":"11334","hashOfConfig":"11005"},{"size":5105,"mtime":1786084510758,"results":"11335","hashOfConfig":"11005"},{"size":1734,"mtime":1786084510758,"results":"11336","hashOfConfig":"11005"},{"size":5171,"mtime":1786084510758,"results":"11337","hashOfConfig":"11005"},{"size":4769,"mtime":1786084510758,"results":"11338","hashOfConfig":"11005"},{"size":5170,"mtime":1786084510758,"results":"11339","hashOfConfig":"11005"},{"size":1796,"mtime":1786084510759,"results":"11340","hashOfConfig":"11005"},{"size":10415,"mtime":1786084510759,"results":"11341","hashOfConfig":"11005"},{"size":152,"mtime":1786084510759,"results":"11342","hashOfConfig":"11005"},{"size":7434,"mtime":1786084510759,"results":"11343","hashOfConfig":"11005"},{"size":8495,"mtime":1786084510759,"results":"11344","hashOfConfig":"11005"},{"size":9319,"mtime":1786084510760,"results":"11345","hashOfConfig":"11005"},{"size":14851,"mtime":1786084510760,"results":"11346","hashOfConfig":"11005"},{"size":4042,"mtime":1786084510760,"results":"11347","hashOfConfig":"11005"},{"size":26069,"mtime":1786084529127,"results":"11348","hashOfConfig":"11005"},{"size":11121,"mtime":1786084510761,"results":"11349","hashOfConfig":"11005"},{"size":7275,"mtime":1786084510761,"results":"11350","hashOfConfig":"11005"},{"size":4571,"mtime":1786084510762,"results":"11351","hashOfConfig":"11005"},{"size":2783,"mtime":1786084510762,"results":"11352","hashOfConfig":"11005"},{"size":9681,"mtime":1786084510762,"results":"11353","hashOfConfig":"11005"},{"size":1436,"mtime":1786084510762,"results":"11354","hashOfConfig":"11005"},{"size":3344,"mtime":1786084510762,"results":"11355","hashOfConfig":"11005"},{"size":3095,"mtime":1786084510763,"results":"11356","hashOfConfig":"11005"},{"size":2807,"mtime":1786084510763,"results":"11357","hashOfConfig":"11005"},{"size":5052,"mtime":1786084510763,"results":"11358","hashOfConfig":"11005"},{"size":1587,"mtime":1786084510763,"results":"11359","hashOfConfig":"11005"},{"size":249,"mtime":1786084510763,"results":"11360","hashOfConfig":"11005"},{"size":2333,"mtime":1786084510764,"results":"11361","hashOfConfig":"11005"},{"size":5572,"mtime":1786084510764,"results":"11362","hashOfConfig":"11005"},{"size":1183,"mtime":1786084510764,"results":"11363","hashOfConfig":"11005"},{"size":3661,"mtime":1786084510764,"results":"11364","hashOfConfig":"11005"},{"size":1953,"mtime":1786084510765,"results":"11365","hashOfConfig":"11005"},{"size":3938,"mtime":1786084510765,"results":"11366","hashOfConfig":"11005"},{"size":4786,"mtime":1786084510765,"results":"11367","hashOfConfig":"11005"},{"size":971,"mtime":1786084510766,"results":"11368","hashOfConfig":"11005"},{"size":3362,"mtime":1786084510766,"results":"11369","hashOfConfig":"11005"},{"size":995,"mtime":1786084510766,"results":"11370","hashOfConfig":"11005"},{"size":1208,"mtime":1786084510766,"results":"11371","hashOfConfig":"11005"},{"size":17713,"mtime":1786084510766,"results":"11372","hashOfConfig":"11005"},{"size":19769,"mtime":1786084510767,"results":"11373","hashOfConfig":"11005"},{"size":8972,"mtime":1786084510767,"results":"11374","hashOfConfig":"11005"},{"size":5952,"mtime":1786084510767,"results":"11375","hashOfConfig":"11005"},{"size":3632,"mtime":1786084510768,"results":"11376","hashOfConfig":"11005"},{"size":6712,"mtime":1786084510768,"results":"11377","hashOfConfig":"11005"},{"size":1481,"mtime":1786084510768,"results":"11378","hashOfConfig":"11005"},{"size":22361,"mtime":1786084510769,"results":"11379","hashOfConfig":"11005"},{"size":7465,"mtime":1786084510769,"results":"11380","hashOfConfig":"11005"},{"size":7565,"mtime":1786084510769,"results":"11381","hashOfConfig":"11005"},{"size":12400,"mtime":1786084510769,"results":"11382","hashOfConfig":"11005"},{"size":1656,"mtime":1786084510769,"results":"11383","hashOfConfig":"11005"},{"size":2600,"mtime":1786084510770,"results":"11384","hashOfConfig":"11005"},{"size":1655,"mtime":1786084510770,"results":"11385","hashOfConfig":"11005"},{"size":1854,"mtime":1786084510770,"results":"11386","hashOfConfig":"11005"},{"size":9334,"mtime":1786084510770,"results":"11387","hashOfConfig":"11005"},{"size":2705,"mtime":1786084510771,"results":"11388","hashOfConfig":"11005"},{"size":7626,"mtime":1786084510771,"results":"11389","hashOfConfig":"11005"},{"size":5111,"mtime":1786084510771,"results":"11390","hashOfConfig":"11005"},{"size":1524,"mtime":1786084510771,"results":"11391","hashOfConfig":"11005"},{"size":6266,"mtime":1786084510771,"results":"11392","hashOfConfig":"11005"},{"size":14096,"mtime":1786084510772,"results":"11393","hashOfConfig":"11005"},{"size":1441,"mtime":1786084510772,"results":"11394","hashOfConfig":"11005"},{"size":8055,"mtime":1786084510772,"results":"11395","hashOfConfig":"11005"},{"size":6700,"mtime":1786084510772,"results":"11396","hashOfConfig":"11005"},{"size":10744,"mtime":1786084510772,"results":"11397","hashOfConfig":"11005"},{"size":17763,"mtime":1786084510773,"results":"11398","hashOfConfig":"11005"},{"size":3505,"mtime":1786084510773,"results":"11399","hashOfConfig":"11005"},{"size":3245,"mtime":1786084510774,"results":"11400","hashOfConfig":"11005"},{"size":38618,"mtime":1786084510773,"results":"11401","hashOfConfig":"11005"},{"size":1172,"mtime":1786084510774,"results":"11402","hashOfConfig":"11005"},{"size":8768,"mtime":1786084510774,"results":"11403","hashOfConfig":"11005"},{"size":2850,"mtime":1786084510774,"results":"11404","hashOfConfig":"11005"},{"size":19749,"mtime":1786084510775,"results":"11405","hashOfConfig":"11005"},{"size":6120,"mtime":1786084510775,"results":"11406","hashOfConfig":"11005"},{"size":8876,"mtime":1786084510775,"results":"11407","hashOfConfig":"11005"},{"size":1189,"mtime":1786084510775,"results":"11408","hashOfConfig":"11005"},{"size":17802,"mtime":1786084510776,"results":"11409","hashOfConfig":"11005"},{"size":1578,"mtime":1786084510776,"results":"11410","hashOfConfig":"11005"},{"size":3429,"mtime":1786084510776,"results":"11411","hashOfConfig":"11005"},{"size":12991,"mtime":1786084510777,"results":"11412","hashOfConfig":"11005"},{"size":3465,"mtime":1786084510777,"results":"11413","hashOfConfig":"11005"},{"size":2255,"mtime":1786084510777,"results":"11414","hashOfConfig":"11005"},{"size":3828,"mtime":1786084510777,"results":"11415","hashOfConfig":"11005"},{"size":33386,"mtime":1786084510778,"results":"11416","hashOfConfig":"11005"},{"size":27278,"mtime":1786084510778,"results":"11417","hashOfConfig":"11005"},{"size":10224,"mtime":1786084510780,"results":"11418","hashOfConfig":"11005"},{"size":22664,"mtime":1786084510779,"results":"11419","hashOfConfig":"11005"},{"size":15618,"mtime":1786084510780,"results":"11420","hashOfConfig":"11005"},{"size":12822,"mtime":1786084510780,"results":"11421","hashOfConfig":"11005"},{"size":25725,"mtime":1786084510781,"results":"11422","hashOfConfig":"11005"},{"size":22960,"mtime":1786084510781,"results":"11423","hashOfConfig":"11005"},{"size":3782,"mtime":1786084510781,"results":"11424","hashOfConfig":"11005"},{"size":7116,"mtime":1786084510782,"results":"11425","hashOfConfig":"11005"},{"size":10953,"mtime":1786084510782,"results":"11426","hashOfConfig":"11005"},{"size":887,"mtime":1786084510783,"results":"11427","hashOfConfig":"11005"},{"size":6587,"mtime":1786084510783,"results":"11428","hashOfConfig":"11005"},{"size":25597,"mtime":1786084510784,"results":"11429","hashOfConfig":"11005"},{"size":4305,"mtime":1786084510784,"results":"11430","hashOfConfig":"11005"},{"size":4124,"mtime":1786084510784,"results":"11431","hashOfConfig":"11005"},{"size":3220,"mtime":1786084510785,"results":"11432","hashOfConfig":"11005"},{"size":1982,"mtime":1786084510785,"results":"11433","hashOfConfig":"11005"},{"size":1415,"mtime":1786084510785,"results":"11434","hashOfConfig":"11005"},{"size":2205,"mtime":1786084510785,"results":"11435","hashOfConfig":"11005"},{"size":265,"mtime":1786084510786,"results":"11436","hashOfConfig":"11005"},{"size":7309,"mtime":1786084510786,"results":"11437","hashOfConfig":"11005"},{"size":5880,"mtime":1786084510786,"results":"11438","hashOfConfig":"11005"},{"size":3018,"mtime":1786084510786,"results":"11439","hashOfConfig":"11005"},{"size":4287,"mtime":1786084510787,"results":"11440","hashOfConfig":"11005"},{"size":6751,"mtime":1786084510787,"results":"11441","hashOfConfig":"11005"},{"size":370,"mtime":1786084510787,"results":"11442","hashOfConfig":"11005"},{"size":4137,"mtime":1786084510787,"results":"11443","hashOfConfig":"11005"},{"size":2635,"mtime":1786084510788,"results":"11444","hashOfConfig":"11005"},{"size":3976,"mtime":1786084510789,"results":"11445","hashOfConfig":"11005"},{"size":3984,"mtime":1786084510790,"results":"11446","hashOfConfig":"11005"},{"size":17442,"mtime":1786084510792,"results":"11447","hashOfConfig":"11005"},{"size":2224,"mtime":1786084510793,"results":"11448","hashOfConfig":"11005"},{"size":2110,"mtime":1786084510794,"results":"11449","hashOfConfig":"11005"},{"size":4237,"mtime":1786084510796,"results":"11450","hashOfConfig":"11005"},{"size":6030,"mtime":1786084510799,"results":"11451","hashOfConfig":"11005"},{"size":2718,"mtime":1786084510799,"results":"11452","hashOfConfig":"11005"},{"size":992,"mtime":1786084510800,"results":"11453","hashOfConfig":"11005"},{"size":3282,"mtime":1786084510802,"results":"11454","hashOfConfig":"11005"},{"size":2832,"mtime":1786084510803,"results":"11455","hashOfConfig":"11005"},{"size":3152,"mtime":1786084510804,"results":"11456","hashOfConfig":"11005"},{"size":3300,"mtime":1786084510805,"results":"11457","hashOfConfig":"11005"},{"size":1331,"mtime":1786084510805,"results":"11458","hashOfConfig":"11005"},{"size":10756,"mtime":1786084510785,"results":"11459","hashOfConfig":"11005"},{"size":9824,"mtime":1786084510808,"results":"11460","hashOfConfig":"11005"},{"size":7359,"mtime":1786084510809,"results":"11461","hashOfConfig":"11005"},{"size":20165,"mtime":1786084510811,"results":"11462","hashOfConfig":"11005"},{"size":1945,"mtime":1786084510812,"results":"11463","hashOfConfig":"11005"},{"size":5946,"mtime":1786084510812,"results":"11464","hashOfConfig":"11005"},{"size":9261,"mtime":1786084510814,"results":"11465","hashOfConfig":"11005"},{"size":1492,"mtime":1786084510814,"results":"11466","hashOfConfig":"11005"},{"size":10426,"mtime":1786084510816,"results":"11467","hashOfConfig":"11005"},{"size":9002,"mtime":1786084510817,"results":"11468","hashOfConfig":"11005"},{"size":145,"mtime":1786084510818,"results":"11469","hashOfConfig":"11005"},{"size":4982,"mtime":1786084510819,"results":"11470","hashOfConfig":"11005"},{"size":10783,"mtime":1786084510819,"results":"11471","hashOfConfig":"11005"},{"size":10872,"mtime":1786084510820,"results":"11472","hashOfConfig":"11005"},{"size":144,"mtime":1786084510820,"results":"11473","hashOfConfig":"11005"},{"size":1978,"mtime":1786084510821,"results":"11474","hashOfConfig":"11005"},{"size":5126,"mtime":1786084510821,"results":"11475","hashOfConfig":"11005"},{"size":3092,"mtime":1786084510822,"results":"11476","hashOfConfig":"11005"},{"size":3151,"mtime":1786084510823,"results":"11477","hashOfConfig":"11005"},{"size":2602,"mtime":1786084510824,"results":"11478","hashOfConfig":"11005"},{"size":1849,"mtime":1786084510824,"results":"11479","hashOfConfig":"11005"},{"size":853,"mtime":1786084510825,"results":"11480","hashOfConfig":"11005"},{"size":5089,"mtime":1786084510825,"results":"11481","hashOfConfig":"11005"},{"size":3704,"mtime":1786084510826,"results":"11482","hashOfConfig":"11005"},{"size":1030,"mtime":1786084510827,"results":"11483","hashOfConfig":"11005"},{"size":12476,"mtime":1786084510827,"results":"11484","hashOfConfig":"11005"},{"size":3118,"mtime":1786084510828,"results":"11485","hashOfConfig":"11005"},{"size":632,"mtime":1786084510828,"results":"11486","hashOfConfig":"11005"},{"size":4531,"mtime":1786084510829,"results":"11487","hashOfConfig":"11005"},{"size":13272,"mtime":1786084510829,"results":"11488","hashOfConfig":"11005"},{"size":12176,"mtime":1786084510830,"results":"11489","hashOfConfig":"11005"},{"size":5485,"mtime":1786084510831,"results":"11490","hashOfConfig":"11005"},{"size":1853,"mtime":1786084510831,"results":"11491","hashOfConfig":"11005"},{"size":2983,"mtime":1786084510832,"results":"11492","hashOfConfig":"11005"},{"size":1774,"mtime":1786084510832,"results":"11493","hashOfConfig":"11005"},{"size":4372,"mtime":1786084510832,"results":"11494","hashOfConfig":"11005"},{"size":1086,"mtime":1786084510833,"results":"11495","hashOfConfig":"11005"},{"size":10622,"mtime":1786084510833,"results":"11496","hashOfConfig":"11005"},{"size":2452,"mtime":1786084510833,"results":"11497","hashOfConfig":"11005"},{"size":14213,"mtime":1786084510834,"results":"11498","hashOfConfig":"11005"},{"size":1233,"mtime":1786084510834,"results":"11499","hashOfConfig":"11005"},{"size":20950,"mtime":1786084510835,"results":"11500","hashOfConfig":"11005"},{"size":6967,"mtime":1786084510835,"results":"11501","hashOfConfig":"11005"},{"size":6277,"mtime":1786084510836,"results":"11502","hashOfConfig":"11005"},{"size":3170,"mtime":1786084510836,"results":"11503","hashOfConfig":"11005"},{"size":2284,"mtime":1786084510836,"results":"11504","hashOfConfig":"11005"},{"size":2690,"mtime":1786084510836,"results":"11505","hashOfConfig":"11005"},{"size":2630,"mtime":1786084510837,"results":"11506","hashOfConfig":"11005"},{"size":17193,"mtime":1786084510837,"results":"11507","hashOfConfig":"11005"},{"size":74,"mtime":1786084510837,"results":"11508","hashOfConfig":"11005"},{"size":2101,"mtime":1786084510838,"results":"11509","hashOfConfig":"11005"},{"size":6557,"mtime":1786084510838,"results":"11510","hashOfConfig":"11005"},{"size":3431,"mtime":1786084510838,"results":"11511","hashOfConfig":"11005"},{"size":5100,"mtime":1786084510839,"results":"11512","hashOfConfig":"11005"},{"size":14326,"mtime":1786084510839,"results":"11513","hashOfConfig":"11005"},{"size":12568,"mtime":1786084510840,"results":"11514","hashOfConfig":"11005"},{"size":7780,"mtime":1786084510840,"results":"11515","hashOfConfig":"11005"},{"size":4861,"mtime":1786084510840,"results":"11516","hashOfConfig":"11005"},{"size":2666,"mtime":1786084510840,"results":"11517","hashOfConfig":"11005"},{"size":2742,"mtime":1786084510841,"results":"11518","hashOfConfig":"11005"},{"size":7615,"mtime":1786084510841,"results":"11519","hashOfConfig":"11005"},{"size":4323,"mtime":1786084510843,"results":"11520","hashOfConfig":"11005"},{"size":707,"mtime":1786084510843,"results":"11521","hashOfConfig":"11005"},{"size":1820,"mtime":1786084510844,"results":"11522","hashOfConfig":"11005"},{"size":1232,"mtime":1786084510844,"results":"11523","hashOfConfig":"11005"},{"size":12661,"mtime":1786084510844,"results":"11524","hashOfConfig":"11005"},{"size":1369,"mtime":1786084510844,"results":"11525","hashOfConfig":"11005"},{"size":9375,"mtime":1786084510845,"results":"11526","hashOfConfig":"11005"},{"size":9460,"mtime":1786084510846,"results":"11527","hashOfConfig":"11005"},{"size":20903,"mtime":1786084510847,"results":"11528","hashOfConfig":"11005"},{"size":23181,"mtime":1786084510847,"results":"11529","hashOfConfig":"11005"},{"size":2260,"mtime":1786084510847,"results":"11530","hashOfConfig":"11005"},{"size":1445,"mtime":1786084510847,"results":"11531","hashOfConfig":"11005"},{"size":4521,"mtime":1786084510847,"results":"11532","hashOfConfig":"11005"},{"size":4842,"mtime":1786084510848,"results":"11533","hashOfConfig":"11005"},{"size":2343,"mtime":1786084510848,"results":"11534","hashOfConfig":"11005"},{"size":4217,"mtime":1786084510848,"results":"11535","hashOfConfig":"11005"},{"size":18872,"mtime":1786084510848,"results":"11536","hashOfConfig":"11005"},{"size":7921,"mtime":1786084510848,"results":"11537","hashOfConfig":"11005"},{"size":14572,"mtime":1786084510849,"results":"11538","hashOfConfig":"11005"},{"size":7021,"mtime":1786084510849,"results":"11539","hashOfConfig":"11005"},{"size":4422,"mtime":1786084510849,"results":"11540","hashOfConfig":"11005"},{"size":6335,"mtime":1786084510849,"results":"11541","hashOfConfig":"11005"},{"size":31347,"mtime":1786084510850,"results":"11542","hashOfConfig":"11005"},{"size":23067,"mtime":1786084510850,"results":"11543","hashOfConfig":"11005"},{"size":17223,"mtime":1786084510845,"results":"11544","hashOfConfig":"11005"},{"size":5725,"mtime":1786084510851,"results":"11545","hashOfConfig":"11005"},{"size":4132,"mtime":1786084510851,"results":"11546","hashOfConfig":"11005"},{"size":11076,"mtime":1786084510851,"results":"11547","hashOfConfig":"11005"},{"size":10662,"mtime":1786084510852,"results":"11548","hashOfConfig":"11005"},{"size":10129,"mtime":1786084510852,"results":"11549","hashOfConfig":"11005"},{"size":2537,"mtime":1786084510852,"results":"11550","hashOfConfig":"11005"},{"size":13460,"mtime":1786084510852,"results":"11551","hashOfConfig":"11005"},{"size":3234,"mtime":1786084510853,"results":"11552","hashOfConfig":"11005"},{"size":7436,"mtime":1786084510853,"results":"11553","hashOfConfig":"11005"},{"size":1841,"mtime":1786084510853,"results":"11554","hashOfConfig":"11005"},{"size":5205,"mtime":1786084510852,"results":"11555","hashOfConfig":"11005"},{"size":7819,"mtime":1786084510854,"results":"11556","hashOfConfig":"11005"},{"size":6682,"mtime":1786084510854,"results":"11557","hashOfConfig":"11005"},{"size":1278,"mtime":1786084510854,"results":"11558","hashOfConfig":"11005"},{"size":1125,"mtime":1786084510854,"results":"11559","hashOfConfig":"11005"},{"size":4747,"mtime":1786084510854,"results":"11560","hashOfConfig":"11005"},{"size":1817,"mtime":1786084510855,"results":"11561","hashOfConfig":"11005"},{"size":113,"mtime":1786084510855,"results":"11562","hashOfConfig":"11005"},{"size":1462,"mtime":1786084510855,"results":"11563","hashOfConfig":"11005"},{"size":10032,"mtime":1786084510855,"results":"11564","hashOfConfig":"11005"},{"size":3956,"mtime":1786084510855,"results":"11565","hashOfConfig":"11005"},{"size":1172,"mtime":1786084510855,"results":"11566","hashOfConfig":"11005"},{"size":27232,"mtime":1786084510856,"results":"11567","hashOfConfig":"11005"},{"size":603,"mtime":1786084510856,"results":"11568","hashOfConfig":"11005"},{"size":670,"mtime":1786084510856,"results":"11569","hashOfConfig":"11005"},{"size":8117,"mtime":1786084510856,"results":"11570","hashOfConfig":"11005"},{"size":3658,"mtime":1786084510857,"results":"11571","hashOfConfig":"11005"},{"size":1452,"mtime":1786084510857,"results":"11572","hashOfConfig":"11005"},{"size":11443,"mtime":1786084510857,"results":"11573","hashOfConfig":"11005"},{"size":1914,"mtime":1786084510857,"results":"11574","hashOfConfig":"11005"},{"size":15354,"mtime":1786084510857,"results":"11575","hashOfConfig":"11005"},{"size":7027,"mtime":1786084510858,"results":"11576","hashOfConfig":"11005"},{"size":4857,"mtime":1786084510858,"results":"11577","hashOfConfig":"11005"},{"size":2444,"mtime":1786084510858,"results":"11578","hashOfConfig":"11005"},{"size":14973,"mtime":1786084510859,"results":"11579","hashOfConfig":"11005"},{"size":7837,"mtime":1786084510859,"results":"11580","hashOfConfig":"11005"},{"size":2781,"mtime":1786084510859,"results":"11581","hashOfConfig":"11005"},{"size":11873,"mtime":1786084510859,"results":"11582","hashOfConfig":"11005"},{"size":21176,"mtime":1786084510860,"results":"11583","hashOfConfig":"11005"},{"size":4228,"mtime":1786084510860,"results":"11584","hashOfConfig":"11005"},{"size":9882,"mtime":1786084510860,"results":"11585","hashOfConfig":"11005"},{"size":4102,"mtime":1786084510860,"results":"11586","hashOfConfig":"11005"},{"size":3266,"mtime":1786084510860,"results":"11587","hashOfConfig":"11005"},{"size":9859,"mtime":1786084510861,"results":"11588","hashOfConfig":"11005"},{"size":5296,"mtime":1786084510861,"results":"11589","hashOfConfig":"11005"},{"size":3925,"mtime":1786084510861,"results":"11590","hashOfConfig":"11005"},{"size":1933,"mtime":1786084510861,"results":"11591","hashOfConfig":"11005"},{"size":8391,"mtime":1786084510862,"results":"11592","hashOfConfig":"11005"},{"size":1291,"mtime":1786084510862,"results":"11593","hashOfConfig":"11005"},{"size":2138,"mtime":1786084510862,"results":"11594","hashOfConfig":"11005"},{"size":21300,"mtime":1786084510862,"results":"11595","hashOfConfig":"11005"},{"size":2907,"mtime":1786084510863,"results":"11596","hashOfConfig":"11005"},{"size":14986,"mtime":1786084510863,"results":"11597","hashOfConfig":"11005"},{"size":9048,"mtime":1786084510864,"results":"11598","hashOfConfig":"11005"},{"size":17021,"mtime":1786084510863,"results":"11599","hashOfConfig":"11005"},{"size":12861,"mtime":1786084510864,"results":"11600","hashOfConfig":"11005"},{"size":1064,"mtime":1786084510864,"results":"11601","hashOfConfig":"11005"},{"size":8759,"mtime":1786084510865,"results":"11602","hashOfConfig":"11005"},{"size":4227,"mtime":1786084510865,"results":"11603","hashOfConfig":"11005"},{"size":11822,"mtime":1786084510865,"results":"11604","hashOfConfig":"11005"},{"size":645,"mtime":1786084510866,"results":"11605","hashOfConfig":"11005"},{"size":10739,"mtime":1786084510866,"results":"11606","hashOfConfig":"11005"},{"size":1730,"mtime":1786084510866,"results":"11607","hashOfConfig":"11005"},{"size":5870,"mtime":1786084510866,"results":"11608","hashOfConfig":"11005"},{"size":779,"mtime":1786084510866,"results":"11609","hashOfConfig":"11005"},{"size":9313,"mtime":1786084510867,"results":"11610","hashOfConfig":"11005"},{"size":2042,"mtime":1786084510867,"results":"11611","hashOfConfig":"11005"},{"size":6334,"mtime":1786084510867,"results":"11612","hashOfConfig":"11005"},{"size":5427,"mtime":1786084510867,"results":"11613","hashOfConfig":"11005"},{"size":3716,"mtime":1786084510867,"results":"11614","hashOfConfig":"11005"},{"size":9167,"mtime":1786084510868,"results":"11615","hashOfConfig":"11005"},{"size":5813,"mtime":1786084510868,"results":"11616","hashOfConfig":"11005"},{"size":582,"mtime":1786084510868,"results":"11617","hashOfConfig":"11005"},{"size":4932,"mtime":1786084510868,"results":"11618","hashOfConfig":"11005"},{"size":5809,"mtime":1786084510869,"results":"11619","hashOfConfig":"11005"},{"size":3447,"mtime":1786084510869,"results":"11620","hashOfConfig":"11005"},{"size":5267,"mtime":1786084510869,"results":"11621","hashOfConfig":"11005"},{"size":1642,"mtime":1786084510869,"results":"11622","hashOfConfig":"11005"},{"size":1633,"mtime":1786084510869,"results":"11623","hashOfConfig":"11005"},{"size":15841,"mtime":1786084510870,"results":"11624","hashOfConfig":"11005"},{"size":1555,"mtime":1786084510870,"results":"11625","hashOfConfig":"11005"},{"size":7226,"mtime":1786084510870,"results":"11626","hashOfConfig":"11005"},{"size":2524,"mtime":1786084510870,"results":"11627","hashOfConfig":"11005"},{"size":1738,"mtime":1786084510870,"results":"11628","hashOfConfig":"11005"},{"size":1711,"mtime":1786084510870,"results":"11629","hashOfConfig":"11005"},{"size":4560,"mtime":1786084510871,"results":"11630","hashOfConfig":"11005"},{"size":901,"mtime":1786084510871,"results":"11631","hashOfConfig":"11005"},{"size":678,"mtime":1786084510871,"results":"11632","hashOfConfig":"11005"},{"size":16076,"mtime":1786084510871,"results":"11633","hashOfConfig":"11005"},{"size":14153,"mtime":1786084510871,"results":"11634","hashOfConfig":"11005"},{"size":1244,"mtime":1786084510872,"results":"11635","hashOfConfig":"11005"},{"size":6065,"mtime":1786084510872,"results":"11636","hashOfConfig":"11005"},{"size":14152,"mtime":1786084510872,"results":"11637","hashOfConfig":"11005"},{"size":1962,"mtime":1786084510872,"results":"11638","hashOfConfig":"11005"},{"size":8252,"mtime":1786084510872,"results":"11639","hashOfConfig":"11005"},{"size":11653,"mtime":1786084510873,"results":"11640","hashOfConfig":"11005"},{"size":545,"mtime":1786084510873,"results":"11641","hashOfConfig":"11005"},{"size":13077,"mtime":1786084510873,"results":"11642","hashOfConfig":"11005"},{"size":4923,"mtime":1786084510873,"results":"11643","hashOfConfig":"11005"},{"size":1166,"mtime":1786084510873,"results":"11644","hashOfConfig":"11005"},{"size":2320,"mtime":1786084510873,"results":"11645","hashOfConfig":"11005"},{"size":1462,"mtime":1786084510873,"results":"11646","hashOfConfig":"11005"},{"size":4263,"mtime":1786084510874,"results":"11647","hashOfConfig":"11005"},{"size":183,"mtime":1786084510874,"results":"11648","hashOfConfig":"11005"},{"size":5991,"mtime":1786084510874,"results":"11649","hashOfConfig":"11005"},{"size":11756,"mtime":1786084510874,"results":"11650","hashOfConfig":"11005"},{"size":10549,"mtime":1786084510874,"results":"11651","hashOfConfig":"11005"},{"size":7636,"mtime":1786084510875,"results":"11652","hashOfConfig":"11005"},{"size":3495,"mtime":1786084510875,"results":"11653","hashOfConfig":"11005"},{"size":13475,"mtime":1786084510875,"results":"11654","hashOfConfig":"11005"},{"size":1703,"mtime":1786084510875,"results":"11655","hashOfConfig":"11005"},{"size":8915,"mtime":1786084510875,"results":"11656","hashOfConfig":"11005"},{"size":1952,"mtime":1786084510876,"results":"11657","hashOfConfig":"11005"},{"size":35990,"mtime":1786084510876,"results":"11658","hashOfConfig":"11005"},{"size":42805,"mtime":1786084510877,"results":"11659","hashOfConfig":"11005"},{"size":3409,"mtime":1786084510877,"results":"11660","hashOfConfig":"11005"},{"size":4018,"mtime":1786084510877,"results":"11661","hashOfConfig":"11005"},{"size":794,"mtime":1786084510877,"results":"11662","hashOfConfig":"11005"},{"size":1093,"mtime":1786084510877,"results":"11663","hashOfConfig":"11005"},{"size":4183,"mtime":1786084510878,"results":"11664","hashOfConfig":"11005"},{"size":7920,"mtime":1786084510878,"results":"11665","hashOfConfig":"11005"},{"size":13795,"mtime":1786084510878,"results":"11666","hashOfConfig":"11005"},{"size":19899,"mtime":1786084510878,"results":"11667","hashOfConfig":"11005"},{"size":9968,"mtime":1786084510878,"results":"11668","hashOfConfig":"11005"},{"size":841,"mtime":1786084510878,"results":"11669","hashOfConfig":"11005"},{"size":10268,"mtime":1786084510879,"results":"11670","hashOfConfig":"11005"},{"size":3952,"mtime":1786084510879,"results":"11671","hashOfConfig":"11005"},{"size":33294,"mtime":1786084510879,"results":"11672","hashOfConfig":"11005"},{"size":1881,"mtime":1786084510880,"results":"11673","hashOfConfig":"11005"},{"size":16198,"mtime":1786084510880,"results":"11674","hashOfConfig":"11005"},{"size":15263,"mtime":1786084510880,"results":"11675","hashOfConfig":"11005"},{"size":17658,"mtime":1786084510881,"results":"11676","hashOfConfig":"11005"},{"size":3284,"mtime":1786084510881,"results":"11677","hashOfConfig":"11005"},{"size":18064,"mtime":1786084510881,"results":"11678","hashOfConfig":"11005"},{"size":3744,"mtime":1786084510881,"results":"11679","hashOfConfig":"11005"},{"size":12040,"mtime":1786084510882,"results":"11680","hashOfConfig":"11005"},{"size":15337,"mtime":1786084510882,"results":"11681","hashOfConfig":"11005"},{"size":3124,"mtime":1786084510883,"results":"11682","hashOfConfig":"11005"},{"size":26080,"mtime":1786084510883,"results":"11683","hashOfConfig":"11005"},{"size":20002,"mtime":1786084510883,"results":"11684","hashOfConfig":"11005"},{"size":820,"mtime":1786084510884,"results":"11685","hashOfConfig":"11005"},{"size":3022,"mtime":1786084510884,"results":"11686","hashOfConfig":"11005"},{"size":1299,"mtime":1786084510885,"results":"11687","hashOfConfig":"11005"},{"size":2658,"mtime":1786084510885,"results":"11688","hashOfConfig":"11005"},{"size":36009,"mtime":1786084510885,"results":"11689","hashOfConfig":"11005"},{"size":1787,"mtime":1786084510885,"results":"11690","hashOfConfig":"11005"},{"size":25183,"mtime":1786084510886,"results":"11691","hashOfConfig":"11005"},{"size":15188,"mtime":1786084510886,"results":"11692","hashOfConfig":"11005"},{"size":24965,"mtime":1786084510887,"results":"11693","hashOfConfig":"11005"},{"size":7704,"mtime":1786084510887,"results":"11694","hashOfConfig":"11005"},{"size":3429,"mtime":1786084510887,"results":"11695","hashOfConfig":"11005"},{"size":7440,"mtime":1786084510888,"results":"11696","hashOfConfig":"11005"},{"size":32954,"mtime":1786084510888,"results":"11697","hashOfConfig":"11005"},{"size":19975,"mtime":1786084510888,"results":"11698","hashOfConfig":"11005"},{"size":12127,"mtime":1786084510889,"results":"11699","hashOfConfig":"11005"},{"size":1196,"mtime":1786084510889,"results":"11700","hashOfConfig":"11005"},{"size":8054,"mtime":1786084510889,"results":"11701","hashOfConfig":"11005"},{"size":1910,"mtime":1786084510889,"results":"11702","hashOfConfig":"11005"},{"size":4174,"mtime":1786084510889,"results":"11703","hashOfConfig":"11005"},{"size":4758,"mtime":1786084510890,"results":"11704","hashOfConfig":"11005"},{"size":2950,"mtime":1786084510890,"results":"11705","hashOfConfig":"11005"},{"size":13103,"mtime":1786084510890,"results":"11706","hashOfConfig":"11005"},{"size":3601,"mtime":1786084510890,"results":"11707","hashOfConfig":"11005"},{"size":12899,"mtime":1786084510891,"results":"11708","hashOfConfig":"11005"},{"size":2896,"mtime":1786084510891,"results":"11709","hashOfConfig":"11005"},{"size":4627,"mtime":1786084510891,"results":"11710","hashOfConfig":"11005"},{"size":7505,"mtime":1786084510891,"results":"11711","hashOfConfig":"11005"},{"size":5840,"mtime":1786084510891,"results":"11712","hashOfConfig":"11005"},{"size":2468,"mtime":1786084510892,"results":"11713","hashOfConfig":"11005"},{"size":7884,"mtime":1786084510892,"results":"11714","hashOfConfig":"11005"},{"size":2253,"mtime":1786084510892,"results":"11715","hashOfConfig":"11005"},{"size":1341,"mtime":1786084510892,"results":"11716","hashOfConfig":"11005"},{"size":1180,"mtime":1786084510893,"results":"11717","hashOfConfig":"11005"},{"size":2642,"mtime":1786084510893,"results":"11718","hashOfConfig":"11005"},{"size":3404,"mtime":1786084510893,"results":"11719","hashOfConfig":"11005"},{"size":1353,"mtime":1786084510893,"results":"11720","hashOfConfig":"11005"},{"size":824,"mtime":1786084510893,"results":"11721","hashOfConfig":"11005"},{"size":1342,"mtime":1786084510893,"results":"11722","hashOfConfig":"11005"},{"size":1160,"mtime":1786084510893,"results":"11723","hashOfConfig":"11005"},{"size":791,"mtime":1786084510894,"results":"11724","hashOfConfig":"11005"},{"size":6694,"mtime":1786084510894,"results":"11725","hashOfConfig":"11005"},{"size":3956,"mtime":1786084510894,"results":"11726","hashOfConfig":"11005"},{"size":3027,"mtime":1786084510894,"results":"11727","hashOfConfig":"8808"},{"size":6076,"mtime":1786084510895,"results":"11728","hashOfConfig":"8808"},{"size":1977,"mtime":1786084510895,"results":"11729","hashOfConfig":"8808"},{"size":3581,"mtime":1786084510895,"results":"11730","hashOfConfig":"8808"},{"size":3832,"mtime":1786084510895,"results":"11731","hashOfConfig":"8808"},{"size":1926,"mtime":1786084510895,"results":"11732","hashOfConfig":"8808"},{"size":3510,"mtime":1786084510895,"results":"11733","hashOfConfig":"11005"},{"size":2096,"mtime":1786084510895,"results":"11734","hashOfConfig":"11005"},{"size":864,"mtime":1786084510896,"results":"11735","hashOfConfig":"11005"},{"size":18987,"mtime":1786084510896,"results":"11736","hashOfConfig":"11005"},{"size":1818,"mtime":1786084510896,"results":"11737","hashOfConfig":"11005"},{"size":2576,"mtime":1786084510896,"results":"11738","hashOfConfig":"11005"},{"size":1135,"mtime":1786084510896,"results":"11739","hashOfConfig":"11005"},{"size":891,"mtime":1786084510897,"results":"11740","hashOfConfig":"11005"},{"size":768,"mtime":1786084510897,"results":"11741","hashOfConfig":"11005"},{"size":769,"mtime":1786084510897,"results":"11742","hashOfConfig":"11005"},{"size":1226,"mtime":1786084510897,"results":"11743","hashOfConfig":"11005"},{"size":810,"mtime":1786084510897,"results":"11744","hashOfConfig":"11005"},{"size":1546,"mtime":1786084510897,"results":"11745","hashOfConfig":"11005"},{"size":762,"mtime":1786084510898,"results":"11746","hashOfConfig":"11005"},{"size":868,"mtime":1786084510898,"results":"11747","hashOfConfig":"11005"},{"size":710,"mtime":1786084510898,"results":"11748","hashOfConfig":"11005"},{"size":10421,"mtime":1786084510898,"results":"11749","hashOfConfig":"11005"},{"size":5879,"mtime":1786084510898,"results":"11750","hashOfConfig":"11005"},{"size":6356,"mtime":1786084510899,"results":"11751","hashOfConfig":"11005"},{"size":10811,"mtime":1786084510899,"results":"11752","hashOfConfig":"11005"},{"size":2795,"mtime":1786084510899,"results":"11753","hashOfConfig":"11005"},{"size":1772,"mtime":1786084510899,"results":"11754","hashOfConfig":"11005"},{"size":1810,"mtime":1786084510899,"results":"11755","hashOfConfig":"11005"},{"size":1757,"mtime":1786084510899,"results":"11756","hashOfConfig":"11005"},{"size":1929,"mtime":1786084510900,"results":"11757","hashOfConfig":"11005"},{"size":1780,"mtime":1786084510900,"results":"11758","hashOfConfig":"11005"},{"size":825,"mtime":1786084510900,"results":"11759","hashOfConfig":"11005"},{"size":1748,"mtime":1786084510900,"results":"11760","hashOfConfig":"11005"},{"size":5201,"mtime":1786084510900,"results":"11761","hashOfConfig":"11005"},{"size":6280,"mtime":1786084510900,"results":"11762","hashOfConfig":"11005"},{"size":3020,"mtime":1786084510901,"results":"11763","hashOfConfig":"11005"},{"size":12343,"mtime":1786084510901,"results":"11764","hashOfConfig":"11005"},{"size":2288,"mtime":1786084510901,"results":"11765","hashOfConfig":"11005"},{"size":9176,"mtime":1786084510901,"results":"11766","hashOfConfig":"11005"},{"size":2557,"mtime":1786084510901,"results":"11767","hashOfConfig":"11005"},{"size":6536,"mtime":1786084510901,"results":"11768","hashOfConfig":"11005"},{"size":2312,"mtime":1786084510902,"results":"11769","hashOfConfig":"11005"},{"size":3362,"mtime":1786084510902,"results":"11770","hashOfConfig":"11005"},{"size":10325,"mtime":1786084510902,"results":"11771","hashOfConfig":"11005"},{"size":11435,"mtime":1786084510902,"results":"11772","hashOfConfig":"11005"},{"size":3675,"mtime":1786084510902,"results":"11773","hashOfConfig":"11005"},{"size":297,"mtime":1786084510903,"results":"11774","hashOfConfig":"11005"},{"size":2246,"mtime":1786084510903,"results":"11775","hashOfConfig":"11005"},{"size":29103,"mtime":1786084510903,"results":"11776","hashOfConfig":"11005"},{"size":1424,"mtime":1786084510903,"results":"11777","hashOfConfig":"11005"},{"size":2683,"mtime":1786084510903,"results":"11778","hashOfConfig":"11005"},{"size":492,"mtime":1786084510903,"results":"11779","hashOfConfig":"11005"},{"size":4307,"mtime":1786084510904,"results":"11780","hashOfConfig":"11005"},{"size":2134,"mtime":1786084510904,"results":"11781","hashOfConfig":"11005"},{"size":34357,"mtime":1786084510905,"results":"11782","hashOfConfig":"8808"},{"size":956,"mtime":1786084510905,"results":"11783","hashOfConfig":"11005"},{"size":845,"mtime":1786084510905,"results":"11784","hashOfConfig":"11005"},{"size":1375,"mtime":1786084510905,"results":"11785","hashOfConfig":"11005"},{"size":10778,"mtime":1786084510906,"results":"11786","hashOfConfig":"11005"},{"size":2713,"mtime":1786084510906,"results":"11787","hashOfConfig":"11005"},{"size":1274,"mtime":1786084510906,"results":"11788","hashOfConfig":"11005"},{"size":948,"mtime":1786084510906,"results":"11789","hashOfConfig":"11005"},{"size":1121,"mtime":1786084510906,"results":"11790","hashOfConfig":"11005"},{"size":1016,"mtime":1786084510906,"results":"11791","hashOfConfig":"11005"},{"size":1366,"mtime":1786084510906,"results":"11792","hashOfConfig":"11005"},{"size":2429,"mtime":1786084510906,"results":"11793","hashOfConfig":"11005"},{"size":1984,"mtime":1786084510907,"results":"11794","hashOfConfig":"11005"},{"size":1038,"mtime":1786084510907,"results":"11795","hashOfConfig":"11005"},{"size":1029,"mtime":1786084510907,"results":"11796","hashOfConfig":"11005"},{"size":948,"mtime":1786084510907,"results":"11797","hashOfConfig":"11005"},{"size":4736,"mtime":1786084510907,"results":"11798","hashOfConfig":"11005"},{"size":4360,"mtime":1786084510907,"results":"11799","hashOfConfig":"11005"},{"size":8664,"mtime":1786084510908,"results":"11800","hashOfConfig":"11005"},{"size":5781,"mtime":1786084510908,"results":"11801","hashOfConfig":"11005"},{"size":4561,"mtime":1786084510908,"results":"11802","hashOfConfig":"11005"},{"size":2704,"mtime":1786084510909,"results":"11803","hashOfConfig":"11005"},{"size":13942,"mtime":1786084510909,"results":"11804","hashOfConfig":"11005"},{"size":5444,"mtime":1786084510909,"results":"11805","hashOfConfig":"11005"},{"size":2335,"mtime":1786084510909,"results":"11806","hashOfConfig":"11005"},{"size":1743,"mtime":1786084510910,"results":"11807","hashOfConfig":"11005"},{"size":748,"mtime":1786084510910,"results":"11808","hashOfConfig":"11005"},{"size":529,"mtime":1786084510910,"results":"11809","hashOfConfig":"11005"},{"size":3828,"mtime":1786084510911,"results":"11810","hashOfConfig":"11005"},{"size":3861,"mtime":1786084510911,"results":"11811","hashOfConfig":"11005"},{"size":2717,"mtime":1786084510912,"results":"11812","hashOfConfig":"11005"},{"size":2701,"mtime":1786084510912,"results":"11813","hashOfConfig":"11005"},{"size":2657,"mtime":1786084510912,"results":"11814","hashOfConfig":"11005"},{"size":4069,"mtime":1786084510912,"results":"11815","hashOfConfig":"11005"},{"size":1057,"mtime":1786084510912,"results":"11816","hashOfConfig":"11005"},{"size":2856,"mtime":1786084510913,"results":"11817","hashOfConfig":"11005"},{"size":3607,"mtime":1786084510913,"results":"11818","hashOfConfig":"11005"},{"size":4229,"mtime":1786084510913,"results":"11819","hashOfConfig":"11005"},{"size":15189,"mtime":1786084510913,"results":"11820","hashOfConfig":"11005"},{"size":4044,"mtime":1786084510913,"results":"11821","hashOfConfig":"11005"},{"size":15850,"mtime":1786084510914,"results":"11822","hashOfConfig":"11005"},{"size":307,"mtime":1786084510914,"results":"11823","hashOfConfig":"11005"},{"size":14066,"mtime":1786084510914,"results":"11824","hashOfConfig":"11005"},{"size":2502,"mtime":1786084510914,"results":"11825","hashOfConfig":"11005"},{"size":7888,"mtime":1786084510915,"results":"11826","hashOfConfig":"11005"},{"size":9152,"mtime":1786084510915,"results":"11827","hashOfConfig":"11005"},{"size":22836,"mtime":1786084510915,"results":"11828","hashOfConfig":"11005"},{"size":3588,"mtime":1786084510916,"results":"11829","hashOfConfig":"11005"},{"size":1726,"mtime":1786084510916,"results":"11830","hashOfConfig":"11005"},{"size":6273,"mtime":1786084510911,"results":"11831","hashOfConfig":"11005"},{"size":1873,"mtime":1786084510916,"results":"11832","hashOfConfig":"11833"},{"size":1692,"mtime":1786084510916,"results":"11834","hashOfConfig":"11833"},{"size":491,"mtime":1786084510916,"results":"11835","hashOfConfig":"11833"},{"size":4662,"mtime":1786084510916,"results":"11836","hashOfConfig":"11833"},{"size":2506,"mtime":1786084510916,"results":"11837","hashOfConfig":"11833"},{"size":3464,"mtime":1786084510917,"results":"11838","hashOfConfig":"11833"},{"size":1106,"mtime":1786084510917,"results":"11839","hashOfConfig":"11833"},{"size":3851,"mtime":1786084510917,"results":"11840","hashOfConfig":"11833"},{"size":3228,"mtime":1786084510917,"results":"11841","hashOfConfig":"11833"},{"size":1987,"mtime":1786084510917,"results":"11842","hashOfConfig":"11833"},{"size":2931,"mtime":1786084510917,"results":"11843","hashOfConfig":"11833"},{"size":14110,"mtime":1786084510917,"results":"11844","hashOfConfig":"11833"},{"size":12150,"mtime":1786084510918,"results":"11845","hashOfConfig":"11833"},{"size":6538,"mtime":1786084510918,"results":"11846","hashOfConfig":"11833"},{"size":5460,"mtime":1786084510918,"results":"11847","hashOfConfig":"11833"},{"size":1325,"mtime":1786084510918,"results":"11848","hashOfConfig":"11833"},{"size":7317,"mtime":1786084510918,"results":"11849","hashOfConfig":"11833"},{"size":2382,"mtime":1786084510918,"results":"11850","hashOfConfig":"11833"},{"size":3339,"mtime":1786084510919,"results":"11851","hashOfConfig":"11833"},{"size":3142,"mtime":1786084510919,"results":"11852","hashOfConfig":"11833"},{"size":6116,"mtime":1786084510919,"results":"11853","hashOfConfig":"11833"},{"size":7299,"mtime":1786084510919,"results":"11854","hashOfConfig":"11833"},{"size":10386,"mtime":1786084510919,"results":"11855","hashOfConfig":"11833"},{"size":907,"mtime":1786084510919,"results":"11856","hashOfConfig":"11833"},{"size":4753,"mtime":1786084510919,"results":"11857","hashOfConfig":"11833"},{"size":16059,"mtime":1786084510920,"results":"11858","hashOfConfig":"11833"},{"size":3250,"mtime":1786084510920,"results":"11859","hashOfConfig":"11833"},{"size":8366,"mtime":1786084510920,"results":"11860","hashOfConfig":"11833"},{"size":3668,"mtime":1786084510920,"results":"11861","hashOfConfig":"11833"},{"size":908,"mtime":1786084510920,"results":"11862","hashOfConfig":"11833"},{"size":3085,"mtime":1786084510920,"results":"11863","hashOfConfig":"11833"},{"size":1767,"mtime":1786084510921,"results":"11864","hashOfConfig":"11833"},{"size":3082,"mtime":1786084510921,"results":"11865","hashOfConfig":"11833"},{"size":2055,"mtime":1786084510921,"results":"11866","hashOfConfig":"11833"},{"size":7370,"mtime":1786084510921,"results":"11867","hashOfConfig":"11833"},{"size":13108,"mtime":1786084510921,"results":"11868","hashOfConfig":"11833"},{"size":2953,"mtime":1786084510921,"results":"11869","hashOfConfig":"11833"},{"size":29890,"mtime":1786084510922,"results":"11870","hashOfConfig":"11833"},{"size":756,"mtime":1786084510922,"results":"11871","hashOfConfig":"11833"},{"size":3853,"mtime":1786084510922,"results":"11872","hashOfConfig":"11833"},{"size":24064,"mtime":1786084510922,"results":"11873","hashOfConfig":"11833"},{"size":1556,"mtime":1786084510923,"results":"11874","hashOfConfig":"11833"},{"size":910,"mtime":1786084510923,"results":"11875","hashOfConfig":"11833"},{"size":5553,"mtime":1786084510923,"results":"11876","hashOfConfig":"11833"},{"size":43003,"mtime":1786084510923,"results":"11877","hashOfConfig":"11833"},{"size":13162,"mtime":1786084510924,"results":"11878","hashOfConfig":"11833"},{"size":1992,"mtime":1786084510924,"results":"11879","hashOfConfig":"11833"},{"size":1717,"mtime":1786084510924,"results":"11880","hashOfConfig":"11833"},{"size":7919,"mtime":1786084510924,"results":"11881","hashOfConfig":"11833"},{"size":4451,"mtime":1786084510924,"results":"11882","hashOfConfig":"11833"},{"size":12475,"mtime":1786084510924,"results":"11883","hashOfConfig":"11833"},{"size":19916,"mtime":1786084510925,"results":"11884","hashOfConfig":"11833"},{"size":29696,"mtime":1786084510925,"results":"11885","hashOfConfig":"11833"},{"size":7457,"mtime":1786084510925,"results":"11886","hashOfConfig":"11833"},{"size":23245,"mtime":1786084510926,"results":"11887","hashOfConfig":"11833"},{"size":522,"mtime":1786084510926,"results":"11888","hashOfConfig":"11833"},{"size":7446,"mtime":1786084510926,"results":"11889","hashOfConfig":"11833"},{"size":21289,"mtime":1786084510926,"results":"11890","hashOfConfig":"11833"},{"size":39688,"mtime":1786084510927,"results":"11891","hashOfConfig":"11833"},{"size":69106,"mtime":1786084510927,"results":"11892","hashOfConfig":"11833"},{"size":29434,"mtime":1786084510928,"results":"11893","hashOfConfig":"11833"},{"size":2279,"mtime":1786084510928,"results":"11894","hashOfConfig":"11833"},{"size":1654,"mtime":1786084510928,"results":"11895","hashOfConfig":"11833"},{"size":3439,"mtime":1786084510928,"results":"11896","hashOfConfig":"11833"},{"size":3592,"mtime":1786084510928,"results":"11897","hashOfConfig":"11833"},{"size":28078,"mtime":1786084510929,"results":"11898","hashOfConfig":"11833"},{"size":3386,"mtime":1786084510929,"results":"11899","hashOfConfig":"11833"},{"size":5506,"mtime":1786084510929,"results":"11900","hashOfConfig":"11833"},{"size":1005,"mtime":1786084510929,"results":"11901","hashOfConfig":"11833"},{"size":272,"mtime":1786084510929,"results":"11902","hashOfConfig":"11833"},{"size":1425,"mtime":1786084510929,"results":"11903","hashOfConfig":"11833"},{"size":2514,"mtime":1786084510929,"results":"11904","hashOfConfig":"11833"},{"size":3918,"mtime":1786084510929,"results":"11905","hashOfConfig":"11833"},{"size":6342,"mtime":1786084510930,"results":"11906","hashOfConfig":"11833"},{"size":13413,"mtime":1786084510930,"results":"11907","hashOfConfig":"11833"},{"size":14675,"mtime":1786084510930,"results":"11908","hashOfConfig":"11833"},{"size":27881,"mtime":1786084510930,"results":"11909","hashOfConfig":"11833"},{"size":6978,"mtime":1786084510931,"results":"11910","hashOfConfig":"11833"},{"size":6399,"mtime":1786084510931,"results":"11911","hashOfConfig":"11833"},{"size":6131,"mtime":1786084510931,"results":"11912","hashOfConfig":"11833"},{"size":2814,"mtime":1786084510931,"results":"11913","hashOfConfig":"11833"},{"size":1306,"mtime":1786084510932,"results":"11914","hashOfConfig":"11833"},{"size":3548,"mtime":1786084510932,"results":"11915","hashOfConfig":"11833"},{"size":1465,"mtime":1786084510932,"results":"11916","hashOfConfig":"11833"},{"size":166,"mtime":1786084510932,"results":"11917","hashOfConfig":"11005"},{"size":33359,"mtime":1786084510932,"results":"11918","hashOfConfig":"11833"},{"size":1017,"mtime":1786084510932,"results":"11919","hashOfConfig":"11833"},{"size":2578,"mtime":1786084510932,"results":"11920","hashOfConfig":"11005"},{"size":2150,"mtime":1786084510932,"results":"11921","hashOfConfig":"11833"},{"size":6194,"mtime":1786084510932,"results":"11922","hashOfConfig":"11833"},{"size":10409,"mtime":1786084510933,"results":"11923","hashOfConfig":"11833"},{"size":833,"mtime":1786084510933,"results":"11924","hashOfConfig":"11005"},{"size":1549,"mtime":1786084510933,"results":"11925","hashOfConfig":"11005"},{"size":2905,"mtime":1786084510933,"results":"11926","hashOfConfig":"11833"},{"size":1962,"mtime":1786084510933,"results":"11927","hashOfConfig":"11833"},{"size":5523,"mtime":1786084510933,"results":"11928","hashOfConfig":"11833"},{"size":387,"mtime":1786084510933,"results":"11929","hashOfConfig":"11005"},{"size":3725,"mtime":1786084510934,"results":"11930","hashOfConfig":"11833"},{"size":5642,"mtime":1786084510934,"results":"11931","hashOfConfig":"11833"},{"size":2881,"mtime":1786084510934,"results":"11932","hashOfConfig":"11833"},{"size":19237,"mtime":1786084510934,"results":"11933","hashOfConfig":"11833"},{"size":2917,"mtime":1786084510934,"results":"11934","hashOfConfig":"11005"},{"size":955,"mtime":1786084510935,"results":"11935","hashOfConfig":"11833"},{"size":2841,"mtime":1786084510935,"results":"11936","hashOfConfig":"11833"},{"size":899,"mtime":1786084510935,"results":"11937","hashOfConfig":"11833"},{"size":996,"mtime":1786084510935,"results":"11938","hashOfConfig":"11833"},{"size":536,"mtime":1786084510935,"results":"11939","hashOfConfig":"11833"},{"size":1285,"mtime":1786084510935,"results":"11940","hashOfConfig":"11833"},{"size":459,"mtime":1786084510935,"results":"11941","hashOfConfig":"11833"},{"size":1401,"mtime":1786084510935,"results":"11942","hashOfConfig":"11833"},{"size":732,"mtime":1786084510935,"results":"11943","hashOfConfig":"11833"},{"size":2510,"mtime":1786084510935,"results":"11944","hashOfConfig":"11833"},{"size":476,"mtime":1786084510936,"results":"11945","hashOfConfig":"11833"},{"size":645,"mtime":1786084510936,"results":"11946","hashOfConfig":"11833"},{"size":1356,"mtime":1786084510936,"results":"11947","hashOfConfig":"11833"},{"size":1090,"mtime":1786084510936,"results":"11948","hashOfConfig":"11005"},{"size":4971,"mtime":1786084510936,"results":"11949","hashOfConfig":"11833"},{"size":1597,"mtime":1786084510936,"results":"11950","hashOfConfig":"11833"},{"size":1792,"mtime":1786084510936,"results":"11951","hashOfConfig":"11005"},{"size":2910,"mtime":1786084510936,"results":"11952","hashOfConfig":"11833"},{"size":1106,"mtime":1786084510937,"results":"11953","hashOfConfig":"11833"},{"size":4989,"mtime":1786084510937,"results":"11954","hashOfConfig":"11833"},{"size":152,"mtime":1786084510937,"results":"11955","hashOfConfig":"11833"},{"size":24136,"mtime":1786084510937,"results":"11956","hashOfConfig":"11005"},{"size":510,"mtime":1786084510937,"results":"11957","hashOfConfig":"11005"},{"size":5631,"mtime":1786084510937,"results":"11958","hashOfConfig":"11005"},{"size":1758,"mtime":1786084510937,"results":"11959","hashOfConfig":"11005"},{"size":1423,"mtime":1786084510938,"results":"11960","hashOfConfig":"11833"},{"size":1426,"mtime":1786084510938,"results":"11961","hashOfConfig":"11833"},{"size":1804,"mtime":1786084510938,"results":"11962","hashOfConfig":"11833"},{"size":1121,"mtime":1786084510938,"results":"11963","hashOfConfig":"11833"},{"size":1961,"mtime":1786084510938,"results":"11964","hashOfConfig":"11833"},{"size":1311,"mtime":1786084510938,"results":"11965","hashOfConfig":"11005"},{"size":1563,"mtime":1786084510938,"results":"11966","hashOfConfig":"11005"},{"size":2520,"mtime":1786084510938,"results":"11967","hashOfConfig":"11005"},{"size":17521,"mtime":1786084510939,"results":"11968","hashOfConfig":"11005"},{"size":5947,"mtime":1786084510939,"results":"11969","hashOfConfig":"11005"},{"size":1381,"mtime":1786084510939,"results":"11970","hashOfConfig":"11005"},{"size":275,"mtime":1786084510939,"results":"11971","hashOfConfig":"11005"},{"size":276,"mtime":1786084510939,"results":"11972","hashOfConfig":"11005"},{"size":67,"mtime":1786084510939,"results":"11973","hashOfConfig":"11005"},{"size":300,"mtime":1786084510939,"results":"11974","hashOfConfig":"11005"},{"size":1481,"mtime":1786084510939,"results":"11975","hashOfConfig":"11005"},{"size":784,"mtime":1786084510939,"results":"11976","hashOfConfig":"11005"},{"size":2537,"mtime":1786084510939,"results":"11977","hashOfConfig":"11005"},{"size":29488,"mtime":1786084510940,"results":"11978","hashOfConfig":"11005"},{"size":731,"mtime":1786084510940,"results":"11979","hashOfConfig":"11005"},{"size":3224,"mtime":1786084510940,"results":"11980","hashOfConfig":"11005"},{"size":336,"mtime":1786084510940,"results":"11981","hashOfConfig":"11005"},{"size":6146,"mtime":1786084510940,"results":"11982","hashOfConfig":"11005"},{"size":328,"mtime":1786084510940,"results":"11983","hashOfConfig":"11005"},{"size":2181,"mtime":1786084510940,"results":"11984","hashOfConfig":"11005"},{"size":57,"mtime":1786084510940,"results":"11985","hashOfConfig":"11005"},{"size":3374,"mtime":1786084510940,"results":"11986","hashOfConfig":"11005"},{"size":6068,"mtime":1786084510940,"results":"11987","hashOfConfig":"11005"},{"size":20595,"mtime":1786084510941,"results":"11988","hashOfConfig":"11005"},{"size":902,"mtime":1786084510941,"results":"11989","hashOfConfig":"11005"},{"size":628,"mtime":1786084510941,"results":"11990","hashOfConfig":"11005"},{"size":163,"mtime":1786084510941,"results":"11991","hashOfConfig":"11005"},{"size":114,"mtime":1786084510941,"results":"11992","hashOfConfig":"11005"},{"size":2209,"mtime":1786084510941,"results":"11993","hashOfConfig":"11005"},{"size":3144,"mtime":1786084510941,"results":"11994","hashOfConfig":"11005"},{"size":1546,"mtime":1786084510941,"results":"11995","hashOfConfig":"11005"},{"size":411,"mtime":1786084510942,"results":"11996","hashOfConfig":"11005"},{"size":445,"mtime":1786084510942,"results":"11997","hashOfConfig":"11005"},{"size":30127,"mtime":1786084510942,"results":"11998","hashOfConfig":"11005"},{"size":1326,"mtime":1786084510942,"results":"11999","hashOfConfig":"11005"},{"size":427,"mtime":1786084510942,"results":"12000","hashOfConfig":"11005"},{"size":698,"mtime":1786084510943,"results":"12001","hashOfConfig":"11005"},{"size":9522,"mtime":1786084510943,"results":"12002","hashOfConfig":"11005"},{"size":12881,"mtime":1786084510944,"results":"12003","hashOfConfig":"11005"},{"size":12462,"mtime":1786084510944,"results":"12004","hashOfConfig":"11005"},{"size":3986,"mtime":1786084510944,"results":"12005","hashOfConfig":"11005"},{"size":3379,"mtime":1786084510944,"results":"12006","hashOfConfig":"11005"},{"size":1297,"mtime":1786084510943,"results":"12007","hashOfConfig":"11005"},{"size":7596,"mtime":1786084510945,"results":"12008","hashOfConfig":"11005"},{"size":7931,"mtime":1786084510945,"results":"12009","hashOfConfig":"11005"},{"size":28380,"mtime":1786084510945,"results":"12010","hashOfConfig":"11005"},{"size":960,"mtime":1786084510945,"results":"12011","hashOfConfig":"11005"},{"size":10090,"mtime":1786084510945,"results":"12012","hashOfConfig":"11005"},{"size":16090,"mtime":1786084510946,"results":"12013","hashOfConfig":"11005"},{"size":8609,"mtime":1786084510946,"results":"12014","hashOfConfig":"11005"},{"size":2532,"mtime":1786084510946,"results":"12015","hashOfConfig":"11005"},{"size":964,"mtime":1786084510946,"results":"12016","hashOfConfig":"11005"},{"size":5336,"mtime":1786084510946,"results":"12017","hashOfConfig":"11005"},{"size":6904,"mtime":1786084510946,"results":"12018","hashOfConfig":"11005"},{"size":9487,"mtime":1786084510947,"results":"12019","hashOfConfig":"11005"},{"size":4107,"mtime":1786084510947,"results":"12020","hashOfConfig":"11005"},{"size":470,"mtime":1786084510947,"results":"12021","hashOfConfig":"11005"},{"size":1019,"mtime":1786084510947,"results":"12022","hashOfConfig":"11005"},{"size":19942,"mtime":1786084510947,"results":"12023","hashOfConfig":"11005"},{"size":14548,"mtime":1786084510944,"results":"12024","hashOfConfig":"11005"},{"size":2800,"mtime":1786084510947,"results":"12025","hashOfConfig":"11005"},{"size":2005,"mtime":1786084510947,"results":"12026","hashOfConfig":"11005"},{"size":295,"mtime":1786084510947,"results":"12027","hashOfConfig":"11005"},{"size":5731,"mtime":1786084510948,"results":"12028","hashOfConfig":"11005"},{"size":801,"mtime":1786084510948,"results":"12029","hashOfConfig":"11005"},{"size":659,"mtime":1786084510948,"results":"12030","hashOfConfig":"11005"},{"size":836,"mtime":1786084510948,"results":"12031","hashOfConfig":"11005"},{"size":19877,"mtime":1786084510948,"results":"12032","hashOfConfig":"11005"},{"size":3726,"mtime":1786084510948,"results":"12033","hashOfConfig":"11005"},{"size":8545,"mtime":1786084510948,"results":"12034","hashOfConfig":"11005"},{"size":2917,"mtime":1786084510949,"results":"12035","hashOfConfig":"11005"},{"size":758,"mtime":1786084510949,"results":"12036","hashOfConfig":"11005"},{"size":1508,"mtime":1786084510949,"results":"12037","hashOfConfig":"11005"},{"size":2942,"mtime":1786084510949,"results":"12038","hashOfConfig":"11005"},{"size":2304,"mtime":1786084510949,"results":"12039","hashOfConfig":"11005"},{"size":4237,"mtime":1786084510949,"results":"12040","hashOfConfig":"11005"},{"size":10700,"mtime":1786084510950,"results":"12041","hashOfConfig":"11833"},{"size":1704,"mtime":1786084510950,"results":"12042","hashOfConfig":"11005"},{"size":207,"mtime":1786084510950,"results":"12043","hashOfConfig":"11005"},{"size":1098,"mtime":1786084510950,"results":"12044","hashOfConfig":"11005"},{"size":9518,"mtime":1786084510950,"results":"12045","hashOfConfig":"11005"},{"size":4919,"mtime":1786084510950,"results":"12046","hashOfConfig":"11005"},{"size":1708,"mtime":1786084510950,"results":"12047","hashOfConfig":"11005"},{"size":959,"mtime":1786084510950,"results":"12048","hashOfConfig":"11005"},{"size":725,"mtime":1786084510951,"results":"12049","hashOfConfig":"11005"},{"size":5512,"mtime":1786084510951,"results":"12050","hashOfConfig":"11005"},{"size":18283,"mtime":1786084510951,"results":"12051","hashOfConfig":"11005"},{"size":1224,"mtime":1786084510951,"results":"12052","hashOfConfig":"11005"},{"size":1849,"mtime":1786084510951,"results":"12053","hashOfConfig":"11005"},{"size":6012,"mtime":1786084510952,"results":"12054","hashOfConfig":"11005"},{"size":5197,"mtime":1786084510952,"results":"12055","hashOfConfig":"11005"},{"size":8422,"mtime":1786084510952,"results":"12056","hashOfConfig":"11005"},{"size":10166,"mtime":1786084510953,"results":"12057","hashOfConfig":"11005"},{"size":3176,"mtime":1786084510953,"results":"12058","hashOfConfig":"11005"},{"size":15384,"mtime":1786084510953,"results":"12059","hashOfConfig":"11005"},{"size":6518,"mtime":1786084510953,"results":"12060","hashOfConfig":"11005"},{"size":4417,"mtime":1786084510953,"results":"12061","hashOfConfig":"11005"},{"size":1151,"mtime":1786084510954,"results":"12062","hashOfConfig":"11005"},{"size":2635,"mtime":1786084510954,"results":"12063","hashOfConfig":"11005"},{"size":1519,"mtime":1786084510954,"results":"12064","hashOfConfig":"11005"},{"size":5092,"mtime":1786084510954,"results":"12065","hashOfConfig":"11005"},{"size":2384,"mtime":1786084510954,"results":"12066","hashOfConfig":"11005"},{"size":1283,"mtime":1786084510954,"results":"12067","hashOfConfig":"11005"},{"size":2010,"mtime":1786084510954,"results":"12068","hashOfConfig":"11005"},{"size":1525,"mtime":1786084510954,"results":"12069","hashOfConfig":"11005"},{"size":6035,"mtime":1786084510955,"results":"12070","hashOfConfig":"11005"},{"size":1353,"mtime":1786084510955,"results":"12071","hashOfConfig":"11005"},{"size":6156,"mtime":1786084510955,"results":"12072","hashOfConfig":"11005"},{"size":1934,"mtime":1786084510956,"results":"12073","hashOfConfig":"11005"},{"size":2712,"mtime":1786084510956,"results":"12074","hashOfConfig":"11005"},{"size":35808,"mtime":1786084510956,"results":"12075","hashOfConfig":"11005"},{"size":1040,"mtime":1786084510956,"results":"12076","hashOfConfig":"11005"},{"size":826,"mtime":1786084510956,"results":"12077","hashOfConfig":"11005"},{"size":3055,"mtime":1786084510956,"results":"12078","hashOfConfig":"11005"},{"size":3417,"mtime":1786084510956,"results":"12079","hashOfConfig":"11005"},{"size":12877,"mtime":1786084510957,"results":"12080","hashOfConfig":"11005"},{"size":1090,"mtime":1786084510957,"results":"12081","hashOfConfig":"11005"},{"size":3550,"mtime":1786084510957,"results":"12082","hashOfConfig":"11005"},{"size":941,"mtime":1786084510957,"results":"12083","hashOfConfig":"11005"},{"size":3287,"mtime":1786084510957,"results":"12084","hashOfConfig":"11005"},{"size":10670,"mtime":1786084510957,"results":"12085","hashOfConfig":"11005"},{"size":3964,"mtime":1786084510957,"results":"12086","hashOfConfig":"11005"},{"size":2115,"mtime":1786084510958,"results":"12087","hashOfConfig":"11005"},{"size":8756,"mtime":1786084510958,"results":"12088","hashOfConfig":"11005"},{"size":450,"mtime":1786084510958,"results":"12089","hashOfConfig":"11005"},{"size":95,"mtime":1786084510958,"results":"12090","hashOfConfig":"11005"},{"size":1513,"mtime":1786084510958,"results":"12091","hashOfConfig":"11005"},{"size":10397,"mtime":1786084510958,"results":"12092","hashOfConfig":"11005"},{"size":4277,"mtime":1786084510959,"results":"12093","hashOfConfig":"11005"},{"size":3417,"mtime":1786084510959,"results":"12094","hashOfConfig":"11005"},{"size":11277,"mtime":1786084510959,"results":"12095","hashOfConfig":"11005"},{"size":2637,"mtime":1786084510959,"results":"12096","hashOfConfig":"11005"},{"size":24999,"mtime":1786084510960,"results":"12097","hashOfConfig":"11005"},{"size":2180,"mtime":1786084510960,"results":"12098","hashOfConfig":"11005"},{"size":2469,"mtime":1786084510960,"results":"12099","hashOfConfig":"11005"},{"size":3140,"mtime":1786084510960,"results":"12100","hashOfConfig":"11005"},{"size":5412,"mtime":1786084510960,"results":"12101","hashOfConfig":"11005"},{"size":20818,"mtime":1786084510960,"results":"12102","hashOfConfig":"11005"},{"size":10145,"mtime":1786084510961,"results":"12103","hashOfConfig":"11005"},{"size":194,"mtime":1786084510961,"results":"12104","hashOfConfig":"11005"},{"size":2089,"mtime":1786084510961,"results":"12105","hashOfConfig":"11005"},{"size":6352,"mtime":1786084510961,"results":"12106","hashOfConfig":"11005"},{"size":1560,"mtime":1786084510961,"results":"12107","hashOfConfig":"11005"},{"size":1280,"mtime":1786084510961,"results":"12108","hashOfConfig":"11005"},{"size":501,"mtime":1786084510961,"results":"12109","hashOfConfig":"11005"},{"size":1067,"mtime":1786084510961,"results":"12110","hashOfConfig":"11005"},{"size":1229,"mtime":1786084510961,"results":"12111","hashOfConfig":"11005"},{"size":1495,"mtime":1786084510961,"results":"12112","hashOfConfig":"11005"},{"size":2639,"mtime":1786084510962,"results":"12113","hashOfConfig":"11005"},{"size":1632,"mtime":1786084510962,"results":"12114","hashOfConfig":"11005"},{"size":1090,"mtime":1786084510962,"results":"12115","hashOfConfig":"11005"},{"size":4284,"mtime":1786084510962,"results":"12116","hashOfConfig":"11005"},{"size":5926,"mtime":1786084510962,"results":"12117","hashOfConfig":"11005"},{"size":655,"mtime":1786084510962,"results":"12118","hashOfConfig":"11005"},{"size":3533,"mtime":1786084510962,"results":"12119","hashOfConfig":"11005"},{"size":1171,"mtime":1786084510962,"results":"12120","hashOfConfig":"11005"},{"size":2185,"mtime":1786084510962,"results":"12121","hashOfConfig":"11005"},{"size":6714,"mtime":1786084510962,"results":"12122","hashOfConfig":"11005"},{"size":6522,"mtime":1786084510963,"results":"12123","hashOfConfig":"11005"},{"size":994,"mtime":1786084510963,"results":"12124","hashOfConfig":"11005"},{"size":5393,"mtime":1786084510963,"results":"12125","hashOfConfig":"11005"},{"size":1082,"mtime":1786084510963,"results":"12126","hashOfConfig":"11005"},{"size":1700,"mtime":1786084510963,"results":"12127","hashOfConfig":"11005"},{"size":13757,"mtime":1786084510963,"results":"12128","hashOfConfig":"11005"},{"size":2317,"mtime":1786084510963,"results":"12129","hashOfConfig":"11005"},{"size":4261,"mtime":1786084510963,"results":"12130","hashOfConfig":"11005"},{"size":6997,"mtime":1786084510963,"results":"12131","hashOfConfig":"11005"},{"size":137,"mtime":1786084510964,"results":"12132","hashOfConfig":"11005"},{"size":6058,"mtime":1786084510964,"results":"12133","hashOfConfig":"11005"},{"size":2493,"mtime":1786084510964,"results":"12134","hashOfConfig":"11005"},{"size":2380,"mtime":1786084510964,"results":"12135","hashOfConfig":"11005"},{"size":3237,"mtime":1786084510964,"results":"12136","hashOfConfig":"11005"},{"size":3905,"mtime":1786084510964,"results":"12137","hashOfConfig":"11005"},{"size":3064,"mtime":1786084510964,"results":"12138","hashOfConfig":"12139"},{"size":1337,"mtime":1786084510964,"results":"12140","hashOfConfig":"11005"},{"size":1479,"mtime":1786084510964,"results":"12141","hashOfConfig":"11005"},{"size":5416,"mtime":1786084510965,"results":"12142","hashOfConfig":"11005"},{"size":1960,"mtime":1786084510965,"results":"12143","hashOfConfig":"11005"},{"size":1703,"mtime":1786084510965,"results":"12144","hashOfConfig":"11005"},{"size":2463,"mtime":1786084510965,"results":"12145","hashOfConfig":"11005"},{"size":1800,"mtime":1786084510965,"results":"12146","hashOfConfig":"11005"},{"size":429,"mtime":1786084510965,"results":"12147","hashOfConfig":"11005"},{"size":8890,"mtime":1786084510965,"results":"12148","hashOfConfig":"11005"},{"size":1676,"mtime":1786084510965,"results":"12149","hashOfConfig":"11005"},{"size":2864,"mtime":1786084510965,"results":"12150","hashOfConfig":"11005"},{"size":4747,"mtime":1786084510966,"results":"12151","hashOfConfig":"11005"},{"size":1646,"mtime":1786084510966,"results":"12152","hashOfConfig":"11005"},{"size":657,"mtime":1786084510966,"results":"12153","hashOfConfig":"11005"},{"size":8489,"mtime":1786084510966,"results":"12154","hashOfConfig":"11005"},{"size":4169,"mtime":1786084510966,"results":"12155","hashOfConfig":"11005"},{"size":3228,"mtime":1786084510966,"results":"12156","hashOfConfig":"11005"},{"size":1439,"mtime":1786084510966,"results":"12157","hashOfConfig":"11005"},{"size":5421,"mtime":1786084510966,"results":"12158","hashOfConfig":"11005"},{"size":810,"mtime":1786084510966,"results":"12159","hashOfConfig":"11005"},{"size":986,"mtime":1786084510967,"results":"12160","hashOfConfig":"11005"},{"size":2176,"mtime":1786084510967,"results":"12161","hashOfConfig":"11005"},{"size":4837,"mtime":1786084510967,"results":"12162","hashOfConfig":"11005"},{"size":8256,"mtime":1786084510967,"results":"12163","hashOfConfig":"11005"},{"size":3056,"mtime":1786084510967,"results":"12164","hashOfConfig":"11005"},{"size":2042,"mtime":1786084510967,"results":"12165","hashOfConfig":"11005"},{"size":2838,"mtime":1786084510967,"results":"12166","hashOfConfig":"11005"},{"size":3007,"mtime":1786084510967,"results":"12167","hashOfConfig":"11005"},{"size":1147,"mtime":1786084510967,"results":"12168","hashOfConfig":"11005"},{"size":14304,"mtime":1786084510968,"results":"12169","hashOfConfig":"11005"},{"size":3807,"mtime":1786084510968,"results":"12170","hashOfConfig":"11005"},{"size":3196,"mtime":1786084510968,"results":"12171","hashOfConfig":"11005"},{"size":503,"mtime":1786084510968,"results":"12172","hashOfConfig":"11005"},{"size":2056,"mtime":1786084510968,"results":"12173","hashOfConfig":"11005"},{"size":15771,"mtime":1786084510968,"results":"12174","hashOfConfig":"11005"},{"size":14882,"mtime":1786084510969,"results":"12175","hashOfConfig":"11005"},{"size":8185,"mtime":1786084510969,"results":"12176","hashOfConfig":"11005"},{"size":4066,"mtime":1786084510969,"results":"12177","hashOfConfig":"11005"},{"size":1814,"mtime":1786084510969,"results":"12178","hashOfConfig":"11005"},{"size":18018,"mtime":1786084510969,"results":"12179","hashOfConfig":"11005"},{"size":3251,"mtime":1786084510969,"results":"12180","hashOfConfig":"11005"},{"size":1859,"mtime":1786084510969,"results":"12181","hashOfConfig":"11005"},{"size":6075,"mtime":1786084510970,"results":"12182","hashOfConfig":"11005"},{"size":7663,"mtime":1786084510970,"results":"12183","hashOfConfig":"11005"},{"size":2148,"mtime":1786084510970,"results":"12184","hashOfConfig":"11005"},{"size":1402,"mtime":1786084510970,"results":"12185","hashOfConfig":"11005"},{"size":24577,"mtime":1786084510970,"results":"12186","hashOfConfig":"11005"},{"size":8348,"mtime":1786084510971,"results":"12187","hashOfConfig":"11005"},{"size":4149,"mtime":1786084510971,"results":"12188","hashOfConfig":"11005"},{"size":2721,"mtime":1786084510971,"results":"12189","hashOfConfig":"11005"},{"size":9837,"mtime":1786084510971,"results":"12190","hashOfConfig":"11005"},{"size":1584,"mtime":1786084510971,"results":"12191","hashOfConfig":"11005"},{"size":704,"mtime":1786084510968,"results":"12192","hashOfConfig":"11005"},{"size":19687,"mtime":1786084510971,"results":"12193","hashOfConfig":"11005"},{"size":5112,"mtime":1786084510971,"results":"12194","hashOfConfig":"11005"},{"size":2948,"mtime":1786084510972,"results":"12195","hashOfConfig":"11005"},{"size":79473,"mtime":1786084510972,"results":"12196","hashOfConfig":"11005"},{"size":7819,"mtime":1786084510972,"results":"12197","hashOfConfig":"11005"},{"size":35802,"mtime":1786084510973,"results":"12198","hashOfConfig":"11005"},{"size":2055,"mtime":1786084510973,"results":"12199","hashOfConfig":"11005"},{"size":780,"mtime":1786084510973,"results":"12200","hashOfConfig":"11005"},{"size":7651,"mtime":1786084510973,"results":"12201","hashOfConfig":"11005"},{"size":5276,"mtime":1786084510973,"results":"12202","hashOfConfig":"11005"},{"size":986,"mtime":1786084510973,"results":"12203","hashOfConfig":"11005"},{"size":6818,"mtime":1786084510974,"results":"12204","hashOfConfig":"11005"},{"size":97727,"mtime":1786084510975,"results":"12205","hashOfConfig":"11005"},{"size":5303,"mtime":1786084510975,"results":"12206","hashOfConfig":"11005"},{"size":994,"mtime":1786084510975,"results":"12207","hashOfConfig":"11005"},{"size":1434,"mtime":1786084510975,"results":"12208","hashOfConfig":"11005"},{"size":3807,"mtime":1786084510975,"results":"12209","hashOfConfig":"11005"},{"size":18357,"mtime":1786084510975,"results":"12210","hashOfConfig":"11005"},{"size":612,"mtime":1786084510976,"results":"12211","hashOfConfig":"11005"},{"size":1255,"mtime":1786084510976,"results":"12212","hashOfConfig":"11005"},{"size":4523,"mtime":1786084510976,"results":"12213","hashOfConfig":"11005"},{"size":823,"mtime":1786084510976,"results":"12214","hashOfConfig":"11005"},{"size":10513,"mtime":1786084510976,"results":"12215","hashOfConfig":"11005"},{"size":5575,"mtime":1786084510976,"results":"12216","hashOfConfig":"11005"},{"size":12934,"mtime":1786084510976,"results":"12217","hashOfConfig":"11005"},{"size":2281,"mtime":1786084510976,"results":"12218","hashOfConfig":"11005"},{"size":1246,"mtime":1786084510977,"results":"12219","hashOfConfig":"11005"},{"size":633,"mtime":1786084510977,"results":"12220","hashOfConfig":"11005"},{"size":219,"mtime":1786084510977,"results":"12221","hashOfConfig":"11005"},{"size":2547,"mtime":1786084510977,"results":"12222","hashOfConfig":"11005"},{"size":3557,"mtime":1786084510977,"results":"12223","hashOfConfig":"11005"},{"size":3867,"mtime":1786084510977,"results":"12224","hashOfConfig":"11005"},{"size":3585,"mtime":1786084510977,"results":"12225","hashOfConfig":"11005"},{"size":302,"mtime":1786084510977,"results":"12226","hashOfConfig":"11005"},{"size":249,"mtime":1786084510977,"results":"12227","hashOfConfig":"11005"},{"size":794,"mtime":1786084510977,"results":"12228","hashOfConfig":"11005"},{"size":533,"mtime":1786084510978,"results":"12229","hashOfConfig":"8216"},{"size":1137,"mtime":1786084510978,"results":"12230","hashOfConfig":"8216"},{"size":2489,"mtime":1786084510978,"results":"12231","hashOfConfig":"12232"},{"size":2691,"mtime":1786084510979,"results":"12233","hashOfConfig":"12232"},{"size":4337,"mtime":1786084510979,"results":"12234","hashOfConfig":"12232"},{"size":10284,"mtime":1786084510979,"results":"12235","hashOfConfig":"12232"},{"size":16678,"mtime":1786084510979,"results":"12236","hashOfConfig":"12232"},{"size":4508,"mtime":1786084510979,"results":"12237","hashOfConfig":"12232"},{"size":10728,"mtime":1786084510980,"results":"12238","hashOfConfig":"12232"},{"size":13001,"mtime":1786084510980,"results":"12239","hashOfConfig":"12232"},{"size":22327,"mtime":1786084510980,"results":"12240","hashOfConfig":"12232"},{"size":1637,"mtime":1786084510980,"results":"12241","hashOfConfig":"12232"},{"size":11751,"mtime":1786084510980,"results":"12242","hashOfConfig":"12232"},{"size":6246,"mtime":1786084510980,"results":"12243","hashOfConfig":"12232"},{"size":6142,"mtime":1786084510981,"results":"12244","hashOfConfig":"12232"},{"size":6615,"mtime":1786084510981,"results":"12245","hashOfConfig":"12232"},{"size":10016,"mtime":1786084510981,"results":"12246","hashOfConfig":"12232"},{"size":23177,"mtime":1786084510981,"results":"12247","hashOfConfig":"12232"},{"size":1138,"mtime":1786084510981,"results":"12248","hashOfConfig":"12232"},{"size":1754,"mtime":1786084510981,"results":"12249","hashOfConfig":"12232"},{"size":6479,"mtime":1786084510981,"results":"12250","hashOfConfig":"12232"},{"size":20290,"mtime":1786084510982,"results":"12251","hashOfConfig":"12232"},{"size":2819,"mtime":1786084510982,"results":"12252","hashOfConfig":"12232"},{"size":12117,"mtime":1786084510982,"results":"12253","hashOfConfig":"12232"},{"size":3453,"mtime":1786084510982,"results":"12254","hashOfConfig":"12232"},{"size":4087,"mtime":1786084510982,"results":"12255","hashOfConfig":"12232"},{"size":5866,"mtime":1786084510982,"results":"12256","hashOfConfig":"12232"},{"size":3059,"mtime":1786084510982,"results":"12257","hashOfConfig":"12232"},{"size":2177,"mtime":1786084510982,"results":"12258","hashOfConfig":"12232"},{"size":4997,"mtime":1786084510983,"results":"12259","hashOfConfig":"12232"},{"size":5319,"mtime":1786084510983,"results":"12260","hashOfConfig":"12232"},{"size":19903,"mtime":1786084510983,"results":"12261","hashOfConfig":"12232"},{"size":11514,"mtime":1786084510983,"results":"12262","hashOfConfig":"12232"},{"size":6436,"mtime":1786084510983,"results":"12263","hashOfConfig":"12232"},{"size":1993,"mtime":1786084510983,"results":"12264","hashOfConfig":"12232"},{"size":5776,"mtime":1786084510984,"results":"12265","hashOfConfig":"12232"},{"size":4013,"mtime":1786084510984,"results":"12266","hashOfConfig":"12232"},{"size":7286,"mtime":1786084510984,"results":"12267","hashOfConfig":"12232"},{"size":988,"mtime":1786084510984,"results":"12268","hashOfConfig":"12232"},{"size":8582,"mtime":1786084510984,"results":"12269","hashOfConfig":"12232"},{"size":12162,"mtime":1786084510984,"results":"12270","hashOfConfig":"12232"},{"size":7233,"mtime":1786084510985,"results":"12271","hashOfConfig":"12232"},{"size":11112,"mtime":1786084510985,"results":"12272","hashOfConfig":"12232"},{"size":815,"mtime":1786084510985,"results":"12273","hashOfConfig":"12232"},{"size":2306,"mtime":1786084510985,"results":"12274","hashOfConfig":"12232"},{"size":4644,"mtime":1786084510985,"results":"12275","hashOfConfig":"12232"},{"size":4795,"mtime":1786084510986,"results":"12276","hashOfConfig":"12232"},{"size":7553,"mtime":1786084510986,"results":"12277","hashOfConfig":"12232"},{"size":1206,"mtime":1786084510986,"results":"12278","hashOfConfig":"12232"},{"size":24684,"mtime":1786084510986,"results":"12279","hashOfConfig":"12232"},{"size":7261,"mtime":1786084510986,"results":"12280","hashOfConfig":"12232"},{"size":4087,"mtime":1786084510987,"results":"12281","hashOfConfig":"12232"},{"size":746,"mtime":1786084510987,"results":"12282","hashOfConfig":"12232"},{"size":775,"mtime":1786084510987,"results":"12283","hashOfConfig":"12232"},{"size":233,"mtime":1786084510988,"results":"12284","hashOfConfig":"12285"},{"size":46,"mtime":1786084510988,"results":"12286","hashOfConfig":"8216"},{"size":176,"mtime":1786084510988,"results":"12287","hashOfConfig":"8216"},{"size":2323,"mtime":1786084510989,"results":"12288","hashOfConfig":"12232"},{"size":876,"mtime":1786084510990,"results":"12289","hashOfConfig":"12285"},{"size":3632,"mtime":1786084510990,"results":"12290","hashOfConfig":"12232"},{"size":4765,"mtime":1786084510990,"results":"12291","hashOfConfig":"12232"},{"size":4006,"mtime":1786084510990,"results":"12292","hashOfConfig":"12232"},{"size":5733,"mtime":1786084510990,"results":"12293","hashOfConfig":"12232"},{"size":799,"mtime":1786084510990,"results":"12294","hashOfConfig":"12232"},{"size":2061,"mtime":1786084510991,"results":"12295","hashOfConfig":"12232"},{"size":1988,"mtime":1786084510991,"results":"12296","hashOfConfig":"12232"},{"size":2165,"mtime":1786084510991,"results":"12297","hashOfConfig":"12232"},{"size":8162,"mtime":1786084510991,"results":"12298","hashOfConfig":"12232"},{"size":544,"mtime":1786084510991,"results":"12299","hashOfConfig":"12232"},{"size":883,"mtime":1786084510991,"results":"12300","hashOfConfig":"12232"},{"size":1684,"mtime":1786084510992,"results":"12301","hashOfConfig":"12232"},{"size":672,"mtime":1786084510992,"results":"12302","hashOfConfig":"12232"},{"size":1280,"mtime":1786084510992,"results":"12303","hashOfConfig":"12232"},{"size":2004,"mtime":1786084510992,"results":"12304","hashOfConfig":"12232"},{"size":468,"mtime":1786084510992,"results":"12305","hashOfConfig":"12232"},{"size":11934,"mtime":1786084510992,"results":"12306","hashOfConfig":"12232"},{"size":3863,"mtime":1786084510992,"results":"12307","hashOfConfig":"12232"},{"size":5394,"mtime":1786084510993,"results":"12308","hashOfConfig":"12232"},{"size":6202,"mtime":1786084510993,"results":"12309","hashOfConfig":"12232"},{"size":6335,"mtime":1786084510993,"results":"12310","hashOfConfig":"12232"},{"size":6827,"mtime":1786084510993,"results":"12311","hashOfConfig":"12232"},{"size":12331,"mtime":1786084510993,"results":"12312","hashOfConfig":"12232"},{"size":5574,"mtime":1786084510993,"results":"12313","hashOfConfig":"12232"},{"size":7318,"mtime":1786084510994,"results":"12314","hashOfConfig":"12232"},{"size":10758,"mtime":1786084510994,"results":"12315","hashOfConfig":"12232"},{"size":10785,"mtime":1786084510994,"results":"12316","hashOfConfig":"12232"},{"size":7539,"mtime":1786084510994,"results":"12317","hashOfConfig":"12232"},{"size":18359,"mtime":1786084510994,"results":"12318","hashOfConfig":"12232"},{"size":19835,"mtime":1786084510995,"results":"12319","hashOfConfig":"12232"},{"size":6591,"mtime":1786084510995,"results":"12320","hashOfConfig":"12232"},{"size":13544,"mtime":1786084510995,"results":"12321","hashOfConfig":"12232"},{"size":10002,"mtime":1786084510995,"results":"12322","hashOfConfig":"12232"},{"size":50084,"mtime":1786084510996,"results":"12323","hashOfConfig":"12232"},{"size":35973,"mtime":1786084510996,"results":"12324","hashOfConfig":"12232"},{"size":3667,"mtime":1786084510996,"results":"12325","hashOfConfig":"12232"},{"size":11454,"mtime":1786084510996,"results":"12326","hashOfConfig":"12232"},{"size":7446,"mtime":1786084510997,"results":"12327","hashOfConfig":"12232"},{"size":7728,"mtime":1786084510997,"results":"12328","hashOfConfig":"12232"},{"size":10997,"mtime":1786084510997,"results":"12329","hashOfConfig":"12232"},{"size":7202,"mtime":1786084510997,"results":"12330","hashOfConfig":"12232"},{"size":7150,"mtime":1786084510997,"results":"12331","hashOfConfig":"12232"},{"size":6887,"mtime":1786084510998,"results":"12332","hashOfConfig":"12232"},{"size":7112,"mtime":1786084510998,"results":"12333","hashOfConfig":"12232"},{"size":7202,"mtime":1786084510998,"results":"12334","hashOfConfig":"12232"},{"size":10347,"mtime":1786084510998,"results":"12335","hashOfConfig":"12232"},{"size":6029,"mtime":1786084510998,"results":"12336","hashOfConfig":"12232"},{"size":16161,"mtime":1786084510998,"results":"12337","hashOfConfig":"12232"},{"size":13880,"mtime":1786084510999,"results":"12338","hashOfConfig":"12232"},{"size":18473,"mtime":1786084510999,"results":"12339","hashOfConfig":"12232"},{"size":17857,"mtime":1786084510999,"results":"12340","hashOfConfig":"12232"},{"size":5709,"mtime":1786084510999,"results":"12341","hashOfConfig":"12232"},{"size":15823,"mtime":1786084511000,"results":"12342","hashOfConfig":"12232"},{"size":11159,"mtime":1786084511000,"results":"12343","hashOfConfig":"12232"},{"size":6888,"mtime":1786084511000,"results":"12344","hashOfConfig":"12232"},{"size":2459,"mtime":1786084511000,"results":"12345","hashOfConfig":"12232"},{"size":7343,"mtime":1786084511000,"results":"12346","hashOfConfig":"12232"},{"size":12242,"mtime":1786084511001,"results":"12347","hashOfConfig":"12232"},{"size":8432,"mtime":1786084511001,"results":"12348","hashOfConfig":"12232"},{"size":1894,"mtime":1786084511001,"results":"12349","hashOfConfig":"12232"},{"size":21681,"mtime":1786084511001,"results":"12350","hashOfConfig":"12232"},{"size":13365,"mtime":1786084511002,"results":"12351","hashOfConfig":"12232"},{"size":5022,"mtime":1786084511002,"results":"12352","hashOfConfig":"12232"},{"size":18772,"mtime":1786084511002,"results":"12353","hashOfConfig":"12232"},{"size":7286,"mtime":1786084511002,"results":"12354","hashOfConfig":"12232"},{"size":11487,"mtime":1786084511003,"results":"12355","hashOfConfig":"12232"},{"size":4232,"mtime":1786084511003,"results":"12356","hashOfConfig":"12232"},{"size":3504,"mtime":1786084511003,"results":"12357","hashOfConfig":"12232"},{"size":17821,"mtime":1786084511003,"results":"12358","hashOfConfig":"12232"},{"size":4673,"mtime":1786084511003,"results":"12359","hashOfConfig":"12232"},{"size":2887,"mtime":1786084511003,"results":"12360","hashOfConfig":"12232"},{"size":6239,"mtime":1786084511004,"results":"12361","hashOfConfig":"12232"},{"size":12661,"mtime":1786084511004,"results":"12362","hashOfConfig":"12232"},{"size":13477,"mtime":1786084511004,"results":"12363","hashOfConfig":"12232"},{"size":5760,"mtime":1786084511004,"results":"12364","hashOfConfig":"12232"},{"size":2603,"mtime":1786084511004,"results":"12365","hashOfConfig":"12232"},{"size":7336,"mtime":1786084511004,"results":"12366","hashOfConfig":"12232"},{"size":26079,"mtime":1786084511005,"results":"12367","hashOfConfig":"12232"},{"size":15464,"mtime":1786084511005,"results":"12368","hashOfConfig":"12232"},{"size":8286,"mtime":1786084511005,"results":"12369","hashOfConfig":"12232"},{"size":10049,"mtime":1786084511005,"results":"12370","hashOfConfig":"12232"},{"size":6380,"mtime":1786084511005,"results":"12371","hashOfConfig":"12232"},{"size":5248,"mtime":1786084511006,"results":"12372","hashOfConfig":"12232"},{"size":79093,"mtime":1786084511007,"results":"12373","hashOfConfig":"12232"},{"size":6476,"mtime":1786084511007,"results":"12374","hashOfConfig":"12232"},{"size":2631,"mtime":1786084511007,"results":"12375","hashOfConfig":"12232"},{"size":3352,"mtime":1786084511007,"results":"12376","hashOfConfig":"12232"},{"size":3915,"mtime":1786084511007,"results":"12377","hashOfConfig":"12232"},{"size":19809,"mtime":1786084511007,"results":"12378","hashOfConfig":"12232"},{"size":3777,"mtime":1786084511008,"results":"12379","hashOfConfig":"12232"},{"size":4512,"mtime":1786084511008,"results":"12380","hashOfConfig":"12232"},{"size":4715,"mtime":1786084511008,"results":"12381","hashOfConfig":"12232"},{"size":4995,"mtime":1786084511008,"results":"12382","hashOfConfig":"12232"},{"size":5958,"mtime":1786084511008,"results":"12383","hashOfConfig":"12232"},{"size":7062,"mtime":1786084511008,"results":"12384","hashOfConfig":"12232"},{"size":2962,"mtime":1786084511008,"results":"12385","hashOfConfig":"12232"},{"size":4160,"mtime":1786084511008,"results":"12386","hashOfConfig":"12232"},{"size":24550,"mtime":1786084511009,"results":"12387","hashOfConfig":"12232"},{"size":9667,"mtime":1786084511009,"results":"12388","hashOfConfig":"12232"},{"size":16162,"mtime":1786084511009,"results":"12389","hashOfConfig":"12232"},{"size":11246,"mtime":1786084511009,"results":"12390","hashOfConfig":"12232"},{"size":12469,"mtime":1786084511009,"results":"12391","hashOfConfig":"12232"},{"size":11230,"mtime":1786084511010,"results":"12392","hashOfConfig":"12232"},{"size":13731,"mtime":1786084511010,"results":"12393","hashOfConfig":"12232"},{"size":2343,"mtime":1786084511010,"results":"12394","hashOfConfig":"12232"},{"size":21285,"mtime":1786084511010,"results":"12395","hashOfConfig":"12232"},{"size":6805,"mtime":1786084511010,"results":"12396","hashOfConfig":"12232"},{"size":14586,"mtime":1786084511011,"results":"12397","hashOfConfig":"12232"},{"size":8417,"mtime":1786084511011,"results":"12398","hashOfConfig":"12232"},{"size":14614,"mtime":1786084511011,"results":"12399","hashOfConfig":"12232"},{"size":10891,"mtime":1786084511011,"results":"12400","hashOfConfig":"12232"},{"size":4083,"mtime":1786084511011,"results":"12401","hashOfConfig":"12232"},{"size":11230,"mtime":1786084511011,"results":"12402","hashOfConfig":"12232"},{"size":6348,"mtime":1786084511012,"results":"12403","hashOfConfig":"12232"},{"size":5621,"mtime":1786084511012,"results":"12404","hashOfConfig":"12232"},{"size":9945,"mtime":1786084511012,"results":"12405","hashOfConfig":"12232"},{"size":7461,"mtime":1786084511012,"results":"12406","hashOfConfig":"12232"},{"size":13037,"mtime":1786084511012,"results":"12407","hashOfConfig":"12232"},{"size":2208,"mtime":1786084511012,"results":"12408","hashOfConfig":"12232"},{"size":25438,"mtime":1786084511013,"results":"12409","hashOfConfig":"12232"},{"size":16265,"mtime":1786084511013,"results":"12410","hashOfConfig":"12232"},{"size":13534,"mtime":1786084511013,"results":"12411","hashOfConfig":"12232"},{"size":7418,"mtime":1786084511013,"results":"12412","hashOfConfig":"12232"},{"size":13302,"mtime":1786084511014,"results":"12413","hashOfConfig":"12232"},{"size":8412,"mtime":1786084511014,"results":"12414","hashOfConfig":"12232"},{"size":27589,"mtime":1786084511014,"results":"12415","hashOfConfig":"12232"},{"size":4776,"mtime":1786084511014,"results":"12416","hashOfConfig":"12232"},{"size":5676,"mtime":1786084511014,"results":"12417","hashOfConfig":"12232"},{"size":5927,"mtime":1786084511014,"results":"12418","hashOfConfig":"12232"},{"size":9076,"mtime":1786084511015,"results":"12419","hashOfConfig":"12232"},{"size":7004,"mtime":1786084511015,"results":"12420","hashOfConfig":"12232"},{"size":4965,"mtime":1786084511015,"results":"12421","hashOfConfig":"12232"},{"size":4857,"mtime":1786084511015,"results":"12422","hashOfConfig":"12232"},{"size":4305,"mtime":1786084511015,"results":"12423","hashOfConfig":"12232"},{"size":6599,"mtime":1786084511015,"results":"12424","hashOfConfig":"12232"},{"size":4662,"mtime":1786084511015,"results":"12425","hashOfConfig":"12232"},{"size":7889,"mtime":1786084511016,"results":"12426","hashOfConfig":"12232"},{"size":4596,"mtime":1786084511016,"results":"12427","hashOfConfig":"12232"},{"size":6630,"mtime":1786084511016,"results":"12428","hashOfConfig":"12232"},{"size":2617,"mtime":1786084511016,"results":"12429","hashOfConfig":"12232"},{"size":671,"mtime":1786084511016,"results":"12430","hashOfConfig":"8216"},{"size":4207,"mtime":1786084511016,"results":"12431","hashOfConfig":"12232"},{"size":214,"mtime":1786084511017,"results":"12432","hashOfConfig":"12285"},{"size":7896,"mtime":1786084511022,"results":"12433","hashOfConfig":"12232"},{"size":4273,"mtime":1786084511022,"results":"12434","hashOfConfig":"12232"},{"size":5033,"mtime":1786084511022,"results":"12435","hashOfConfig":"12232"},{"size":3154,"mtime":1786084511023,"results":"12436","hashOfConfig":"12232"},{"size":2492,"mtime":1786084511023,"results":"12437","hashOfConfig":"12232"},{"size":4305,"mtime":1786084511023,"results":"12438","hashOfConfig":"12232"},{"size":2888,"mtime":1786084511023,"results":"12439","hashOfConfig":"12232"},{"size":6507,"mtime":1786084511023,"results":"12440","hashOfConfig":"12232"},{"size":2722,"mtime":1786084511023,"results":"12441","hashOfConfig":"12232"},{"size":1890,"mtime":1786084511024,"results":"12442","hashOfConfig":"12232"},{"size":1476,"mtime":1786084511024,"results":"12443","hashOfConfig":"12232"},{"size":2629,"mtime":1786084511024,"results":"12444","hashOfConfig":"12232"},{"size":4845,"mtime":1786084511024,"results":"12445","hashOfConfig":"12232"},{"size":12866,"mtime":1786084511024,"results":"12446","hashOfConfig":"12232"},{"size":3436,"mtime":1786084511024,"results":"12447","hashOfConfig":"12232"},{"size":5561,"mtime":1786084511024,"results":"12448","hashOfConfig":"12232"},{"size":7283,"mtime":1786084511025,"results":"12449","hashOfConfig":"12232"},{"size":4973,"mtime":1786084511025,"results":"12450","hashOfConfig":"12232"},{"size":2790,"mtime":1786084511025,"results":"12451","hashOfConfig":"12232"},{"size":4440,"mtime":1786084511025,"results":"12452","hashOfConfig":"12232"},{"size":6817,"mtime":1786084511025,"results":"12453","hashOfConfig":"12232"},{"size":3297,"mtime":1786084511025,"results":"12454","hashOfConfig":"12232"},{"size":3654,"mtime":1786084511026,"results":"12455","hashOfConfig":"12232"},{"size":3519,"mtime":1786084511026,"results":"12456","hashOfConfig":"12232"},{"size":3101,"mtime":1786084511026,"results":"12457","hashOfConfig":"12232"},{"size":6675,"mtime":1786084511026,"results":"12458","hashOfConfig":"12232"},{"size":3101,"mtime":1786084511026,"results":"12459","hashOfConfig":"12232"},{"size":4445,"mtime":1786084511026,"results":"12460","hashOfConfig":"12232"},{"size":10285,"mtime":1786084511027,"results":"12461","hashOfConfig":"12232"},{"size":8570,"mtime":1786084511027,"results":"12462","hashOfConfig":"12232"},{"size":6935,"mtime":1786084511027,"results":"12463","hashOfConfig":"12232"},{"size":3745,"mtime":1786084511027,"results":"12464","hashOfConfig":"12232"},{"size":701,"mtime":1786084511027,"results":"12465","hashOfConfig":"12232"},{"size":5412,"mtime":1786084511027,"results":"12466","hashOfConfig":"12232"},{"size":1565,"mtime":1786084511027,"results":"12467","hashOfConfig":"12232"},{"size":4677,"mtime":1786084511027,"results":"12468","hashOfConfig":"12232"},{"size":5123,"mtime":1786084511028,"results":"12469","hashOfConfig":"12232"},{"size":5184,"mtime":1786084511028,"results":"12470","hashOfConfig":"12232"},{"size":1538,"mtime":1786084511028,"results":"12471","hashOfConfig":"12232"},{"size":1793,"mtime":1786084511028,"results":"12472","hashOfConfig":"12232"},{"size":2678,"mtime":1786084511028,"results":"12473","hashOfConfig":"12232"},{"size":4004,"mtime":1786084511028,"results":"12474","hashOfConfig":"12232"},{"size":4213,"mtime":1786084511028,"results":"12475","hashOfConfig":"8189"},{"size":6217,"mtime":1786084511029,"results":"12476","hashOfConfig":"8189"},{"size":1650,"mtime":1786084511029,"results":"12477","hashOfConfig":"12232"},{"size":2883,"mtime":1786084511029,"results":"12478","hashOfConfig":"12232"},{"size":2826,"mtime":1786084511029,"results":"12479","hashOfConfig":"12232"},{"size":3841,"mtime":1786084511030,"results":"12480","hashOfConfig":"12232"},{"size":2600,"mtime":1786084511030,"results":"12481","hashOfConfig":"12232"},{"size":3743,"mtime":1786084511030,"results":"12482","hashOfConfig":"12232"},{"size":893,"mtime":1786084511030,"results":"12483","hashOfConfig":"12232"},{"size":2503,"mtime":1786084511030,"results":"12484","hashOfConfig":"12232"},{"size":2284,"mtime":1786084511030,"results":"12485","hashOfConfig":"12232"},{"size":4291,"mtime":1786084511030,"results":"12486","hashOfConfig":"12232"},{"size":3992,"mtime":1786084511030,"results":"12487","hashOfConfig":"12232"},{"size":5679,"mtime":1786084511031,"results":"12488","hashOfConfig":"12232"},{"size":3607,"mtime":1786084511031,"results":"12489","hashOfConfig":"12232"},{"size":4495,"mtime":1786084511031,"results":"12490","hashOfConfig":"12232"},{"size":1663,"mtime":1786084511031,"results":"12491","hashOfConfig":"12232"},{"size":1960,"mtime":1786084511031,"results":"12492","hashOfConfig":"12232"},{"size":54659,"mtime":1786084511032,"results":"12493","hashOfConfig":"12232"},{"size":4681,"mtime":1786084511032,"results":"12494","hashOfConfig":"12232"},{"size":4836,"mtime":1786084511032,"results":"12495","hashOfConfig":"12232"},{"size":2139,"mtime":1786084511032,"results":"12496","hashOfConfig":"12232"},{"size":3224,"mtime":1786084511032,"results":"12497","hashOfConfig":"12232"},{"size":1728,"mtime":1786084511033,"results":"12498","hashOfConfig":"12232"},{"size":25883,"mtime":1786084511033,"results":"12499","hashOfConfig":"12232"},{"size":34417,"mtime":1786084511033,"results":"12500","hashOfConfig":"12232"},{"size":4807,"mtime":1786084511034,"results":"12501","hashOfConfig":"12232"},{"size":12242,"mtime":1786084511034,"results":"12502","hashOfConfig":"12232"},{"size":9491,"mtime":1786084511034,"results":"12503","hashOfConfig":"12232"},{"size":14662,"mtime":1786084511034,"results":"12504","hashOfConfig":"12232"},{"size":2641,"mtime":1786084511034,"results":"12505","hashOfConfig":"12232"},{"size":15225,"mtime":1786084511035,"results":"12506","hashOfConfig":"12232"},{"size":28590,"mtime":1786084511035,"results":"12507","hashOfConfig":"12232"},{"size":9435,"mtime":1786084511035,"results":"12508","hashOfConfig":"12232"},{"size":3983,"mtime":1786084511035,"results":"12509","hashOfConfig":"12232"},{"size":3262,"mtime":1786084511036,"results":"12510","hashOfConfig":"12232"},{"size":36728,"mtime":1786084511036,"results":"12511","hashOfConfig":"12232"},{"size":9698,"mtime":1786084511037,"results":"12512","hashOfConfig":"12232"},{"size":14142,"mtime":1786084511037,"results":"12513","hashOfConfig":"12232"},{"size":3424,"mtime":1786084511037,"results":"12514","hashOfConfig":"12232"},{"size":1611,"mtime":1786084511037,"results":"12515","hashOfConfig":"12232"},{"size":1749,"mtime":1786084511038,"results":"12516","hashOfConfig":"12232"},{"size":3291,"mtime":1786084511038,"results":"12517","hashOfConfig":"12232"},{"size":4763,"mtime":1786084511038,"results":"12518","hashOfConfig":"12232"},{"size":1674,"mtime":1786084511038,"results":"12519","hashOfConfig":"12232"},{"size":4856,"mtime":1786084511038,"results":"12520","hashOfConfig":"12232"},{"size":2304,"mtime":1786084511038,"results":"12521","hashOfConfig":"12232"},{"size":1758,"mtime":1786084511038,"results":"12522","hashOfConfig":"12232"},{"size":899,"mtime":1786084511039,"results":"12523","hashOfConfig":"12232"},{"size":5217,"mtime":1786084511039,"results":"12524","hashOfConfig":"12232"},{"size":6236,"mtime":1786084511039,"results":"12525","hashOfConfig":"12232"},{"size":1131,"mtime":1786084511039,"results":"12526","hashOfConfig":"12232"},{"size":3861,"mtime":1786084511039,"results":"12527","hashOfConfig":"12232"},{"size":5828,"mtime":1786084511039,"results":"12528","hashOfConfig":"12232"},{"size":8263,"mtime":1786084511040,"results":"12529","hashOfConfig":"12232"},{"size":4402,"mtime":1786084511040,"results":"12530","hashOfConfig":"12232"},{"size":1706,"mtime":1786084511040,"results":"12531","hashOfConfig":"12232"},{"size":2702,"mtime":1786084511040,"results":"12532","hashOfConfig":"12232"},{"size":2784,"mtime":1786084511040,"results":"12533","hashOfConfig":"12232"},{"size":23227,"mtime":1786084511040,"results":"12534","hashOfConfig":"8189"},{"size":8810,"mtime":1786084511040,"results":"12535","hashOfConfig":"12232"},{"size":9783,"mtime":1786084511041,"results":"12536","hashOfConfig":"12232"},{"size":11509,"mtime":1786084511041,"results":"12537","hashOfConfig":"12232"},{"size":19280,"mtime":1786084511041,"results":"12538","hashOfConfig":"12232"},{"size":8360,"mtime":1786084511041,"results":"12539","hashOfConfig":"12232"},{"size":19900,"mtime":1786084511041,"results":"12540","hashOfConfig":"12232"},{"size":8912,"mtime":1786084511042,"results":"12541","hashOfConfig":"12232"},{"size":2428,"mtime":1786084511042,"results":"12542","hashOfConfig":"12232"},{"size":3503,"mtime":1786084511042,"results":"12543","hashOfConfig":"12232"},{"size":4229,"mtime":1786084511042,"results":"12544","hashOfConfig":"12232"},{"size":15586,"mtime":1786084511042,"results":"12545","hashOfConfig":"12232"},{"size":5026,"mtime":1786084511042,"results":"12546","hashOfConfig":"12232"},{"size":864,"mtime":1786084511042,"results":"12547","hashOfConfig":"12232"},{"size":3357,"mtime":1786084511043,"results":"12548","hashOfConfig":"12232"},{"size":4634,"mtime":1786084511043,"results":"12549","hashOfConfig":"12232"},{"size":2933,"mtime":1786084511043,"results":"12550","hashOfConfig":"12232"},{"size":2508,"mtime":1786084511043,"results":"12551","hashOfConfig":"12232"},{"size":1095,"mtime":1786084511043,"results":"12552","hashOfConfig":"12232"},{"size":1858,"mtime":1786084511043,"results":"12553","hashOfConfig":"12232"},{"size":13928,"mtime":1786084511043,"results":"12554","hashOfConfig":"12232"},{"size":1532,"mtime":1786084511044,"results":"12555","hashOfConfig":"12232"},{"size":6564,"mtime":1786084511044,"results":"12556","hashOfConfig":"12232"},{"size":2859,"mtime":1786084511044,"results":"12557","hashOfConfig":"12232"},{"size":2789,"mtime":1786084511044,"results":"12558","hashOfConfig":"12232"},{"size":2859,"mtime":1786084511044,"results":"12559","hashOfConfig":"12232"},{"size":5080,"mtime":1786084511044,"results":"12560","hashOfConfig":"12232"},{"size":12883,"mtime":1786084511045,"results":"12561","hashOfConfig":"12232"},{"size":8302,"mtime":1786084511045,"results":"12562","hashOfConfig":"12232"},{"size":7589,"mtime":1786084511045,"results":"12563","hashOfConfig":"12232"},{"size":409,"mtime":1786084511045,"results":"12564","hashOfConfig":"12232"},{"size":3249,"mtime":1786084511045,"results":"12565","hashOfConfig":"12232"},{"size":3157,"mtime":1786084511045,"results":"12566","hashOfConfig":"12232"},{"size":2582,"mtime":1786084511045,"results":"12567","hashOfConfig":"12232"},{"size":5710,"mtime":1786084511046,"results":"12568","hashOfConfig":"12232"},{"size":9759,"mtime":1786084511046,"results":"12569","hashOfConfig":"12232"},{"size":5491,"mtime":1786084511046,"results":"12570","hashOfConfig":"12232"},{"size":4664,"mtime":1786084511046,"results":"12571","hashOfConfig":"12232"},{"size":3329,"mtime":1786084511046,"results":"12572","hashOfConfig":"12232"},{"size":4288,"mtime":1786084511046,"results":"12573","hashOfConfig":"12232"},{"size":5150,"mtime":1786084511046,"results":"12574","hashOfConfig":"12232"},{"size":4899,"mtime":1786084511047,"results":"12575","hashOfConfig":"12232"},{"size":7357,"mtime":1786084511047,"results":"12576","hashOfConfig":"12232"},{"size":14053,"mtime":1786084511047,"results":"12577","hashOfConfig":"12232"},{"size":2058,"mtime":1786084511047,"results":"12578","hashOfConfig":"12232"},{"size":1096,"mtime":1786084511047,"results":"12579","hashOfConfig":"12232"},{"size":1063,"mtime":1786084511047,"results":"12580","hashOfConfig":"12232"},{"size":4070,"mtime":1786084511047,"results":"12581","hashOfConfig":"12232"},{"size":1524,"mtime":1786084511048,"results":"12582","hashOfConfig":"12232"},{"size":5066,"mtime":1786084511048,"results":"12583","hashOfConfig":"12232"},{"size":3159,"mtime":1786084511048,"results":"12584","hashOfConfig":"12232"},{"size":2411,"mtime":1786084511048,"results":"12585","hashOfConfig":"12232"},{"size":10094,"mtime":1786084511048,"results":"12586","hashOfConfig":"12232"},{"size":3872,"mtime":1786084511048,"results":"12587","hashOfConfig":"12232"},{"size":3527,"mtime":1786084511048,"results":"12588","hashOfConfig":"12232"},{"size":3703,"mtime":1786084511049,"results":"12589","hashOfConfig":"12232"},{"size":8841,"mtime":1786084511049,"results":"12590","hashOfConfig":"12232"},{"size":4421,"mtime":1786084511049,"results":"12591","hashOfConfig":"12232"},{"size":5925,"mtime":1786084511049,"results":"12592","hashOfConfig":"12232"},{"size":2308,"mtime":1786085222301,"results":"12593","hashOfConfig":"12232"},{"size":941,"mtime":1786084511049,"results":"12594","hashOfConfig":"12232"},{"size":3368,"mtime":1786084511049,"results":"12595","hashOfConfig":"12232"},{"size":2952,"mtime":1786084511050,"results":"12596","hashOfConfig":"12232"},{"size":7344,"mtime":1786084511050,"results":"12597","hashOfConfig":"12232"},{"size":5652,"mtime":1786084511050,"results":"12598","hashOfConfig":"12232"},{"size":3591,"mtime":1786084511050,"results":"12599","hashOfConfig":"12232"},{"size":2069,"mtime":1786084511051,"results":"12600","hashOfConfig":"12232"},{"size":2228,"mtime":1786084511051,"results":"12601","hashOfConfig":"12232"},{"size":2782,"mtime":1786084511051,"results":"12602","hashOfConfig":"12232"},{"size":6947,"mtime":1786084511051,"results":"12603","hashOfConfig":"12232"},{"size":3457,"mtime":1786084511051,"results":"12604","hashOfConfig":"12232"},{"size":1865,"mtime":1786084511051,"results":"12605","hashOfConfig":"12232"},{"size":2077,"mtime":1786084511052,"results":"12606","hashOfConfig":"12232"},{"size":1710,"mtime":1786084511052,"results":"12607","hashOfConfig":"12232"},{"size":5137,"mtime":1786084511052,"results":"12608","hashOfConfig":"12232"},{"size":10551,"mtime":1786084511052,"results":"12609","hashOfConfig":"12232"},{"size":9461,"mtime":1786084511052,"results":"12610","hashOfConfig":"12232"},{"size":6939,"mtime":1786084511053,"results":"12611","hashOfConfig":"12232"},{"size":8474,"mtime":1786084511053,"results":"12612","hashOfConfig":"12232"},{"size":2178,"mtime":1786084511057,"results":"12613","hashOfConfig":"12232"},{"size":11106,"mtime":1786084511057,"results":"12614","hashOfConfig":"12232"},{"size":1998,"mtime":1786084511057,"results":"12615","hashOfConfig":"12232"},{"size":2407,"mtime":1786084511058,"results":"12616","hashOfConfig":"12232"},{"size":4340,"mtime":1786084511058,"results":"12617","hashOfConfig":"12232"},{"size":4768,"mtime":1786084511058,"results":"12618","hashOfConfig":"12232"},{"size":8576,"mtime":1786084511059,"results":"12619","hashOfConfig":"12232"},{"size":4921,"mtime":1786084511059,"results":"12620","hashOfConfig":"12232"},{"size":4334,"mtime":1786084511059,"results":"12621","hashOfConfig":"12232"},{"size":5506,"mtime":1786084511058,"results":"12622","hashOfConfig":"12232"},{"size":6146,"mtime":1786084511058,"results":"12623","hashOfConfig":"12232"},{"size":6695,"mtime":1786084511058,"results":"12624","hashOfConfig":"12232"},{"size":5613,"mtime":1786084511059,"results":"12625","hashOfConfig":"12232"},{"size":7523,"mtime":1786084511059,"results":"12626","hashOfConfig":"12232"},{"size":5907,"mtime":1786084511059,"results":"12627","hashOfConfig":"12232"},{"size":4043,"mtime":1786084511059,"results":"12628","hashOfConfig":"12232"},{"size":3925,"mtime":1786084511060,"results":"12629","hashOfConfig":"12232"},{"size":8796,"mtime":1786084511060,"results":"12630","hashOfConfig":"12232"},{"size":4639,"mtime":1786084511060,"results":"12631","hashOfConfig":"12232"},{"size":3735,"mtime":1786084511060,"results":"12632","hashOfConfig":"12232"},{"size":1687,"mtime":1786084511060,"results":"12633","hashOfConfig":"12232"},{"size":4584,"mtime":1786084511060,"results":"12634","hashOfConfig":"12232"},{"size":3375,"mtime":1786084511060,"results":"12635","hashOfConfig":"12232"},{"size":4809,"mtime":1786084511060,"results":"12636","hashOfConfig":"12232"},{"size":3222,"mtime":1786084511061,"results":"12637","hashOfConfig":"12232"},{"size":12488,"mtime":1786084511061,"results":"12638","hashOfConfig":"12232"},{"size":8939,"mtime":1786084511061,"results":"12639","hashOfConfig":"12232"},{"size":1476,"mtime":1786084511061,"results":"12640","hashOfConfig":"12232"},{"size":9779,"mtime":1786084511061,"results":"12641","hashOfConfig":"12232"},{"size":8988,"mtime":1786084511062,"results":"12642","hashOfConfig":"12232"},{"size":7122,"mtime":1786084511062,"results":"12643","hashOfConfig":"12232"},{"size":1457,"mtime":1786084511062,"results":"12644","hashOfConfig":"12232"},{"size":2184,"mtime":1786084511061,"results":"12645","hashOfConfig":"12232"},{"size":1080,"mtime":1786084511061,"results":"12646","hashOfConfig":"12232"},{"size":3947,"mtime":1786084511062,"results":"12647","hashOfConfig":"12232"},{"size":6606,"mtime":1786084511062,"results":"12648","hashOfConfig":"12232"},{"size":17499,"mtime":1786084511053,"results":"12649","hashOfConfig":"12232"},{"size":1096,"mtime":1786084511053,"results":"12650","hashOfConfig":"12232"},{"size":1213,"mtime":1786084511053,"results":"12651","hashOfConfig":"12232"},{"size":5358,"mtime":1786084511053,"results":"12652","hashOfConfig":"12232"},{"size":8127,"mtime":1786084511054,"results":"12653","hashOfConfig":"12285"},{"size":22465,"mtime":1786084511054,"results":"12654","hashOfConfig":"12232"},{"size":1734,"mtime":1786084511054,"results":"12655","hashOfConfig":"12232"},{"size":1920,"mtime":1786084511054,"results":"12656","hashOfConfig":"12232"},{"size":5784,"mtime":1786084511054,"results":"12657","hashOfConfig":"12232"},{"size":23106,"mtime":1786084511054,"results":"12658","hashOfConfig":"12232"},{"size":2440,"mtime":1786084511054,"results":"12659","hashOfConfig":"12232"},{"size":14504,"mtime":1786084511055,"results":"12660","hashOfConfig":"12232"},{"size":12634,"mtime":1786084511055,"results":"12661","hashOfConfig":"12232"},{"size":968,"mtime":1786084511055,"results":"12662","hashOfConfig":"12232"},{"size":4405,"mtime":1786084511055,"results":"12663","hashOfConfig":"12232"},{"size":8262,"mtime":1786084511055,"results":"12664","hashOfConfig":"12232"},{"size":13168,"mtime":1786084511055,"results":"12665","hashOfConfig":"12232"},{"size":1921,"mtime":1786084511056,"results":"12666","hashOfConfig":"12232"},{"size":2218,"mtime":1786084511056,"results":"12667","hashOfConfig":"12232"},{"size":7278,"mtime":1786084511056,"results":"12668","hashOfConfig":"12232"},{"size":2507,"mtime":1786084511056,"results":"12669","hashOfConfig":"12232"},{"size":2643,"mtime":1786084511056,"results":"12670","hashOfConfig":"12232"},{"size":1486,"mtime":1786084511056,"results":"12671","hashOfConfig":"12232"},{"size":2185,"mtime":1786084511057,"results":"12672","hashOfConfig":"12232"},{"size":1712,"mtime":1786084511057,"results":"12673","hashOfConfig":"12232"},{"size":1296,"mtime":1786084511057,"results":"12674","hashOfConfig":"12232"},{"size":8889,"mtime":1786084511062,"results":"12675","hashOfConfig":"12232"},{"size":2924,"mtime":1786084511063,"results":"12676","hashOfConfig":"12232"},{"size":13196,"mtime":1786084511063,"results":"12677","hashOfConfig":"12232"},{"size":12057,"mtime":1786084511063,"results":"12678","hashOfConfig":"12232"},{"size":3859,"mtime":1786084511063,"results":"12679","hashOfConfig":"12232"},{"size":4921,"mtime":1786084511063,"results":"12680","hashOfConfig":"12232"},{"size":2086,"mtime":1786084511063,"results":"12681","hashOfConfig":"12232"},{"size":3836,"mtime":1786084511065,"results":"12682","hashOfConfig":"12232"},{"size":1982,"mtime":1786084511066,"results":"12683","hashOfConfig":"12232"},{"size":3319,"mtime":1786084511066,"results":"12684","hashOfConfig":"12232"},{"size":2013,"mtime":1786084511066,"results":"12685","hashOfConfig":"12232"},{"size":2009,"mtime":1786084511066,"results":"12686","hashOfConfig":"12232"},{"size":1881,"mtime":1786084511066,"results":"12687","hashOfConfig":"12232"},{"size":28939,"mtime":1786084511066,"results":"12688","hashOfConfig":"12232"},{"size":6220,"mtime":1786084511067,"results":"12689","hashOfConfig":"12232"},{"size":2581,"mtime":1786084511067,"results":"12690","hashOfConfig":"12232"},{"size":19718,"mtime":1786084511067,"results":"12691","hashOfConfig":"12232"},{"size":28539,"mtime":1786084511067,"results":"12692","hashOfConfig":"12232"},{"size":6716,"mtime":1786084511067,"results":"12693","hashOfConfig":"12232"},{"size":4091,"mtime":1786084511068,"results":"12694","hashOfConfig":"12232"},{"size":7059,"mtime":1786084511068,"results":"12695","hashOfConfig":"12232"},{"size":2003,"mtime":1786084511068,"results":"12696","hashOfConfig":"12232"},{"size":5186,"mtime":1786084511068,"results":"12697","hashOfConfig":"12232"},{"size":2103,"mtime":1786084511068,"results":"12698","hashOfConfig":"12232"},{"size":2760,"mtime":1786084511068,"results":"12699","hashOfConfig":"12232"},{"size":5793,"mtime":1786084511068,"results":"12700","hashOfConfig":"12232"},{"size":21671,"mtime":1786084511069,"results":"12701","hashOfConfig":"12232"},{"size":2171,"mtime":1786084511069,"results":"12702","hashOfConfig":"12232"},{"size":4265,"mtime":1786084511071,"results":"12703","hashOfConfig":"12232"},{"size":6619,"mtime":1786084511069,"results":"12704","hashOfConfig":"12232"},{"size":4705,"mtime":1786084511069,"results":"12705","hashOfConfig":"12232"},{"size":7230,"mtime":1786084511069,"results":"12706","hashOfConfig":"12232"},{"size":6203,"mtime":1786084511069,"results":"12707","hashOfConfig":"12232"},{"size":7825,"mtime":1786084511069,"results":"12708","hashOfConfig":"12232"},{"size":4575,"mtime":1786084511069,"results":"12709","hashOfConfig":"12232"},{"size":4237,"mtime":1786084511070,"results":"12710","hashOfConfig":"12232"},{"size":4481,"mtime":1786084511070,"results":"12711","hashOfConfig":"12232"},{"size":3225,"mtime":1786084511070,"results":"12712","hashOfConfig":"12232"},{"size":4458,"mtime":1786084511070,"results":"12713","hashOfConfig":"12232"},{"size":1691,"mtime":1786084511070,"results":"12714","hashOfConfig":"12232"},{"size":7893,"mtime":1786084511070,"results":"12715","hashOfConfig":"12232"},{"size":7940,"mtime":1786084511071,"results":"12716","hashOfConfig":"12232"},{"size":10578,"mtime":1786084511071,"results":"12717","hashOfConfig":"12232"},{"size":11052,"mtime":1786084511071,"results":"12718","hashOfConfig":"12232"},{"size":2501,"mtime":1786084511071,"results":"12719","hashOfConfig":"12232"},{"size":986,"mtime":1786084511071,"results":"12720","hashOfConfig":"12232"},{"size":4020,"mtime":1786084511072,"results":"12721","hashOfConfig":"12232"},{"size":17261,"mtime":1786084511072,"results":"12722","hashOfConfig":"12232"},{"size":21756,"mtime":1786084511072,"results":"12723","hashOfConfig":"12232"},{"size":5323,"mtime":1786084511072,"results":"12724","hashOfConfig":"12232"},{"size":3378,"mtime":1786084511072,"results":"12725","hashOfConfig":"12232"},{"size":10987,"mtime":1786084511072,"results":"12726","hashOfConfig":"12232"},{"size":737,"mtime":1786084511072,"results":"12727","hashOfConfig":"12232"},{"size":3473,"mtime":1786084511073,"results":"12728","hashOfConfig":"12232"},{"size":2742,"mtime":1786084511073,"results":"12729","hashOfConfig":"12232"},{"size":4370,"mtime":1786084511073,"results":"12730","hashOfConfig":"12232"},{"size":1372,"mtime":1786084511073,"results":"12731","hashOfConfig":"12232"},{"size":13039,"mtime":1786084511073,"results":"12732","hashOfConfig":"12232"},{"size":3891,"mtime":1786084511073,"results":"12733","hashOfConfig":"12232"},{"size":3514,"mtime":1786084511073,"results":"12734","hashOfConfig":"12232"},{"size":5101,"mtime":1786084511073,"results":"12735","hashOfConfig":"12232"},{"size":2305,"mtime":1786084511074,"results":"12736","hashOfConfig":"12232"},{"size":5006,"mtime":1786084511074,"results":"12737","hashOfConfig":"12232"},{"size":1997,"mtime":1786084511074,"results":"12738","hashOfConfig":"12232"},{"size":9029,"mtime":1786084511074,"results":"12739","hashOfConfig":"12232"},{"size":5760,"mtime":1786084511074,"results":"12740","hashOfConfig":"12232"},{"size":4475,"mtime":1786084511074,"results":"12741","hashOfConfig":"12232"},{"size":3910,"mtime":1786084511074,"results":"12742","hashOfConfig":"12232"},{"size":2757,"mtime":1786084511074,"results":"12743","hashOfConfig":"12232"},{"size":5325,"mtime":1786084511075,"results":"12744","hashOfConfig":"12232"},{"size":2402,"mtime":1786084511075,"results":"12745","hashOfConfig":"12232"},{"size":5796,"mtime":1786084511075,"results":"12746","hashOfConfig":"12232"},{"size":5578,"mtime":1786084511075,"results":"12747","hashOfConfig":"12232"},{"size":2434,"mtime":1786084511075,"results":"12748","hashOfConfig":"12232"},{"size":1390,"mtime":1786084511075,"results":"12749","hashOfConfig":"12232"},{"size":2188,"mtime":1786084511075,"results":"12750","hashOfConfig":"12232"},{"size":1576,"mtime":1786084511075,"results":"12751","hashOfConfig":"12232"},{"size":2227,"mtime":1786084511075,"results":"12752","hashOfConfig":"12232"},{"size":5055,"mtime":1786084511076,"results":"12753","hashOfConfig":"12232"},{"size":15243,"mtime":1786084511076,"results":"12754","hashOfConfig":"12232"},{"size":1027,"mtime":1786084511076,"results":"12755","hashOfConfig":"12232"},{"size":2076,"mtime":1786084511076,"results":"12756","hashOfConfig":"12232"},{"size":1698,"mtime":1786084511076,"results":"12757","hashOfConfig":"12232"},{"size":8796,"mtime":1786084511076,"results":"12758","hashOfConfig":"12232"},{"size":824,"mtime":1786084511077,"results":"12759","hashOfConfig":"12232"},{"size":4492,"mtime":1786084511077,"results":"12760","hashOfConfig":"12232"},{"size":9043,"mtime":1786084511077,"results":"12761","hashOfConfig":"12232"},{"size":3415,"mtime":1786084511077,"results":"12762","hashOfConfig":"12232"},{"size":6509,"mtime":1786084511077,"results":"12763","hashOfConfig":"12232"},{"size":2222,"mtime":1786084511077,"results":"12764","hashOfConfig":"12232"},{"size":2737,"mtime":1786084511077,"results":"12765","hashOfConfig":"12232"},{"size":4132,"mtime":1786084511077,"results":"12766","hashOfConfig":"12232"},{"size":7519,"mtime":1786084511078,"results":"12767","hashOfConfig":"12232"},{"size":5428,"mtime":1786084511078,"results":"12768","hashOfConfig":"12232"},{"size":4352,"mtime":1786084511078,"results":"12769","hashOfConfig":"12232"},{"size":5769,"mtime":1786084511078,"results":"12770","hashOfConfig":"12232"},{"size":1464,"mtime":1786084511078,"results":"12771","hashOfConfig":"12232"},{"size":7666,"mtime":1786084511078,"results":"12772","hashOfConfig":"12232"},{"size":23663,"mtime":1786084511079,"results":"12773","hashOfConfig":"12232"},{"size":17168,"mtime":1786084511079,"results":"12774","hashOfConfig":"12232"},{"size":4464,"mtime":1786084511079,"results":"12775","hashOfConfig":"12232"},{"size":5464,"mtime":1786084511079,"results":"12776","hashOfConfig":"12232"},{"size":3004,"mtime":1786084511079,"results":"12777","hashOfConfig":"12232"},{"size":963,"mtime":1786084511079,"results":"12778","hashOfConfig":"12232"},{"size":1431,"mtime":1786084511080,"results":"12779","hashOfConfig":"12232"},{"size":27195,"mtime":1786084511080,"results":"12780","hashOfConfig":"12232"},{"size":1841,"mtime":1786084511080,"results":"12781","hashOfConfig":"12232"},{"size":2115,"mtime":1786084511080,"results":"12782","hashOfConfig":"12232"},{"size":1518,"mtime":1786084511080,"results":"12783","hashOfConfig":"12232"},{"size":4373,"mtime":1786084511080,"results":"12784","hashOfConfig":"12232"},{"size":7580,"mtime":1786084511081,"results":"12785","hashOfConfig":"12232"},{"size":10327,"mtime":1786084511081,"results":"12786","hashOfConfig":"12232"},{"size":4119,"mtime":1786084511081,"results":"12787","hashOfConfig":"12232"},{"size":7293,"mtime":1786084511081,"results":"12788","hashOfConfig":"12232"},{"size":8736,"mtime":1786084511081,"results":"12789","hashOfConfig":"12232"},{"size":1869,"mtime":1786084511081,"results":"12790","hashOfConfig":"12232"},{"size":5007,"mtime":1786084511081,"results":"12791","hashOfConfig":"12232"},{"size":5538,"mtime":1786084511082,"results":"12792","hashOfConfig":"12232"},{"size":19690,"mtime":1786084511082,"results":"12793","hashOfConfig":"12232"},{"size":4200,"mtime":1786084511082,"results":"12794","hashOfConfig":"12232"},{"size":8700,"mtime":1786084511082,"results":"12795","hashOfConfig":"12285"},{"size":41363,"mtime":1786084511083,"results":"12796","hashOfConfig":"12232"},{"size":4824,"mtime":1786084511083,"results":"12797","hashOfConfig":"12232"},{"size":11502,"mtime":1786084511083,"results":"12798","hashOfConfig":"12232"},{"size":3612,"mtime":1786084511083,"results":"12799","hashOfConfig":"12232"},{"size":2614,"mtime":1786084511083,"results":"12800","hashOfConfig":"12232"},{"size":2326,"mtime":1786084511083,"results":"12801","hashOfConfig":"12232"},{"size":1777,"mtime":1786084511084,"results":"12802","hashOfConfig":"12232"},{"size":5957,"mtime":1786084511084,"results":"12803","hashOfConfig":"12232"},{"size":3806,"mtime":1786084511084,"results":"12804","hashOfConfig":"12232"},{"size":11449,"mtime":1786084511084,"results":"12805","hashOfConfig":"12232"},{"size":1979,"mtime":1786084511085,"results":"12806","hashOfConfig":"12232"},{"size":2216,"mtime":1786084511085,"results":"12807","hashOfConfig":"12232"},{"size":8499,"mtime":1786084511085,"results":"12808","hashOfConfig":"12232"},{"size":5233,"mtime":1786084511085,"results":"12809","hashOfConfig":"12232"},{"size":5073,"mtime":1786084511085,"results":"12810","hashOfConfig":"12232"},{"size":1047,"mtime":1786084511085,"results":"12811","hashOfConfig":"12232"},{"size":1911,"mtime":1786084511085,"results":"12812","hashOfConfig":"12232"},{"size":3427,"mtime":1786084511086,"results":"12813","hashOfConfig":"12232"},{"size":1538,"mtime":1786084511086,"results":"12814","hashOfConfig":"12232"},{"size":1860,"mtime":1786084511086,"results":"12815","hashOfConfig":"12232"},{"size":2996,"mtime":1786084511086,"results":"12816","hashOfConfig":"12232"},{"size":2794,"mtime":1786084511086,"results":"12817","hashOfConfig":"12232"},{"size":4753,"mtime":1786084511086,"results":"12818","hashOfConfig":"12232"},{"size":1688,"mtime":1786084511087,"results":"12819","hashOfConfig":"12232"},{"size":9313,"mtime":1786084511087,"results":"12820","hashOfConfig":"12232"},{"size":3633,"mtime":1786084511087,"results":"12821","hashOfConfig":"12232"},{"size":8523,"mtime":1786084511087,"results":"12822","hashOfConfig":"12232"},{"size":2500,"mtime":1786084511087,"results":"12823","hashOfConfig":"12232"},{"size":12960,"mtime":1786084511087,"results":"12824","hashOfConfig":"12232"},{"size":3145,"mtime":1786084511087,"results":"12825","hashOfConfig":"12232"},{"size":984,"mtime":1786084511087,"results":"12826","hashOfConfig":"12232"},{"size":1246,"mtime":1786084511088,"results":"12827","hashOfConfig":"12232"},{"size":4330,"mtime":1786084511088,"results":"12828","hashOfConfig":"12232"},{"size":5473,"mtime":1786084511088,"results":"12829","hashOfConfig":"12232"},{"size":12990,"mtime":1786084511088,"results":"12830","hashOfConfig":"12232"},{"size":7015,"mtime":1786084511088,"results":"12831","hashOfConfig":"12232"},{"size":5565,"mtime":1786084511088,"results":"12832","hashOfConfig":"12232"},{"size":3000,"mtime":1786084511088,"results":"12833","hashOfConfig":"12232"},{"size":6900,"mtime":1786084511088,"results":"12834","hashOfConfig":"12232"},{"size":6278,"mtime":1786084511089,"results":"12835","hashOfConfig":"12232"},{"size":12241,"mtime":1786084511089,"results":"12836","hashOfConfig":"12232"},{"size":1307,"mtime":1786084511089,"results":"12837","hashOfConfig":"12232"},{"size":2122,"mtime":1786084511089,"results":"12838","hashOfConfig":"12232"},{"size":3080,"mtime":1786084511089,"results":"12839","hashOfConfig":"12232"},{"size":14360,"mtime":1786084511089,"results":"12840","hashOfConfig":"12232"},{"size":16539,"mtime":1786084511089,"results":"12841","hashOfConfig":"12232"},{"size":3554,"mtime":1786084511090,"results":"12842","hashOfConfig":"12232"},{"size":3633,"mtime":1786084511090,"results":"12843","hashOfConfig":"12232"},{"size":2638,"mtime":1786084511090,"results":"12844","hashOfConfig":"12232"},{"size":3400,"mtime":1786084511090,"results":"12845","hashOfConfig":"12232"},{"size":6470,"mtime":1786084511090,"results":"12846","hashOfConfig":"12232"},{"size":3016,"mtime":1786084511091,"results":"12847","hashOfConfig":"12232"},{"size":1685,"mtime":1786084511091,"results":"12848","hashOfConfig":"12232"},{"size":2723,"mtime":1786084511091,"results":"12849","hashOfConfig":"12232"},{"size":5654,"mtime":1786084511091,"results":"12850","hashOfConfig":"12232"},{"size":1861,"mtime":1786084511091,"results":"12851","hashOfConfig":"12232"},{"size":1327,"mtime":1786084511086,"results":"12852","hashOfConfig":"12232"},{"size":3635,"mtime":1786084511086,"results":"12853","hashOfConfig":"12232"},{"size":7347,"mtime":1786084511086,"results":"12854","hashOfConfig":"12232"},{"size":2670,"mtime":1786084511092,"results":"12855","hashOfConfig":"12232"},{"size":7485,"mtime":1786084511092,"results":"12856","hashOfConfig":"12232"},{"size":8270,"mtime":1786084511092,"results":"12857","hashOfConfig":"12232"},{"size":4497,"mtime":1786084511092,"results":"12858","hashOfConfig":"12232"},{"size":7711,"mtime":1786084511092,"results":"12859","hashOfConfig":"12232"},{"size":5764,"mtime":1786084511093,"results":"12860","hashOfConfig":"12232"},{"size":2965,"mtime":1786084511093,"results":"12861","hashOfConfig":"12232"},{"size":2846,"mtime":1786084511093,"results":"12862","hashOfConfig":"12232"},{"size":2080,"mtime":1786084511093,"results":"12863","hashOfConfig":"12232"},{"size":3160,"mtime":1786084511093,"results":"12864","hashOfConfig":"12232"},{"size":5065,"mtime":1786084511093,"results":"12865","hashOfConfig":"12232"},{"size":18441,"mtime":1786084511093,"results":"12866","hashOfConfig":"12232"},{"size":4681,"mtime":1786084511094,"results":"12867","hashOfConfig":"12232"},{"size":14837,"mtime":1786084511094,"results":"12868","hashOfConfig":"12232"},{"size":25807,"mtime":1786084511094,"results":"12869","hashOfConfig":"12232"},{"size":9261,"mtime":1786084511094,"results":"12870","hashOfConfig":"12232"},{"size":10312,"mtime":1786084511094,"results":"12871","hashOfConfig":"12232"},{"size":3868,"mtime":1786084511095,"results":"12872","hashOfConfig":"12232"},{"size":3711,"mtime":1786084511095,"results":"12873","hashOfConfig":"12232"},{"size":1941,"mtime":1786084511095,"results":"12874","hashOfConfig":"12232"},{"size":2950,"mtime":1786084511095,"results":"12875","hashOfConfig":"12232"},{"size":3819,"mtime":1786084511095,"results":"12876","hashOfConfig":"12232"},{"size":3702,"mtime":1786084511095,"results":"12877","hashOfConfig":"12232"},{"size":4924,"mtime":1786084511095,"results":"12878","hashOfConfig":"12232"},{"size":4351,"mtime":1786084511095,"results":"12879","hashOfConfig":"12232"},{"size":5026,"mtime":1786084511095,"results":"12880","hashOfConfig":"12232"},{"size":4428,"mtime":1786084511096,"results":"12881","hashOfConfig":"12232"},{"size":5871,"mtime":1786084511096,"results":"12882","hashOfConfig":"12232"},{"size":3794,"mtime":1786084511096,"results":"12883","hashOfConfig":"12232"},{"size":4741,"mtime":1786084511096,"results":"12884","hashOfConfig":"12232"},{"size":1593,"mtime":1786084511096,"results":"12885","hashOfConfig":"12232"},{"size":3252,"mtime":1786084511096,"results":"12886","hashOfConfig":"12232"},{"size":8420,"mtime":1786084511097,"results":"12887","hashOfConfig":"12232"},{"size":5883,"mtime":1786084511097,"results":"12888","hashOfConfig":"12232"},{"size":6678,"mtime":1786084511097,"results":"12889","hashOfConfig":"12232"},{"size":5303,"mtime":1786084511097,"results":"12890","hashOfConfig":"12232"},{"size":3970,"mtime":1786084511097,"results":"12891","hashOfConfig":"12232"},{"size":1749,"mtime":1786084511097,"results":"12892","hashOfConfig":"12232"},{"size":2241,"mtime":1786084511097,"results":"12893","hashOfConfig":"12232"},{"size":6132,"mtime":1786084511097,"results":"12894","hashOfConfig":"12232"},{"size":9109,"mtime":1786084511098,"results":"12895","hashOfConfig":"12232"},{"size":2629,"mtime":1786084511098,"results":"12896","hashOfConfig":"12232"},{"size":3055,"mtime":1786084511098,"results":"12897","hashOfConfig":"12232"},{"size":7412,"mtime":1786084511098,"results":"12898","hashOfConfig":"12232"},{"size":8307,"mtime":1786084511098,"results":"12899","hashOfConfig":"12232"},{"size":17490,"mtime":1786084511099,"results":"12900","hashOfConfig":"12232"},{"size":2077,"mtime":1786084511099,"results":"12901","hashOfConfig":"12232"},{"size":40206,"mtime":1786084511099,"results":"12902","hashOfConfig":"12232"},{"size":4474,"mtime":1786084511099,"results":"12903","hashOfConfig":"12232"},{"size":4320,"mtime":1786084511100,"results":"12904","hashOfConfig":"12232"},{"size":3750,"mtime":1786084511100,"results":"12905","hashOfConfig":"12232"},{"size":6079,"mtime":1786084511100,"results":"12906","hashOfConfig":"12232"},{"size":3642,"mtime":1786084511100,"results":"12907","hashOfConfig":"12232"},{"size":8894,"mtime":1786084511100,"results":"12908","hashOfConfig":"12232"},{"size":2564,"mtime":1786084511100,"results":"12909","hashOfConfig":"12232"},{"size":7187,"mtime":1786087859395,"results":"12910","hashOfConfig":"12232"},{"size":8444,"mtime":1786084511101,"results":"12911","hashOfConfig":"12232"},{"size":7604,"mtime":1786084511101,"results":"12912","hashOfConfig":"12232"},{"size":12906,"mtime":1786084511101,"results":"12913","hashOfConfig":"12232"},{"size":4472,"mtime":1786084511101,"results":"12914","hashOfConfig":"12232"},{"size":8411,"mtime":1786084511101,"results":"12915","hashOfConfig":"12232"},{"size":1491,"mtime":1786084511101,"results":"12916","hashOfConfig":"12232"},{"size":13889,"mtime":1786084511102,"results":"12917","hashOfConfig":"12232"},{"size":15630,"mtime":1786084511102,"results":"12918","hashOfConfig":"12232"},{"size":1748,"mtime":1786084511102,"results":"12919","hashOfConfig":"12232"},{"size":27000,"mtime":1786084511102,"results":"12920","hashOfConfig":"12232"},{"size":5109,"mtime":1786084511102,"results":"12921","hashOfConfig":"12232"},{"size":9774,"mtime":1786084511102,"results":"12922","hashOfConfig":"12232"},{"size":3953,"mtime":1786084511103,"results":"12923","hashOfConfig":"12232"},{"size":10123,"mtime":1786084511103,"results":"12924","hashOfConfig":"12232"},{"size":3485,"mtime":1786084511103,"results":"12925","hashOfConfig":"12232"},{"size":11260,"mtime":1786084511103,"results":"12926","hashOfConfig":"12232"},{"size":10367,"mtime":1786084511103,"results":"12927","hashOfConfig":"12232"},{"size":4124,"mtime":1786084511104,"results":"12928","hashOfConfig":"12232"},{"size":3854,"mtime":1786084511104,"results":"12929","hashOfConfig":"12232"},{"size":16124,"mtime":1786084511104,"results":"12930","hashOfConfig":"12232"},{"size":6904,"mtime":1786084511104,"results":"12931","hashOfConfig":"12232"},{"size":3994,"mtime":1786084511104,"results":"12932","hashOfConfig":"12232"},{"size":2754,"mtime":1786084511104,"results":"12933","hashOfConfig":"12232"},{"size":2800,"mtime":1786084511104,"results":"12934","hashOfConfig":"12232"},{"size":3448,"mtime":1786084511105,"results":"12935","hashOfConfig":"12232"},{"size":2089,"mtime":1786084511105,"results":"12936","hashOfConfig":"12232"},{"size":16703,"mtime":1786084511105,"results":"12937","hashOfConfig":"12232"},{"size":10123,"mtime":1786084511105,"results":"12938","hashOfConfig":"12232"},{"size":5597,"mtime":1786084511105,"results":"12939","hashOfConfig":"12232"},{"size":4820,"mtime":1786084511105,"results":"12940","hashOfConfig":"12232"},{"size":3153,"mtime":1786084511106,"results":"12941","hashOfConfig":"12232"},{"size":2433,"mtime":1786084511106,"results":"12942","hashOfConfig":"12232"},{"size":2667,"mtime":1786084511106,"results":"12943","hashOfConfig":"12232"},{"size":4418,"mtime":1786084511106,"results":"12944","hashOfConfig":"12232"},{"size":4501,"mtime":1786084511106,"results":"12945","hashOfConfig":"12232"},{"size":6481,"mtime":1786084511106,"results":"12946","hashOfConfig":"12232"},{"size":4653,"mtime":1786084511106,"results":"12947","hashOfConfig":"12232"},{"size":5417,"mtime":1786084511107,"results":"12948","hashOfConfig":"12232"},{"size":5379,"mtime":1786084511107,"results":"12949","hashOfConfig":"12232"},{"size":4673,"mtime":1786084511107,"results":"12950","hashOfConfig":"12232"},{"size":3075,"mtime":1786084511107,"results":"12951","hashOfConfig":"12232"},{"size":2065,"mtime":1786084511107,"results":"12952","hashOfConfig":"12232"},{"size":5179,"mtime":1786084511107,"results":"12953","hashOfConfig":"12232"},{"size":1751,"mtime":1786084511108,"results":"12954","hashOfConfig":"12232"},{"size":2716,"mtime":1786084511108,"results":"12955","hashOfConfig":"12232"},{"size":3275,"mtime":1786084511108,"results":"12956","hashOfConfig":"12232"},{"size":1311,"mtime":1786084511108,"results":"12957","hashOfConfig":"12232"},{"size":6839,"mtime":1786084511108,"results":"12958","hashOfConfig":"12232"},{"size":1933,"mtime":1786084511108,"results":"12959","hashOfConfig":"12232"},{"size":7447,"mtime":1786084511108,"results":"12960","hashOfConfig":"12232"},{"size":5343,"mtime":1786084511109,"results":"12961","hashOfConfig":"12232"},{"size":5154,"mtime":1786084511109,"results":"12962","hashOfConfig":"12232"},{"size":3153,"mtime":1786084511109,"results":"12963","hashOfConfig":"12232"},{"size":2733,"mtime":1786084511109,"results":"12964","hashOfConfig":"12232"},{"size":3131,"mtime":1786084511109,"results":"12965","hashOfConfig":"12232"},{"size":966,"mtime":1786084511109,"results":"12966","hashOfConfig":"12232"},{"size":3257,"mtime":1786084511109,"results":"12967","hashOfConfig":"12232"},{"size":3359,"mtime":1786084511109,"results":"12968","hashOfConfig":"12232"},{"size":9524,"mtime":1786084511110,"results":"12969","hashOfConfig":"12232"},{"size":4882,"mtime":1786084511110,"results":"12970","hashOfConfig":"12232"},{"size":4376,"mtime":1786084511110,"results":"12971","hashOfConfig":"12232"},{"size":5535,"mtime":1786084511110,"results":"12972","hashOfConfig":"12232"},{"size":3971,"mtime":1786084511110,"results":"12973","hashOfConfig":"12232"},{"size":4441,"mtime":1786084511110,"results":"12974","hashOfConfig":"12232"},{"size":5925,"mtime":1786084511111,"results":"12975","hashOfConfig":"12232"},{"size":5387,"mtime":1786084511111,"results":"12976","hashOfConfig":"12232"},{"size":4642,"mtime":1786084511111,"results":"12977","hashOfConfig":"12232"},{"size":809,"mtime":1786084511111,"results":"12978","hashOfConfig":"12232"},{"size":3273,"mtime":1786084511111,"results":"12979","hashOfConfig":"12232"},{"size":3510,"mtime":1786084511111,"results":"12980","hashOfConfig":"12232"},{"size":1688,"mtime":1786084511111,"results":"12981","hashOfConfig":"12232"},{"size":2764,"mtime":1786084511112,"results":"12982","hashOfConfig":"12232"},{"size":3617,"mtime":1786084511112,"results":"12983","hashOfConfig":"12232"},{"size":2719,"mtime":1786084511112,"results":"12984","hashOfConfig":"12232"},{"size":2513,"mtime":1786084511112,"results":"12985","hashOfConfig":"12232"},{"size":5345,"mtime":1786084511112,"results":"12986","hashOfConfig":"12232"},{"size":2106,"mtime":1786084511112,"results":"12987","hashOfConfig":"12232"},{"size":27377,"mtime":1786084511112,"results":"12988","hashOfConfig":"12232"},{"size":4769,"mtime":1786084511113,"results":"12989","hashOfConfig":"12232"},{"size":16398,"mtime":1786084511113,"results":"12990","hashOfConfig":"12232"},{"size":3708,"mtime":1786084511113,"results":"12991","hashOfConfig":"12232"},{"size":1536,"mtime":1786084511113,"results":"12992","hashOfConfig":"12232"},{"size":1873,"mtime":1786084511113,"results":"12993","hashOfConfig":"12232"},{"size":2709,"mtime":1786084511113,"results":"12994","hashOfConfig":"12232"},{"size":1490,"mtime":1786084511113,"results":"12995","hashOfConfig":"12232"},{"size":4666,"mtime":1786084511114,"results":"12996","hashOfConfig":"12232"},{"size":3182,"mtime":1786084511114,"results":"12997","hashOfConfig":"12232"},{"size":7279,"mtime":1786084511114,"results":"12998","hashOfConfig":"12232"},{"size":3125,"mtime":1786084511114,"results":"12999","hashOfConfig":"12232"},{"size":2710,"mtime":1786084511114,"results":"13000","hashOfConfig":"12232"},{"size":3690,"mtime":1786084511114,"results":"13001","hashOfConfig":"12232"},{"size":1837,"mtime":1786084511114,"results":"13002","hashOfConfig":"12232"},{"size":4308,"mtime":1786084511115,"results":"13003","hashOfConfig":"12232"},{"size":6089,"mtime":1786084511115,"results":"13004","hashOfConfig":"12232"},{"size":2302,"mtime":1786084511115,"results":"13005","hashOfConfig":"12232"},{"size":93505,"mtime":1786084511116,"results":"13006","hashOfConfig":"12232"},{"size":4983,"mtime":1786084511116,"results":"13007","hashOfConfig":"12232"},{"size":9214,"mtime":1786084511116,"results":"13008","hashOfConfig":"12232"},{"size":2938,"mtime":1786084511116,"results":"13009","hashOfConfig":"12232"},{"size":1761,"mtime":1786084511116,"results":"13010","hashOfConfig":"12232"},{"size":3136,"mtime":1786084511117,"results":"13011","hashOfConfig":"12232"},{"size":16962,"mtime":1786084511117,"results":"13012","hashOfConfig":"12232"},{"size":2228,"mtime":1786084511117,"results":"13013","hashOfConfig":"12232"},{"size":13117,"mtime":1786084511117,"results":"13014","hashOfConfig":"12232"},{"size":8494,"mtime":1786084511117,"results":"13015","hashOfConfig":"12232"},{"size":3659,"mtime":1786084511117,"results":"13016","hashOfConfig":"12232"},{"size":1525,"mtime":1786084511118,"results":"13017","hashOfConfig":"12232"},{"size":3365,"mtime":1786084511118,"results":"13018","hashOfConfig":"12232"},{"size":9320,"mtime":1786084511118,"results":"13019","hashOfConfig":"12232"},{"size":111602,"mtime":1786084511119,"results":"13020","hashOfConfig":"12232"},{"size":3898,"mtime":1786084511119,"results":"13021","hashOfConfig":"12232"},{"size":2551,"mtime":1786084511119,"results":"13022","hashOfConfig":"12232"},{"size":5502,"mtime":1786084511119,"results":"13023","hashOfConfig":"12232"},{"size":2039,"mtime":1786084511120,"results":"13024","hashOfConfig":"12232"},{"size":2471,"mtime":1786084511120,"results":"13025","hashOfConfig":"12232"},{"size":1635,"mtime":1786084511120,"results":"13026","hashOfConfig":"12232"},{"size":8685,"mtime":1786084511120,"results":"13027","hashOfConfig":"12232"},{"size":9951,"mtime":1786084511120,"results":"13028","hashOfConfig":"12232"},{"size":3017,"mtime":1786084511120,"results":"13029","hashOfConfig":"12232"},{"size":7638,"mtime":1786084511120,"results":"13030","hashOfConfig":"12232"},{"size":7751,"mtime":1786084511121,"results":"13031","hashOfConfig":"12232"},{"size":8648,"mtime":1786084511121,"results":"13032","hashOfConfig":"12232"},{"size":738,"mtime":1786084511121,"results":"13033","hashOfConfig":"12232"},{"size":6067,"mtime":1786084511121,"results":"13034","hashOfConfig":"12232"},{"size":11851,"mtime":1786084511121,"results":"13035","hashOfConfig":"12232"},{"size":14227,"mtime":1786084511121,"results":"13036","hashOfConfig":"12232"},{"size":4714,"mtime":1786084511122,"results":"13037","hashOfConfig":"12232"},{"size":5246,"mtime":1786084511122,"results":"13038","hashOfConfig":"12232"},{"size":3699,"mtime":1786084511122,"results":"13039","hashOfConfig":"12232"},{"size":20134,"mtime":1786084511122,"results":"13040","hashOfConfig":"12232"},{"size":6999,"mtime":1786084511122,"results":"13041","hashOfConfig":"12232"},{"size":7074,"mtime":1786084511122,"results":"13042","hashOfConfig":"12232"},{"size":1761,"mtime":1786084511123,"results":"13043","hashOfConfig":"12232"},{"size":6729,"mtime":1786084511123,"results":"13044","hashOfConfig":"12232"},{"size":1996,"mtime":1786084511123,"results":"13045","hashOfConfig":"12232"},{"size":1897,"mtime":1786084511123,"results":"13046","hashOfConfig":"12232"},{"size":9214,"mtime":1786084511123,"results":"13047","hashOfConfig":"12232"},{"size":7086,"mtime":1786084511123,"results":"13048","hashOfConfig":"12232"},{"size":1790,"mtime":1786084511123,"results":"13049","hashOfConfig":"12232"},{"size":3817,"mtime":1786084511124,"results":"13050","hashOfConfig":"12232"},{"size":3752,"mtime":1786084511124,"results":"13051","hashOfConfig":"12232"},{"size":20297,"mtime":1786084511124,"results":"13052","hashOfConfig":"12232"},{"size":8633,"mtime":1786084511124,"results":"13053","hashOfConfig":"12232"},{"size":2557,"mtime":1786084511124,"results":"13054","hashOfConfig":"12232"},{"size":2345,"mtime":1786084511124,"results":"13055","hashOfConfig":"12232"},{"size":2766,"mtime":1786084511125,"results":"13056","hashOfConfig":"12232"},{"size":489,"mtime":1786084511125,"results":"13057","hashOfConfig":"12232"},{"size":3180,"mtime":1786084511125,"results":"13058","hashOfConfig":"12232"},{"size":3080,"mtime":1786084511125,"results":"13059","hashOfConfig":"12232"},{"size":8176,"mtime":1786084511125,"results":"13060","hashOfConfig":"12232"},{"size":1357,"mtime":1786084511125,"results":"13061","hashOfConfig":"12232"},{"size":2873,"mtime":1786084511126,"results":"13062","hashOfConfig":"12232"},{"size":3780,"mtime":1786084511126,"results":"13063","hashOfConfig":"12232"},{"size":10911,"mtime":1786084511126,"results":"13064","hashOfConfig":"12232"},{"size":3076,"mtime":1786084511126,"results":"13065","hashOfConfig":"12232"},{"size":6554,"mtime":1786084511126,"results":"13066","hashOfConfig":"12232"},{"size":2433,"mtime":1786084511126,"results":"13067","hashOfConfig":"12232"},{"size":3834,"mtime":1786084511126,"results":"13068","hashOfConfig":"12232"},{"size":3262,"mtime":1786084511127,"results":"13069","hashOfConfig":"12232"},{"size":6275,"mtime":1786084511127,"results":"13070","hashOfConfig":"12232"},{"size":8490,"mtime":1786084511127,"results":"13071","hashOfConfig":"12232"},{"size":3670,"mtime":1786084511127,"results":"13072","hashOfConfig":"12232"},{"size":900,"mtime":1786084511127,"results":"13073","hashOfConfig":"12232"},{"size":5510,"mtime":1786084511127,"results":"13074","hashOfConfig":"12232"},{"size":17575,"mtime":1786084511128,"results":"13075","hashOfConfig":"12232"},{"size":2567,"mtime":1786084511128,"results":"13076","hashOfConfig":"12232"},{"size":975,"mtime":1786084511128,"results":"13077","hashOfConfig":"12232"},{"size":17999,"mtime":1786084511128,"results":"13078","hashOfConfig":"12232"},{"size":7845,"mtime":1786084511128,"results":"13079","hashOfConfig":"12232"},{"size":2115,"mtime":1786084511128,"results":"13080","hashOfConfig":"12232"},{"size":3190,"mtime":1786084511129,"results":"13081","hashOfConfig":"12232"},{"size":3004,"mtime":1786084511129,"results":"13082","hashOfConfig":"12232"},{"size":5857,"mtime":1786084511129,"results":"13083","hashOfConfig":"12232"},{"size":3018,"mtime":1786084511129,"results":"13084","hashOfConfig":"12232"},{"size":6020,"mtime":1786084511129,"results":"13085","hashOfConfig":"12232"},{"size":9939,"mtime":1786084511129,"results":"13086","hashOfConfig":"12232"},{"size":3409,"mtime":1786084511130,"results":"13087","hashOfConfig":"12232"},{"size":3835,"mtime":1786084511130,"results":"13088","hashOfConfig":"12232"},{"size":7464,"mtime":1786084511130,"results":"13089","hashOfConfig":"12232"},{"size":4050,"mtime":1786084511130,"results":"13090","hashOfConfig":"12232"},{"size":2150,"mtime":1786084511130,"results":"13091","hashOfConfig":"12232"},{"size":2233,"mtime":1786084511130,"results":"13092","hashOfConfig":"12232"},{"size":9955,"mtime":1786084511131,"results":"13093","hashOfConfig":"12232"},{"size":2505,"mtime":1786084511131,"results":"13094","hashOfConfig":"12232"},{"size":3710,"mtime":1786084511131,"results":"13095","hashOfConfig":"12232"},{"size":18252,"mtime":1786084511131,"results":"13096","hashOfConfig":"12232"},{"size":2309,"mtime":1786084511131,"results":"13097","hashOfConfig":"12232"},{"size":1751,"mtime":1786084511131,"results":"13098","hashOfConfig":"12232"},{"size":3209,"mtime":1786084511131,"results":"13099","hashOfConfig":"12232"},{"size":2692,"mtime":1786084511132,"results":"13100","hashOfConfig":"12232"},{"size":4519,"mtime":1786084511132,"results":"13101","hashOfConfig":"12232"},{"size":3181,"mtime":1786084511132,"results":"13102","hashOfConfig":"12232"},{"size":6189,"mtime":1786084511132,"results":"13103","hashOfConfig":"12232"},{"size":2739,"mtime":1786084511132,"results":"13104","hashOfConfig":"12232"},{"size":3537,"mtime":1786084511132,"results":"13105","hashOfConfig":"12232"},{"size":1311,"mtime":1786084511132,"results":"13106","hashOfConfig":"12232"},{"size":7845,"mtime":1786084511133,"results":"13107","hashOfConfig":"12232"},{"size":3632,"mtime":1786084511133,"results":"13108","hashOfConfig":"12232"},{"size":7854,"mtime":1786084511133,"results":"13109","hashOfConfig":"12232"},{"size":2860,"mtime":1786084511133,"results":"13110","hashOfConfig":"12232"},{"size":4786,"mtime":1786084511133,"results":"13111","hashOfConfig":"12232"},{"size":3388,"mtime":1786084511133,"results":"13112","hashOfConfig":"12232"},{"size":4682,"mtime":1786084511134,"results":"13113","hashOfConfig":"12232"},{"size":17693,"mtime":1786084511134,"results":"13114","hashOfConfig":"12232"},{"size":1693,"mtime":1786084511134,"results":"13115","hashOfConfig":"12232"},{"size":9445,"mtime":1786084511134,"results":"13116","hashOfConfig":"12232"},{"size":4655,"mtime":1786084511134,"results":"13117","hashOfConfig":"12232"},{"size":10505,"mtime":1786084511135,"results":"13118","hashOfConfig":"12232"},{"size":1422,"mtime":1786084511135,"results":"13119","hashOfConfig":"12232"},{"size":950,"mtime":1786084511135,"results":"13120","hashOfConfig":"12232"},{"size":11541,"mtime":1786084511135,"results":"13121","hashOfConfig":"12232"},{"size":14034,"mtime":1786084511135,"results":"13122","hashOfConfig":"12232"},{"size":3239,"mtime":1786084511135,"results":"13123","hashOfConfig":"12232"},{"size":5909,"mtime":1786084511136,"results":"13124","hashOfConfig":"12232"},{"size":12776,"mtime":1786084511136,"results":"13125","hashOfConfig":"12232"},{"size":12934,"mtime":1786084511137,"results":"13126","hashOfConfig":"12232"},{"size":3926,"mtime":1786084511137,"results":"13127","hashOfConfig":"12285"},{"size":13439,"mtime":1786084511160,"results":"13128","hashOfConfig":"12232"},{"size":4191,"mtime":1786084511160,"results":"13129","hashOfConfig":"12232"},{"size":3873,"mtime":1786084511161,"results":"13130","hashOfConfig":"12232"},{"size":3921,"mtime":1786084511161,"results":"13131","hashOfConfig":"12232"},{"size":316,"mtime":1786084511161,"results":"13132","hashOfConfig":"12232"},{"size":3775,"mtime":1786084511161,"results":"13133","hashOfConfig":"12232"},{"size":5307,"mtime":1786084511161,"results":"13134","hashOfConfig":"12232"},{"size":2357,"mtime":1786084511161,"results":"13135","hashOfConfig":"12232"},{"size":1245,"mtime":1786084511161,"results":"13136","hashOfConfig":"12232"},{"size":5496,"mtime":1786084511161,"results":"13137","hashOfConfig":"12232"},{"size":1373,"mtime":1786084511162,"results":"13138","hashOfConfig":"12232"},{"size":9274,"mtime":1786084511162,"results":"13139","hashOfConfig":"12232"},{"size":1888,"mtime":1786084511162,"results":"13140","hashOfConfig":"12232"},{"size":2221,"mtime":1786084511162,"results":"13141","hashOfConfig":"12232"},{"size":2531,"mtime":1786084511162,"results":"13142","hashOfConfig":"12232"},{"size":1321,"mtime":1786084511162,"results":"13143","hashOfConfig":"12232"},{"size":1251,"mtime":1786084511162,"results":"13144","hashOfConfig":"12232"},{"size":1325,"mtime":1786084511163,"results":"13145","hashOfConfig":"12232"},{"size":2068,"mtime":1786084511163,"results":"13146","hashOfConfig":"12232"},{"size":2476,"mtime":1786084511163,"results":"13147","hashOfConfig":"12232"},{"size":2897,"mtime":1786084511163,"results":"13148","hashOfConfig":"12232"},{"size":1536,"mtime":1786084511163,"results":"13149","hashOfConfig":"12232"},{"size":1262,"mtime":1786084511163,"results":"13150","hashOfConfig":"12232"},{"size":5637,"mtime":1786084511137,"results":"13151","hashOfConfig":"12232"},{"size":5856,"mtime":1786084511137,"results":"13152","hashOfConfig":"12232"},{"size":12695,"mtime":1786084511137,"results":"13153","hashOfConfig":"12232"},{"size":3645,"mtime":1786084511138,"results":"13154","hashOfConfig":"12232"},{"size":4547,"mtime":1786084511138,"results":"13155","hashOfConfig":"12232"},{"size":1730,"mtime":1786084511138,"results":"13156","hashOfConfig":"12232"},{"size":3750,"mtime":1786084511138,"results":"13157","hashOfConfig":"12232"},{"size":1314,"mtime":1786084511138,"results":"13158","hashOfConfig":"12232"},{"size":4662,"mtime":1786084511138,"results":"13159","hashOfConfig":"12232"},{"size":1543,"mtime":1786084511138,"results":"13160","hashOfConfig":"12232"},{"size":3015,"mtime":1786084511138,"results":"13161","hashOfConfig":"12232"},{"size":6142,"mtime":1786084511139,"results":"13162","hashOfConfig":"12232"},{"size":1116,"mtime":1786084511139,"results":"13163","hashOfConfig":"12232"},{"size":5333,"mtime":1786084511139,"results":"13164","hashOfConfig":"12232"},{"size":3562,"mtime":1786084511139,"results":"13165","hashOfConfig":"12232"},{"size":4337,"mtime":1786084511139,"results":"13166","hashOfConfig":"12232"},{"size":3458,"mtime":1786084511140,"results":"13167","hashOfConfig":"12232"},{"size":9322,"mtime":1786084511140,"results":"13168","hashOfConfig":"12232"},{"size":1633,"mtime":1786084511140,"results":"13169","hashOfConfig":"12232"},{"size":4738,"mtime":1786084511140,"results":"13170","hashOfConfig":"12232"},{"size":4755,"mtime":1786084511140,"results":"13171","hashOfConfig":"12232"},{"size":6676,"mtime":1786084511140,"results":"13172","hashOfConfig":"12232"},{"size":1458,"mtime":1786084511141,"results":"13173","hashOfConfig":"12232"},{"size":2774,"mtime":1786084511141,"results":"13174","hashOfConfig":"12232"},{"size":4679,"mtime":1786084511141,"results":"13175","hashOfConfig":"12232"},{"size":2442,"mtime":1786084511142,"results":"13176","hashOfConfig":"12232"},{"size":3735,"mtime":1786084511142,"results":"13177","hashOfConfig":"12232"},{"size":2899,"mtime":1786084511142,"results":"13178","hashOfConfig":"12232"},{"size":3281,"mtime":1786084511142,"results":"13179","hashOfConfig":"12232"},{"size":4353,"mtime":1786084511143,"results":"13180","hashOfConfig":"12232"},{"size":487,"mtime":1786084511143,"results":"13181","hashOfConfig":"12232"},{"size":3875,"mtime":1786084511143,"results":"13182","hashOfConfig":"12232"},{"size":4296,"mtime":1786084511144,"results":"13183","hashOfConfig":"12232"},{"size":6972,"mtime":1786084511144,"results":"13184","hashOfConfig":"12232"},{"size":4896,"mtime":1786084511144,"results":"13185","hashOfConfig":"12232"},{"size":13062,"mtime":1786084511144,"results":"13186","hashOfConfig":"12232"},{"size":3810,"mtime":1786084511144,"results":"13187","hashOfConfig":"12232"},{"size":932,"mtime":1786084511145,"results":"13188","hashOfConfig":"12232"},{"size":2696,"mtime":1786084511145,"results":"13189","hashOfConfig":"12232"},{"size":21792,"mtime":1786084511146,"results":"13190","hashOfConfig":"12232"},{"size":3686,"mtime":1786084511146,"results":"13191","hashOfConfig":"12232"},{"size":3455,"mtime":1786084511146,"results":"13192","hashOfConfig":"12232"},{"size":3921,"mtime":1786084511146,"results":"13193","hashOfConfig":"12232"},{"size":2763,"mtime":1786084511145,"results":"13194","hashOfConfig":"12232"},{"size":4377,"mtime":1786084511146,"results":"13195","hashOfConfig":"12232"},{"size":1359,"mtime":1786084511146,"results":"13196","hashOfConfig":"12232"},{"size":2555,"mtime":1786084511146,"results":"13197","hashOfConfig":"12232"},{"size":4603,"mtime":1786084511147,"results":"13198","hashOfConfig":"12232"},{"size":10354,"mtime":1786084511147,"results":"13199","hashOfConfig":"12232"},{"size":3767,"mtime":1786084511147,"results":"13200","hashOfConfig":"12232"},{"size":7665,"mtime":1786084511147,"results":"13201","hashOfConfig":"12232"},{"size":7610,"mtime":1786084511147,"results":"13202","hashOfConfig":"12232"},{"size":4418,"mtime":1786084511147,"results":"13203","hashOfConfig":"12232"},{"size":4851,"mtime":1786084511148,"results":"13204","hashOfConfig":"12232"},{"size":6255,"mtime":1786084511148,"results":"13205","hashOfConfig":"12232"},{"size":9537,"mtime":1786084511148,"results":"13206","hashOfConfig":"12285"},{"size":6037,"mtime":1786084511148,"results":"13207","hashOfConfig":"12232"},{"size":2967,"mtime":1786084511148,"results":"13208","hashOfConfig":"12232"},{"size":1087,"mtime":1786084511149,"results":"13209","hashOfConfig":"12232"},{"size":3392,"mtime":1786084511149,"results":"13210","hashOfConfig":"12232"},{"size":4716,"mtime":1786084511149,"results":"13211","hashOfConfig":"12232"},{"size":6193,"mtime":1786084511149,"results":"13212","hashOfConfig":"12232"},{"size":4680,"mtime":1786084511149,"results":"13213","hashOfConfig":"12232"},{"size":2203,"mtime":1786084511149,"results":"13214","hashOfConfig":"12232"},{"size":4165,"mtime":1786084511150,"results":"13215","hashOfConfig":"12232"},{"size":3017,"mtime":1786084511150,"results":"13216","hashOfConfig":"12232"},{"size":5941,"mtime":1786084511150,"results":"13217","hashOfConfig":"12232"},{"size":2996,"mtime":1786084511150,"results":"13218","hashOfConfig":"12232"},{"size":7473,"mtime":1786084511150,"results":"13219","hashOfConfig":"12232"},{"size":6045,"mtime":1786084511150,"results":"13220","hashOfConfig":"12232"},{"size":4761,"mtime":1786084511151,"results":"13221","hashOfConfig":"12232"},{"size":3624,"mtime":1786084511151,"results":"13222","hashOfConfig":"12232"},{"size":9221,"mtime":1786084511151,"results":"13223","hashOfConfig":"12232"},{"size":5928,"mtime":1786084511151,"results":"13224","hashOfConfig":"12232"},{"size":4789,"mtime":1786084511151,"results":"13225","hashOfConfig":"12232"},{"size":4972,"mtime":1786084511151,"results":"13226","hashOfConfig":"12232"},{"size":6444,"mtime":1786084511152,"results":"13227","hashOfConfig":"12232"},{"size":8871,"mtime":1786084511152,"results":"13228","hashOfConfig":"12232"},{"size":10986,"mtime":1786084511152,"results":"13229","hashOfConfig":"12232"},{"size":6377,"mtime":1786084511152,"results":"13230","hashOfConfig":"12232"},{"size":4324,"mtime":1786084511152,"results":"13231","hashOfConfig":"12232"},{"size":12183,"mtime":1786084511153,"results":"13232","hashOfConfig":"12232"},{"size":14729,"mtime":1786084511153,"results":"13233","hashOfConfig":"12232"},{"size":3438,"mtime":1786084511153,"results":"13234","hashOfConfig":"12232"},{"size":2834,"mtime":1786084511153,"results":"13235","hashOfConfig":"12232"},{"size":5871,"mtime":1786084511153,"results":"13236","hashOfConfig":"12232"},{"size":3097,"mtime":1786084511154,"results":"13237","hashOfConfig":"12232"},{"size":3375,"mtime":1786084511154,"results":"13238","hashOfConfig":"12232"},{"size":2616,"mtime":1786084511154,"results":"13239","hashOfConfig":"12232"},{"size":1549,"mtime":1786084511154,"results":"13240","hashOfConfig":"12232"},{"size":1609,"mtime":1786084511154,"results":"13241","hashOfConfig":"12232"},{"size":1255,"mtime":1786084511154,"results":"13242","hashOfConfig":"12232"},{"size":6433,"mtime":1786084511155,"results":"13243","hashOfConfig":"12232"},{"size":3308,"mtime":1786084511155,"results":"13244","hashOfConfig":"12232"},{"size":8301,"mtime":1786084511155,"results":"13245","hashOfConfig":"12232"},{"size":1645,"mtime":1786084511155,"results":"13246","hashOfConfig":"12232"},{"size":5806,"mtime":1786084511155,"results":"13247","hashOfConfig":"12232"},{"size":6432,"mtime":1786084511155,"results":"13248","hashOfConfig":"12232"},{"size":7092,"mtime":1786084511155,"results":"13249","hashOfConfig":"12232"},{"size":2496,"mtime":1786084511156,"results":"13250","hashOfConfig":"12232"},{"size":1433,"mtime":1786084511156,"results":"13251","hashOfConfig":"12232"},{"size":3442,"mtime":1786084511156,"results":"13252","hashOfConfig":"12232"},{"size":8787,"mtime":1786084511156,"results":"13253","hashOfConfig":"12232"},{"size":3306,"mtime":1786084511156,"results":"13254","hashOfConfig":"12232"},{"size":2192,"mtime":1786084511156,"results":"13255","hashOfConfig":"12232"},{"size":5403,"mtime":1786084511157,"results":"13256","hashOfConfig":"12232"},{"size":4999,"mtime":1786084511157,"results":"13257","hashOfConfig":"12232"},{"size":3963,"mtime":1786084511157,"results":"13258","hashOfConfig":"12232"},{"size":3509,"mtime":1786084511157,"results":"13259","hashOfConfig":"12232"},{"size":1721,"mtime":1786084511157,"results":"13260","hashOfConfig":"12232"},{"size":2669,"mtime":1786084511157,"results":"13261","hashOfConfig":"12232"},{"size":9125,"mtime":1786084511158,"results":"13262","hashOfConfig":"12232"},{"size":1305,"mtime":1786084511158,"results":"13263","hashOfConfig":"12232"},{"size":2744,"mtime":1786084511158,"results":"13264","hashOfConfig":"12232"},{"size":3445,"mtime":1786084511158,"results":"13265","hashOfConfig":"12232"},{"size":4879,"mtime":1786084511158,"results":"13266","hashOfConfig":"12232"},{"size":4431,"mtime":1786084511158,"results":"13267","hashOfConfig":"12232"},{"size":4562,"mtime":1786084511158,"results":"13268","hashOfConfig":"12232"},{"size":3286,"mtime":1786084511159,"results":"13269","hashOfConfig":"12232"},{"size":4210,"mtime":1786084511159,"results":"13270","hashOfConfig":"12232"},{"size":3356,"mtime":1786084511159,"results":"13271","hashOfConfig":"12232"},{"size":3037,"mtime":1786084511159,"results":"13272","hashOfConfig":"12232"},{"size":1379,"mtime":1786084511159,"results":"13273","hashOfConfig":"12232"},{"size":1552,"mtime":1786084511159,"results":"13274","hashOfConfig":"12232"},{"size":1558,"mtime":1786084511159,"results":"13275","hashOfConfig":"12232"},{"size":7397,"mtime":1786084511160,"results":"13276","hashOfConfig":"12232"},{"size":2412,"mtime":1786084511160,"results":"13277","hashOfConfig":"12232"},{"size":3044,"mtime":1786084511160,"results":"13278","hashOfConfig":"12285"},{"size":7088,"mtime":1786084511160,"results":"13279","hashOfConfig":"12232"},{"size":3298,"mtime":1786084511163,"results":"13280","hashOfConfig":"12232"},{"size":2622,"mtime":1786084511163,"results":"13281","hashOfConfig":"12232"},{"size":7140,"mtime":1786084511164,"results":"13282","hashOfConfig":"12232"},{"size":1242,"mtime":1786084511164,"results":"13283","hashOfConfig":"12232"},{"size":2440,"mtime":1786084511164,"results":"13284","hashOfConfig":"12232"},{"size":977,"mtime":1786084511164,"results":"13285","hashOfConfig":"12232"},{"size":4630,"mtime":1786084511164,"results":"13286","hashOfConfig":"12232"},{"size":14670,"mtime":1786084511164,"results":"13287","hashOfConfig":"12232"},{"size":3211,"mtime":1786084511165,"results":"13288","hashOfConfig":"12232"},{"size":4450,"mtime":1786084511165,"results":"13289","hashOfConfig":"12232"},{"size":7238,"mtime":1786084511165,"results":"13290","hashOfConfig":"12232"},{"size":18081,"mtime":1786084511165,"results":"13291","hashOfConfig":"12232"},{"size":11176,"mtime":1786084511165,"results":"13292","hashOfConfig":"12232"},{"size":4398,"mtime":1786084511165,"results":"13293","hashOfConfig":"12232"},{"size":2494,"mtime":1786084511166,"results":"13294","hashOfConfig":"12232"},{"size":3677,"mtime":1786084511166,"results":"13295","hashOfConfig":"12232"},{"size":3334,"mtime":1786084511166,"results":"13296","hashOfConfig":"12232"},{"size":5904,"mtime":1786084511166,"results":"13297","hashOfConfig":"12232"},{"size":2694,"mtime":1786084511166,"results":"13298","hashOfConfig":"12232"},{"size":2749,"mtime":1786084511167,"results":"13299","hashOfConfig":"12232"},{"size":8653,"mtime":1786084511167,"results":"13300","hashOfConfig":"12232"},{"size":7972,"mtime":1786084511167,"results":"13301","hashOfConfig":"12232"},{"size":6019,"mtime":1786084511167,"results":"13302","hashOfConfig":"12232"},{"size":1485,"mtime":1786084511167,"results":"13303","hashOfConfig":"12232"},{"size":1980,"mtime":1786084511167,"results":"13304","hashOfConfig":"12232"},{"size":4317,"mtime":1786084511167,"results":"13305","hashOfConfig":"12232"},{"size":3909,"mtime":1786084511168,"results":"13306","hashOfConfig":"12232"},{"size":4906,"mtime":1786084511168,"results":"13307","hashOfConfig":"12232"},{"size":12838,"mtime":1786084511168,"results":"13308","hashOfConfig":"12232"},{"size":10409,"mtime":1786084511168,"results":"13309","hashOfConfig":"12232"},{"size":1894,"mtime":1786084511168,"results":"13310","hashOfConfig":"12232"},{"size":10708,"mtime":1786084511169,"results":"13311","hashOfConfig":"12232"},{"size":1653,"mtime":1786084511169,"results":"13312","hashOfConfig":"12232"},{"size":3775,"mtime":1786084511169,"results":"13313","hashOfConfig":"12232"},{"size":17790,"mtime":1786084511170,"results":"13314","hashOfConfig":"12232"},{"size":7441,"mtime":1786084511170,"results":"13315","hashOfConfig":"12232"},{"size":1672,"mtime":1786084511170,"results":"13316","hashOfConfig":"12232"},{"size":3648,"mtime":1786084511170,"results":"13317","hashOfConfig":"12232"},{"size":2970,"mtime":1786084511170,"results":"13318","hashOfConfig":"12232"},{"size":3410,"mtime":1786084511170,"results":"13319","hashOfConfig":"12232"},{"size":8218,"mtime":1786084511171,"results":"13320","hashOfConfig":"12232"},{"size":1031,"mtime":1786084511171,"results":"13321","hashOfConfig":"12232"},{"size":1502,"mtime":1786084511171,"results":"13322","hashOfConfig":"12232"},{"size":5755,"mtime":1786084511171,"results":"13323","hashOfConfig":"12232"},{"size":7570,"mtime":1786084511171,"results":"13324","hashOfConfig":"12232"},{"size":1117,"mtime":1786084511171,"results":"13325","hashOfConfig":"12232"},{"size":2519,"mtime":1786084511171,"results":"13326","hashOfConfig":"12232"},{"size":6262,"mtime":1786084511172,"results":"13327","hashOfConfig":"12232"},{"size":2356,"mtime":1786084511172,"results":"13328","hashOfConfig":"12232"},{"size":3882,"mtime":1786084511172,"results":"13329","hashOfConfig":"12232"},{"size":5422,"mtime":1786084511172,"results":"13330","hashOfConfig":"12232"},{"size":1419,"mtime":1786084511172,"results":"13331","hashOfConfig":"12232"},{"size":8467,"mtime":1786084511172,"results":"13332","hashOfConfig":"12232"},{"size":6130,"mtime":1786084511172,"results":"13333","hashOfConfig":"12232"},{"size":2657,"mtime":1786084511173,"results":"13334","hashOfConfig":"12232"},{"size":2232,"mtime":1786084511173,"results":"13335","hashOfConfig":"12232"},{"size":3096,"mtime":1786084511173,"results":"13336","hashOfConfig":"12232"},{"size":4009,"mtime":1786084511173,"results":"13337","hashOfConfig":"12232"},{"size":1805,"mtime":1786084511173,"results":"13338","hashOfConfig":"12232"},{"size":6416,"mtime":1786084511173,"results":"13339","hashOfConfig":"12232"},{"size":3695,"mtime":1786084511173,"results":"13340","hashOfConfig":"12232"},{"size":7010,"mtime":1786084511174,"results":"13341","hashOfConfig":"12232"},{"size":3045,"mtime":1786084511174,"results":"13342","hashOfConfig":"12232"},{"size":6022,"mtime":1786084511174,"results":"13343","hashOfConfig":"12232"},{"size":8647,"mtime":1786084511174,"results":"13344","hashOfConfig":"12232"},{"size":2158,"mtime":1786084511174,"results":"13345","hashOfConfig":"12232"},{"size":4216,"mtime":1786084511174,"results":"13346","hashOfConfig":"12232"},{"size":3228,"mtime":1786084511174,"results":"13347","hashOfConfig":"12232"},{"size":2560,"mtime":1786084511174,"results":"13348","hashOfConfig":"12232"},{"size":3213,"mtime":1786084511175,"results":"13349","hashOfConfig":"12232"},{"size":7966,"mtime":1786084511175,"results":"13350","hashOfConfig":"12232"},{"size":2882,"mtime":1786084511175,"results":"13351","hashOfConfig":"12232"},{"size":4170,"mtime":1786084511175,"results":"13352","hashOfConfig":"12232"},{"size":12415,"mtime":1786084511175,"results":"13353","hashOfConfig":"12232"},{"size":2905,"mtime":1786084511175,"results":"13354","hashOfConfig":"12232"},{"size":2312,"mtime":1786084511176,"results":"13355","hashOfConfig":"12232"},{"size":2634,"mtime":1786084511176,"results":"13356","hashOfConfig":"12232"},{"size":7530,"mtime":1786084511176,"results":"13357","hashOfConfig":"12232"},{"size":4784,"mtime":1786084511176,"results":"13358","hashOfConfig":"12232"},{"size":2354,"mtime":1786084511176,"results":"13359","hashOfConfig":"12232"},{"size":5373,"mtime":1786084511176,"results":"13360","hashOfConfig":"12232"},{"size":5994,"mtime":1786084511176,"results":"13361","hashOfConfig":"12232"},{"size":12242,"mtime":1786084511177,"results":"13362","hashOfConfig":"12232"},{"size":6012,"mtime":1786084511177,"results":"13363","hashOfConfig":"12232"},{"size":2770,"mtime":1786084511177,"results":"13364","hashOfConfig":"12232"},{"size":3642,"mtime":1786084511177,"results":"13365","hashOfConfig":"12232"},{"size":2348,"mtime":1786084511177,"results":"13366","hashOfConfig":"12232"},{"size":1393,"mtime":1786084511177,"results":"13367","hashOfConfig":"12232"},{"size":4843,"mtime":1786084511177,"results":"13368","hashOfConfig":"12232"},{"size":3968,"mtime":1786084511177,"results":"13369","hashOfConfig":"12232"},{"size":1505,"mtime":1786084511177,"results":"13370","hashOfConfig":"12232"},{"size":2904,"mtime":1786084511178,"results":"13371","hashOfConfig":"12232"},{"size":3880,"mtime":1786084511178,"results":"13372","hashOfConfig":"12232"},{"size":9286,"mtime":1786084511178,"results":"13373","hashOfConfig":"12232"},{"size":3631,"mtime":1786084511178,"results":"13374","hashOfConfig":"12232"},{"size":8453,"mtime":1786084511178,"results":"13375","hashOfConfig":"12232"},{"size":6198,"mtime":1786084511178,"results":"13376","hashOfConfig":"12232"},{"size":4899,"mtime":1786084511178,"results":"13377","hashOfConfig":"12232"},{"size":11748,"mtime":1786084511179,"results":"13378","hashOfConfig":"12232"},{"size":6907,"mtime":1786084511179,"results":"13379","hashOfConfig":"12232"},{"size":6765,"mtime":1786084511179,"results":"13380","hashOfConfig":"12232"},{"size":6587,"mtime":1786084511197,"results":"13381","hashOfConfig":"12232"},{"size":3669,"mtime":1786084511197,"results":"13382","hashOfConfig":"12232"},{"size":3002,"mtime":1786084511197,"results":"13383","hashOfConfig":"12232"},{"size":2582,"mtime":1786084511197,"results":"13384","hashOfConfig":"12232"},{"size":4295,"mtime":1786084511198,"results":"13385","hashOfConfig":"12232"},{"size":4708,"mtime":1786084511198,"results":"13386","hashOfConfig":"12232"},{"size":18916,"mtime":1786084511198,"results":"13387","hashOfConfig":"12232"},{"size":10089,"mtime":1786084511198,"results":"13388","hashOfConfig":"12232"},{"size":4615,"mtime":1786084511198,"results":"13389","hashOfConfig":"12232"},{"size":1882,"mtime":1786084511198,"results":"13390","hashOfConfig":"12232"},{"size":4483,"mtime":1786084511209,"results":"13391","hashOfConfig":"12232"},{"size":4336,"mtime":1786084511209,"results":"13392","hashOfConfig":"12232"},{"size":5338,"mtime":1786084511209,"results":"13393","hashOfConfig":"12232"},{"size":5075,"mtime":1786084511209,"results":"13394","hashOfConfig":"12232"},{"size":4804,"mtime":1786084511179,"results":"13395","hashOfConfig":"12232"},{"size":9394,"mtime":1786084511179,"results":"13396","hashOfConfig":"12232"},{"size":4044,"mtime":1786084511179,"results":"13397","hashOfConfig":"12232"},{"size":2575,"mtime":1786084511180,"results":"13398","hashOfConfig":"12232"},{"size":9070,"mtime":1786084511180,"results":"13399","hashOfConfig":"12232"},{"size":7581,"mtime":1786084511180,"results":"13400","hashOfConfig":"12232"},{"size":4130,"mtime":1786084511180,"results":"13401","hashOfConfig":"12232"},{"size":4686,"mtime":1786084511180,"results":"13402","hashOfConfig":"12232"},{"size":3644,"mtime":1786084511180,"results":"13403","hashOfConfig":"12232"},{"size":2851,"mtime":1786084511180,"results":"13404","hashOfConfig":"12232"},{"size":2597,"mtime":1786084511180,"results":"13405","hashOfConfig":"12232"},{"size":8153,"mtime":1786084511181,"results":"13406","hashOfConfig":"12232"},{"size":4191,"mtime":1786084511181,"results":"13407","hashOfConfig":"12232"},{"size":3124,"mtime":1786084511181,"results":"13408","hashOfConfig":"12232"},{"size":3424,"mtime":1786084511181,"results":"13409","hashOfConfig":"12232"},{"size":2198,"mtime":1786084511181,"results":"13410","hashOfConfig":"12232"},{"size":2505,"mtime":1786084511181,"results":"13411","hashOfConfig":"12232"},{"size":8969,"mtime":1786084511181,"results":"13412","hashOfConfig":"12232"},{"size":7571,"mtime":1786084511181,"results":"13413","hashOfConfig":"12232"},{"size":4418,"mtime":1786084511182,"results":"13414","hashOfConfig":"12232"},{"size":31032,"mtime":1786084511182,"results":"13415","hashOfConfig":"12232"},{"size":7952,"mtime":1786084511182,"results":"13416","hashOfConfig":"12232"},{"size":3142,"mtime":1786084511182,"results":"13417","hashOfConfig":"12232"},{"size":21010,"mtime":1786084511183,"results":"13418","hashOfConfig":"12232"},{"size":9386,"mtime":1786084511183,"results":"13419","hashOfConfig":"12232"},{"size":13908,"mtime":1786084511183,"results":"13420","hashOfConfig":"12232"},{"size":4849,"mtime":1786084511183,"results":"13421","hashOfConfig":"12232"},{"size":9733,"mtime":1786084511183,"results":"13422","hashOfConfig":"12232"},{"size":3099,"mtime":1786084511183,"results":"13423","hashOfConfig":"12232"},{"size":8088,"mtime":1786084511183,"results":"13424","hashOfConfig":"12232"},{"size":3297,"mtime":1786084511184,"results":"13425","hashOfConfig":"12232"},{"size":5182,"mtime":1786084511184,"results":"13426","hashOfConfig":"12232"},{"size":8824,"mtime":1786084511184,"results":"13427","hashOfConfig":"12232"},{"size":22299,"mtime":1786084511184,"results":"13428","hashOfConfig":"12232"},{"size":7043,"mtime":1786084511185,"results":"13429","hashOfConfig":"12232"},{"size":961,"mtime":1786084511185,"results":"13430","hashOfConfig":"12232"},{"size":3542,"mtime":1786084511185,"results":"13431","hashOfConfig":"12232"},{"size":10982,"mtime":1786084511185,"results":"13432","hashOfConfig":"12232"},{"size":5077,"mtime":1786084511186,"results":"13433","hashOfConfig":"12232"},{"size":5470,"mtime":1786084511186,"results":"13434","hashOfConfig":"12232"},{"size":6853,"mtime":1786084511186,"results":"13435","hashOfConfig":"12232"},{"size":5050,"mtime":1786084511186,"results":"13436","hashOfConfig":"12232"},{"size":6168,"mtime":1786084511186,"results":"13437","hashOfConfig":"12232"},{"size":11186,"mtime":1786084511187,"results":"13438","hashOfConfig":"12232"},{"size":5032,"mtime":1786084511187,"results":"13439","hashOfConfig":"12232"},{"size":4823,"mtime":1786084511187,"results":"13440","hashOfConfig":"12232"},{"size":6224,"mtime":1786084511187,"results":"13441","hashOfConfig":"12232"},{"size":9454,"mtime":1786084511187,"results":"13442","hashOfConfig":"12232"},{"size":2907,"mtime":1786084511187,"results":"13443","hashOfConfig":"12232"},{"size":10261,"mtime":1786084511187,"results":"13444","hashOfConfig":"12232"},{"size":3388,"mtime":1786084511187,"results":"13445","hashOfConfig":"12232"},{"size":3008,"mtime":1786084511188,"results":"13446","hashOfConfig":"12232"},{"size":3887,"mtime":1786084511188,"results":"13447","hashOfConfig":"12232"},{"size":2674,"mtime":1786084511188,"results":"13448","hashOfConfig":"12232"},{"size":5215,"mtime":1786084511188,"results":"13449","hashOfConfig":"12232"},{"size":2584,"mtime":1786084511188,"results":"13450","hashOfConfig":"12232"},{"size":2872,"mtime":1786084511188,"results":"13451","hashOfConfig":"12232"},{"size":7006,"mtime":1786084511188,"results":"13452","hashOfConfig":"12232"},{"size":5430,"mtime":1786084511188,"results":"13453","hashOfConfig":"12232"},{"size":4391,"mtime":1786084511189,"results":"13454","hashOfConfig":"12232"},{"size":4312,"mtime":1786084511189,"results":"13455","hashOfConfig":"12232"},{"size":3375,"mtime":1786084511189,"results":"13456","hashOfConfig":"12232"},{"size":2875,"mtime":1786084511189,"results":"13457","hashOfConfig":"12232"},{"size":9666,"mtime":1786084511189,"results":"13458","hashOfConfig":"12232"},{"size":6483,"mtime":1786084511189,"results":"13459","hashOfConfig":"12232"},{"size":6693,"mtime":1786084511189,"results":"13460","hashOfConfig":"12232"},{"size":6027,"mtime":1786084511189,"results":"13461","hashOfConfig":"12232"},{"size":3631,"mtime":1786084511190,"results":"13462","hashOfConfig":"12232"},{"size":5228,"mtime":1786084511190,"results":"13463","hashOfConfig":"12232"},{"size":4711,"mtime":1786084511190,"results":"13464","hashOfConfig":"12232"},{"size":2523,"mtime":1786084511190,"results":"13465","hashOfConfig":"12232"},{"size":17683,"mtime":1786084511190,"results":"13466","hashOfConfig":"12232"},{"size":1267,"mtime":1786084511190,"results":"13467","hashOfConfig":"12232"},{"size":6424,"mtime":1786084511190,"results":"13468","hashOfConfig":"12232"},{"size":18483,"mtime":1786084511191,"results":"13469","hashOfConfig":"12232"},{"size":10002,"mtime":1786084511191,"results":"13470","hashOfConfig":"12232"},{"size":10216,"mtime":1786084511191,"results":"13471","hashOfConfig":"12232"},{"size":2619,"mtime":1786084511191,"results":"13472","hashOfConfig":"12232"},{"size":3370,"mtime":1786084511191,"results":"13473","hashOfConfig":"12232"},{"size":4596,"mtime":1786084511191,"results":"13474","hashOfConfig":"12232"},{"size":5373,"mtime":1786084511192,"results":"13475","hashOfConfig":"12232"},{"size":4083,"mtime":1786084511192,"results":"13476","hashOfConfig":"12232"},{"size":5529,"mtime":1786084511192,"results":"13477","hashOfConfig":"12232"},{"size":9543,"mtime":1786084511192,"results":"13478","hashOfConfig":"12232"},{"size":106735,"mtime":1786084511193,"results":"13479","hashOfConfig":"12232"},{"size":4108,"mtime":1786084511193,"results":"13480","hashOfConfig":"12232"},{"size":4885,"mtime":1786084511193,"results":"13481","hashOfConfig":"12232"},{"size":605,"mtime":1786084511193,"results":"13482","hashOfConfig":"12232"},{"size":4440,"mtime":1786084511193,"results":"13483","hashOfConfig":"12232"},{"size":4294,"mtime":1786084511193,"results":"13484","hashOfConfig":"12232"},{"size":3021,"mtime":1786084511193,"results":"13485","hashOfConfig":"12232"},{"size":18425,"mtime":1786084511194,"results":"13486","hashOfConfig":"12232"},{"size":4053,"mtime":1786084511194,"results":"13487","hashOfConfig":"12232"},{"size":11462,"mtime":1786084511194,"results":"13488","hashOfConfig":"12232"},{"size":18414,"mtime":1786084511194,"results":"13489","hashOfConfig":"12232"},{"size":6914,"mtime":1786084511194,"results":"13490","hashOfConfig":"12232"},{"size":2291,"mtime":1786084511194,"results":"13491","hashOfConfig":"12232"},{"size":10098,"mtime":1786084511194,"results":"13492","hashOfConfig":"12232"},{"size":9885,"mtime":1786084511195,"results":"13493","hashOfConfig":"12232"},{"size":22779,"mtime":1786084511195,"results":"13494","hashOfConfig":"12232"},{"size":26444,"mtime":1786084511195,"results":"13495","hashOfConfig":"12232"},{"size":19043,"mtime":1786084511195,"results":"13496","hashOfConfig":"12232"},{"size":11061,"mtime":1786084511195,"results":"13497","hashOfConfig":"12232"},{"size":2431,"mtime":1786084511196,"results":"13498","hashOfConfig":"12232"},{"size":5131,"mtime":1786084511196,"results":"13499","hashOfConfig":"12232"},{"size":2930,"mtime":1786084511196,"results":"13500","hashOfConfig":"12232"},{"size":7261,"mtime":1786084511196,"results":"13501","hashOfConfig":"12232"},{"size":3041,"mtime":1786084511196,"results":"13502","hashOfConfig":"12232"},{"size":3269,"mtime":1786084511196,"results":"13503","hashOfConfig":"12232"},{"size":16195,"mtime":1786084511196,"results":"13504","hashOfConfig":"12232"},{"size":4077,"mtime":1786084511196,"results":"13505","hashOfConfig":"12232"},{"size":14084,"mtime":1786084511197,"results":"13506","hashOfConfig":"12232"},{"size":2953,"mtime":1786084511197,"results":"13507","hashOfConfig":"12232"},{"size":5267,"mtime":1786084511197,"results":"13508","hashOfConfig":"12232"},{"size":5416,"mtime":1786084511209,"results":"13509","hashOfConfig":"12232"},{"size":7350,"mtime":1786084511209,"results":"13510","hashOfConfig":"12232"},{"size":8782,"mtime":1786084511209,"results":"13511","hashOfConfig":"12232"},{"size":14971,"mtime":1786084511209,"results":"13512","hashOfConfig":"12232"},{"size":2971,"mtime":1786084511210,"results":"13513","hashOfConfig":"12232"},{"size":2176,"mtime":1786084511210,"results":"13514","hashOfConfig":"12232"},{"size":3118,"mtime":1786084511210,"results":"13515","hashOfConfig":"12232"},{"size":6062,"mtime":1786084511210,"results":"13516","hashOfConfig":"12232"},{"size":21441,"mtime":1786084511210,"results":"13517","hashOfConfig":"12232"},{"size":3531,"mtime":1786084511210,"results":"13518","hashOfConfig":"12232"},{"size":4145,"mtime":1786084511210,"results":"13519","hashOfConfig":"12232"},{"size":1357,"mtime":1786084511210,"results":"13520","hashOfConfig":"12232"},{"size":6519,"mtime":1786084511211,"results":"13521","hashOfConfig":"12232"},{"size":2376,"mtime":1786084511211,"results":"13522","hashOfConfig":"12232"},{"size":3970,"mtime":1786084511211,"results":"13523","hashOfConfig":"12232"},{"size":2292,"mtime":1786084511211,"results":"13524","hashOfConfig":"12232"},{"size":9493,"mtime":1786084511211,"results":"13525","hashOfConfig":"12232"},{"size":1958,"mtime":1786084511211,"results":"13526","hashOfConfig":"12232"},{"size":1782,"mtime":1786084511211,"results":"13527","hashOfConfig":"12232"},{"size":10098,"mtime":1786084511211,"results":"13528","hashOfConfig":"12232"},{"size":3214,"mtime":1786084511211,"results":"13529","hashOfConfig":"12232"},{"size":2571,"mtime":1786084511213,"results":"13530","hashOfConfig":"12232"},{"size":2040,"mtime":1786084511213,"results":"13531","hashOfConfig":"12232"},{"size":718,"mtime":1786084511213,"results":"13532","hashOfConfig":"12232"},{"size":1629,"mtime":1786084511213,"results":"13533","hashOfConfig":"12232"},{"size":3328,"mtime":1786084511213,"results":"13534","hashOfConfig":"12232"},{"size":1297,"mtime":1786084511213,"results":"13535","hashOfConfig":"12232"},{"size":6698,"mtime":1786084511213,"results":"13536","hashOfConfig":"12232"},{"size":3418,"mtime":1786084511214,"results":"13537","hashOfConfig":"12232"},{"size":10036,"mtime":1786084511214,"results":"13538","hashOfConfig":"12232"},{"size":3239,"mtime":1786084511214,"results":"13539","hashOfConfig":"12232"},{"size":2833,"mtime":1786084511214,"results":"13540","hashOfConfig":"12232"},{"size":11572,"mtime":1786084511214,"results":"13541","hashOfConfig":"12232"},{"size":6750,"mtime":1786084511214,"results":"13542","hashOfConfig":"12232"},{"size":8736,"mtime":1786084511214,"results":"13543","hashOfConfig":"12232"},{"size":3082,"mtime":1786084511214,"results":"13544","hashOfConfig":"12232"},{"size":6137,"mtime":1786084511215,"results":"13545","hashOfConfig":"12232"},{"size":2707,"mtime":1786084511215,"results":"13546","hashOfConfig":"12232"},{"size":3494,"mtime":1786084511215,"results":"13547","hashOfConfig":"12232"},{"size":8339,"mtime":1786084511215,"results":"13548","hashOfConfig":"12232"},{"size":3185,"mtime":1786084511215,"results":"13549","hashOfConfig":"12232"},{"size":2697,"mtime":1786084511215,"results":"13550","hashOfConfig":"12232"},{"size":6227,"mtime":1786084511215,"results":"13551","hashOfConfig":"12232"},{"size":3057,"mtime":1786084511215,"results":"13552","hashOfConfig":"12232"},{"size":6142,"mtime":1786084511215,"results":"13553","hashOfConfig":"12232"},{"size":1588,"mtime":1786084511215,"results":"13554","hashOfConfig":"12232"},{"size":11113,"mtime":1786084511216,"results":"13555","hashOfConfig":"12232"},{"size":2782,"mtime":1786084511216,"results":"13556","hashOfConfig":"12232"},{"size":9807,"mtime":1786084511216,"results":"13557","hashOfConfig":"12232"},{"size":10277,"mtime":1786084511216,"results":"13558","hashOfConfig":"12232"},{"size":5142,"mtime":1786084511216,"results":"13559","hashOfConfig":"12232"},{"size":5980,"mtime":1786084511216,"results":"13560","hashOfConfig":"12232"},{"size":4058,"mtime":1786084511216,"results":"13561","hashOfConfig":"12232"},{"size":8032,"mtime":1786084511216,"results":"13562","hashOfConfig":"12232"},{"size":2827,"mtime":1786084511216,"results":"13563","hashOfConfig":"12232"},{"size":1427,"mtime":1786084511217,"results":"13564","hashOfConfig":"12232"},{"size":3963,"mtime":1786084511217,"results":"13565","hashOfConfig":"12232"},{"size":7268,"mtime":1786084511217,"results":"13566","hashOfConfig":"12232"},{"size":3389,"mtime":1786084511217,"results":"13567","hashOfConfig":"12232"},{"size":1835,"mtime":1786084511217,"results":"13568","hashOfConfig":"12232"},{"size":6381,"mtime":1786084511217,"results":"13569","hashOfConfig":"12232"},{"size":2191,"mtime":1786084511217,"results":"13570","hashOfConfig":"12232"},{"size":2042,"mtime":1786084511217,"results":"13571","hashOfConfig":"12232"},{"size":4309,"mtime":1786084511217,"results":"13572","hashOfConfig":"12232"},{"size":2534,"mtime":1786084511217,"results":"13573","hashOfConfig":"12232"},{"size":7046,"mtime":1786084511217,"results":"13574","hashOfConfig":"12232"},{"size":1988,"mtime":1786084511218,"results":"13575","hashOfConfig":"12232"},{"size":5419,"mtime":1786084511218,"results":"13576","hashOfConfig":"12232"},{"size":1349,"mtime":1786084511218,"results":"13577","hashOfConfig":"12232"},{"size":4785,"mtime":1786084511218,"results":"13578","hashOfConfig":"12232"},{"size":1793,"mtime":1786084511218,"results":"13579","hashOfConfig":"12232"},{"size":14760,"mtime":1786084511218,"results":"13580","hashOfConfig":"12232"},{"size":5315,"mtime":1786084511218,"results":"13581","hashOfConfig":"12232"},{"size":1606,"mtime":1786084511218,"results":"13582","hashOfConfig":"12232"},{"size":7974,"mtime":1786084511218,"results":"13583","hashOfConfig":"12232"},{"size":2398,"mtime":1786084511219,"results":"13584","hashOfConfig":"12232"},{"size":5089,"mtime":1786084511219,"results":"13585","hashOfConfig":"12232"},{"size":3895,"mtime":1786084511219,"results":"13586","hashOfConfig":"12232"},{"size":7132,"mtime":1786084511219,"results":"13587","hashOfConfig":"12232"},{"size":1665,"mtime":1786084511219,"results":"13588","hashOfConfig":"12232"},{"size":5341,"mtime":1786084511219,"results":"13589","hashOfConfig":"12232"},{"size":2048,"mtime":1786084511219,"results":"13590","hashOfConfig":"12232"},{"size":1477,"mtime":1786084511219,"results":"13591","hashOfConfig":"12232"},{"size":2411,"mtime":1786084511219,"results":"13592","hashOfConfig":"12232"},{"size":1527,"mtime":1786084511219,"results":"13593","hashOfConfig":"12232"},{"size":4551,"mtime":1786084511219,"results":"13594","hashOfConfig":"12232"},{"size":2462,"mtime":1786084511219,"results":"13595","hashOfConfig":"12232"},{"size":3736,"mtime":1786084511220,"results":"13596","hashOfConfig":"12232"},{"size":2367,"mtime":1786084511220,"results":"13597","hashOfConfig":"12232"},{"size":1597,"mtime":1786084511220,"results":"13598","hashOfConfig":"12232"},{"size":1035,"mtime":1786084511220,"results":"13599","hashOfConfig":"12232"},{"size":966,"mtime":1786084511220,"results":"13600","hashOfConfig":"12232"},{"size":1185,"mtime":1786084511220,"results":"13601","hashOfConfig":"12232"},{"size":1390,"mtime":1786084511220,"results":"13602","hashOfConfig":"12232"},{"size":4194,"mtime":1786084511220,"results":"13603","hashOfConfig":"12232"},{"size":1209,"mtime":1786084511220,"results":"13604","hashOfConfig":"12232"},{"size":1038,"mtime":1786084511220,"results":"13605","hashOfConfig":"12232"},{"size":1300,"mtime":1786084511220,"results":"13606","hashOfConfig":"12232"},{"size":3014,"mtime":1786084511220,"results":"13607","hashOfConfig":"12232"},{"size":2330,"mtime":1786084511221,"results":"13608","hashOfConfig":"12232"},{"size":4002,"mtime":1786084511221,"results":"13609","hashOfConfig":"12232"},{"size":803,"mtime":1786084511221,"results":"13610","hashOfConfig":"12232"},{"size":2732,"mtime":1786084511224,"results":"13611","hashOfConfig":"12232"},{"size":8230,"mtime":1786084511224,"results":"13612","hashOfConfig":"12232"},{"size":1779,"mtime":1786084511224,"results":"13613","hashOfConfig":"12232"},{"size":4234,"mtime":1786084511224,"results":"13614","hashOfConfig":"12232"},{"size":16495,"mtime":1786084511224,"results":"13615","hashOfConfig":"12232"},{"size":6881,"mtime":1786084511225,"results":"13616","hashOfConfig":"12232"},{"size":4087,"mtime":1786084511225,"results":"13617","hashOfConfig":"12232"},{"size":4748,"mtime":1786084511225,"results":"13618","hashOfConfig":"12232"},{"size":22188,"mtime":1786084511225,"results":"13619","hashOfConfig":"12232"},{"size":4228,"mtime":1786084511225,"results":"13620","hashOfConfig":"12232"},{"size":2754,"mtime":1786084511225,"results":"13621","hashOfConfig":"12232"},{"size":2087,"mtime":1786084511225,"results":"13622","hashOfConfig":"12232"},{"size":1208,"mtime":1786084511225,"results":"13623","hashOfConfig":"12232"},{"size":3236,"mtime":1786084511225,"results":"13624","hashOfConfig":"12232"},{"size":2309,"mtime":1786084511226,"results":"13625","hashOfConfig":"12232"},{"size":4431,"mtime":1786084511226,"results":"13626","hashOfConfig":"12232"},{"size":8171,"mtime":1786084511226,"results":"13627","hashOfConfig":"12232"},{"size":9479,"mtime":1786084511226,"results":"13628","hashOfConfig":"12232"},{"size":4752,"mtime":1786084511226,"results":"13629","hashOfConfig":"12232"},{"size":13943,"mtime":1786084511226,"results":"13630","hashOfConfig":"12232"},{"size":6039,"mtime":1786084511226,"results":"13631","hashOfConfig":"12232"},{"size":5480,"mtime":1786084511226,"results":"13632","hashOfConfig":"12232"},{"size":3806,"mtime":1786084511226,"results":"13633","hashOfConfig":"12232"},{"size":3318,"mtime":1786084511227,"results":"13634","hashOfConfig":"12232"},{"size":5066,"mtime":1786084511227,"results":"13635","hashOfConfig":"12232"},{"size":5430,"mtime":1786084511227,"results":"13636","hashOfConfig":"12232"},{"size":2392,"mtime":1786084511227,"results":"13637","hashOfConfig":"12232"},{"size":2382,"mtime":1786084511227,"results":"13638","hashOfConfig":"12232"},{"size":2390,"mtime":1786084511227,"results":"13639","hashOfConfig":"12232"},{"size":1862,"mtime":1786084511227,"results":"13640","hashOfConfig":"12232"},{"size":2793,"mtime":1786084511227,"results":"13641","hashOfConfig":"12232"},{"size":3056,"mtime":1786084511228,"results":"13642","hashOfConfig":"12232"},{"size":418,"mtime":1786084511228,"results":"13643","hashOfConfig":"12232"},{"size":458,"mtime":1786084511228,"results":"13644","hashOfConfig":"12232"},{"size":2737,"mtime":1786084511228,"results":"13645","hashOfConfig":"12232"},{"size":3414,"mtime":1786084511228,"results":"13646","hashOfConfig":"12232"},{"size":974,"mtime":1786084511228,"results":"13647","hashOfConfig":"12232"},{"size":1291,"mtime":1786084511228,"results":"13648","hashOfConfig":"12232"},{"size":5973,"mtime":1786084511228,"results":"13649","hashOfConfig":"12232"},{"size":2110,"mtime":1786084511228,"results":"13650","hashOfConfig":"12232"},{"size":1903,"mtime":1786084511228,"results":"13651","hashOfConfig":"12232"},{"size":1003,"mtime":1786084511229,"results":"13652","hashOfConfig":"12232"},{"size":1493,"mtime":1786084511229,"results":"13653","hashOfConfig":"12232"},{"size":3964,"mtime":1786084511229,"results":"13654","hashOfConfig":"12232"},{"size":5986,"mtime":1786084511229,"results":"13655","hashOfConfig":"12232"},{"size":3275,"mtime":1786084511229,"results":"13656","hashOfConfig":"12232"},{"size":3177,"mtime":1786084511229,"results":"13657","hashOfConfig":"12232"},{"size":4692,"mtime":1786084511229,"results":"13658","hashOfConfig":"12232"},{"size":2758,"mtime":1786084511229,"results":"13659","hashOfConfig":"12232"},{"size":3889,"mtime":1786084511229,"results":"13660","hashOfConfig":"12232"},{"size":3596,"mtime":1786084511229,"results":"13661","hashOfConfig":"12232"},{"size":2108,"mtime":1786084511230,"results":"13662","hashOfConfig":"12232"},{"size":3283,"mtime":1786084511230,"results":"13663","hashOfConfig":"12232"},{"size":1476,"mtime":1786084511230,"results":"13664","hashOfConfig":"12232"},{"size":1610,"mtime":1786084511230,"results":"13665","hashOfConfig":"12232"},{"size":1744,"mtime":1786084511230,"results":"13666","hashOfConfig":"12232"},{"size":1445,"mtime":1786084511230,"results":"13667","hashOfConfig":"12232"},{"size":2237,"mtime":1786084511230,"results":"13668","hashOfConfig":"12232"},{"size":1569,"mtime":1786084511230,"results":"13669","hashOfConfig":"12232"},{"size":2230,"mtime":1786084511230,"results":"13670","hashOfConfig":"12232"},{"size":6449,"mtime":1786084511230,"results":"13671","hashOfConfig":"12232"},{"size":3917,"mtime":1786084511231,"results":"13672","hashOfConfig":"12232"},{"size":1962,"mtime":1786084511231,"results":"13673","hashOfConfig":"12232"},{"size":5734,"mtime":1786084511231,"results":"13674","hashOfConfig":"12232"},{"size":5672,"mtime":1786084511231,"results":"13675","hashOfConfig":"12232"},{"size":14325,"mtime":1786084511231,"results":"13676","hashOfConfig":"12232"},{"size":2766,"mtime":1786084511231,"results":"13677","hashOfConfig":"12232"},{"size":4471,"mtime":1786084511231,"results":"13678","hashOfConfig":"12232"},{"size":1621,"mtime":1786084511231,"results":"13679","hashOfConfig":"12232"},{"size":1208,"mtime":1786084511232,"results":"13680","hashOfConfig":"12232"},{"size":5320,"mtime":1786084511232,"results":"13681","hashOfConfig":"12232"},{"size":15459,"mtime":1786084511232,"results":"13682","hashOfConfig":"12232"},{"size":1311,"mtime":1786084511232,"results":"13683","hashOfConfig":"12232"},{"size":2513,"mtime":1786084511232,"results":"13684","hashOfConfig":"12232"},{"size":4429,"mtime":1786084511232,"results":"13685","hashOfConfig":"12232"},{"size":3725,"mtime":1786084511232,"results":"13686","hashOfConfig":"12232"},{"size":2836,"mtime":1786084511232,"results":"13687","hashOfConfig":"12232"},{"size":4569,"mtime":1786084511233,"results":"13688","hashOfConfig":"12232"},{"size":4112,"mtime":1786084511233,"results":"13689","hashOfConfig":"12232"},{"size":3927,"mtime":1786084511233,"results":"13690","hashOfConfig":"12232"},{"size":5765,"mtime":1786084511233,"results":"13691","hashOfConfig":"12232"},{"size":4778,"mtime":1786084511233,"results":"13692","hashOfConfig":"12232"},{"size":2715,"mtime":1786084511233,"results":"13693","hashOfConfig":"12232"},{"size":4081,"mtime":1786084511233,"results":"13694","hashOfConfig":"12232"},{"size":818,"mtime":1786084511233,"results":"13695","hashOfConfig":"12232"},{"size":1190,"mtime":1786084511233,"results":"13696","hashOfConfig":"12232"},{"size":3030,"mtime":1786084511234,"results":"13697","hashOfConfig":"12232"},{"size":4250,"mtime":1786084511234,"results":"13698","hashOfConfig":"12232"},{"size":4640,"mtime":1786084511234,"results":"13699","hashOfConfig":"12232"},{"size":3252,"mtime":1786084511234,"results":"13700","hashOfConfig":"12232"},{"size":2330,"mtime":1786084511234,"results":"13701","hashOfConfig":"12232"},{"size":1218,"mtime":1786084511234,"results":"13702","hashOfConfig":"12232"},{"size":2279,"mtime":1786084511234,"results":"13703","hashOfConfig":"12232"},{"size":2542,"mtime":1786084511234,"results":"13704","hashOfConfig":"12232"},{"size":5348,"mtime":1786084511234,"results":"13705","hashOfConfig":"12232"},{"size":2459,"mtime":1786084511235,"results":"13706","hashOfConfig":"12232"},{"size":8052,"mtime":1786084511235,"results":"13707","hashOfConfig":"12232"},{"size":2174,"mtime":1786084511235,"results":"13708","hashOfConfig":"12232"},{"size":1420,"mtime":1786084511235,"results":"13709","hashOfConfig":"12232"},{"size":3761,"mtime":1786084511235,"results":"13710","hashOfConfig":"12232"},{"size":4834,"mtime":1786084511235,"results":"13711","hashOfConfig":"12232"},{"size":5988,"mtime":1786084511235,"results":"13712","hashOfConfig":"12232"},{"size":1093,"mtime":1786084511235,"results":"13713","hashOfConfig":"12232"},{"size":1053,"mtime":1786084511235,"results":"13714","hashOfConfig":"12232"},{"size":1402,"mtime":1786084511235,"results":"13715","hashOfConfig":"12232"},{"size":1555,"mtime":1786084511236,"results":"13716","hashOfConfig":"12232"},{"size":1579,"mtime":1786084511236,"results":"13717","hashOfConfig":"12232"},{"size":1497,"mtime":1786084511236,"results":"13718","hashOfConfig":"12232"},{"size":5289,"mtime":1786084511236,"results":"13719","hashOfConfig":"12232"},{"size":10079,"mtime":1786084511236,"results":"13720","hashOfConfig":"12232"},{"size":3893,"mtime":1786084511236,"results":"13721","hashOfConfig":"12232"},{"size":2250,"mtime":1786084511236,"results":"13722","hashOfConfig":"12232"},{"size":3731,"mtime":1786084511237,"results":"13723","hashOfConfig":"12232"},{"size":2453,"mtime":1786084511237,"results":"13724","hashOfConfig":"12232"},{"size":5189,"mtime":1786084511237,"results":"13725","hashOfConfig":"12232"},{"size":8181,"mtime":1786084511237,"results":"13726","hashOfConfig":"12232"},{"size":2922,"mtime":1786084511237,"results":"13727","hashOfConfig":"12232"},{"size":2273,"mtime":1786084511237,"results":"13728","hashOfConfig":"12232"},{"size":2394,"mtime":1786084511237,"results":"13729","hashOfConfig":"12232"},{"size":6004,"mtime":1786084511237,"results":"13730","hashOfConfig":"12232"},{"size":3114,"mtime":1786084511238,"results":"13731","hashOfConfig":"12232"},{"size":3145,"mtime":1786084511238,"results":"13732","hashOfConfig":"12232"},{"size":2444,"mtime":1786084511238,"results":"13733","hashOfConfig":"12232"},{"size":10621,"mtime":1786084511238,"results":"13734","hashOfConfig":"12232"},{"size":7952,"mtime":1786084511238,"results":"13735","hashOfConfig":"12232"},{"size":9048,"mtime":1786084511238,"results":"13736","hashOfConfig":"12232"},{"size":1613,"mtime":1786084511238,"results":"13737","hashOfConfig":"12232"},{"size":5259,"mtime":1786084511238,"results":"13738","hashOfConfig":"12232"},{"size":1833,"mtime":1786084511239,"results":"13739","hashOfConfig":"12232"},{"size":13164,"mtime":1786084511239,"results":"13740","hashOfConfig":"12232"},{"size":9434,"mtime":1786084511239,"results":"13741","hashOfConfig":"12232"},{"size":5009,"mtime":1786084511239,"results":"13742","hashOfConfig":"12232"},{"size":5670,"mtime":1786084511212,"results":"13743","hashOfConfig":"12232"},{"size":6306,"mtime":1786084511212,"results":"13744","hashOfConfig":"12232"},{"size":5233,"mtime":1786084511212,"results":"13745","hashOfConfig":"12232"},{"size":3568,"mtime":1786084511212,"results":"13746","hashOfConfig":"12232"},{"size":4333,"mtime":1786084511212,"results":"13747","hashOfConfig":"12232"},{"size":4499,"mtime":1786084511212,"results":"13748","hashOfConfig":"12232"},{"size":3781,"mtime":1786084511212,"results":"13749","hashOfConfig":"12232"},{"size":2045,"mtime":1786084511212,"results":"13750","hashOfConfig":"12232"},{"size":4259,"mtime":1786084511212,"results":"13751","hashOfConfig":"12232"},{"size":2673,"mtime":1786084511213,"results":"13752","hashOfConfig":"12232"},{"size":1842,"mtime":1786084511213,"results":"13753","hashOfConfig":"12232"},{"size":1137,"mtime":1786084511239,"results":"13754","hashOfConfig":"12232"},{"size":5857,"mtime":1786084511239,"results":"13755","hashOfConfig":"12232"},{"size":8021,"mtime":1786084511240,"results":"13756","hashOfConfig":"12232"},{"size":5635,"mtime":1786084511240,"results":"13757","hashOfConfig":"12232"},{"size":1767,"mtime":1786084511240,"results":"13758","hashOfConfig":"12232"},{"size":3151,"mtime":1786084511240,"results":"13759","hashOfConfig":"12232"},{"size":1197,"mtime":1786084511240,"results":"13760","hashOfConfig":"12232"},{"size":2523,"mtime":1786084511240,"results":"13761","hashOfConfig":"12232"},{"size":2784,"mtime":1786084511241,"results":"13762","hashOfConfig":"12232"},{"size":4964,"mtime":1786084511241,"results":"13763","hashOfConfig":"12232"},{"size":6781,"mtime":1786084511241,"results":"13764","hashOfConfig":"12232"},{"size":6078,"mtime":1786084511241,"results":"13765","hashOfConfig":"12232"},{"size":4725,"mtime":1786084511241,"results":"13766","hashOfConfig":"12232"},{"size":14202,"mtime":1786084511241,"results":"13767","hashOfConfig":"12232"},{"size":12466,"mtime":1786084511242,"results":"13768","hashOfConfig":"12232"},{"size":4411,"mtime":1786084511242,"results":"13769","hashOfConfig":"12232"},{"size":2174,"mtime":1786084511242,"results":"13770","hashOfConfig":"12232"},{"size":3764,"mtime":1786084511242,"results":"13771","hashOfConfig":"12232"},{"size":3886,"mtime":1786084511242,"results":"13772","hashOfConfig":"12232"},{"size":4627,"mtime":1786084511242,"results":"13773","hashOfConfig":"12232"},{"size":3791,"mtime":1786084511242,"results":"13774","hashOfConfig":"12232"},{"size":962,"mtime":1786084511242,"results":"13775","hashOfConfig":"12232"},{"size":6028,"mtime":1786084511243,"results":"13776","hashOfConfig":"12232"},{"size":4587,"mtime":1786084511243,"results":"13777","hashOfConfig":"12232"},{"size":6328,"mtime":1786084511243,"results":"13778","hashOfConfig":"12232"},{"size":5445,"mtime":1786084511243,"results":"13779","hashOfConfig":"12232"},{"size":6243,"mtime":1786084511243,"results":"13780","hashOfConfig":"12232"},{"size":5087,"mtime":1786084511243,"results":"13781","hashOfConfig":"12232"},{"size":5369,"mtime":1786084511243,"results":"13782","hashOfConfig":"12232"},{"size":3124,"mtime":1786084511244,"results":"13783","hashOfConfig":"12232"},{"size":1299,"mtime":1786084511244,"results":"13784","hashOfConfig":"12232"},{"size":3039,"mtime":1786084511244,"results":"13785","hashOfConfig":"12232"},{"size":4744,"mtime":1786084511244,"results":"13786","hashOfConfig":"12232"},{"size":2561,"mtime":1786084511244,"results":"13787","hashOfConfig":"12232"},{"size":1144,"mtime":1786084511244,"results":"13788","hashOfConfig":"12232"},{"size":672,"mtime":1786084511244,"results":"13789","hashOfConfig":"12232"},{"size":1606,"mtime":1786084511244,"results":"13790","hashOfConfig":"12232"},{"size":1690,"mtime":1786084511244,"results":"13791","hashOfConfig":"12232"},{"size":2712,"mtime":1786084511245,"results":"13792","hashOfConfig":"12232"},{"size":734,"mtime":1786084511245,"results":"13793","hashOfConfig":"12232"},{"size":3193,"mtime":1786084511245,"results":"13794","hashOfConfig":"12232"},{"size":11532,"mtime":1786084511245,"results":"13795","hashOfConfig":"12232"},{"size":2641,"mtime":1786084511245,"results":"13796","hashOfConfig":"12232"},{"size":4017,"mtime":1786084511245,"results":"13797","hashOfConfig":"12232"},{"size":2314,"mtime":1786084511245,"results":"13798","hashOfConfig":"12232"},{"size":1505,"mtime":1786084511245,"results":"13799","hashOfConfig":"12232"},{"size":1863,"mtime":1786084511246,"results":"13800","hashOfConfig":"12232"},{"size":1557,"mtime":1786084511246,"results":"13801","hashOfConfig":"12232"},{"size":3967,"mtime":1786084511246,"results":"13802","hashOfConfig":"12232"},{"size":1858,"mtime":1786084511246,"results":"13803","hashOfConfig":"12232"},{"size":3691,"mtime":1786084511246,"results":"13804","hashOfConfig":"12232"},{"size":4432,"mtime":1786084511246,"results":"13805","hashOfConfig":"12232"},{"size":5370,"mtime":1786084511246,"results":"13806","hashOfConfig":"12232"},{"size":3345,"mtime":1786084511246,"results":"13807","hashOfConfig":"12232"},{"size":5801,"mtime":1786084511246,"results":"13808","hashOfConfig":"12232"},{"size":8839,"mtime":1786084511247,"results":"13809","hashOfConfig":"12232"},{"size":2864,"mtime":1786084511247,"results":"13810","hashOfConfig":"12232"},{"size":29693,"mtime":1786084511247,"results":"13811","hashOfConfig":"12232"},{"size":9702,"mtime":1786084511247,"results":"13812","hashOfConfig":"12232"},{"size":5004,"mtime":1786084511247,"results":"13813","hashOfConfig":"12232"},{"size":20395,"mtime":1786084511248,"results":"13814","hashOfConfig":"12232"},{"size":16170,"mtime":1786084511248,"results":"13815","hashOfConfig":"12232"},{"size":8408,"mtime":1786084511248,"results":"13816","hashOfConfig":"12232"},{"size":2427,"mtime":1786084511248,"results":"13817","hashOfConfig":"12232"},{"size":16457,"mtime":1786084511248,"results":"13818","hashOfConfig":"12232"},{"size":2042,"mtime":1786084511248,"results":"13819","hashOfConfig":"12232"},{"size":3553,"mtime":1786084511249,"results":"13820","hashOfConfig":"12232"},{"size":1672,"mtime":1786084511249,"results":"13821","hashOfConfig":"12232"},{"size":12429,"mtime":1786084511249,"results":"13822","hashOfConfig":"12232"},{"size":7378,"mtime":1786084511249,"results":"13823","hashOfConfig":"12232"},{"size":4165,"mtime":1786084511249,"results":"13824","hashOfConfig":"12285"},{"size":2227,"mtime":1786084511249,"results":"13825","hashOfConfig":"12232"},{"size":5518,"mtime":1786084511249,"results":"13826","hashOfConfig":"12232"},{"size":6499,"mtime":1786084511249,"results":"13827","hashOfConfig":"12232"},{"size":19580,"mtime":1786084511250,"results":"13828","hashOfConfig":"12232"},{"size":3057,"mtime":1786084511250,"results":"13829","hashOfConfig":"12232"},{"size":3946,"mtime":1786084511250,"results":"13830","hashOfConfig":"12232"},{"size":1282,"mtime":1786084511250,"results":"13831","hashOfConfig":"12232"},{"size":1161,"mtime":1786084511250,"results":"13832","hashOfConfig":"12232"},{"size":817,"mtime":1786084511250,"results":"13833","hashOfConfig":"12232"},{"size":1401,"mtime":1786084511250,"results":"13834","hashOfConfig":"12232"},{"size":5165,"mtime":1786084511251,"results":"13835","hashOfConfig":"12232"},{"size":13553,"mtime":1786084511251,"results":"13836","hashOfConfig":"8189"},{"size":6096,"mtime":1786084511251,"results":"13837","hashOfConfig":"8189"},{"size":18849,"mtime":1786084511252,"results":"13838","hashOfConfig":"8189"},{"size":4033,"mtime":1786084511252,"results":"13839","hashOfConfig":"8189"},{"size":12037,"mtime":1786084511252,"results":"13840","hashOfConfig":"8189"},{"size":15020,"mtime":1786084511252,"results":"13841","hashOfConfig":"8189"},{"size":9008,"mtime":1786084511252,"results":"13842","hashOfConfig":"8189"},{"size":17637,"mtime":1786084511253,"results":"13843","hashOfConfig":"8189"},{"size":15511,"mtime":1786084511253,"results":"13844","hashOfConfig":"8189"},{"size":1150,"mtime":1786084511253,"results":"13845","hashOfConfig":"12232"},{"size":2543,"mtime":1786084511253,"results":"13846","hashOfConfig":"12232"},{"size":2959,"mtime":1786084511253,"results":"13847","hashOfConfig":"12232"},{"size":2575,"mtime":1786084511253,"results":"13848","hashOfConfig":"12232"},{"size":9749,"mtime":1786084511253,"results":"13849","hashOfConfig":"12232"},{"size":1123,"mtime":1786084511254,"results":"13850","hashOfConfig":"12232"},{"size":1392,"mtime":1786084511254,"results":"13851","hashOfConfig":"12232"},{"size":6541,"mtime":1786084511254,"results":"13852","hashOfConfig":"12232"},{"size":2443,"mtime":1786084511254,"results":"13853","hashOfConfig":"12232"},{"size":577,"mtime":1786084511254,"results":"13854","hashOfConfig":"12232"},{"size":6743,"mtime":1786084511254,"results":"13855","hashOfConfig":"12232"},{"size":3433,"mtime":1786084511254,"results":"13856","hashOfConfig":"12232"},{"size":8004,"mtime":1786084511250,"results":"13857","hashOfConfig":"12232"},{"size":4568,"mtime":1786084511251,"results":"13858","hashOfConfig":"12232"},{"size":2376,"mtime":1786084511251,"results":"13859","hashOfConfig":"12232"},{"size":7659,"mtime":1786084511255,"results":"13860","hashOfConfig":"12232"},{"size":5620,"mtime":1786084511255,"results":"13861","hashOfConfig":"12232"},{"size":5102,"mtime":1786084511255,"results":"13862","hashOfConfig":"12232"},{"size":4087,"mtime":1786084511255,"results":"13863","hashOfConfig":"12232"},{"size":13009,"mtime":1786084511255,"results":"13864","hashOfConfig":"12232"},{"size":11255,"mtime":1786084511271,"results":"13865","hashOfConfig":"12232"},{"size":2108,"mtime":1786084511271,"results":"13866","hashOfConfig":"12232"},{"size":3771,"mtime":1786084511271,"results":"13867","hashOfConfig":"12232"},{"size":7951,"mtime":1786084511271,"results":"13868","hashOfConfig":"12232"},{"size":4751,"mtime":1786084511271,"results":"13869","hashOfConfig":"12232"},{"size":1920,"mtime":1786084511271,"results":"13870","hashOfConfig":"12285"},{"size":5310,"mtime":1786084511271,"results":"13871","hashOfConfig":"12232"},{"size":2590,"mtime":1786084511271,"results":"13872","hashOfConfig":"12232"},{"size":1046,"mtime":1786084511271,"results":"13873","hashOfConfig":"12285"},{"size":1080,"mtime":1786084511271,"results":"13874","hashOfConfig":"12285"},{"size":4814,"mtime":1786084511272,"results":"13875","hashOfConfig":"12232"},{"size":5711,"mtime":1786084511272,"results":"13876","hashOfConfig":"12232"},{"size":5337,"mtime":1786084511272,"results":"13877","hashOfConfig":"12232"},{"size":6159,"mtime":1786084511272,"results":"13878","hashOfConfig":"12232"},{"size":1726,"mtime":1786084511272,"results":"13879","hashOfConfig":"12232"},{"size":7021,"mtime":1786084511272,"results":"13880","hashOfConfig":"12232"},{"size":2221,"mtime":1786084511272,"results":"13881","hashOfConfig":"12232"},{"size":7761,"mtime":1786084511272,"results":"13882","hashOfConfig":"12232"},{"size":2124,"mtime":1786084511273,"results":"13883","hashOfConfig":"12232"},{"size":2871,"mtime":1786084511255,"results":"13884","hashOfConfig":"12232"},{"size":2835,"mtime":1786084511255,"results":"13885","hashOfConfig":"12232"},{"size":1716,"mtime":1786084511256,"results":"13886","hashOfConfig":"12285"},{"size":16180,"mtime":1786084511256,"results":"13887","hashOfConfig":"12232"},{"size":3899,"mtime":1786084511256,"results":"13888","hashOfConfig":"12232"},{"size":6921,"mtime":1786084511256,"results":"13889","hashOfConfig":"12232"},{"size":4265,"mtime":1786084511256,"results":"13890","hashOfConfig":"12232"},{"size":4103,"mtime":1786084511256,"results":"13891","hashOfConfig":"12232"},{"size":3497,"mtime":1786084511256,"results":"13892","hashOfConfig":"12232"},{"size":3346,"mtime":1786084511256,"results":"13893","hashOfConfig":"12232"},{"size":24757,"mtime":1786084511257,"results":"13894","hashOfConfig":"12232"},{"size":3591,"mtime":1786084511257,"results":"13895","hashOfConfig":"12232"},{"size":12517,"mtime":1786084511257,"results":"13896","hashOfConfig":"12232"},{"size":9525,"mtime":1786084511257,"results":"13897","hashOfConfig":"12232"},{"size":11415,"mtime":1786084511257,"results":"13898","hashOfConfig":"12232"},{"size":3080,"mtime":1786084511258,"results":"13899","hashOfConfig":"12232"},{"size":4164,"mtime":1786084511258,"results":"13900","hashOfConfig":"12232"},{"size":2007,"mtime":1786084511258,"results":"13901","hashOfConfig":"12232"},{"size":2133,"mtime":1786084511258,"results":"13902","hashOfConfig":"12232"},{"size":7068,"mtime":1786084511258,"results":"13903","hashOfConfig":"12232"},{"size":2244,"mtime":1786084511258,"results":"13904","hashOfConfig":"12232"},{"size":1783,"mtime":1786084511258,"results":"13905","hashOfConfig":"12232"},{"size":2306,"mtime":1786084511258,"results":"13906","hashOfConfig":"12232"},{"size":6799,"mtime":1786084511258,"results":"13907","hashOfConfig":"12232"},{"size":26609,"mtime":1786084511259,"results":"13908","hashOfConfig":"12232"},{"size":3510,"mtime":1786084511259,"results":"13909","hashOfConfig":"12232"},{"size":3053,"mtime":1786084511259,"results":"13910","hashOfConfig":"12232"},{"size":852,"mtime":1786084511259,"results":"13911","hashOfConfig":"12232"},{"size":12959,"mtime":1786084511259,"results":"13912","hashOfConfig":"12232"},{"size":2239,"mtime":1786084511260,"results":"13913","hashOfConfig":"12232"},{"size":8002,"mtime":1786084511260,"results":"13914","hashOfConfig":"12232"},{"size":12593,"mtime":1786084511260,"results":"13915","hashOfConfig":"12232"},{"size":2577,"mtime":1786084511260,"results":"13916","hashOfConfig":"12232"},{"size":1952,"mtime":1786084511260,"results":"13917","hashOfConfig":"12232"},{"size":5273,"mtime":1786084511261,"results":"13918","hashOfConfig":"12232"},{"size":2989,"mtime":1786084511261,"results":"13919","hashOfConfig":"12232"},{"size":13589,"mtime":1786084511261,"results":"13920","hashOfConfig":"12232"},{"size":3917,"mtime":1786084511261,"results":"13921","hashOfConfig":"12232"},{"size":1708,"mtime":1786084511261,"results":"13922","hashOfConfig":"12232"},{"size":1495,"mtime":1786084511262,"results":"13923","hashOfConfig":"12232"},{"size":3387,"mtime":1786084511262,"results":"13924","hashOfConfig":"12232"},{"size":4123,"mtime":1786084511262,"results":"13925","hashOfConfig":"12232"},{"size":6386,"mtime":1786084511262,"results":"13926","hashOfConfig":"12232"},{"size":12577,"mtime":1786084511262,"results":"13927","hashOfConfig":"12232"},{"size":2327,"mtime":1786084511263,"results":"13928","hashOfConfig":"12232"},{"size":17135,"mtime":1786084511263,"results":"13929","hashOfConfig":"12232"},{"size":11209,"mtime":1786084511263,"results":"13930","hashOfConfig":"12232"},{"size":47245,"mtime":1786084511264,"results":"13931","hashOfConfig":"12232"},{"size":2772,"mtime":1786084511264,"results":"13932","hashOfConfig":"12232"},{"size":4445,"mtime":1786084511264,"results":"13933","hashOfConfig":"12232"},{"size":3403,"mtime":1786084511264,"results":"13934","hashOfConfig":"12232"},{"size":3805,"mtime":1786084511264,"results":"13935","hashOfConfig":"12232"},{"size":10649,"mtime":1786084511264,"results":"13936","hashOfConfig":"12232"},{"size":4922,"mtime":1786084511264,"results":"13937","hashOfConfig":"12232"},{"size":4693,"mtime":1786084511264,"results":"13938","hashOfConfig":"12232"},{"size":13103,"mtime":1786084511265,"results":"13939","hashOfConfig":"12232"},{"size":4454,"mtime":1786084511265,"results":"13940","hashOfConfig":"12232"},{"size":5437,"mtime":1786084511265,"results":"13941","hashOfConfig":"12232"},{"size":3439,"mtime":1786084511265,"results":"13942","hashOfConfig":"12232"},{"size":6824,"mtime":1786084511265,"results":"13943","hashOfConfig":"12232"},{"size":4038,"mtime":1786084511265,"results":"13944","hashOfConfig":"12232"},{"size":4083,"mtime":1786084511265,"results":"13945","hashOfConfig":"12232"},{"size":5600,"mtime":1786084511265,"results":"13946","hashOfConfig":"12232"},{"size":17963,"mtime":1786084511266,"results":"13947","hashOfConfig":"12232"},{"size":6608,"mtime":1786084511266,"results":"13948","hashOfConfig":"12232"},{"size":11090,"mtime":1786084511266,"results":"13949","hashOfConfig":"12232"},{"size":1291,"mtime":1786084511266,"results":"13950","hashOfConfig":"12232"},{"size":5985,"mtime":1786084511266,"results":"13951","hashOfConfig":"12232"},{"size":7177,"mtime":1786084511266,"results":"13952","hashOfConfig":"12232"},{"size":6303,"mtime":1786084511267,"results":"13953","hashOfConfig":"12232"},{"size":11192,"mtime":1786084511267,"results":"13954","hashOfConfig":"12232"},{"size":3783,"mtime":1786084511267,"results":"13955","hashOfConfig":"12232"},{"size":9653,"mtime":1786084511267,"results":"13956","hashOfConfig":"12232"},{"size":2881,"mtime":1786084511267,"results":"13957","hashOfConfig":"12232"},{"size":3311,"mtime":1786084511267,"results":"13958","hashOfConfig":"12232"},{"size":11944,"mtime":1786084511267,"results":"13959","hashOfConfig":"12232"},{"size":2269,"mtime":1786084511268,"results":"13960","hashOfConfig":"12232"},{"size":4316,"mtime":1786084511268,"results":"13961","hashOfConfig":"12232"},{"size":2077,"mtime":1786084511268,"results":"13962","hashOfConfig":"12232"},{"size":2667,"mtime":1786084511268,"results":"13963","hashOfConfig":"12232"},{"size":28429,"mtime":1786084511268,"results":"13964","hashOfConfig":"12232"},{"size":6440,"mtime":1786084511268,"results":"13965","hashOfConfig":"12232"},{"size":2795,"mtime":1786084511269,"results":"13966","hashOfConfig":"12232"},{"size":5008,"mtime":1786084511269,"results":"13967","hashOfConfig":"12232"},{"size":9118,"mtime":1786084511269,"results":"13968","hashOfConfig":"12232"},{"size":1587,"mtime":1786084511269,"results":"13969","hashOfConfig":"12232"},{"size":2619,"mtime":1786084511269,"results":"13970","hashOfConfig":"12232"},{"size":5082,"mtime":1786084511269,"results":"13971","hashOfConfig":"12232"},{"size":14955,"mtime":1786084511270,"results":"13972","hashOfConfig":"12232"},{"size":24451,"mtime":1786084511270,"results":"13973","hashOfConfig":"12232"},{"size":7393,"mtime":1786084511270,"results":"13974","hashOfConfig":"12232"},{"size":16198,"mtime":1786084511270,"results":"13975","hashOfConfig":"12232"},{"size":2962,"mtime":1786084511270,"results":"13976","hashOfConfig":"12232"},{"size":9594,"mtime":1786084511273,"results":"13977","hashOfConfig":"12232"},{"size":3685,"mtime":1786084511273,"results":"13978","hashOfConfig":"12232"},{"size":902,"mtime":1786084511273,"results":"13979","hashOfConfig":"12232"},{"size":9574,"mtime":1786084511273,"results":"13980","hashOfConfig":"12232"},{"size":4870,"mtime":1786084511273,"results":"13981","hashOfConfig":"12232"},{"size":1582,"mtime":1786084511273,"results":"13982","hashOfConfig":"12232"},{"size":2801,"mtime":1786084511273,"results":"13983","hashOfConfig":"12232"},{"size":6880,"mtime":1786084511274,"results":"13984","hashOfConfig":"12232"},{"size":2524,"mtime":1786084511274,"results":"13985","hashOfConfig":"12232"},{"size":7867,"mtime":1786084511274,"results":"13986","hashOfConfig":"12232"},{"size":6832,"mtime":1786084511274,"results":"13987","hashOfConfig":"12232"},{"size":5949,"mtime":1786084511274,"results":"13988","hashOfConfig":"12232"},{"size":10845,"mtime":1786084511274,"results":"13989","hashOfConfig":"12232"},{"size":38974,"mtime":1786084511275,"results":"13990","hashOfConfig":"12232"},{"size":9584,"mtime":1786084511275,"results":"13991","hashOfConfig":"12232"},{"size":1470,"mtime":1786084511275,"results":"13992","hashOfConfig":"12232"},{"size":3944,"mtime":1786084511275,"results":"13993","hashOfConfig":"12232"},{"size":4441,"mtime":1786084511275,"results":"13994","hashOfConfig":"12232"},{"size":1676,"mtime":1786084511275,"results":"13995","hashOfConfig":"12232"},{"size":14295,"mtime":1786084511276,"results":"13996","hashOfConfig":"12232"},{"size":2569,"mtime":1786084511276,"results":"13997","hashOfConfig":"12232"},{"size":3622,"mtime":1786084511276,"results":"13998","hashOfConfig":"12232"},{"size":328,"mtime":1786084511276,"results":"13999","hashOfConfig":"12232"},{"size":1564,"mtime":1786084511276,"results":"14000","hashOfConfig":"12232"},{"size":7827,"mtime":1786084511276,"results":"14001","hashOfConfig":"12232"},{"size":13552,"mtime":1786084511276,"results":"14002","hashOfConfig":"12232"},{"size":7615,"mtime":1786084511277,"results":"14003","hashOfConfig":"12232"},{"size":1285,"mtime":1786084511277,"results":"14004","hashOfConfig":"12232"},{"size":2874,"mtime":1786084511277,"results":"14005","hashOfConfig":"12232"},{"size":5970,"mtime":1786084511277,"results":"14006","hashOfConfig":"12232"},{"size":2759,"mtime":1786084511277,"results":"14007","hashOfConfig":"12232"},{"size":12438,"mtime":1786084511277,"results":"14008","hashOfConfig":"12232"},{"size":2047,"mtime":1786084511277,"results":"14009","hashOfConfig":"12232"},{"size":3999,"mtime":1786084511277,"results":"14010","hashOfConfig":"12232"},{"size":3204,"mtime":1786084511278,"results":"14011","hashOfConfig":"12232"},{"size":8564,"mtime":1786084511278,"results":"14012","hashOfConfig":"12232"},{"size":11662,"mtime":1786084511278,"results":"14013","hashOfConfig":"12232"},{"size":2436,"mtime":1786084511278,"results":"14014","hashOfConfig":"12232"},{"size":1881,"mtime":1786084511278,"results":"14015","hashOfConfig":"12232"},{"size":3213,"mtime":1786084511279,"results":"14016","hashOfConfig":"12232"},{"size":622,"mtime":1786084511279,"results":"14017","hashOfConfig":"12232"},{"size":6852,"mtime":1786084511279,"results":"14018","hashOfConfig":"12232"},{"size":2110,"mtime":1786084511279,"results":"14019","hashOfConfig":"12232"},{"size":4195,"mtime":1786084511279,"results":"14020","hashOfConfig":"12232"},{"size":3877,"mtime":1786084511280,"results":"14021","hashOfConfig":"12232"},{"size":5803,"mtime":1786084511280,"results":"14022","hashOfConfig":"12232"},{"size":3440,"mtime":1786084511280,"results":"14023","hashOfConfig":"12232"},{"size":15602,"mtime":1786084511280,"results":"14024","hashOfConfig":"12232"},{"size":9771,"mtime":1786084511281,"results":"14025","hashOfConfig":"12232"},{"size":7153,"mtime":1786084511281,"results":"14026","hashOfConfig":"12232"},{"size":3079,"mtime":1786084511281,"results":"14027","hashOfConfig":"12232"},{"size":4331,"mtime":1786084511281,"results":"14028","hashOfConfig":"12232"},{"size":11474,"mtime":1786084511281,"results":"14029","hashOfConfig":"12232"},{"size":4575,"mtime":1786084511281,"results":"14030","hashOfConfig":"12232"},{"size":1661,"mtime":1786084511281,"results":"14031","hashOfConfig":"12232"},{"size":3959,"mtime":1786084511281,"results":"14032","hashOfConfig":"12232"},{"size":3327,"mtime":1786084511282,"results":"14033","hashOfConfig":"12232"},{"size":8224,"mtime":1786084511282,"results":"14034","hashOfConfig":"12232"},{"size":2798,"mtime":1786084511282,"results":"14035","hashOfConfig":"12232"},{"size":15450,"mtime":1786084511282,"results":"14036","hashOfConfig":"12232"},{"size":6177,"mtime":1786084511282,"results":"14037","hashOfConfig":"12232"},{"size":13086,"mtime":1786084511283,"results":"14038","hashOfConfig":"12232"},{"size":7516,"mtime":1786084511283,"results":"14039","hashOfConfig":"12232"},{"size":18563,"mtime":1786084511283,"results":"14040","hashOfConfig":"12232"},{"size":1319,"mtime":1786084511283,"results":"14041","hashOfConfig":"12232"},{"size":10171,"mtime":1786084511283,"results":"14042","hashOfConfig":"12232"},{"size":4035,"mtime":1786084511283,"results":"14043","hashOfConfig":"12232"},{"size":1045,"mtime":1786084511284,"results":"14044","hashOfConfig":"12232"},{"size":5817,"mtime":1786084511284,"results":"14045","hashOfConfig":"12232"},{"size":10166,"mtime":1786084511284,"results":"14046","hashOfConfig":"12232"},{"size":2722,"mtime":1786084511284,"results":"14047","hashOfConfig":"12232"},{"size":2892,"mtime":1786084511284,"results":"14048","hashOfConfig":"12232"},{"size":1585,"mtime":1786084511284,"results":"14049","hashOfConfig":"12232"},{"size":4459,"mtime":1786084511284,"results":"14050","hashOfConfig":"12232"},{"size":4047,"mtime":1786084511284,"results":"14051","hashOfConfig":"12232"},{"size":5338,"mtime":1786084511285,"results":"14052","hashOfConfig":"12232"},{"size":5031,"mtime":1786084511285,"results":"14053","hashOfConfig":"12232"},{"size":4692,"mtime":1786084511285,"results":"14054","hashOfConfig":"12232"},{"size":3485,"mtime":1786084511285,"results":"14055","hashOfConfig":"12232"},{"size":2728,"mtime":1786084511285,"results":"14056","hashOfConfig":"12232"},{"size":3540,"mtime":1786084511285,"results":"14057","hashOfConfig":"12232"},{"size":5565,"mtime":1786084511285,"results":"14058","hashOfConfig":"12232"},{"size":8759,"mtime":1786084511286,"results":"14059","hashOfConfig":"12232"},{"size":4449,"mtime":1786084511286,"results":"14060","hashOfConfig":"12232"},{"size":11009,"mtime":1786084511286,"results":"14061","hashOfConfig":"12232"},{"size":3621,"mtime":1786084511286,"results":"14062","hashOfConfig":"12232"},{"size":4278,"mtime":1786084511287,"results":"14063","hashOfConfig":"12232"},{"size":5177,"mtime":1786084511287,"results":"14064","hashOfConfig":"12232"},{"size":3834,"mtime":1786084511287,"results":"14065","hashOfConfig":"12232"},{"size":3388,"mtime":1786084511287,"results":"14066","hashOfConfig":"12232"},{"size":3107,"mtime":1786084511287,"results":"14067","hashOfConfig":"12232"},{"size":3428,"mtime":1786084511287,"results":"14068","hashOfConfig":"12232"},{"size":7200,"mtime":1786084511287,"results":"14069","hashOfConfig":"12232"},{"size":7026,"mtime":1786084511287,"results":"14070","hashOfConfig":"12232"},{"size":1340,"mtime":1786084511288,"results":"14071","hashOfConfig":"12232"},{"size":12505,"mtime":1786084511288,"results":"14072","hashOfConfig":"12232"},{"size":4436,"mtime":1786084511288,"results":"14073","hashOfConfig":"12232"},{"size":7693,"mtime":1786084511288,"results":"14074","hashOfConfig":"12232"},{"size":2359,"mtime":1786084511288,"results":"14075","hashOfConfig":"12232"},{"size":405,"mtime":1786084511288,"results":"14076","hashOfConfig":"12232"},{"size":11574,"mtime":1786084511289,"results":"14077","hashOfConfig":"12232"},{"size":6745,"mtime":1786084511289,"results":"14078","hashOfConfig":"12232"},{"size":2316,"mtime":1786084511289,"results":"14079","hashOfConfig":"12232"},{"size":20396,"mtime":1786084511289,"results":"14080","hashOfConfig":"12232"},{"size":1620,"mtime":1786084511289,"results":"14081","hashOfConfig":"12232"},{"size":1642,"mtime":1786084511289,"results":"14082","hashOfConfig":"12232"},{"size":1860,"mtime":1786084511290,"results":"14083","hashOfConfig":"12232"},{"size":2590,"mtime":1786084511290,"results":"14084","hashOfConfig":"12232"},{"size":7002,"mtime":1786084511290,"results":"14085","hashOfConfig":"12232"},{"size":3385,"mtime":1786084511290,"results":"14086","hashOfConfig":"12232"},{"size":6838,"mtime":1786084511290,"results":"14087","hashOfConfig":"12232"},{"size":7168,"mtime":1786084511290,"results":"14088","hashOfConfig":"12232"},{"size":1773,"mtime":1786084511290,"results":"14089","hashOfConfig":"12232"},{"size":3206,"mtime":1786084511290,"results":"14090","hashOfConfig":"12232"},{"size":2012,"mtime":1786084511290,"results":"14091","hashOfConfig":"12232"},{"size":8347,"mtime":1786084511291,"results":"14092","hashOfConfig":"12232"},{"size":1979,"mtime":1786084511291,"results":"14093","hashOfConfig":"12232"},{"size":5782,"mtime":1786084511291,"results":"14094","hashOfConfig":"12232"},{"size":11544,"mtime":1786084511291,"results":"14095","hashOfConfig":"12232"},{"size":1019,"mtime":1786084511291,"results":"14096","hashOfConfig":"12232"},{"size":36065,"mtime":1786084511292,"results":"14097","hashOfConfig":"12232"},{"size":3060,"mtime":1786084511292,"results":"14098","hashOfConfig":"12232"},{"size":5918,"mtime":1786084511292,"results":"14099","hashOfConfig":"12232"},{"size":12901,"mtime":1786084511292,"results":"14100","hashOfConfig":"12232"},{"size":7534,"mtime":1786084511292,"results":"14101","hashOfConfig":"12232"},{"size":5402,"mtime":1786084511292,"results":"14102","hashOfConfig":"12232"},{"size":3492,"mtime":1786084511292,"results":"14103","hashOfConfig":"12232"},{"size":5403,"mtime":1786084511293,"results":"14104","hashOfConfig":"12232"},{"size":43260,"mtime":1786084511293,"results":"14105","hashOfConfig":"12232"},{"size":1878,"mtime":1786084511293,"results":"14106","hashOfConfig":"12232"},{"size":1468,"mtime":1786084511293,"results":"14107","hashOfConfig":"12232"},{"size":6684,"mtime":1786084511293,"results":"14108","hashOfConfig":"12232"},{"size":2598,"mtime":1786084511294,"results":"14109","hashOfConfig":"12232"},{"size":54446,"mtime":1786084511294,"results":"14110","hashOfConfig":"12232"},{"size":2632,"mtime":1786084511294,"results":"14111","hashOfConfig":"12232"},{"size":3814,"mtime":1786084511295,"results":"14112","hashOfConfig":"12232"},{"size":23783,"mtime":1786084511295,"results":"14113","hashOfConfig":"12232"},{"size":5738,"mtime":1786084511295,"results":"14114","hashOfConfig":"12232"},{"size":785,"mtime":1786084511295,"results":"14115","hashOfConfig":"12232"},{"size":8202,"mtime":1786084511295,"results":"14116","hashOfConfig":"12232"},{"size":4928,"mtime":1786084511296,"results":"14117","hashOfConfig":"12232"},{"size":4735,"mtime":1786084511296,"results":"14118","hashOfConfig":"12232"},{"size":20007,"mtime":1786084511296,"results":"14119","hashOfConfig":"12232"},{"size":8762,"mtime":1786084511297,"results":"14120","hashOfConfig":"12232"},{"size":9639,"mtime":1786084511297,"results":"14121","hashOfConfig":"12232"},{"size":4060,"mtime":1786084511297,"results":"14122","hashOfConfig":"12232"},{"size":12413,"mtime":1786084511297,"results":"14123","hashOfConfig":"12232"},{"size":2726,"mtime":1786084511297,"results":"14124","hashOfConfig":"12232"},{"size":7694,"mtime":1786084511297,"results":"14125","hashOfConfig":"12232"},{"size":9001,"mtime":1786084511298,"results":"14126","hashOfConfig":"12232"},{"size":8906,"mtime":1786084511298,"results":"14127","hashOfConfig":"12232"},{"size":24121,"mtime":1786084511298,"results":"14128","hashOfConfig":"12232"},{"size":4702,"mtime":1786084511298,"results":"14129","hashOfConfig":"12232"},{"size":17335,"mtime":1786084511298,"results":"14130","hashOfConfig":"12232"},{"size":26263,"mtime":1786084511299,"results":"14131","hashOfConfig":"12232"},{"size":1215,"mtime":1786084511299,"results":"14132","hashOfConfig":"12232"},{"size":1136,"mtime":1786084511299,"results":"14133","hashOfConfig":"12232"},{"size":3795,"mtime":1786084511299,"results":"14134","hashOfConfig":"12232"},{"size":24550,"mtime":1786084511299,"results":"14135","hashOfConfig":"12232"},{"size":2741,"mtime":1786084511299,"results":"14136","hashOfConfig":"12232"},{"size":15113,"mtime":1786084511300,"results":"14137","hashOfConfig":"12232"},{"size":3057,"mtime":1786084511300,"results":"14138","hashOfConfig":"12232"},{"size":7815,"mtime":1786084511300,"results":"14139","hashOfConfig":"12232"},{"size":833,"mtime":1786084511300,"results":"14140","hashOfConfig":"12232"},{"size":880,"mtime":1786084511300,"results":"14141","hashOfConfig":"12232"},{"size":8575,"mtime":1786084511300,"results":"14142","hashOfConfig":"12232"},{"size":8516,"mtime":1786084511300,"results":"14143","hashOfConfig":"12232"},{"size":4918,"mtime":1786084511300,"results":"14144","hashOfConfig":"12232"},{"size":7932,"mtime":1786084511301,"results":"14145","hashOfConfig":"12232"},{"size":9492,"mtime":1786084511301,"results":"14146","hashOfConfig":"12232"},{"size":1380,"mtime":1786084511301,"results":"14147","hashOfConfig":"12232"},{"size":1656,"mtime":1786084511301,"results":"14148","hashOfConfig":"12232"},{"size":1754,"mtime":1786084511301,"results":"14149","hashOfConfig":"12232"},{"size":19056,"mtime":1786084511301,"results":"14150","hashOfConfig":"12232"},{"size":1880,"mtime":1786084511302,"results":"14151","hashOfConfig":"12285"},{"size":4761,"mtime":1786084511302,"results":"14152","hashOfConfig":"12285"},{"size":4350,"mtime":1786084511302,"results":"14153","hashOfConfig":"12285"},{"size":2012,"mtime":1786084511302,"results":"14154","hashOfConfig":"12285"},{"size":4458,"mtime":1786084511302,"results":"14155","hashOfConfig":"12285"},{"size":3797,"mtime":1786084511302,"results":"14156","hashOfConfig":"12285"},{"size":2846,"mtime":1786084511302,"results":"14157","hashOfConfig":"12285"},{"size":2831,"mtime":1786084511302,"results":"14158","hashOfConfig":"12232"},{"size":12231,"mtime":1786084511302,"results":"14159","hashOfConfig":"12232"},{"size":1911,"mtime":1786084511303,"results":"14160","hashOfConfig":"12232"},{"size":3478,"mtime":1786084511303,"results":"14161","hashOfConfig":"12232"},{"size":5745,"mtime":1786084511303,"results":"14162","hashOfConfig":"12232"},{"size":5462,"mtime":1786084511303,"results":"14163","hashOfConfig":"12232"},{"size":4673,"mtime":1786084511303,"results":"14164","hashOfConfig":"12232"},{"size":3259,"mtime":1786084511303,"results":"14165","hashOfConfig":"12232"},{"size":7319,"mtime":1786084511303,"results":"14166","hashOfConfig":"12232"},{"size":6014,"mtime":1786084511303,"results":"14167","hashOfConfig":"12232"},{"size":10368,"mtime":1786084511304,"results":"14168","hashOfConfig":"12232"},{"size":5558,"mtime":1786084511304,"results":"14169","hashOfConfig":"12232"},{"size":3091,"mtime":1786084511304,"results":"14170","hashOfConfig":"12232"},{"size":3457,"mtime":1786084511304,"results":"14171","hashOfConfig":"12232"},{"size":4009,"mtime":1786084511304,"results":"14172","hashOfConfig":"12232"},{"size":3610,"mtime":1786084511304,"results":"14173","hashOfConfig":"12232"},{"size":2662,"mtime":1786084511304,"results":"14174","hashOfConfig":"12232"},{"size":3854,"mtime":1786084511304,"results":"14175","hashOfConfig":"12232"},{"size":4432,"mtime":1786084511305,"results":"14176","hashOfConfig":"12232"},{"size":5301,"mtime":1786084511305,"results":"14177","hashOfConfig":"12232"},{"size":20711,"mtime":1786084511305,"results":"14178","hashOfConfig":"12232"},{"size":3120,"mtime":1786084511305,"results":"14179","hashOfConfig":"12232"},{"size":2097,"mtime":1786084511305,"results":"14180","hashOfConfig":"12232"},{"size":1523,"mtime":1786084511305,"results":"14181","hashOfConfig":"12232"},{"size":1160,"mtime":1786084511305,"results":"14182","hashOfConfig":"12232"},{"size":1327,"mtime":1786084511305,"results":"14183","hashOfConfig":"12232"},{"size":3726,"mtime":1786084511305,"results":"14184","hashOfConfig":"12232"},{"size":4211,"mtime":1786084511306,"results":"14185","hashOfConfig":"12232"},{"size":5112,"mtime":1786084511306,"results":"14186","hashOfConfig":"12232"},{"size":700,"mtime":1786084511306,"results":"14187","hashOfConfig":"12232"},{"size":4887,"mtime":1786084511306,"results":"14188","hashOfConfig":"12232"},{"size":2802,"mtime":1786084511306,"results":"14189","hashOfConfig":"12232"},{"size":10249,"mtime":1786084511306,"results":"14190","hashOfConfig":"12232"},{"size":7571,"mtime":1786084511306,"results":"14191","hashOfConfig":"12232"},{"size":3517,"mtime":1786084511307,"results":"14192","hashOfConfig":"12232"},{"size":7877,"mtime":1786084511307,"results":"14193","hashOfConfig":"12232"},{"size":10341,"mtime":1786084511307,"results":"14194","hashOfConfig":"12232"},{"size":4730,"mtime":1786084511307,"results":"14195","hashOfConfig":"12232"},{"size":1765,"mtime":1786084511307,"results":"14196","hashOfConfig":"12232"},{"size":1753,"mtime":1786084511307,"results":"14197","hashOfConfig":"12232"},{"size":1705,"mtime":1786084511307,"results":"14198","hashOfConfig":"12232"},{"size":3364,"mtime":1786084511307,"results":"14199","hashOfConfig":"12232"},{"size":1558,"mtime":1786084511308,"results":"14200","hashOfConfig":"12232"},{"size":6245,"mtime":1786084511308,"results":"14201","hashOfConfig":"12232"},{"size":3966,"mtime":1786084511308,"results":"14202","hashOfConfig":"12232"},{"size":5408,"mtime":1786084511308,"results":"14203","hashOfConfig":"12232"},{"size":4363,"mtime":1786084511308,"results":"14204","hashOfConfig":"12232"},{"size":3379,"mtime":1786084511308,"results":"14205","hashOfConfig":"12232"},{"size":6048,"mtime":1786084511308,"results":"14206","hashOfConfig":"12232"},{"size":3011,"mtime":1786084511308,"results":"14207","hashOfConfig":"12232"},{"size":1873,"mtime":1786084511309,"results":"14208","hashOfConfig":"12232"},{"size":1652,"mtime":1786084511309,"results":"14209","hashOfConfig":"12232"},{"size":5626,"mtime":1786084511309,"results":"14210","hashOfConfig":"12232"},{"size":1321,"mtime":1786084511309,"results":"14211","hashOfConfig":"12232"},{"size":4892,"mtime":1786084511309,"results":"14212","hashOfConfig":"12232"},{"size":2981,"mtime":1786084511309,"results":"14213","hashOfConfig":"12232"},{"size":4123,"mtime":1786084511309,"results":"14214","hashOfConfig":"12232"},{"size":5225,"mtime":1786084511309,"results":"14215","hashOfConfig":"12232"},{"size":12661,"mtime":1786084511310,"results":"14216","hashOfConfig":"12232"},{"size":4058,"mtime":1786084511310,"results":"14217","hashOfConfig":"12232"},{"size":2930,"mtime":1786084511310,"results":"14218","hashOfConfig":"12232"},{"size":1092,"mtime":1786084511310,"results":"14219","hashOfConfig":"12232"},{"size":2292,"mtime":1786084511310,"results":"14220","hashOfConfig":"12232"},{"size":3494,"mtime":1786084511310,"results":"14221","hashOfConfig":"12232"},{"size":1251,"mtime":1786084511310,"results":"14222","hashOfConfig":"12232"},{"size":1596,"mtime":1786084511310,"results":"14223","hashOfConfig":"12232"},{"size":1012,"mtime":1786084511311,"results":"14224","hashOfConfig":"12232"},{"size":2108,"mtime":1786084511311,"results":"14225","hashOfConfig":"12232"},{"size":3205,"mtime":1786084511311,"results":"14226","hashOfConfig":"12232"},{"size":1531,"mtime":1786084511311,"results":"14227","hashOfConfig":"12232"},{"size":1267,"mtime":1786084511311,"results":"14228","hashOfConfig":"12232"},{"size":4511,"mtime":1786084511311,"results":"14229","hashOfConfig":"12232"},{"size":2387,"mtime":1786084511310,"results":"14230","hashOfConfig":"12232"},{"size":1843,"mtime":1786084511311,"results":"14231","hashOfConfig":"12232"},{"size":9655,"mtime":1786084511311,"results":"14232","hashOfConfig":"12232"},{"size":2034,"mtime":1786084511312,"results":"14233","hashOfConfig":"12232"},{"size":5044,"mtime":1786084511312,"results":"14234","hashOfConfig":"12232"},{"size":6063,"mtime":1786084511312,"results":"14235","hashOfConfig":"12232"},{"size":1551,"mtime":1786084511312,"results":"14236","hashOfConfig":"12232"},{"size":2264,"mtime":1786084511312,"results":"14237","hashOfConfig":"12232"},{"size":3309,"mtime":1786084511312,"results":"14238","hashOfConfig":"12232"},{"size":5941,"mtime":1786084511312,"results":"14239","hashOfConfig":"12232"},{"size":3866,"mtime":1786084511312,"results":"14240","hashOfConfig":"12232"},{"size":12501,"mtime":1786084511313,"results":"14241","hashOfConfig":"12232"},{"size":3541,"mtime":1786084511313,"results":"14242","hashOfConfig":"12232"},{"size":4411,"mtime":1786084511313,"results":"14243","hashOfConfig":"12232"},{"size":4938,"mtime":1786084511313,"results":"14244","hashOfConfig":"12232"},{"size":4416,"mtime":1786084511313,"results":"14245","hashOfConfig":"12232"},{"size":1701,"mtime":1786084511313,"results":"14246","hashOfConfig":"12232"},{"size":3276,"mtime":1786084511313,"results":"14247","hashOfConfig":"12232"},{"size":2519,"mtime":1786084511314,"results":"14248","hashOfConfig":"12232"},{"size":11138,"mtime":1786084511314,"results":"14249","hashOfConfig":"12232"},{"size":2000,"mtime":1786084511314,"results":"14250","hashOfConfig":"12232"},{"size":4167,"mtime":1786084511314,"results":"14251","hashOfConfig":"12232"},{"size":4509,"mtime":1786084511314,"results":"14252","hashOfConfig":"12232"},{"size":2888,"mtime":1786084511314,"results":"14253","hashOfConfig":"12232"},{"size":3857,"mtime":1786084511314,"results":"14254","hashOfConfig":"12232"},{"size":1813,"mtime":1786084511314,"results":"14255","hashOfConfig":"12232"},{"size":3545,"mtime":1786084511314,"results":"14256","hashOfConfig":"12232"},{"size":10768,"mtime":1786084511315,"results":"14257","hashOfConfig":"12232"},{"size":11858,"mtime":1786084511315,"results":"14258","hashOfConfig":"12232"},{"size":4116,"mtime":1786084511315,"results":"14259","hashOfConfig":"12232"},{"size":5043,"mtime":1786084511315,"results":"14260","hashOfConfig":"12232"},{"size":2574,"mtime":1786084511315,"results":"14261","hashOfConfig":"12232"},{"size":6431,"mtime":1786084511315,"results":"14262","hashOfConfig":"12232"},{"size":4767,"mtime":1786084511315,"results":"14263","hashOfConfig":"12232"},{"size":10723,"mtime":1786084511316,"results":"14264","hashOfConfig":"12232"},{"size":6006,"mtime":1786084511316,"results":"14265","hashOfConfig":"12232"},{"size":2157,"mtime":1786084511316,"results":"14266","hashOfConfig":"12232"},{"size":6758,"mtime":1786084511316,"results":"14267","hashOfConfig":"12232"},{"size":3505,"mtime":1786084511316,"results":"14268","hashOfConfig":"12232"},{"size":4411,"mtime":1786084511316,"results":"14269","hashOfConfig":"12232"},{"size":1469,"mtime":1786084511316,"results":"14270","hashOfConfig":"12232"},{"size":4309,"mtime":1786084511316,"results":"14271","hashOfConfig":"12232"},{"size":1551,"mtime":1786084511316,"results":"14272","hashOfConfig":"12232"},{"size":4150,"mtime":1786084511317,"results":"14273","hashOfConfig":"12232"},{"size":4845,"mtime":1786084511317,"results":"14274","hashOfConfig":"12232"},{"size":4007,"mtime":1786084511317,"results":"14275","hashOfConfig":"12232"},{"size":3428,"mtime":1786084511317,"results":"14276","hashOfConfig":"12232"},{"size":4837,"mtime":1786084511317,"results":"14277","hashOfConfig":"12232"},{"size":1693,"mtime":1786084511317,"results":"14278","hashOfConfig":"12232"},{"size":23274,"mtime":1786084511317,"results":"14279","hashOfConfig":"12232"},{"size":14712,"mtime":1786084511318,"results":"14280","hashOfConfig":"12232"},{"size":9912,"mtime":1786084511318,"results":"14281","hashOfConfig":"12232"},{"size":5828,"mtime":1786084511319,"results":"14282","hashOfConfig":"12232"},{"size":1238,"mtime":1786084511319,"results":"14283","hashOfConfig":"12232"},{"size":1556,"mtime":1786084511319,"results":"14284","hashOfConfig":"12232"},{"size":8541,"mtime":1786084511319,"results":"14285","hashOfConfig":"12232"},{"size":2543,"mtime":1786084511319,"results":"14286","hashOfConfig":"12232"},{"size":4046,"mtime":1786084511319,"results":"14287","hashOfConfig":"12232"},{"size":7570,"mtime":1786084511320,"results":"14288","hashOfConfig":"12232"},{"size":2233,"mtime":1786084511320,"results":"14289","hashOfConfig":"12232"},{"size":1205,"mtime":1786084511320,"results":"14290","hashOfConfig":"12232"},{"size":4050,"mtime":1786084511320,"results":"14291","hashOfConfig":"12232"},{"size":1916,"mtime":1786084511320,"results":"14292","hashOfConfig":"12232"},{"size":3008,"mtime":1786084511320,"results":"14293","hashOfConfig":"12232"},{"size":1118,"mtime":1786084511320,"results":"14294","hashOfConfig":"12232"},{"size":14023,"mtime":1786084511321,"results":"14295","hashOfConfig":"12232"},{"size":2409,"mtime":1786084511321,"results":"14296","hashOfConfig":"12232"},{"size":9281,"mtime":1786084511321,"results":"14297","hashOfConfig":"12232"},{"size":16818,"mtime":1786084511321,"results":"14298","hashOfConfig":"12232"},{"size":804,"mtime":1786084511321,"results":"14299","hashOfConfig":"12232"},{"size":8850,"mtime":1786084511321,"results":"14300","hashOfConfig":"12232"},{"size":10655,"mtime":1786084511321,"results":"14301","hashOfConfig":"12232"},{"size":3254,"mtime":1786084511322,"results":"14302","hashOfConfig":"12232"},{"size":6161,"mtime":1786084511322,"results":"14303","hashOfConfig":"12232"},{"size":3444,"mtime":1786084511322,"results":"14304","hashOfConfig":"12232"},{"size":9607,"mtime":1786084511322,"results":"14305","hashOfConfig":"12232"},{"size":12397,"mtime":1786084511322,"results":"14306","hashOfConfig":"12232"},{"size":1832,"mtime":1786084511323,"results":"14307","hashOfConfig":"12232"},{"size":82336,"mtime":1786084511323,"results":"14308","hashOfConfig":"12232"},{"size":4839,"mtime":1786084511324,"results":"14309","hashOfConfig":"12232"},{"size":4705,"mtime":1786084511324,"results":"14310","hashOfConfig":"12232"},{"size":1703,"mtime":1786084511324,"results":"14311","hashOfConfig":"12232"},{"size":7926,"mtime":1786084511324,"results":"14312","hashOfConfig":"12232"},{"size":1551,"mtime":1786084511325,"results":"14313","hashOfConfig":"12232"},{"size":1547,"mtime":1786084511325,"results":"14314","hashOfConfig":"12232"},{"size":4813,"mtime":1786084511326,"results":"14315","hashOfConfig":"12232"},{"size":8540,"mtime":1786084529128,"results":"14316","hashOfConfig":"12232"},{"size":27448,"mtime":1786084511326,"results":"14317","hashOfConfig":"12232"},{"size":10605,"mtime":1786084511327,"results":"14318","hashOfConfig":"12232"},{"size":6948,"mtime":1786084511327,"results":"14319","hashOfConfig":"12232"},{"size":7800,"mtime":1786084511327,"results":"14320","hashOfConfig":"12232"},{"size":2265,"mtime":1786084511327,"results":"14321","hashOfConfig":"12232"},{"size":5418,"mtime":1786084511327,"results":"14322","hashOfConfig":"12232"},{"size":5249,"mtime":1786084511325,"results":"14323","hashOfConfig":"12232"},{"size":8245,"mtime":1786084511325,"results":"14324","hashOfConfig":"12232"},{"size":4250,"mtime":1786084511325,"results":"14325","hashOfConfig":"12232"},{"size":1750,"mtime":1786084511327,"results":"14326","hashOfConfig":"12232"},{"size":7351,"mtime":1786084511328,"results":"14327","hashOfConfig":"12232"},{"size":1896,"mtime":1786084511328,"results":"14328","hashOfConfig":"12232"},{"size":9273,"mtime":1786084511328,"results":"14329","hashOfConfig":"12232"},{"size":1918,"mtime":1786084511328,"results":"14330","hashOfConfig":"12232"},{"size":2447,"mtime":1786084511329,"results":"14331","hashOfConfig":"12232"},{"size":5387,"mtime":1786084511329,"results":"14332","hashOfConfig":"12232"},{"size":2591,"mtime":1786084511329,"results":"14333","hashOfConfig":"12232"},{"size":5174,"mtime":1786084511329,"results":"14334","hashOfConfig":"12232"},{"size":6032,"mtime":1786084511329,"results":"14335","hashOfConfig":"12232"},{"size":2035,"mtime":1786084511330,"results":"14336","hashOfConfig":"12232"},{"size":4813,"mtime":1786084511330,"results":"14337","hashOfConfig":"12232"},{"size":4015,"mtime":1786084511330,"results":"14338","hashOfConfig":"12232"},{"size":2287,"mtime":1786084511330,"results":"14339","hashOfConfig":"12232"},{"size":3185,"mtime":1786084511330,"results":"14340","hashOfConfig":"12232"},{"size":3665,"mtime":1786084511330,"results":"14341","hashOfConfig":"12232"},{"size":3115,"mtime":1786084511331,"results":"14342","hashOfConfig":"12232"},{"size":992,"mtime":1786084511331,"results":"14343","hashOfConfig":"12232"},{"size":1116,"mtime":1786084511331,"results":"14344","hashOfConfig":"12232"},{"size":2422,"mtime":1786084511331,"results":"14345","hashOfConfig":"12232"},{"size":1321,"mtime":1786084511331,"results":"14346","hashOfConfig":"12232"},{"size":1687,"mtime":1786084511331,"results":"14347","hashOfConfig":"12232"},{"size":680,"mtime":1786084511332,"results":"14348","hashOfConfig":"12232"},{"size":938,"mtime":1786084511332,"results":"14349","hashOfConfig":"12232"},{"size":697,"mtime":1786084511332,"results":"14350","hashOfConfig":"12232"},{"size":839,"mtime":1786084511332,"results":"14351","hashOfConfig":"12232"},{"size":1376,"mtime":1786084511332,"results":"14352","hashOfConfig":"12232"},{"size":1485,"mtime":1786084511332,"results":"14353","hashOfConfig":"12232"},{"size":4511,"mtime":1786084511332,"results":"14354","hashOfConfig":"12232"},{"size":2425,"mtime":1786084511333,"results":"14355","hashOfConfig":"12232"},{"size":5078,"mtime":1786084511333,"results":"14356","hashOfConfig":"12232"},{"size":1092,"mtime":1786084511333,"results":"14357","hashOfConfig":"12232"},{"size":1580,"mtime":1786084511333,"results":"14358","hashOfConfig":"12232"},{"size":12392,"mtime":1786084511333,"results":"14359","hashOfConfig":"12232"},{"size":8000,"mtime":1786084511334,"results":"14360","hashOfConfig":"12232"},{"size":1621,"mtime":1786084511334,"results":"14361","hashOfConfig":"12232"},{"size":4679,"mtime":1786084511334,"results":"14362","hashOfConfig":"12232"},{"size":1943,"mtime":1786084511334,"results":"14363","hashOfConfig":"12232"},{"size":2294,"mtime":1786084511335,"results":"14364","hashOfConfig":"12232"},{"size":2292,"mtime":1786084511335,"results":"14365","hashOfConfig":"12232"},{"size":2381,"mtime":1786084511335,"results":"14366","hashOfConfig":"12232"},{"size":1188,"mtime":1786084511335,"results":"14367","hashOfConfig":"12232"},{"size":6006,"mtime":1786084511336,"results":"14368","hashOfConfig":"12232"},{"size":3393,"mtime":1786084511336,"results":"14369","hashOfConfig":"12232"},{"size":3453,"mtime":1786084511336,"results":"14370","hashOfConfig":"12232"},{"size":2599,"mtime":1786084511336,"results":"14371","hashOfConfig":"12232"},{"size":2832,"mtime":1786084511336,"results":"14372","hashOfConfig":"12232"},{"size":2994,"mtime":1786084511337,"results":"14373","hashOfConfig":"12232"},{"size":2593,"mtime":1786084511337,"results":"14374","hashOfConfig":"12232"},{"size":2437,"mtime":1786084511337,"results":"14375","hashOfConfig":"12232"},{"size":61357,"mtime":1786084511337,"results":"14376","hashOfConfig":"12232"},{"size":11826,"mtime":1786084511337,"results":"14377","hashOfConfig":"12232"},{"size":28857,"mtime":1786084529049,"results":"14378","hashOfConfig":"12232"},{"size":5472,"mtime":1786084511338,"results":"14379","hashOfConfig":"12232"},{"size":1016,"mtime":1786084511339,"results":"14380","hashOfConfig":"12232"},{"size":8055,"mtime":1786084511339,"results":"14381","hashOfConfig":"12232"},{"size":6281,"mtime":1786084511339,"results":"14382","hashOfConfig":"12232"},{"size":28050,"mtime":1786084511340,"results":"14383","hashOfConfig":"12232"},{"size":783,"mtime":1786084511340,"results":"14384","hashOfConfig":"12232"},{"size":3783,"mtime":1786084511340,"results":"14385","hashOfConfig":"12232"},{"size":1770,"mtime":1786084511340,"results":"14386","hashOfConfig":"12232"},{"size":1747,"mtime":1786084511340,"results":"14387","hashOfConfig":"12232"},{"size":2621,"mtime":1786084511341,"results":"14388","hashOfConfig":"12232"},{"size":3134,"mtime":1786084511341,"results":"14389","hashOfConfig":"12232"},{"size":6404,"mtime":1786084511341,"results":"14390","hashOfConfig":"12232"},{"size":3635,"mtime":1786084511341,"results":"14391","hashOfConfig":"12232"},{"size":5937,"mtime":1786084511341,"results":"14392","hashOfConfig":"12232"},{"size":4473,"mtime":1786084511341,"results":"14393","hashOfConfig":"12232"},{"size":4686,"mtime":1786084511342,"results":"14394","hashOfConfig":"12232"},{"size":3385,"mtime":1786084511342,"results":"14395","hashOfConfig":"12232"},{"size":6172,"mtime":1786084511342,"results":"14396","hashOfConfig":"12232"},{"size":2011,"mtime":1786084511342,"results":"14397","hashOfConfig":"12232"},{"size":2178,"mtime":1786084511342,"results":"14398","hashOfConfig":"12232"},{"size":7993,"mtime":1786084511342,"results":"14399","hashOfConfig":"12232"},{"size":7489,"mtime":1786084511342,"results":"14400","hashOfConfig":"12232"},{"size":3303,"mtime":1786084511343,"results":"14401","hashOfConfig":"12232"},{"size":4118,"mtime":1786084511343,"results":"14402","hashOfConfig":"12232"},{"size":454,"mtime":1786084511343,"results":"14403","hashOfConfig":"12232"},{"size":4235,"mtime":1786084511343,"results":"14404","hashOfConfig":"12232"},{"size":1338,"mtime":1786084511343,"results":"14405","hashOfConfig":"12232"},{"size":6146,"mtime":1786084511343,"results":"14406","hashOfConfig":"12232"},{"size":7894,"mtime":1786084511343,"results":"14407","hashOfConfig":"12232"},{"size":2559,"mtime":1786084511344,"results":"14408","hashOfConfig":"12232"},{"size":3728,"mtime":1786084511344,"results":"14409","hashOfConfig":"12232"},{"size":2833,"mtime":1786084511344,"results":"14410","hashOfConfig":"12232"},{"size":16476,"mtime":1786084511344,"results":"14411","hashOfConfig":"12232"},{"size":3616,"mtime":1786084511344,"results":"14412","hashOfConfig":"12232"},{"size":7343,"mtime":1786084511344,"results":"14413","hashOfConfig":"12232"},{"size":3351,"mtime":1786084511344,"results":"14414","hashOfConfig":"12232"},{"size":2629,"mtime":1786084511345,"results":"14415","hashOfConfig":"12232"},{"size":1726,"mtime":1786084511345,"results":"14416","hashOfConfig":"12232"},{"size":4233,"mtime":1786084511345,"results":"14417","hashOfConfig":"12232"},{"size":1734,"mtime":1786084511345,"results":"14418","hashOfConfig":"12232"},{"size":1034,"mtime":1786084511345,"results":"14419","hashOfConfig":"12232"},{"size":5765,"mtime":1786084511345,"results":"14420","hashOfConfig":"12232"},{"size":5808,"mtime":1786084511345,"results":"14421","hashOfConfig":"12232"},{"size":4808,"mtime":1786084511345,"results":"14422","hashOfConfig":"12232"},{"size":1625,"mtime":1786084511346,"results":"14423","hashOfConfig":"12232"},{"size":2293,"mtime":1786084511346,"results":"14424","hashOfConfig":"12232"},{"size":930,"mtime":1786084511346,"results":"14425","hashOfConfig":"12232"},{"size":2059,"mtime":1786084511346,"results":"14426","hashOfConfig":"12232"},{"size":3719,"mtime":1786084511346,"results":"14427","hashOfConfig":"12232"},{"size":4117,"mtime":1786084511346,"results":"14428","hashOfConfig":"12232"},{"size":1278,"mtime":1786084511346,"results":"14429","hashOfConfig":"12232"},{"size":2502,"mtime":1786084511347,"results":"14430","hashOfConfig":"12232"},{"size":1872,"mtime":1786084511347,"results":"14431","hashOfConfig":"12232"},{"size":5410,"mtime":1786084511347,"results":"14432","hashOfConfig":"12232"},{"size":2448,"mtime":1786084511347,"results":"14433","hashOfConfig":"12232"},{"size":11035,"mtime":1786084511347,"results":"14434","hashOfConfig":"12232"},{"size":4408,"mtime":1786084511348,"results":"14435","hashOfConfig":"12232"},{"size":5302,"mtime":1786084511348,"results":"14436","hashOfConfig":"12232"},{"size":5495,"mtime":1786084511348,"results":"14437","hashOfConfig":"12232"},{"size":6412,"mtime":1786084511348,"results":"14438","hashOfConfig":"12232"},{"size":6338,"mtime":1786084511349,"results":"14439","hashOfConfig":"12232"},{"size":3486,"mtime":1786084511349,"results":"14440","hashOfConfig":"12232"},{"size":2810,"mtime":1786084511349,"results":"14441","hashOfConfig":"12232"},{"size":1748,"mtime":1786084511349,"results":"14442","hashOfConfig":"12232"},{"size":3825,"mtime":1786084511349,"results":"14443","hashOfConfig":"12232"},{"size":2410,"mtime":1786084511350,"results":"14444","hashOfConfig":"12232"},{"size":557,"mtime":1786084511350,"results":"14445","hashOfConfig":"12232"},{"size":3433,"mtime":1786084511350,"results":"14446","hashOfConfig":"12232"},{"size":2857,"mtime":1786084511350,"results":"14447","hashOfConfig":"12232"},{"size":2527,"mtime":1786084511350,"results":"14448","hashOfConfig":"12232"},{"size":4182,"mtime":1786084511350,"results":"14449","hashOfConfig":"12232"},{"size":4800,"mtime":1786084511351,"results":"14450","hashOfConfig":"12232"},{"size":2179,"mtime":1786084511351,"results":"14451","hashOfConfig":"12232"},{"size":2198,"mtime":1786084511351,"results":"14452","hashOfConfig":"12232"},{"size":3932,"mtime":1786084511351,"results":"14453","hashOfConfig":"12232"},{"size":2469,"mtime":1786084511351,"results":"14454","hashOfConfig":"12232"},{"size":3978,"mtime":1786084511351,"results":"14455","hashOfConfig":"12232"},{"size":2285,"mtime":1786084511352,"results":"14456","hashOfConfig":"12232"},{"size":2113,"mtime":1786084511352,"results":"14457","hashOfConfig":"12232"},{"size":2092,"mtime":1786084511352,"results":"14458","hashOfConfig":"12232"},{"size":1641,"mtime":1786084511352,"results":"14459","hashOfConfig":"12232"},{"size":2442,"mtime":1786084511352,"results":"14460","hashOfConfig":"12232"},{"size":16075,"mtime":1786084511353,"results":"14461","hashOfConfig":"12232"},{"size":5473,"mtime":1786084511353,"results":"14462","hashOfConfig":"12232"},{"size":9438,"mtime":1786084511353,"results":"14463","hashOfConfig":"12232"},{"size":7403,"mtime":1786084511353,"results":"14464","hashOfConfig":"12232"},{"size":2690,"mtime":1786084511353,"results":"14465","hashOfConfig":"12232"},{"size":2053,"mtime":1786084511353,"results":"14466","hashOfConfig":"12232"},{"size":2351,"mtime":1786084511354,"results":"14467","hashOfConfig":"12232"},{"size":2373,"mtime":1786084511354,"results":"14468","hashOfConfig":"12232"},{"size":1497,"mtime":1786084511354,"results":"14469","hashOfConfig":"12232"},{"size":6574,"mtime":1786084511354,"results":"14470","hashOfConfig":"12232"},{"size":1685,"mtime":1786084511354,"results":"14471","hashOfConfig":"12232"},{"size":10099,"mtime":1786084511354,"results":"14472","hashOfConfig":"12232"},{"size":5590,"mtime":1786084511355,"results":"14473","hashOfConfig":"12232"},{"size":11932,"mtime":1786084511355,"results":"14474","hashOfConfig":"12232"},{"size":2364,"mtime":1786084511355,"results":"14475","hashOfConfig":"12232"},{"size":3810,"mtime":1786084511355,"results":"14476","hashOfConfig":"12232"},{"size":6599,"mtime":1786084511355,"results":"14477","hashOfConfig":"12232"},{"size":674,"mtime":1786084511355,"results":"14478","hashOfConfig":"12232"},{"size":6085,"mtime":1786084511355,"results":"14479","hashOfConfig":"12232"},{"size":2307,"mtime":1786084511356,"results":"14480","hashOfConfig":"12232"},{"size":2997,"mtime":1786084511356,"results":"14481","hashOfConfig":"12232"},{"size":1640,"mtime":1786084511356,"results":"14482","hashOfConfig":"12232"},{"size":8534,"mtime":1786084511356,"results":"14483","hashOfConfig":"12232"},{"size":2183,"mtime":1786084511356,"results":"14484","hashOfConfig":"12232"},{"size":1670,"mtime":1786084511356,"results":"14485","hashOfConfig":"12232"},{"size":5951,"mtime":1786084511357,"results":"14486","hashOfConfig":"12232"},{"size":8827,"mtime":1786084511357,"results":"14487","hashOfConfig":"12232"},{"size":4395,"mtime":1786084511357,"results":"14488","hashOfConfig":"12232"},{"size":8994,"mtime":1786084511357,"results":"14489","hashOfConfig":"12232"},{"size":2370,"mtime":1786084511357,"results":"14490","hashOfConfig":"12232"},{"size":7842,"mtime":1786084511357,"results":"14491","hashOfConfig":"12232"},{"size":5726,"mtime":1786084511358,"results":"14492","hashOfConfig":"12232"},{"size":3069,"mtime":1786084511358,"results":"14493","hashOfConfig":"12232"},{"size":4821,"mtime":1786084511358,"results":"14494","hashOfConfig":"12232"},{"size":1353,"mtime":1786084511358,"results":"14495","hashOfConfig":"12232"},{"size":4938,"mtime":1786084511358,"results":"14496","hashOfConfig":"12232"},{"size":9520,"mtime":1786084511359,"results":"14497","hashOfConfig":"12232"},{"size":10824,"mtime":1786084511359,"results":"14498","hashOfConfig":"12232"},{"size":8051,"mtime":1786084511359,"results":"14499","hashOfConfig":"12232"},{"size":4536,"mtime":1786084511359,"results":"14500","hashOfConfig":"12232"},{"size":10686,"mtime":1786084511359,"results":"14501","hashOfConfig":"12232"},{"size":3561,"mtime":1786084511359,"results":"14502","hashOfConfig":"12232"},{"size":11201,"mtime":1786084511360,"results":"14503","hashOfConfig":"12232"},{"size":7335,"mtime":1786084511360,"results":"14504","hashOfConfig":"12232"},{"size":3583,"mtime":1786084511360,"results":"14505","hashOfConfig":"12232"},{"size":2779,"mtime":1786084511360,"results":"14506","hashOfConfig":"12232"},{"size":1246,"mtime":1786084511360,"results":"14507","hashOfConfig":"12232"},{"size":3529,"mtime":1786084511360,"results":"14508","hashOfConfig":"12232"},{"size":5579,"mtime":1786084511360,"results":"14509","hashOfConfig":"12232"},{"size":7871,"mtime":1786084511361,"results":"14510","hashOfConfig":"12232"},{"size":5292,"mtime":1786084511361,"results":"14511","hashOfConfig":"12232"},{"size":3594,"mtime":1786084511361,"results":"14512","hashOfConfig":"12232"},{"size":7091,"mtime":1786084511361,"results":"14513","hashOfConfig":"12232"},{"size":1790,"mtime":1786084511361,"results":"14514","hashOfConfig":"12232"},{"size":1883,"mtime":1786084511361,"results":"14515","hashOfConfig":"12232"},{"size":5040,"mtime":1786084511362,"results":"14516","hashOfConfig":"12232"},{"size":1723,"mtime":1786084511362,"results":"14517","hashOfConfig":"12232"},{"size":3011,"mtime":1786084511362,"results":"14518","hashOfConfig":"12232"},{"size":2295,"mtime":1786084511362,"results":"14519","hashOfConfig":"12232"},{"size":4482,"mtime":1786084511362,"results":"14520","hashOfConfig":"12232"},{"size":3628,"mtime":1786084511362,"results":"14521","hashOfConfig":"12232"},{"size":5606,"mtime":1786084511362,"results":"14522","hashOfConfig":"12232"},{"size":22976,"mtime":1786084511363,"results":"14523","hashOfConfig":"12232"},{"size":6070,"mtime":1786084511363,"results":"14524","hashOfConfig":"12232"},{"size":1884,"mtime":1786084511363,"results":"14525","hashOfConfig":"12232"},{"size":3073,"mtime":1786084511363,"results":"14526","hashOfConfig":"12232"},{"size":4098,"mtime":1786084511363,"results":"14527","hashOfConfig":"12232"},{"size":1674,"mtime":1786084511363,"results":"14528","hashOfConfig":"12232"},{"size":2913,"mtime":1786084511363,"results":"14529","hashOfConfig":"12232"},{"size":3097,"mtime":1786084511364,"results":"14530","hashOfConfig":"12285"},{"size":4388,"mtime":1786084511364,"results":"14531","hashOfConfig":"12232"},{"size":9071,"mtime":1786084511364,"results":"14532","hashOfConfig":"12232"},{"size":6137,"mtime":1786084511364,"results":"14533","hashOfConfig":"12232"},{"size":2842,"mtime":1786084511364,"results":"14534","hashOfConfig":"12232"},{"size":2242,"mtime":1786084511364,"results":"14535","hashOfConfig":"12232"},{"size":4818,"mtime":1786084511364,"results":"14536","hashOfConfig":"12232"},{"size":7344,"mtime":1786084511365,"results":"14537","hashOfConfig":"12232"},{"size":3220,"mtime":1786084511365,"results":"14538","hashOfConfig":"12232"},{"size":8483,"mtime":1786084511365,"results":"14539","hashOfConfig":"12232"},{"size":5403,"mtime":1786084511365,"results":"14540","hashOfConfig":"12232"},{"size":2811,"mtime":1786084511365,"results":"14541","hashOfConfig":"12232"},{"size":2713,"mtime":1786084511365,"results":"14542","hashOfConfig":"12232"},{"size":2043,"mtime":1786084511365,"results":"14543","hashOfConfig":"12232"},{"size":5935,"mtime":1786084511366,"results":"14544","hashOfConfig":"12232"},{"size":5223,"mtime":1786084511366,"results":"14545","hashOfConfig":"12232"},{"size":8208,"mtime":1786084511366,"results":"14546","hashOfConfig":"12232"},{"size":1760,"mtime":1786084511366,"results":"14547","hashOfConfig":"12232"},{"size":5155,"mtime":1786084511366,"results":"14548","hashOfConfig":"12232"},{"size":6211,"mtime":1786084511366,"results":"14549","hashOfConfig":"12232"},{"size":912,"mtime":1786084511366,"results":"14550","hashOfConfig":"12232"},{"size":12807,"mtime":1786084511367,"results":"14551","hashOfConfig":"12232"},{"size":1991,"mtime":1786084511367,"results":"14552","hashOfConfig":"12232"},{"size":4716,"mtime":1786084511367,"results":"14553","hashOfConfig":"12232"},{"size":2239,"mtime":1786084511367,"results":"14554","hashOfConfig":"12232"},{"size":518,"mtime":1786084511367,"results":"14555","hashOfConfig":"12232"},{"size":3550,"mtime":1786084511367,"results":"14556","hashOfConfig":"12232"},{"size":2642,"mtime":1786084511367,"results":"14557","hashOfConfig":"12232"},{"size":8386,"mtime":1786084511368,"results":"14558","hashOfConfig":"12232"},{"size":8166,"mtime":1786084511368,"results":"14559","hashOfConfig":"12232"},{"size":1609,"mtime":1786084511370,"results":"14560","hashOfConfig":"12232"},{"size":12207,"mtime":1786084511370,"results":"14561","hashOfConfig":"12232"},{"size":1211,"mtime":1786084511370,"results":"14562","hashOfConfig":"12232"},{"size":10620,"mtime":1786084511368,"results":"14563","hashOfConfig":"12232"},{"size":3462,"mtime":1786084511368,"results":"14564","hashOfConfig":"12232"},{"size":7982,"mtime":1786084511368,"results":"14565","hashOfConfig":"12232"},{"size":4390,"mtime":1786084511368,"results":"14566","hashOfConfig":"12232"},{"size":8246,"mtime":1786084511368,"results":"14567","hashOfConfig":"12232"},{"size":6105,"mtime":1786084511369,"results":"14568","hashOfConfig":"12232"},{"size":3136,"mtime":1786084511369,"results":"14569","hashOfConfig":"12232"},{"size":6560,"mtime":1786084511369,"results":"14570","hashOfConfig":"12232"},{"size":15584,"mtime":1786084511369,"results":"14571","hashOfConfig":"12232"},{"size":1783,"mtime":1786084511369,"results":"14572","hashOfConfig":"12232"},{"size":3973,"mtime":1786084511369,"results":"14573","hashOfConfig":"12232"},{"size":4612,"mtime":1786084511370,"results":"14574","hashOfConfig":"12232"},{"size":4866,"mtime":1786084511370,"results":"14575","hashOfConfig":"12232"},{"size":3659,"mtime":1786084511370,"results":"14576","hashOfConfig":"12232"},{"size":9721,"mtime":1786084511371,"results":"14577","hashOfConfig":"12232"},{"size":6164,"mtime":1786084511371,"results":"14578","hashOfConfig":"12232"},{"size":1816,"mtime":1786084511371,"results":"14579","hashOfConfig":"12232"},{"size":9832,"mtime":1786084511377,"results":"14580","hashOfConfig":"12232"},{"size":4890,"mtime":1786084511371,"results":"14581","hashOfConfig":"12232"},{"size":2545,"mtime":1786084511371,"results":"14582","hashOfConfig":"12232"},{"size":4708,"mtime":1786084511371,"results":"14583","hashOfConfig":"12232"},{"size":4203,"mtime":1786084511371,"results":"14584","hashOfConfig":"12232"},{"size":5057,"mtime":1786084511372,"results":"14585","hashOfConfig":"12232"},{"size":7367,"mtime":1786084511372,"results":"14586","hashOfConfig":"12232"},{"size":6677,"mtime":1786084511372,"results":"14587","hashOfConfig":"12232"},{"size":5491,"mtime":1786084511372,"results":"14588","hashOfConfig":"12232"},{"size":7608,"mtime":1786084511372,"results":"14589","hashOfConfig":"12232"},{"size":7942,"mtime":1786084511372,"results":"14590","hashOfConfig":"12232"},{"size":7277,"mtime":1786084511373,"results":"14591","hashOfConfig":"12232"},{"size":8926,"mtime":1786084511373,"results":"14592","hashOfConfig":"12232"},{"size":6828,"mtime":1786084511373,"results":"14593","hashOfConfig":"12232"},{"size":6916,"mtime":1786084511373,"results":"14594","hashOfConfig":"12232"},{"size":6127,"mtime":1786084511373,"results":"14595","hashOfConfig":"12232"},{"size":7099,"mtime":1786084511373,"results":"14596","hashOfConfig":"12232"},{"size":7640,"mtime":1786084511374,"results":"14597","hashOfConfig":"12232"},{"size":2621,"mtime":1786084511374,"results":"14598","hashOfConfig":"12232"},{"size":16278,"mtime":1786084511374,"results":"14599","hashOfConfig":"12232"},{"size":981,"mtime":1786084511374,"results":"14600","hashOfConfig":"12232"},{"size":5332,"mtime":1786084511374,"results":"14601","hashOfConfig":"12232"},{"size":2579,"mtime":1786084511374,"results":"14602","hashOfConfig":"12232"},{"size":3311,"mtime":1786084511374,"results":"14603","hashOfConfig":"12232"},{"size":8585,"mtime":1786084511375,"results":"14604","hashOfConfig":"12232"},{"size":11798,"mtime":1786084511375,"results":"14605","hashOfConfig":"12232"},{"size":8076,"mtime":1786084511375,"results":"14606","hashOfConfig":"12232"},{"size":5198,"mtime":1786084511375,"results":"14607","hashOfConfig":"12232"},{"size":4693,"mtime":1786084511375,"results":"14608","hashOfConfig":"12232"},{"size":6438,"mtime":1786084511375,"results":"14609","hashOfConfig":"12232"},{"size":5980,"mtime":1786084511376,"results":"14610","hashOfConfig":"12232"},{"size":8902,"mtime":1786084511376,"results":"14611","hashOfConfig":"12232"},{"size":6286,"mtime":1786084511376,"results":"14612","hashOfConfig":"12232"},{"size":5766,"mtime":1786084511376,"results":"14613","hashOfConfig":"12232"},{"size":4365,"mtime":1786084511376,"results":"14614","hashOfConfig":"12232"},{"size":8868,"mtime":1786084511376,"results":"14615","hashOfConfig":"12232"},{"size":6091,"mtime":1786084511377,"results":"14616","hashOfConfig":"12232"},{"size":5674,"mtime":1786084511377,"results":"14617","hashOfConfig":"12232"},{"size":4720,"mtime":1786084511377,"results":"14618","hashOfConfig":"12232"},{"size":7551,"mtime":1786084511377,"results":"14619","hashOfConfig":"12232"},{"size":9234,"mtime":1786084511378,"results":"14620","hashOfConfig":"12232"},{"size":6369,"mtime":1786084511378,"results":"14621","hashOfConfig":"12232"},{"size":4975,"mtime":1786084511378,"results":"14622","hashOfConfig":"12232"},{"size":1461,"mtime":1786084511378,"results":"14623","hashOfConfig":"12232"},{"size":4578,"mtime":1786084511378,"results":"14624","hashOfConfig":"12232"},{"size":7049,"mtime":1786084511378,"results":"14625","hashOfConfig":"12232"},{"size":4042,"mtime":1786084511378,"results":"14626","hashOfConfig":"12232"},{"size":23009,"mtime":1786084511378,"results":"14627","hashOfConfig":"12232"},{"size":5419,"mtime":1786084511379,"results":"14628","hashOfConfig":"12232"},{"size":4137,"mtime":1786084511379,"results":"14629","hashOfConfig":"12232"},{"size":2998,"mtime":1786084511379,"results":"14630","hashOfConfig":"12232"},{"size":3595,"mtime":1786084511379,"results":"14631","hashOfConfig":"12232"},{"size":4691,"mtime":1786084511379,"results":"14632","hashOfConfig":"12232"},{"size":3526,"mtime":1786084511379,"results":"14633","hashOfConfig":"12232"},{"size":3765,"mtime":1786084511379,"results":"14634","hashOfConfig":"12232"},{"size":2395,"mtime":1786084511379,"results":"14635","hashOfConfig":"12232"},{"size":3679,"mtime":1786084511380,"results":"14636","hashOfConfig":"12232"},{"size":3147,"mtime":1786084511380,"results":"14637","hashOfConfig":"12232"},{"size":5671,"mtime":1786084511380,"results":"14638","hashOfConfig":"12232"},{"size":7508,"mtime":1786084511380,"results":"14639","hashOfConfig":"12232"},{"size":1826,"mtime":1786084511380,"results":"14640","hashOfConfig":"12232"},{"size":2570,"mtime":1786084511380,"results":"14641","hashOfConfig":"12232"},{"size":1205,"mtime":1786084511380,"results":"14642","hashOfConfig":"12232"},{"size":2260,"mtime":1786084511380,"results":"14643","hashOfConfig":"12232"},{"size":2302,"mtime":1786084511380,"results":"14644","hashOfConfig":"12232"},{"size":8974,"mtime":1786084511381,"results":"14645","hashOfConfig":"12232"},{"size":8213,"mtime":1786084511381,"results":"14646","hashOfConfig":"12232"},{"size":1819,"mtime":1786084511381,"results":"14647","hashOfConfig":"12232"},{"size":6088,"mtime":1786084511381,"results":"14648","hashOfConfig":"12232"},{"size":5551,"mtime":1786084511381,"results":"14649","hashOfConfig":"12232"},{"size":1726,"mtime":1786084511381,"results":"14650","hashOfConfig":"12232"},{"size":602,"mtime":1786084511382,"results":"14651","hashOfConfig":"12232"},{"size":859,"mtime":1786084511382,"results":"14652","hashOfConfig":"12232"},{"size":532,"mtime":1786084511382,"results":"14653","hashOfConfig":"12232"},{"size":822,"mtime":1786084511382,"results":"14654","hashOfConfig":"12232"},{"size":564,"mtime":1786084511382,"results":"14655","hashOfConfig":"12232"},{"size":704,"mtime":1786084511382,"results":"14656","hashOfConfig":"12232"},{"size":543,"mtime":1786084511382,"results":"14657","hashOfConfig":"12232"},{"size":4671,"mtime":1786084511382,"results":"14658","hashOfConfig":"12232"},{"size":2924,"mtime":1786084511382,"results":"14659","hashOfConfig":"12232"},{"size":4011,"mtime":1786084511383,"results":"14660","hashOfConfig":"12232"},{"size":3753,"mtime":1786084511383,"results":"14661","hashOfConfig":"12232"},{"size":2793,"mtime":1786084511383,"results":"14662","hashOfConfig":"12232"},{"size":2489,"mtime":1786084511383,"results":"14663","hashOfConfig":"12232"},{"size":1565,"mtime":1786084511383,"results":"14664","hashOfConfig":"12232"},{"size":3716,"mtime":1786084511383,"results":"14665","hashOfConfig":"12232"},{"size":2025,"mtime":1786084511383,"results":"14666","hashOfConfig":"12232"},{"size":2507,"mtime":1786084511383,"results":"14667","hashOfConfig":"12232"},{"size":3619,"mtime":1786084511383,"results":"14668","hashOfConfig":"12232"},{"size":2368,"mtime":1786084511383,"results":"14669","hashOfConfig":"12232"},{"size":1884,"mtime":1786084511384,"results":"14670","hashOfConfig":"12232"},{"size":3670,"mtime":1786084511384,"results":"14671","hashOfConfig":"12232"},{"size":11628,"mtime":1786084511384,"results":"14672","hashOfConfig":"12232"},{"size":2086,"mtime":1786084511384,"results":"14673","hashOfConfig":"12232"},{"size":1450,"mtime":1786084511384,"results":"14674","hashOfConfig":"12232"},{"size":7441,"mtime":1786084511384,"results":"14675","hashOfConfig":"12232"},{"size":2205,"mtime":1786084511384,"results":"14676","hashOfConfig":"12232"},{"size":3196,"mtime":1786084511385,"results":"14677","hashOfConfig":"12232"},{"size":1899,"mtime":1786084511385,"results":"14678","hashOfConfig":"12285"},{"size":3370,"mtime":1786084511385,"results":"14679","hashOfConfig":"12232"},{"size":3646,"mtime":1786084511385,"results":"14680","hashOfConfig":"12232"},{"size":2201,"mtime":1786084511385,"results":"14681","hashOfConfig":"12232"},{"size":5408,"mtime":1786084511385,"results":"14682","hashOfConfig":"12232"},{"size":1871,"mtime":1786084511385,"results":"14683","hashOfConfig":"12232"},{"size":1488,"mtime":1786084511385,"results":"14684","hashOfConfig":"12232"},{"size":1389,"mtime":1786084511385,"results":"14685","hashOfConfig":"12232"},{"size":9060,"mtime":1786084511386,"results":"14686","hashOfConfig":"12232"},{"size":1500,"mtime":1786084511386,"results":"14687","hashOfConfig":"12232"},{"size":2046,"mtime":1786084511386,"results":"14688","hashOfConfig":"12232"},{"size":1452,"mtime":1786084511386,"results":"14689","hashOfConfig":"12232"},{"size":1039,"mtime":1786084511386,"results":"14690","hashOfConfig":"12232"},{"size":1478,"mtime":1786084511386,"results":"14691","hashOfConfig":"12232"},{"size":6146,"mtime":1786084511386,"results":"14692","hashOfConfig":"12232"},{"size":4833,"mtime":1786084511387,"results":"14693","hashOfConfig":"12232"},{"size":5449,"mtime":1786084511387,"results":"14694","hashOfConfig":"12232"},{"size":3231,"mtime":1786084511387,"results":"14695","hashOfConfig":"12232"},{"size":4938,"mtime":1786084511387,"results":"14696","hashOfConfig":"12232"},{"size":2435,"mtime":1786084511387,"results":"14697","hashOfConfig":"12232"},{"size":7202,"mtime":1786084511387,"results":"14698","hashOfConfig":"12232"},{"size":5456,"mtime":1786084511387,"results":"14699","hashOfConfig":"12232"},{"size":5899,"mtime":1786084511387,"results":"14700","hashOfConfig":"12232"},{"size":5358,"mtime":1786084511388,"results":"14701","hashOfConfig":"12232"},{"size":2376,"mtime":1786084511388,"results":"14702","hashOfConfig":"12232"},{"size":11275,"mtime":1786084511388,"results":"14703","hashOfConfig":"12232"},{"size":1751,"mtime":1786084511388,"results":"14704","hashOfConfig":"12232"},{"size":9412,"mtime":1786084511388,"results":"14705","hashOfConfig":"12232"},{"size":3710,"mtime":1786084511388,"results":"14706","hashOfConfig":"12232"},{"size":1701,"mtime":1786084511388,"results":"14707","hashOfConfig":"12232"},{"size":638,"mtime":1786084511388,"results":"14708","hashOfConfig":"12232"},{"size":6955,"mtime":1786084511389,"results":"14709","hashOfConfig":"12232"},{"size":5358,"mtime":1786084511389,"results":"14710","hashOfConfig":"12232"},{"size":3602,"mtime":1786084511389,"results":"14711","hashOfConfig":"12232"},{"size":4312,"mtime":1786084511389,"results":"14712","hashOfConfig":"12232"},{"size":3203,"mtime":1786084511389,"results":"14713","hashOfConfig":"12232"},{"size":2305,"mtime":1786084511389,"results":"14714","hashOfConfig":"12232"},{"size":2621,"mtime":1786084511389,"results":"14715","hashOfConfig":"12232"},{"size":4705,"mtime":1786084511390,"results":"14716","hashOfConfig":"12232"},{"size":5045,"mtime":1786084511390,"results":"14717","hashOfConfig":"12232"},{"size":2305,"mtime":1786084511390,"results":"14718","hashOfConfig":"12232"},{"size":14799,"mtime":1786084511390,"results":"14719","hashOfConfig":"12232"},{"size":7381,"mtime":1786084511390,"results":"14720","hashOfConfig":"12232"},{"size":1965,"mtime":1786084511390,"results":"14721","hashOfConfig":"12232"},{"size":3687,"mtime":1786084511390,"results":"14722","hashOfConfig":"12232"},{"size":4467,"mtime":1786084511390,"results":"14723","hashOfConfig":"12232"},{"size":6023,"mtime":1786084511391,"results":"14724","hashOfConfig":"12232"},{"size":3208,"mtime":1786084511391,"results":"14725","hashOfConfig":"12232"},{"size":4990,"mtime":1786084511391,"results":"14726","hashOfConfig":"12232"},{"size":2438,"mtime":1786084511391,"results":"14727","hashOfConfig":"12232"},{"size":2833,"mtime":1786084511391,"results":"14728","hashOfConfig":"12232"},{"size":8599,"mtime":1786084511391,"results":"14729","hashOfConfig":"12232"},{"size":1454,"mtime":1786084511391,"results":"14730","hashOfConfig":"12232"},{"size":2907,"mtime":1786084511392,"results":"14731","hashOfConfig":"12232"},{"size":2012,"mtime":1786084511392,"results":"14732","hashOfConfig":"12232"},{"size":2144,"mtime":1786084511392,"results":"14733","hashOfConfig":"12232"},{"size":2200,"mtime":1786084511392,"results":"14734","hashOfConfig":"12232"},{"size":1213,"mtime":1786084511392,"results":"14735","hashOfConfig":"12232"},{"size":2790,"mtime":1786084511392,"results":"14736","hashOfConfig":"12232"},{"size":34625,"mtime":1786084511392,"results":"14737","hashOfConfig":"12232"},{"size":14923,"mtime":1786084511393,"results":"14738","hashOfConfig":"12232"},{"size":4514,"mtime":1786084511393,"results":"14739","hashOfConfig":"12232"},{"size":1132,"mtime":1786084511393,"results":"14740","hashOfConfig":"12232"},{"size":15307,"mtime":1786084511393,"results":"14741","hashOfConfig":"12232"},{"size":5648,"mtime":1786084511393,"results":"14742","hashOfConfig":"12232"},{"size":5289,"mtime":1786084511394,"results":"14743","hashOfConfig":"12232"},{"size":3058,"mtime":1786084511394,"results":"14744","hashOfConfig":"12232"},{"size":4139,"mtime":1786084511394,"results":"14745","hashOfConfig":"12232"},{"size":4503,"mtime":1786084511394,"results":"14746","hashOfConfig":"12232"},{"size":4224,"mtime":1786084511394,"results":"14747","hashOfConfig":"12232"},{"size":2146,"mtime":1786084511394,"results":"14748","hashOfConfig":"12232"},{"size":6251,"mtime":1786084511394,"results":"14749","hashOfConfig":"12232"},{"size":3805,"mtime":1786084511394,"results":"14750","hashOfConfig":"12232"},{"size":4635,"mtime":1786084511395,"results":"14751","hashOfConfig":"12232"},{"size":57297,"mtime":1786084511395,"results":"14752","hashOfConfig":"12232"},{"size":1813,"mtime":1786084511395,"results":"14753","hashOfConfig":"12232"},{"size":2485,"mtime":1786084511395,"results":"14754","hashOfConfig":"12232"},{"size":18722,"mtime":1786084511395,"results":"14755","hashOfConfig":"12232"},{"size":15142,"mtime":1786084511396,"results":"14756","hashOfConfig":"12232"},{"size":2713,"mtime":1786084511396,"results":"14757","hashOfConfig":"12232"},{"size":3042,"mtime":1786084511396,"results":"14758","hashOfConfig":"12232"},{"size":3649,"mtime":1786084511396,"results":"14759","hashOfConfig":"12232"},{"size":3975,"mtime":1786084511396,"results":"14760","hashOfConfig":"12232"},{"size":5339,"mtime":1786084511396,"results":"14761","hashOfConfig":"12232"},{"size":1227,"mtime":1786084511396,"results":"14762","hashOfConfig":"12232"},{"size":1886,"mtime":1786084511396,"results":"14763","hashOfConfig":"12232"},{"size":11490,"mtime":1786084511397,"results":"14764","hashOfConfig":"12232"},{"size":2395,"mtime":1786084511397,"results":"14765","hashOfConfig":"12232"},{"size":2821,"mtime":1786084511397,"results":"14766","hashOfConfig":"12232"},{"size":1806,"mtime":1786084511397,"results":"14767","hashOfConfig":"12232"},{"size":1437,"mtime":1786084511397,"results":"14768","hashOfConfig":"12232"},{"size":19553,"mtime":1786084511397,"results":"14769","hashOfConfig":"12232"},{"size":2949,"mtime":1786084511397,"results":"14770","hashOfConfig":"12232"},{"size":9040,"mtime":1786084511398,"results":"14771","hashOfConfig":"12232"},{"size":5277,"mtime":1786084511398,"results":"14772","hashOfConfig":"12232"},{"size":4204,"mtime":1786084511398,"results":"14773","hashOfConfig":"12232"},{"size":4501,"mtime":1786084511398,"results":"14774","hashOfConfig":"12232"},{"size":3739,"mtime":1786084511398,"results":"14775","hashOfConfig":"12232"},{"size":5792,"mtime":1786084511398,"results":"14776","hashOfConfig":"12232"},{"size":4452,"mtime":1786084511398,"results":"14777","hashOfConfig":"12232"},{"size":8790,"mtime":1786084511399,"results":"14778","hashOfConfig":"12232"},{"size":14055,"mtime":1786084511399,"results":"14779","hashOfConfig":"12232"},{"size":2839,"mtime":1786084511399,"results":"14780","hashOfConfig":"12232"},{"size":4543,"mtime":1786084511399,"results":"14781","hashOfConfig":"12232"},{"size":19232,"mtime":1786084511399,"results":"14782","hashOfConfig":"12232"},{"size":1764,"mtime":1786084511399,"results":"14783","hashOfConfig":"12232"},{"size":2007,"mtime":1786084511399,"results":"14784","hashOfConfig":"12232"},{"size":7258,"mtime":1786084511400,"results":"14785","hashOfConfig":"12232"},{"size":1743,"mtime":1786084511400,"results":"14786","hashOfConfig":"12232"},{"size":4224,"mtime":1786084511400,"results":"14787","hashOfConfig":"12232"},{"size":3692,"mtime":1786084511400,"results":"14788","hashOfConfig":"12232"},{"size":2959,"mtime":1786084511400,"results":"14789","hashOfConfig":"12232"},{"size":3818,"mtime":1786084511400,"results":"14790","hashOfConfig":"12232"},{"size":2828,"mtime":1786084511400,"results":"14791","hashOfConfig":"12232"},{"size":4595,"mtime":1786084511400,"results":"14792","hashOfConfig":"12232"},{"size":1803,"mtime":1786084511401,"results":"14793","hashOfConfig":"12232"},{"size":3773,"mtime":1786084511401,"results":"14794","hashOfConfig":"12232"},{"size":3666,"mtime":1786084511401,"results":"14795","hashOfConfig":"12232"},{"size":2602,"mtime":1786084511401,"results":"14796","hashOfConfig":"12232"},{"size":2849,"mtime":1786084511401,"results":"14797","hashOfConfig":"12232"},{"size":5418,"mtime":1786084511401,"results":"14798","hashOfConfig":"12232"},{"size":1011,"mtime":1786084511401,"results":"14799","hashOfConfig":"12232"},{"size":1321,"mtime":1786084511401,"results":"14800","hashOfConfig":"12232"},{"size":7164,"mtime":1786084511402,"results":"14801","hashOfConfig":"12232"},{"size":2024,"mtime":1786084511402,"results":"14802","hashOfConfig":"12232"},{"size":2420,"mtime":1786084511402,"results":"14803","hashOfConfig":"12232"},{"size":2728,"mtime":1786084511402,"results":"14804","hashOfConfig":"12232"},{"size":12693,"mtime":1786084511402,"results":"14805","hashOfConfig":"12232"},{"size":4859,"mtime":1786084511402,"results":"14806","hashOfConfig":"12232"},{"size":2185,"mtime":1786084511402,"results":"14807","hashOfConfig":"12232"},{"size":1588,"mtime":1786084511403,"results":"14808","hashOfConfig":"12232"},{"size":3346,"mtime":1786084511403,"results":"14809","hashOfConfig":"12232"},{"size":1053,"mtime":1786084511403,"results":"14810","hashOfConfig":"12232"},{"size":1097,"mtime":1786084511403,"results":"14811","hashOfConfig":"12232"},{"size":2853,"mtime":1786084511403,"results":"14812","hashOfConfig":"12232"},{"size":3552,"mtime":1786084511403,"results":"14813","hashOfConfig":"12232"},{"size":10064,"mtime":1786084511403,"results":"14814","hashOfConfig":"12232"},{"size":1057,"mtime":1786084511403,"results":"14815","hashOfConfig":"12232"},{"size":5430,"mtime":1786084511403,"results":"14816","hashOfConfig":"12232"},{"size":3303,"mtime":1786084511404,"results":"14817","hashOfConfig":"12232"},{"size":9912,"mtime":1786084511404,"results":"14818","hashOfConfig":"12232"},{"size":1433,"mtime":1786084511404,"results":"14819","hashOfConfig":"12232"},{"size":10522,"mtime":1786084511404,"results":"14820","hashOfConfig":"12232"},{"size":2149,"mtime":1786084511404,"results":"14821","hashOfConfig":"12232"},{"size":1376,"mtime":1786084511404,"results":"14822","hashOfConfig":"12232"},{"size":1971,"mtime":1786084511404,"results":"14823","hashOfConfig":"12232"},{"size":3466,"mtime":1786084511404,"results":"14824","hashOfConfig":"12232"},{"size":5473,"mtime":1786084511404,"results":"14825","hashOfConfig":"12232"},{"size":3236,"mtime":1786084511405,"results":"14826","hashOfConfig":"12232"},{"size":1805,"mtime":1786084511405,"results":"14827","hashOfConfig":"12232"},{"size":3431,"mtime":1786084511405,"results":"14828","hashOfConfig":"12232"},{"size":7275,"mtime":1786084511405,"results":"14829","hashOfConfig":"12232"},{"size":1198,"mtime":1786084511405,"results":"14830","hashOfConfig":"12232"},{"size":1440,"mtime":1786084511405,"results":"14831","hashOfConfig":"12232"},{"size":2619,"mtime":1786084511405,"results":"14832","hashOfConfig":"12232"},{"size":6629,"mtime":1786084511405,"results":"14833","hashOfConfig":"12232"},{"size":9550,"mtime":1786084511406,"results":"14834","hashOfConfig":"12232"},{"size":3038,"mtime":1786084511406,"results":"14835","hashOfConfig":"12232"},{"size":1595,"mtime":1786084511406,"results":"14836","hashOfConfig":"12232"},{"size":4304,"mtime":1786084511406,"results":"14837","hashOfConfig":"12232"},{"size":3578,"mtime":1786084511406,"results":"14838","hashOfConfig":"12232"},{"size":6596,"mtime":1786084511406,"results":"14839","hashOfConfig":"12232"},{"size":2552,"mtime":1786084511406,"results":"14840","hashOfConfig":"12232"},{"size":3565,"mtime":1786084511406,"results":"14841","hashOfConfig":"12232"},{"size":1860,"mtime":1786084511407,"results":"14842","hashOfConfig":"12232"},{"size":1245,"mtime":1786084511407,"results":"14843","hashOfConfig":"12232"},{"size":947,"mtime":1786084511407,"results":"14844","hashOfConfig":"12232"},{"size":3423,"mtime":1786084511407,"results":"14845","hashOfConfig":"12232"},{"size":2478,"mtime":1786084511407,"results":"14846","hashOfConfig":"12232"},{"size":28925,"mtime":1786084511407,"results":"14847","hashOfConfig":"12232"},{"size":14337,"mtime":1786084511408,"results":"14848","hashOfConfig":"12232"},{"size":14763,"mtime":1786084511408,"results":"14849","hashOfConfig":"12232"},{"size":4117,"mtime":1786084511408,"results":"14850","hashOfConfig":"12232"},{"size":8070,"mtime":1786084511408,"results":"14851","hashOfConfig":"12232"},{"size":1909,"mtime":1786084511408,"results":"14852","hashOfConfig":"12232"},{"size":5560,"mtime":1786084511408,"results":"14853","hashOfConfig":"12232"},{"size":7088,"mtime":1786084511408,"results":"14854","hashOfConfig":"12232"},{"size":7971,"mtime":1786084511409,"results":"14855","hashOfConfig":"12232"},{"size":2856,"mtime":1786084511409,"results":"14856","hashOfConfig":"12232"},{"size":6191,"mtime":1786084511409,"results":"14857","hashOfConfig":"12232"},{"size":18123,"mtime":1786084511409,"results":"14858","hashOfConfig":"12232"},{"size":3671,"mtime":1786084511409,"results":"14859","hashOfConfig":"12232"},{"size":11755,"mtime":1786084511409,"results":"14860","hashOfConfig":"12232"},{"size":7170,"mtime":1786084511410,"results":"14861","hashOfConfig":"12232"},{"size":16805,"mtime":1786084511410,"results":"14862","hashOfConfig":"12232"},{"size":7854,"mtime":1786084511410,"results":"14863","hashOfConfig":"12232"},{"size":4828,"mtime":1786084511410,"results":"14864","hashOfConfig":"12232"},{"size":7132,"mtime":1786084511410,"results":"14865","hashOfConfig":"12232"},{"size":2276,"mtime":1786084511410,"results":"14866","hashOfConfig":"12232"},{"size":9833,"mtime":1786084511410,"results":"14867","hashOfConfig":"12232"},{"size":12013,"mtime":1786084511411,"results":"14868","hashOfConfig":"8189"},{"size":2844,"mtime":1786084511411,"results":"14869","hashOfConfig":"12232"},{"size":1066,"mtime":1786084511411,"results":"14870","hashOfConfig":"12232"},{"size":7721,"mtime":1786084511411,"results":"14871","hashOfConfig":"12232"},{"size":1371,"mtime":1786084511411,"results":"14872","hashOfConfig":"12232"},{"size":1821,"mtime":1786084511411,"results":"14873","hashOfConfig":"12232"},{"size":1453,"mtime":1786084511411,"results":"14874","hashOfConfig":"12232"},{"size":1218,"mtime":1786084511411,"results":"14875","hashOfConfig":"12232"},{"size":2402,"mtime":1786084511412,"results":"14876","hashOfConfig":"12232"},{"size":1986,"mtime":1786084511412,"results":"14877","hashOfConfig":"12232"},{"size":3766,"mtime":1786084511412,"results":"14878","hashOfConfig":"12232"},{"size":4211,"mtime":1786084511412,"results":"14879","hashOfConfig":"12232"},{"size":5384,"mtime":1786084511412,"results":"14880","hashOfConfig":"12232"},{"size":4205,"mtime":1786084511412,"results":"14881","hashOfConfig":"12232"},{"size":2557,"mtime":1786084511412,"results":"14882","hashOfConfig":"12232"},{"size":2386,"mtime":1786084511412,"results":"14883","hashOfConfig":"12232"},{"size":8535,"mtime":1786084511413,"results":"14884","hashOfConfig":"12232"},{"size":2441,"mtime":1786084511413,"results":"14885","hashOfConfig":"12232"},{"size":2505,"mtime":1786084511413,"results":"14886","hashOfConfig":"12232"},{"size":2926,"mtime":1786084511413,"results":"14887","hashOfConfig":"12232"},{"size":4174,"mtime":1786084511413,"results":"14888","hashOfConfig":"12232"},{"size":7486,"mtime":1786084511413,"results":"14889","hashOfConfig":"12232"},{"size":6829,"mtime":1786084511413,"results":"14890","hashOfConfig":"12232"},{"size":3143,"mtime":1786084511413,"results":"14891","hashOfConfig":"12232"},{"size":2992,"mtime":1786084511414,"results":"14892","hashOfConfig":"12232"},{"size":1772,"mtime":1786084511414,"results":"14893","hashOfConfig":"12232"},{"size":2358,"mtime":1786084511414,"results":"14894","hashOfConfig":"12232"},{"size":4464,"mtime":1786084511414,"results":"14895","hashOfConfig":"12232"},{"size":1981,"mtime":1786084511414,"results":"14896","hashOfConfig":"12232"},{"size":2754,"mtime":1786084511414,"results":"14897","hashOfConfig":"12232"},{"size":3312,"mtime":1786084511414,"results":"14898","hashOfConfig":"12232"},{"size":4477,"mtime":1786084511414,"results":"14899","hashOfConfig":"12232"},{"size":4348,"mtime":1786084511415,"results":"14900","hashOfConfig":"12232"},{"size":557,"mtime":1786084511415,"results":"14901","hashOfConfig":"12232"},{"size":4703,"mtime":1786084511415,"results":"14902","hashOfConfig":"12232"},{"size":1625,"mtime":1786084511415,"results":"14903","hashOfConfig":"12232"},{"size":5420,"mtime":1786084511415,"results":"14904","hashOfConfig":"12232"},{"size":3484,"mtime":1786084511415,"results":"14905","hashOfConfig":"12232"},{"size":25849,"mtime":1786084511415,"results":"14906","hashOfConfig":"12232"},{"size":1161,"mtime":1786084511416,"results":"14907","hashOfConfig":"12232"},{"size":2454,"mtime":1786084511416,"results":"14908","hashOfConfig":"12232"},{"size":7045,"mtime":1786084511416,"results":"14909","hashOfConfig":"12232"},{"size":7829,"mtime":1786084511416,"results":"14910","hashOfConfig":"12232"},{"size":1287,"mtime":1786084511416,"results":"14911","hashOfConfig":"12232"},{"size":14506,"mtime":1786084511416,"results":"14912","hashOfConfig":"12232"},{"size":6805,"mtime":1786084511416,"results":"14913","hashOfConfig":"12232"},{"size":9248,"mtime":1786084511416,"results":"14914","hashOfConfig":"12232"},{"size":14281,"mtime":1786084511417,"results":"14915","hashOfConfig":"12232"},{"size":1843,"mtime":1786084511417,"results":"14916","hashOfConfig":"12232"},{"size":7969,"mtime":1786084511417,"results":"14917","hashOfConfig":"12232"},{"size":3999,"mtime":1786084511417,"results":"14918","hashOfConfig":"12232"},{"size":2103,"mtime":1786084511417,"results":"14919","hashOfConfig":"12232"},{"size":5256,"mtime":1786084511417,"results":"14920","hashOfConfig":"12232"},{"size":8613,"mtime":1786084511417,"results":"14921","hashOfConfig":"12232"},{"size":3522,"mtime":1786084511418,"results":"14922","hashOfConfig":"12232"},{"size":7858,"mtime":1786084511418,"results":"14923","hashOfConfig":"12232"},{"size":13384,"mtime":1786084511418,"results":"14924","hashOfConfig":"12232"},{"size":3509,"mtime":1786084511418,"results":"14925","hashOfConfig":"12232"},{"size":4816,"mtime":1786084511418,"results":"14926","hashOfConfig":"12232"},{"size":4963,"mtime":1786084511418,"results":"14927","hashOfConfig":"12232"},{"size":7218,"mtime":1786084511418,"results":"14928","hashOfConfig":"12232"},{"size":6603,"mtime":1786084511419,"results":"14929","hashOfConfig":"12232"},{"size":2834,"mtime":1786084511419,"results":"14930","hashOfConfig":"12232"},{"size":6478,"mtime":1786084511419,"results":"14931","hashOfConfig":"12232"},{"size":2058,"mtime":1786084511419,"results":"14932","hashOfConfig":"12232"},{"size":6898,"mtime":1786084511419,"results":"14933","hashOfConfig":"12232"},{"size":6546,"mtime":1786084511419,"results":"14934","hashOfConfig":"12232"},{"size":1951,"mtime":1786084511419,"results":"14935","hashOfConfig":"12232"},{"size":7147,"mtime":1786084511419,"results":"14936","hashOfConfig":"12232"},{"size":1849,"mtime":1786084511419,"results":"14937","hashOfConfig":"12232"},{"size":6722,"mtime":1786084511420,"results":"14938","hashOfConfig":"12232"},{"size":2294,"mtime":1786084511420,"results":"14939","hashOfConfig":"12232"},{"size":2864,"mtime":1786084511420,"results":"14940","hashOfConfig":"12232"},{"size":10387,"mtime":1786084511420,"results":"14941","hashOfConfig":"12232"},{"size":1420,"mtime":1786084511420,"results":"14942","hashOfConfig":"12232"},{"size":4640,"mtime":1786084511420,"results":"14943","hashOfConfig":"12232"},{"size":1904,"mtime":1786084511420,"results":"14944","hashOfConfig":"12232"},{"size":2887,"mtime":1786084511420,"results":"14945","hashOfConfig":"12232"},{"size":6065,"mtime":1786084511420,"results":"14946","hashOfConfig":"12232"},{"size":4091,"mtime":1786084511420,"results":"14947","hashOfConfig":"12232"},{"size":6110,"mtime":1786084511421,"results":"14948","hashOfConfig":"12232"},{"size":1517,"mtime":1786084511421,"results":"14949","hashOfConfig":"12232"},{"size":1603,"mtime":1786084511421,"results":"14950","hashOfConfig":"12232"},{"size":1903,"mtime":1786084511421,"results":"14951","hashOfConfig":"12232"},{"size":1612,"mtime":1786084511421,"results":"14952","hashOfConfig":"12232"},{"size":1837,"mtime":1786084511421,"results":"14953","hashOfConfig":"12232"},{"size":5762,"mtime":1786084511421,"results":"14954","hashOfConfig":"12232"},{"size":42635,"mtime":1786084511421,"results":"14955","hashOfConfig":"12232"},{"size":7857,"mtime":1786084511422,"results":"14956","hashOfConfig":"12232"},{"size":2166,"mtime":1786084511422,"results":"14957","hashOfConfig":"12232"},{"size":3723,"mtime":1786084511422,"results":"14958","hashOfConfig":"12232"},{"size":7151,"mtime":1786084511422,"results":"14959","hashOfConfig":"12232"},{"size":6987,"mtime":1786084511422,"results":"14960","hashOfConfig":"12232"},{"size":8946,"mtime":1786084511422,"results":"14961","hashOfConfig":"12232"},{"size":3515,"mtime":1786084511422,"results":"14962","hashOfConfig":"12232"},{"size":13487,"mtime":1786084511422,"results":"14963","hashOfConfig":"12232"},{"size":14667,"mtime":1786084511423,"results":"14964","hashOfConfig":"12232"},{"size":19943,"mtime":1786084511423,"results":"14965","hashOfConfig":"12232"},{"size":27726,"mtime":1786084511423,"results":"14966","hashOfConfig":"12232"},{"size":3097,"mtime":1786084511423,"results":"14967","hashOfConfig":"12232"},{"size":1770,"mtime":1786084511423,"results":"14968","hashOfConfig":"12232"},{"size":1759,"mtime":1786084511423,"results":"14969","hashOfConfig":"12232"},{"size":3383,"mtime":1786084511423,"results":"14970","hashOfConfig":"12232"},{"size":9622,"mtime":1786084511424,"results":"14971","hashOfConfig":"12232"},{"size":3745,"mtime":1786084511424,"results":"14972","hashOfConfig":"12232"},{"size":10733,"mtime":1786084511424,"results":"14973","hashOfConfig":"12232"},{"size":6963,"mtime":1786084511424,"results":"14974","hashOfConfig":"12232"},{"size":2763,"mtime":1786084511425,"results":"14975","hashOfConfig":"12232"},{"size":1602,"mtime":1786084511425,"results":"14976","hashOfConfig":"12232"},{"size":8307,"mtime":1786084511425,"results":"14977","hashOfConfig":"12232"},{"size":2803,"mtime":1786084511425,"results":"14978","hashOfConfig":"12232"},{"size":3689,"mtime":1786084511425,"results":"14979","hashOfConfig":"12232"},{"size":4073,"mtime":1786084511425,"results":"14980","hashOfConfig":"12232"},{"size":1238,"mtime":1786084511425,"results":"14981","hashOfConfig":"12232"},{"size":2915,"mtime":1786084511425,"results":"14982","hashOfConfig":"12232"},{"size":16415,"mtime":1786084511426,"results":"14983","hashOfConfig":"12232"},{"size":1595,"mtime":1786084511426,"results":"14984","hashOfConfig":"12232"},{"size":21249,"mtime":1786084511426,"results":"14985","hashOfConfig":"12232"},{"size":2489,"mtime":1786084511426,"results":"14986","hashOfConfig":"12232"},{"size":2804,"mtime":1786084511426,"results":"14987","hashOfConfig":"12232"},{"size":6458,"mtime":1786084511426,"results":"14988","hashOfConfig":"12232"},{"size":6203,"mtime":1786084511427,"results":"14989","hashOfConfig":"12232"},{"size":2288,"mtime":1786084511427,"results":"14990","hashOfConfig":"12232"},{"size":8844,"mtime":1786084511427,"results":"14991","hashOfConfig":"12232"},{"size":1678,"mtime":1786084511427,"results":"14992","hashOfConfig":"12232"},{"size":4906,"mtime":1786084511427,"results":"14993","hashOfConfig":"12232"},{"size":5624,"mtime":1786084511427,"results":"14994","hashOfConfig":"12232"},{"size":1835,"mtime":1786084511427,"results":"14995","hashOfConfig":"12232"},{"size":6044,"mtime":1786084511427,"results":"14996","hashOfConfig":"12232"},{"size":5946,"mtime":1786084511427,"results":"14997","hashOfConfig":"12232"},{"size":3058,"mtime":1786084511428,"results":"14998","hashOfConfig":"12232"},{"size":2057,"mtime":1786084511428,"results":"14999","hashOfConfig":"12232"},{"size":5051,"mtime":1786084511428,"results":"15000","hashOfConfig":"12232"},{"size":3061,"mtime":1786084511428,"results":"15001","hashOfConfig":"12232"},{"size":1698,"mtime":1786084511428,"results":"15002","hashOfConfig":"12232"},{"size":4244,"mtime":1786084511428,"results":"15003","hashOfConfig":"12232"},{"size":13598,"mtime":1786084511428,"results":"15004","hashOfConfig":"12232"},{"size":8125,"mtime":1786084511428,"results":"15005","hashOfConfig":"12232"},{"size":14102,"mtime":1786084511429,"results":"15006","hashOfConfig":"12232"},{"size":5896,"mtime":1786084511429,"results":"15007","hashOfConfig":"12232"},{"size":12415,"mtime":1786084511429,"results":"15008","hashOfConfig":"12232"},{"size":3018,"mtime":1786084511429,"results":"15009","hashOfConfig":"12232"},{"size":3415,"mtime":1786084511429,"results":"15010","hashOfConfig":"12232"},{"size":2639,"mtime":1786084511429,"results":"15011","hashOfConfig":"12232"},{"size":1617,"mtime":1786084511429,"results":"15012","hashOfConfig":"12232"},{"size":1652,"mtime":1786084511430,"results":"15013","hashOfConfig":"12232"},{"size":3276,"mtime":1786084511430,"results":"15014","hashOfConfig":"12232"},{"size":2579,"mtime":1786084511430,"results":"15015","hashOfConfig":"12232"},{"size":3350,"mtime":1786084511430,"results":"15016","hashOfConfig":"12232"},{"size":2252,"mtime":1786084511430,"results":"15017","hashOfConfig":"12232"},{"size":2765,"mtime":1786084511430,"results":"15018","hashOfConfig":"12232"},{"size":3709,"mtime":1786084511430,"results":"15019","hashOfConfig":"12232"},{"size":5218,"mtime":1786084511430,"results":"15020","hashOfConfig":"12232"},{"size":819,"mtime":1786084511430,"results":"15021","hashOfConfig":"12232"},{"size":8063,"mtime":1786084511431,"results":"15022","hashOfConfig":"12232"},{"size":1687,"mtime":1786084511431,"results":"15023","hashOfConfig":"12232"},{"size":2390,"mtime":1786084511431,"results":"15024","hashOfConfig":"12232"},{"size":2423,"mtime":1786084511431,"results":"15025","hashOfConfig":"12232"},{"size":1203,"mtime":1786084511431,"results":"15026","hashOfConfig":"12232"},{"size":2021,"mtime":1786084511431,"results":"15027","hashOfConfig":"12232"},{"size":3708,"mtime":1786084511431,"results":"15028","hashOfConfig":"12232"},{"size":4530,"mtime":1786084511431,"results":"15029","hashOfConfig":"12232"},{"size":2788,"mtime":1786084511431,"results":"15030","hashOfConfig":"12232"},{"size":8636,"mtime":1786084511432,"results":"15031","hashOfConfig":"12232"},{"size":5067,"mtime":1786084511432,"results":"15032","hashOfConfig":"12232"},{"size":4906,"mtime":1786084511432,"results":"15033","hashOfConfig":"12232"},{"size":1553,"mtime":1786084511432,"results":"15034","hashOfConfig":"12232"},{"size":3284,"mtime":1786084511432,"results":"15035","hashOfConfig":"12232"},{"size":4860,"mtime":1786084511432,"results":"15036","hashOfConfig":"12232"},{"size":1060,"mtime":1786084511432,"results":"15037","hashOfConfig":"12232"},{"size":3002,"mtime":1786084511433,"results":"15038","hashOfConfig":"12232"},{"size":10717,"mtime":1786084511433,"results":"15039","hashOfConfig":"12232"},{"size":2682,"mtime":1786084511433,"results":"15040","hashOfConfig":"12232"},{"size":2824,"mtime":1786084511433,"results":"15041","hashOfConfig":"12232"},{"size":2901,"mtime":1786084511433,"results":"15042","hashOfConfig":"12232"},{"size":4174,"mtime":1786084511433,"results":"15043","hashOfConfig":"12232"},{"size":3070,"mtime":1786084511433,"results":"15044","hashOfConfig":"12232"},{"size":742,"mtime":1786084511433,"results":"15045","hashOfConfig":"12232"},{"size":6630,"mtime":1786084511434,"results":"15046","hashOfConfig":"12232"},{"size":2872,"mtime":1786084511434,"results":"15047","hashOfConfig":"12232"},{"size":4266,"mtime":1786084511434,"results":"15048","hashOfConfig":"12232"},{"size":2120,"mtime":1786084511434,"results":"15049","hashOfConfig":"12232"},{"size":636,"mtime":1786084511434,"results":"15050","hashOfConfig":"12232"},{"size":2538,"mtime":1786084511434,"results":"15051","hashOfConfig":"12232"},{"size":7065,"mtime":1786084511434,"results":"15052","hashOfConfig":"12232"},{"size":2960,"mtime":1786084511434,"results":"15053","hashOfConfig":"12232"},{"size":4126,"mtime":1786084511435,"results":"15054","hashOfConfig":"12232"},{"size":4699,"mtime":1786084511435,"results":"15055","hashOfConfig":"12232"},{"size":2944,"mtime":1786084511435,"results":"15056","hashOfConfig":"12232"},{"size":4787,"mtime":1786084511435,"results":"15057","hashOfConfig":"12232"},{"size":6032,"mtime":1786084511435,"results":"15058","hashOfConfig":"12232"},{"size":2039,"mtime":1786084511435,"results":"15059","hashOfConfig":"12232"},{"size":4913,"mtime":1786084511435,"results":"15060","hashOfConfig":"12232"},{"size":3812,"mtime":1786084511435,"results":"15061","hashOfConfig":"12232"},{"size":7528,"mtime":1786084511436,"results":"15062","hashOfConfig":"12232"},{"size":2397,"mtime":1786084511436,"results":"15063","hashOfConfig":"12232"},{"size":1225,"mtime":1786084511436,"results":"15064","hashOfConfig":"12232"},{"size":944,"mtime":1786084511436,"results":"15065","hashOfConfig":"12232"},{"size":1318,"mtime":1786084511436,"results":"15066","hashOfConfig":"12232"},{"size":3258,"mtime":1786084511436,"results":"15067","hashOfConfig":"12232"},{"size":2546,"mtime":1786084511436,"results":"15068","hashOfConfig":"12232"},{"size":3103,"mtime":1786084511436,"results":"15069","hashOfConfig":"12232"},{"size":3612,"mtime":1786084511436,"results":"15070","hashOfConfig":"12232"},{"size":4007,"mtime":1786084511436,"results":"15071","hashOfConfig":"12232"},{"size":5261,"mtime":1786084511437,"results":"15072","hashOfConfig":"12232"},{"size":4155,"mtime":1786084511437,"results":"15073","hashOfConfig":"12232"},{"size":7520,"mtime":1786084529049,"results":"15074","hashOfConfig":"12232"},{"size":13128,"mtime":1786084511437,"results":"15075","hashOfConfig":"12232"},{"size":3669,"mtime":1786084511437,"results":"15076","hashOfConfig":"12232"},{"size":4638,"mtime":1786084511437,"results":"15077","hashOfConfig":"12232"},{"size":884,"mtime":1786084511437,"results":"15078","hashOfConfig":"12232"},{"size":14448,"mtime":1786084511437,"results":"15079","hashOfConfig":"12232"},{"size":2639,"mtime":1786084511438,"results":"15080","hashOfConfig":"12232"},{"size":5238,"mtime":1786084511438,"results":"15081","hashOfConfig":"12232"},{"size":3915,"mtime":1786084511438,"results":"15082","hashOfConfig":"12232"},{"size":10275,"mtime":1786084511438,"results":"15083","hashOfConfig":"12232"},{"size":5402,"mtime":1786084511438,"results":"15084","hashOfConfig":"12232"},{"size":4932,"mtime":1786084511438,"results":"15085","hashOfConfig":"12232"},{"size":21649,"mtime":1786084511439,"results":"15086","hashOfConfig":"12232"},{"size":7250,"mtime":1786084511439,"results":"15087","hashOfConfig":"12232"},{"size":3949,"mtime":1786084511439,"results":"15088","hashOfConfig":"12232"},{"size":15649,"mtime":1786084511439,"results":"15089","hashOfConfig":"12232"},{"size":6312,"mtime":1786084511439,"results":"15090","hashOfConfig":"12232"},{"size":62729,"mtime":1786086084025,"results":"15091","hashOfConfig":"12232"},{"size":2779,"mtime":1786084511439,"results":"15092","hashOfConfig":"12232"},{"size":4559,"mtime":1786084511439,"results":"15093","hashOfConfig":"12232"},{"size":5934,"mtime":1786084511440,"results":"15094","hashOfConfig":"12232"},{"size":1758,"mtime":1786084511440,"results":"15095","hashOfConfig":"12232"},{"size":9373,"mtime":1786084511440,"results":"15096","hashOfConfig":"12232"},{"size":2548,"mtime":1786084511440,"results":"15097","hashOfConfig":"12232"},{"size":11946,"mtime":1786084511440,"results":"15098","hashOfConfig":"12232"},{"size":2946,"mtime":1786084511440,"results":"15099","hashOfConfig":"12232"},{"size":8705,"mtime":1786084511440,"results":"15100","hashOfConfig":"12232"},{"size":4586,"mtime":1786084511440,"results":"15101","hashOfConfig":"12232"},{"size":1611,"mtime":1786084511441,"results":"15102","hashOfConfig":"12232"},{"size":10567,"mtime":1786084511441,"results":"15103","hashOfConfig":"12232"},{"size":11114,"mtime":1786084511441,"results":"15104","hashOfConfig":"12232"},{"size":1283,"mtime":1786084511441,"results":"15105","hashOfConfig":"12232"},{"size":4323,"mtime":1786084511441,"results":"15106","hashOfConfig":"12232"},{"size":6284,"mtime":1786084511441,"results":"15107","hashOfConfig":"12232"},{"size":680,"mtime":1786084511441,"results":"15108","hashOfConfig":"12232"},{"size":930,"mtime":1786084511441,"results":"15109","hashOfConfig":"12232"},{"size":2403,"mtime":1786084511442,"results":"15110","hashOfConfig":"12232"},{"size":2867,"mtime":1786084511442,"results":"15111","hashOfConfig":"12232"},{"size":2517,"mtime":1786084511442,"results":"15112","hashOfConfig":"12232"},{"size":1810,"mtime":1786084511442,"results":"15113","hashOfConfig":"12232"},{"size":3380,"mtime":1786084511442,"results":"15114","hashOfConfig":"12232"},{"size":1347,"mtime":1786084511442,"results":"15115","hashOfConfig":"12232"},{"size":2202,"mtime":1786084511442,"results":"15116","hashOfConfig":"12232"},{"size":1255,"mtime":1786084511442,"results":"15117","hashOfConfig":"12232"},{"size":2800,"mtime":1786084511442,"results":"15118","hashOfConfig":"12232"},{"size":4890,"mtime":1786084511443,"results":"15119","hashOfConfig":"12232"},{"size":2258,"mtime":1786084511443,"results":"15120","hashOfConfig":"12232"},{"size":6373,"mtime":1786084511443,"results":"15121","hashOfConfig":"12232"},{"size":16702,"mtime":1786084511443,"results":"15122","hashOfConfig":"12232"},{"size":3985,"mtime":1786084511443,"results":"15123","hashOfConfig":"12232"},{"size":859,"mtime":1786084511443,"results":"15124","hashOfConfig":"12232"},{"size":1871,"mtime":1786084511443,"results":"15125","hashOfConfig":"12232"},{"size":3760,"mtime":1786084511444,"results":"15126","hashOfConfig":"12232"},{"size":7280,"mtime":1786084511444,"results":"15127","hashOfConfig":"12232"},{"size":784,"mtime":1786084511444,"results":"15128","hashOfConfig":"12232"},{"size":3232,"mtime":1786084511444,"results":"15129","hashOfConfig":"12232"},{"size":4989,"mtime":1786084511444,"results":"15130","hashOfConfig":"12232"},{"size":1369,"mtime":1786084511444,"results":"15131","hashOfConfig":"12232"},{"size":2912,"mtime":1786084511444,"results":"15132","hashOfConfig":"12232"},{"size":9331,"mtime":1786084511445,"results":"15133","hashOfConfig":"12232"},{"size":6723,"mtime":1786084511445,"results":"15134","hashOfConfig":"12232"},{"size":1476,"mtime":1786084511445,"results":"15135","hashOfConfig":"12232"},{"size":1153,"mtime":1786084511445,"results":"15136","hashOfConfig":"12232"},{"size":973,"mtime":1786084511445,"results":"15137","hashOfConfig":"12232"},{"size":3515,"mtime":1786084511445,"results":"15138","hashOfConfig":"12232"},{"size":7795,"mtime":1786084511445,"results":"15139","hashOfConfig":"12232"},{"size":2332,"mtime":1786084511446,"results":"15140","hashOfConfig":"12232"},{"size":12393,"mtime":1786084511446,"results":"15141","hashOfConfig":"12232"},{"size":2449,"mtime":1786084511446,"results":"15142","hashOfConfig":"12232"},{"size":7909,"mtime":1786084511446,"results":"15143","hashOfConfig":"12232"},{"size":3438,"mtime":1786084511446,"results":"15144","hashOfConfig":"12232"},{"size":3785,"mtime":1786084511446,"results":"15145","hashOfConfig":"12232"},{"size":111240,"mtime":1786084511447,"results":"15146","hashOfConfig":"12232"},{"size":2281,"mtime":1786084511447,"results":"15147","hashOfConfig":"12232"},{"size":1904,"mtime":1786084511447,"results":"15148","hashOfConfig":"12232"},{"size":4144,"mtime":1786084511447,"results":"15149","hashOfConfig":"12232"},{"size":2922,"mtime":1786084511448,"results":"15150","hashOfConfig":"12232"},{"size":603,"mtime":1786084511448,"results":"15151","hashOfConfig":"12232"},{"size":14488,"mtime":1786084511448,"results":"15152","hashOfConfig":"12232"},{"size":4159,"mtime":1786084511448,"results":"15153","hashOfConfig":"12232"},{"size":3520,"mtime":1786084511448,"results":"15154","hashOfConfig":"12232"},{"size":6069,"mtime":1786084511448,"results":"15155","hashOfConfig":"12232"},{"size":4840,"mtime":1786084511448,"results":"15156","hashOfConfig":"12232"},{"size":5188,"mtime":1786084511449,"results":"15157","hashOfConfig":"12232"},{"size":6428,"mtime":1786084511449,"results":"15158","hashOfConfig":"12232"},{"size":3509,"mtime":1786084511449,"results":"15159","hashOfConfig":"12232"},{"size":9040,"mtime":1786084511449,"results":"15160","hashOfConfig":"12232"},{"size":42111,"mtime":1786084511450,"results":"15161","hashOfConfig":"12232"},{"size":13081,"mtime":1786084511450,"results":"15162","hashOfConfig":"12232"},{"size":1234,"mtime":1786084511450,"results":"15163","hashOfConfig":"12232"},{"size":10220,"mtime":1786084511450,"results":"15164","hashOfConfig":"12232"},{"size":8148,"mtime":1786084511450,"results":"15165","hashOfConfig":"12232"},{"size":5217,"mtime":1786084511450,"results":"15166","hashOfConfig":"12232"},{"size":2219,"mtime":1786084511451,"results":"15167","hashOfConfig":"12232"},{"size":3794,"mtime":1786084511451,"results":"15168","hashOfConfig":"12232"},{"size":4553,"mtime":1786084511451,"results":"15169","hashOfConfig":"12232"},{"size":2973,"mtime":1786084511451,"results":"15170","hashOfConfig":"12232"},{"size":8086,"mtime":1786084511451,"results":"15171","hashOfConfig":"12232"},{"size":13541,"mtime":1786084511451,"results":"15172","hashOfConfig":"12232"},{"size":989,"mtime":1786084511451,"results":"15173","hashOfConfig":"12232"},{"size":6524,"mtime":1786084511452,"results":"15174","hashOfConfig":"12232"},{"size":1780,"mtime":1786084511452,"results":"15175","hashOfConfig":"12232"},{"size":2577,"mtime":1786084511452,"results":"15176","hashOfConfig":"12232"},{"size":8257,"mtime":1786084511452,"results":"15177","hashOfConfig":"12232"},{"size":1187,"mtime":1786084511452,"results":"15178","hashOfConfig":"12232"},{"size":1753,"mtime":1786084511452,"results":"15179","hashOfConfig":"12232"},{"size":2906,"mtime":1786084511452,"results":"15180","hashOfConfig":"12232"},{"size":861,"mtime":1786084511452,"results":"15181","hashOfConfig":"12232"},{"size":2696,"mtime":1786084511452,"results":"15182","hashOfConfig":"12232"},{"size":1130,"mtime":1786084511453,"results":"15183","hashOfConfig":"12232"},{"size":1271,"mtime":1786084511453,"results":"15184","hashOfConfig":"12232"},{"size":7564,"mtime":1786084511453,"results":"15185","hashOfConfig":"12232"},{"size":6976,"mtime":1786084511453,"results":"15186","hashOfConfig":"12232"},{"size":3646,"mtime":1786084511453,"results":"15187","hashOfConfig":"12232"},{"size":1179,"mtime":1786084511453,"results":"15188","hashOfConfig":"12232"},{"size":2648,"mtime":1786084511453,"results":"15189","hashOfConfig":"12232"},{"size":1408,"mtime":1786084511453,"results":"15190","hashOfConfig":"12232"},{"size":3176,"mtime":1786084511454,"results":"15191","hashOfConfig":"12232"},{"size":2421,"mtime":1786084511454,"results":"15192","hashOfConfig":"12232"},{"size":25839,"mtime":1786084511454,"results":"15193","hashOfConfig":"12232"},{"size":1217,"mtime":1786084511454,"results":"15194","hashOfConfig":"12232"},{"size":3649,"mtime":1786084511454,"results":"15195","hashOfConfig":"12232"},{"size":8814,"mtime":1786084511454,"results":"15196","hashOfConfig":"12232"},{"size":4604,"mtime":1786084511455,"results":"15197","hashOfConfig":"12232"},{"size":7909,"mtime":1786084511455,"results":"15198","hashOfConfig":"12232"},{"size":6328,"mtime":1786084511455,"results":"15199","hashOfConfig":"12232"},{"size":6739,"mtime":1786084511455,"results":"15200","hashOfConfig":"12232"},{"size":13522,"mtime":1786084511455,"results":"15201","hashOfConfig":"12232"},{"size":3247,"mtime":1786084511455,"results":"15202","hashOfConfig":"12232"},{"size":20643,"mtime":1786084511455,"results":"15203","hashOfConfig":"12232"},{"size":3361,"mtime":1786084511456,"results":"15204","hashOfConfig":"12232"},{"size":1608,"mtime":1786084511456,"results":"15205","hashOfConfig":"12232"},{"size":3471,"mtime":1786084511456,"results":"15206","hashOfConfig":"12232"},{"size":5654,"mtime":1786084511456,"results":"15207","hashOfConfig":"12232"},{"size":14701,"mtime":1786084511456,"results":"15208","hashOfConfig":"12232"},{"size":1252,"mtime":1786084511456,"results":"15209","hashOfConfig":"12232"},{"size":1324,"mtime":1786084511456,"results":"15210","hashOfConfig":"12232"},{"size":2580,"mtime":1786084511456,"results":"15211","hashOfConfig":"12232"},{"size":3224,"mtime":1786084511457,"results":"15212","hashOfConfig":"12232"},{"size":1863,"mtime":1786084511457,"results":"15213","hashOfConfig":"12232"},{"size":1908,"mtime":1786084511457,"results":"15214","hashOfConfig":"12232"},{"size":3852,"mtime":1786084511457,"results":"15215","hashOfConfig":"12232"},{"size":975,"mtime":1786084511457,"results":"15216","hashOfConfig":"12232"},{"size":8029,"mtime":1786084511457,"results":"15217","hashOfConfig":"12232"},{"size":1038,"mtime":1786084511457,"results":"15218","hashOfConfig":"12232"},{"size":3782,"mtime":1786084511457,"results":"15219","hashOfConfig":"12232"},{"size":3188,"mtime":1786084511457,"results":"15220","hashOfConfig":"12232"},{"size":10950,"mtime":1786084511458,"results":"15221","hashOfConfig":"12232"},{"size":9141,"mtime":1786084511458,"results":"15222","hashOfConfig":"12232"},{"size":3089,"mtime":1786084511458,"results":"15223","hashOfConfig":"12232"},{"size":2087,"mtime":1786084511458,"results":"15224","hashOfConfig":"12232"},{"size":5146,"mtime":1786084511458,"results":"15225","hashOfConfig":"12232"},{"size":1264,"mtime":1786084511458,"results":"15226","hashOfConfig":"12232"},{"size":1084,"mtime":1786084511458,"results":"15227","hashOfConfig":"12232"},{"size":3191,"mtime":1786084511459,"results":"15228","hashOfConfig":"12232"},{"size":5393,"mtime":1786084511459,"results":"15229","hashOfConfig":"12232"},{"size":20738,"mtime":1786084511459,"results":"15230","hashOfConfig":"12232"},{"size":615,"mtime":1786084511459,"results":"15231","hashOfConfig":"12232"},{"size":15361,"mtime":1786084511459,"results":"15232","hashOfConfig":"12232"},{"size":8208,"mtime":1786084511460,"results":"15233","hashOfConfig":"12232"},{"size":1556,"mtime":1786084511460,"results":"15234","hashOfConfig":"12232"},{"size":2848,"mtime":1786084511460,"results":"15235","hashOfConfig":"12232"},{"size":3495,"mtime":1786084511460,"results":"15236","hashOfConfig":"12232"},{"size":6027,"mtime":1786084511460,"results":"15237","hashOfConfig":"12232"},{"size":5163,"mtime":1786084511460,"results":"15238","hashOfConfig":"12232"},{"size":4298,"mtime":1786084511460,"results":"15239","hashOfConfig":"12232"},{"size":7622,"mtime":1786084511460,"results":"15240","hashOfConfig":"12232"},{"size":9400,"mtime":1786084511461,"results":"15241","hashOfConfig":"12232"},{"size":5347,"mtime":1786084511461,"results":"15242","hashOfConfig":"12232"},{"size":12210,"mtime":1786084511461,"results":"15243","hashOfConfig":"12232"},{"size":4117,"mtime":1786084511461,"results":"15244","hashOfConfig":"12232"},{"size":3245,"mtime":1786084511461,"results":"15245","hashOfConfig":"12232"},{"size":2491,"mtime":1786084511461,"results":"15246","hashOfConfig":"12232"},{"size":1734,"mtime":1786084511461,"results":"15247","hashOfConfig":"12232"},{"size":2724,"mtime":1786084511461,"results":"15248","hashOfConfig":"12232"},{"size":1334,"mtime":1786084511462,"results":"15249","hashOfConfig":"12232"},{"size":1764,"mtime":1786084511462,"results":"15250","hashOfConfig":"12232"},{"size":8185,"mtime":1786084511462,"results":"15251","hashOfConfig":"12232"},{"size":5300,"mtime":1786084511462,"results":"15252","hashOfConfig":"12232"},{"size":5591,"mtime":1786084511462,"results":"15253","hashOfConfig":"12232"},{"size":2315,"mtime":1786084511462,"results":"15254","hashOfConfig":"12232"},{"size":14758,"mtime":1786084511462,"results":"15255","hashOfConfig":"12232"},{"size":3405,"mtime":1786084511463,"results":"15256","hashOfConfig":"12232"},{"size":10704,"mtime":1786084511463,"results":"15257","hashOfConfig":"12232"},{"size":16293,"mtime":1786084511463,"results":"15258","hashOfConfig":"12232"},{"size":577,"mtime":1786084511463,"results":"15259","hashOfConfig":"12232"},{"size":8025,"mtime":1786084511463,"results":"15260","hashOfConfig":"12232"},{"size":1409,"mtime":1786084511463,"results":"15261","hashOfConfig":"12232"},{"size":3799,"mtime":1786084511463,"results":"15262","hashOfConfig":"12232"},{"size":6226,"mtime":1786084511463,"results":"15263","hashOfConfig":"12232"},{"size":5780,"mtime":1786084511464,"results":"15264","hashOfConfig":"12232"},{"size":4671,"mtime":1786084511464,"results":"15265","hashOfConfig":"12232"},{"size":9029,"mtime":1786084511464,"results":"15266","hashOfConfig":"12232"},{"size":6446,"mtime":1786084511464,"results":"15267","hashOfConfig":"12232"},{"size":1291,"mtime":1786084511464,"results":"15268","hashOfConfig":"12232"},{"size":11685,"mtime":1786084511464,"results":"15269","hashOfConfig":"12232"},{"size":3453,"mtime":1786084511465,"results":"15270","hashOfConfig":"12232"},{"size":9184,"mtime":1786084511465,"results":"15271","hashOfConfig":"12232"},{"size":6946,"mtime":1786084511465,"results":"15272","hashOfConfig":"12232"},{"size":7312,"mtime":1786084511465,"results":"15273","hashOfConfig":"12232"},{"size":8636,"mtime":1786084511465,"results":"15274","hashOfConfig":"12232"},{"size":11662,"mtime":1786084511465,"results":"15275","hashOfConfig":"12232"},{"size":3306,"mtime":1786084511465,"results":"15276","hashOfConfig":"12232"},{"size":6442,"mtime":1786084511465,"results":"15277","hashOfConfig":"12232"},{"size":16685,"mtime":1786084511466,"results":"15278","hashOfConfig":"12232"},{"size":10685,"mtime":1786084511466,"results":"15279","hashOfConfig":"12232"},{"size":7174,"mtime":1786084511466,"results":"15280","hashOfConfig":"12232"},{"size":8105,"mtime":1786084511466,"results":"15281","hashOfConfig":"12232"},{"size":16375,"mtime":1786084511466,"results":"15282","hashOfConfig":"12232"},{"size":11801,"mtime":1786084511467,"results":"15283","hashOfConfig":"12232"},{"size":4206,"mtime":1786084511467,"results":"15284","hashOfConfig":"12232"},{"size":8862,"mtime":1786084511467,"results":"15285","hashOfConfig":"12232"},{"size":7722,"mtime":1786084511467,"results":"15286","hashOfConfig":"12232"},{"size":6320,"mtime":1786084511467,"results":"15287","hashOfConfig":"12232"},{"size":10066,"mtime":1786084511467,"results":"15288","hashOfConfig":"12232"},{"size":21777,"mtime":1786084511468,"results":"15289","hashOfConfig":"12232"},{"size":3242,"mtime":1786084511468,"results":"15290","hashOfConfig":"12232"},{"size":6933,"mtime":1786084511468,"results":"15291","hashOfConfig":"12232"},{"size":7945,"mtime":1786084511468,"results":"15292","hashOfConfig":"12232"},{"size":2891,"mtime":1786084511468,"results":"15293","hashOfConfig":"12232"},{"size":5127,"mtime":1786084511468,"results":"15294","hashOfConfig":"12232"},{"size":1819,"mtime":1786084511468,"results":"15295","hashOfConfig":"12232"},{"size":3829,"mtime":1786084511468,"results":"15296","hashOfConfig":"12232"},{"size":7900,"mtime":1786084511469,"results":"15297","hashOfConfig":"12232"},{"size":8143,"mtime":1786084511469,"results":"15298","hashOfConfig":"12232"},{"size":9677,"mtime":1786084511469,"results":"15299","hashOfConfig":"12232"},{"size":5502,"mtime":1786084511469,"results":"15300","hashOfConfig":"12232"},{"size":11385,"mtime":1786084511469,"results":"15301","hashOfConfig":"12232"},{"size":1949,"mtime":1786084511469,"results":"15302","hashOfConfig":"12232"},{"size":6695,"mtime":1786084511470,"results":"15303","hashOfConfig":"12232"},{"size":8407,"mtime":1786084511470,"results":"15304","hashOfConfig":"12232"},{"size":7015,"mtime":1786084511470,"results":"15305","hashOfConfig":"12232"},{"size":8702,"mtime":1786084511470,"results":"15306","hashOfConfig":"12232"},{"size":10103,"mtime":1786084511470,"results":"15307","hashOfConfig":"12232"},{"size":7425,"mtime":1786084511470,"results":"15308","hashOfConfig":"12232"},{"size":4168,"mtime":1786084511470,"results":"15309","hashOfConfig":"12232"},{"size":12678,"mtime":1786084511471,"results":"15310","hashOfConfig":"12232"},{"size":5154,"mtime":1786084511471,"results":"15311","hashOfConfig":"12232"},{"size":9669,"mtime":1786084511471,"results":"15312","hashOfConfig":"12232"},{"size":775,"mtime":1786084511471,"results":"15313","hashOfConfig":"12232"},{"size":6099,"mtime":1786084511471,"results":"15314","hashOfConfig":"12232"},{"size":20776,"mtime":1786084511472,"results":"15315","hashOfConfig":"12232"},{"size":9716,"mtime":1786084511472,"results":"15316","hashOfConfig":"12232"},{"size":6510,"mtime":1786084511472,"results":"15317","hashOfConfig":"12232"},{"size":11406,"mtime":1786084511472,"results":"15318","hashOfConfig":"12232"},{"size":6179,"mtime":1786084511473,"results":"15319","hashOfConfig":"12232"},{"size":4630,"mtime":1786084511473,"results":"15320","hashOfConfig":"12232"},{"size":6181,"mtime":1786084511473,"results":"15321","hashOfConfig":"12232"},{"size":9706,"mtime":1786084511473,"results":"15322","hashOfConfig":"12232"},{"size":2056,"mtime":1786084511473,"results":"15323","hashOfConfig":"12232"},{"size":3622,"mtime":1786084511473,"results":"15324","hashOfConfig":"12232"},{"size":8028,"mtime":1786084511473,"results":"15325","hashOfConfig":"12232"},{"size":9235,"mtime":1786084511473,"results":"15326","hashOfConfig":"12232"},{"size":9325,"mtime":1786084511474,"results":"15327","hashOfConfig":"12232"},{"size":4909,"mtime":1786084511474,"results":"15328","hashOfConfig":"12232"},{"size":3120,"mtime":1786084511474,"results":"15329","hashOfConfig":"12232"},{"size":3079,"mtime":1786084511474,"results":"15330","hashOfConfig":"12232"},{"size":4643,"mtime":1786084511474,"results":"15331","hashOfConfig":"12232"},{"size":9949,"mtime":1786084511474,"results":"15332","hashOfConfig":"12232"},{"size":21489,"mtime":1786084511475,"results":"15333","hashOfConfig":"12232"},{"size":7461,"mtime":1786084511475,"results":"15334","hashOfConfig":"12232"},{"size":2231,"mtime":1786084511475,"results":"15335","hashOfConfig":"12232"},{"size":9230,"mtime":1786084511475,"results":"15336","hashOfConfig":"12232"},{"size":2694,"mtime":1786084511475,"results":"15337","hashOfConfig":"12232"},{"size":28780,"mtime":1786084511475,"results":"15338","hashOfConfig":"12232"},{"size":12006,"mtime":1786084511476,"results":"15339","hashOfConfig":"12232"},{"size":26510,"mtime":1786084511476,"results":"15340","hashOfConfig":"12232"},{"size":1645,"mtime":1786084511476,"results":"15341","hashOfConfig":"12232"},{"size":4406,"mtime":1786084511476,"results":"15342","hashOfConfig":"12232"},{"size":4369,"mtime":1786084511476,"results":"15343","hashOfConfig":"12232"},{"size":5414,"mtime":1786084511476,"results":"15344","hashOfConfig":"12232"},{"size":4151,"mtime":1786084511477,"results":"15345","hashOfConfig":"12232"},{"size":1680,"mtime":1786084511477,"results":"15346","hashOfConfig":"12232"},{"size":1692,"mtime":1786084511477,"results":"15347","hashOfConfig":"12232"},{"size":3181,"mtime":1786084511477,"results":"15348","hashOfConfig":"12232"},{"size":3390,"mtime":1786084511477,"results":"15349","hashOfConfig":"12232"},{"size":7025,"mtime":1786084511477,"results":"15350","hashOfConfig":"12232"},{"size":5934,"mtime":1786084511478,"results":"15351","hashOfConfig":"12232"},{"size":4331,"mtime":1786084511478,"results":"15352","hashOfConfig":"12232"},{"size":2714,"mtime":1786084511478,"results":"15353","hashOfConfig":"12232"},{"size":612,"mtime":1786084511478,"results":"15354","hashOfConfig":"12232"},{"size":685,"mtime":1786084511478,"results":"15355","hashOfConfig":"12285"},{"size":3244,"mtime":1786084511478,"results":"15356","hashOfConfig":"12232"},{"size":31983,"mtime":1786084511478,"results":"15357","hashOfConfig":"12232"},{"size":2357,"mtime":1786084511478,"results":"15358","hashOfConfig":"12232"},{"size":2969,"mtime":1786084511479,"results":"15359","hashOfConfig":"12232"},{"size":3346,"mtime":1786084511479,"results":"15360","hashOfConfig":"12232"},{"size":5016,"mtime":1786084511479,"results":"15361","hashOfConfig":"12232"},{"size":3414,"mtime":1786084511479,"results":"15362","hashOfConfig":"12232"},{"size":8667,"mtime":1786084511479,"results":"15363","hashOfConfig":"12232"},{"size":5396,"mtime":1786084511479,"results":"15364","hashOfConfig":"12232"},{"size":1640,"mtime":1786084511479,"results":"15365","hashOfConfig":"12232"},{"size":5798,"mtime":1786084511480,"results":"15366","hashOfConfig":"12232"},{"size":1689,"mtime":1786084511480,"results":"15367","hashOfConfig":"12232"},{"size":2247,"mtime":1786084511480,"results":"15368","hashOfConfig":"12232"},{"size":6002,"mtime":1786084511480,"results":"15369","hashOfConfig":"12232"},{"size":8758,"mtime":1786084511480,"results":"15370","hashOfConfig":"12232"},{"size":4791,"mtime":1786084511480,"results":"15371","hashOfConfig":"12232"},{"size":5134,"mtime":1786084511480,"results":"15372","hashOfConfig":"12232"},{"size":10826,"mtime":1786084511480,"results":"15373","hashOfConfig":"12232"},{"size":3873,"mtime":1786084511480,"results":"15374","hashOfConfig":"12232"},{"size":3240,"mtime":1786084511481,"results":"15375","hashOfConfig":"12232"},{"size":2646,"mtime":1786084511481,"results":"15376","hashOfConfig":"12232"},{"size":3082,"mtime":1786084511481,"results":"15377","hashOfConfig":"12232"},{"size":4562,"mtime":1786084511481,"results":"15378","hashOfConfig":"12232"},{"size":2091,"mtime":1786084511481,"results":"15379","hashOfConfig":"12232"},{"size":3050,"mtime":1786084511481,"results":"15380","hashOfConfig":"12232"},{"size":11552,"mtime":1786084511481,"results":"15381","hashOfConfig":"12232"},{"size":1010,"mtime":1786084511481,"results":"15382","hashOfConfig":"12232"},{"size":2137,"mtime":1786084511482,"results":"15383","hashOfConfig":"12232"},{"size":8513,"mtime":1786084511482,"results":"15384","hashOfConfig":"12232"},{"size":4405,"mtime":1786084511482,"results":"15385","hashOfConfig":"12232"},{"size":11552,"mtime":1786084511482,"results":"15386","hashOfConfig":"12232"},{"size":5931,"mtime":1786084511482,"results":"15387","hashOfConfig":"12232"},{"size":971,"mtime":1786084511482,"results":"15388","hashOfConfig":"12232"},{"size":2087,"mtime":1786084511482,"results":"15389","hashOfConfig":"12232"},{"size":4874,"mtime":1786084511483,"results":"15390","hashOfConfig":"12232"},{"size":1996,"mtime":1786084511483,"results":"15391","hashOfConfig":"12232"},{"size":1675,"mtime":1786084511483,"results":"15392","hashOfConfig":"12232"},{"size":6239,"mtime":1786084511483,"results":"15393","hashOfConfig":"12232"},{"size":4913,"mtime":1786084511483,"results":"15394","hashOfConfig":"12232"},{"size":4281,"mtime":1786084511483,"results":"15395","hashOfConfig":"12232"},{"size":4931,"mtime":1786084511483,"results":"15396","hashOfConfig":"12232"},{"size":1847,"mtime":1786084511483,"results":"15397","hashOfConfig":"12232"},{"size":2651,"mtime":1786084511484,"results":"15398","hashOfConfig":"12232"},{"size":1155,"mtime":1786084511484,"results":"15399","hashOfConfig":"12232"},{"size":3507,"mtime":1786084511484,"results":"15400","hashOfConfig":"12232"},{"size":4452,"mtime":1786084511484,"results":"15401","hashOfConfig":"12232"},{"size":4215,"mtime":1786084511484,"results":"15402","hashOfConfig":"12232"},{"size":2818,"mtime":1786084511484,"results":"15403","hashOfConfig":"12232"},{"size":2391,"mtime":1786084511484,"results":"15404","hashOfConfig":"12232"},{"size":7485,"mtime":1786084511484,"results":"15405","hashOfConfig":"12232"},{"size":3464,"mtime":1786084511484,"results":"15406","hashOfConfig":"12232"},{"size":5934,"mtime":1786084511485,"results":"15407","hashOfConfig":"12232"},{"size":5438,"mtime":1786084511485,"results":"15408","hashOfConfig":"12232"},{"size":8049,"mtime":1786084511485,"results":"15409","hashOfConfig":"12232"},{"size":1247,"mtime":1786084511485,"results":"15410","hashOfConfig":"12232"},{"size":6375,"mtime":1786084511485,"results":"15411","hashOfConfig":"12232"},{"size":1526,"mtime":1786084511485,"results":"15412","hashOfConfig":"12232"},{"size":8217,"mtime":1786084511485,"results":"15413","hashOfConfig":"12232"},{"size":2183,"mtime":1786084511485,"results":"15414","hashOfConfig":"12232"},{"size":4207,"mtime":1786084511486,"results":"15415","hashOfConfig":"12232"},{"size":2651,"mtime":1786084511486,"results":"15416","hashOfConfig":"12232"},{"size":1979,"mtime":1786084511486,"results":"15417","hashOfConfig":"12232"},{"size":674,"mtime":1786084511486,"results":"15418","hashOfConfig":"12232"},{"size":5146,"mtime":1786084511486,"results":"15419","hashOfConfig":"12232"},{"size":1693,"mtime":1786084511486,"results":"15420","hashOfConfig":"12232"},{"size":1682,"mtime":1786084511486,"results":"15421","hashOfConfig":"12232"},{"size":2893,"mtime":1786084511487,"results":"15422","hashOfConfig":"12232"},{"size":3184,"mtime":1786084511487,"results":"15423","hashOfConfig":"12232"},{"size":2342,"mtime":1786084511487,"results":"15424","hashOfConfig":"12232"},{"size":2834,"mtime":1786084511487,"results":"15425","hashOfConfig":"12232"},{"size":4137,"mtime":1786084511487,"results":"15426","hashOfConfig":"12232"},{"size":3453,"mtime":1786084511487,"results":"15427","hashOfConfig":"12232"},{"size":1435,"mtime":1786084511487,"results":"15428","hashOfConfig":"12232"},{"size":1890,"mtime":1786084511487,"results":"15429","hashOfConfig":"12232"},{"size":4331,"mtime":1786084511488,"results":"15430","hashOfConfig":"12232"},{"size":7615,"mtime":1786084511488,"results":"15431","hashOfConfig":"12232"},{"size":6753,"mtime":1786084511488,"results":"15432","hashOfConfig":"12232"},{"size":3614,"mtime":1786084511488,"results":"15433","hashOfConfig":"12232"},{"size":6845,"mtime":1786084511488,"results":"15434","hashOfConfig":"12232"},{"size":2267,"mtime":1786084511488,"results":"15435","hashOfConfig":"12232"},{"size":4609,"mtime":1786084511488,"results":"15436","hashOfConfig":"12232"},{"size":27693,"mtime":1786084511489,"results":"15437","hashOfConfig":"12232"},{"size":2541,"mtime":1786084511489,"results":"15438","hashOfConfig":"12232"},{"size":4748,"mtime":1786084511489,"results":"15439","hashOfConfig":"12232"},{"size":2069,"mtime":1786084511489,"results":"15440","hashOfConfig":"12232"},{"size":4545,"mtime":1786084511489,"results":"15441","hashOfConfig":"12232"},{"size":3589,"mtime":1786084511489,"results":"15442","hashOfConfig":"12232"},{"size":1421,"mtime":1786084511489,"results":"15443","hashOfConfig":"12232"},{"size":2806,"mtime":1786084511489,"results":"15444","hashOfConfig":"12232"},{"size":5362,"mtime":1786084511490,"results":"15445","hashOfConfig":"12232"},{"size":8253,"mtime":1786084511490,"results":"15446","hashOfConfig":"12232"},{"size":1505,"mtime":1786084511490,"results":"15447","hashOfConfig":"12232"},{"size":4003,"mtime":1786084511490,"results":"15448","hashOfConfig":"12232"},{"size":6241,"mtime":1786084511490,"results":"15449","hashOfConfig":"12232"},{"size":2984,"mtime":1786084511490,"results":"15450","hashOfConfig":"12232"},{"size":3654,"mtime":1786084511490,"results":"15451","hashOfConfig":"12232"},{"size":5830,"mtime":1786084511490,"results":"15452","hashOfConfig":"12232"},{"size":3352,"mtime":1786084511490,"results":"15453","hashOfConfig":"12232"},{"size":6525,"mtime":1786084511491,"results":"15454","hashOfConfig":"12232"},{"size":2400,"mtime":1786084511491,"results":"15455","hashOfConfig":"12232"},{"size":2672,"mtime":1786084511491,"results":"15456","hashOfConfig":"12232"},{"size":3976,"mtime":1786084511491,"results":"15457","hashOfConfig":"12232"},{"size":1583,"mtime":1786084511491,"results":"15458","hashOfConfig":"12232"},{"size":1991,"mtime":1786084511491,"results":"15459","hashOfConfig":"12232"},{"size":1972,"mtime":1786084511491,"results":"15460","hashOfConfig":"12232"},{"size":1851,"mtime":1786084511491,"results":"15461","hashOfConfig":"12232"},{"size":1443,"mtime":1786084511491,"results":"15462","hashOfConfig":"12232"},{"size":5042,"mtime":1786084511491,"results":"15463","hashOfConfig":"12232"},{"size":2661,"mtime":1786084511492,"results":"15464","hashOfConfig":"12232"},{"size":2954,"mtime":1786084511492,"results":"15465","hashOfConfig":"12232"},{"size":2150,"mtime":1786084511492,"results":"15466","hashOfConfig":"12232"},{"size":884,"mtime":1786084511492,"results":"15467","hashOfConfig":"12232"},{"size":6874,"mtime":1786084511492,"results":"15468","hashOfConfig":"12232"},{"size":10243,"mtime":1786084511492,"results":"15469","hashOfConfig":"12232"},{"size":5940,"mtime":1786084511492,"results":"15470","hashOfConfig":"12232"},{"size":4177,"mtime":1786084511492,"results":"15471","hashOfConfig":"12232"},{"size":3096,"mtime":1786084511492,"results":"15472","hashOfConfig":"12232"},{"size":2413,"mtime":1786084511492,"results":"15473","hashOfConfig":"12232"},{"size":34450,"mtime":1786084511493,"results":"15474","hashOfConfig":"12232"},{"size":1802,"mtime":1786084511493,"results":"15475","hashOfConfig":"12232"},{"size":9788,"mtime":1786084511493,"results":"15476","hashOfConfig":"12232"},{"size":2471,"mtime":1786084511493,"results":"15477","hashOfConfig":"12232"},{"size":2822,"mtime":1786084511493,"results":"15478","hashOfConfig":"12232"},{"size":5902,"mtime":1786084511493,"results":"15479","hashOfConfig":"12232"},{"size":7188,"mtime":1786084511494,"results":"15480","hashOfConfig":"12232"},{"size":2235,"mtime":1786084511494,"results":"15481","hashOfConfig":"12232"},{"size":5789,"mtime":1786084511494,"results":"15482","hashOfConfig":"12232"},{"size":11829,"mtime":1786084529050,"results":"15483","hashOfConfig":"12232"},{"size":2862,"mtime":1786084511494,"results":"15484","hashOfConfig":"12232"},{"size":15544,"mtime":1786084511494,"results":"15485","hashOfConfig":"12232"},{"size":2164,"mtime":1786084511495,"results":"15486","hashOfConfig":"12232"},{"size":7158,"mtime":1786084511495,"results":"15487","hashOfConfig":"12232"},{"size":2735,"mtime":1786084511495,"results":"15488","hashOfConfig":"12232"},{"size":2809,"mtime":1786084511495,"results":"15489","hashOfConfig":"12232"},{"size":7571,"mtime":1786084511495,"results":"15490","hashOfConfig":"12232"},{"size":5674,"mtime":1786084511495,"results":"15491","hashOfConfig":"12232"},{"size":2437,"mtime":1786084511495,"results":"15492","hashOfConfig":"12232"},{"size":1628,"mtime":1786084511495,"results":"15493","hashOfConfig":"12232"},{"size":4792,"mtime":1786084511496,"results":"15494","hashOfConfig":"12232"},{"size":4115,"mtime":1786084511496,"results":"15495","hashOfConfig":"12232"},{"size":3382,"mtime":1786084511496,"results":"15496","hashOfConfig":"12232"},{"size":5598,"mtime":1786084511496,"results":"15497","hashOfConfig":"12232"},{"size":22882,"mtime":1786084511496,"results":"15498","hashOfConfig":"12232"},{"size":27257,"mtime":1786084511496,"results":"15499","hashOfConfig":"12232"},{"size":4987,"mtime":1786084511497,"results":"15500","hashOfConfig":"12232"},{"size":7715,"mtime":1786084511497,"results":"15501","hashOfConfig":"12232"},{"size":3180,"mtime":1786084511497,"results":"15502","hashOfConfig":"12285"},{"size":8964,"mtime":1786084511497,"results":"15503","hashOfConfig":"12232"},{"size":13939,"mtime":1786084511497,"results":"15504","hashOfConfig":"12285"},{"size":8720,"mtime":1786084511497,"results":"15505","hashOfConfig":"12232"},{"size":4233,"mtime":1786084511497,"results":"15506","hashOfConfig":"12232"},{"size":2332,"mtime":1786084511498,"results":"15507","hashOfConfig":"12232"},{"size":8840,"mtime":1786084511498,"results":"15508","hashOfConfig":"12232"},{"size":2237,"mtime":1786084511498,"results":"15509","hashOfConfig":"12232"},{"size":2493,"mtime":1786084511498,"results":"15510","hashOfConfig":"12232"},{"size":7140,"mtime":1786084511498,"results":"15511","hashOfConfig":"12232"},{"size":7664,"mtime":1786084511498,"results":"15512","hashOfConfig":"12232"},{"size":43309,"mtime":1786084511499,"results":"15513","hashOfConfig":"12232"},{"size":3874,"mtime":1786084511499,"results":"15514","hashOfConfig":"12232"},{"size":10721,"mtime":1786084511499,"results":"15515","hashOfConfig":"12232"},{"size":1565,"mtime":1786084511499,"results":"15516","hashOfConfig":"12232"},{"size":2353,"mtime":1786084511499,"results":"15517","hashOfConfig":"12232"},{"size":1987,"mtime":1786084511499,"results":"15518","hashOfConfig":"12232"},{"size":4823,"mtime":1786084511499,"results":"15519","hashOfConfig":"12232"},{"size":1401,"mtime":1786084511499,"results":"15520","hashOfConfig":"12232"},{"size":2538,"mtime":1786084511500,"results":"15521","hashOfConfig":"12232"},{"size":5556,"mtime":1786084511500,"results":"15522","hashOfConfig":"12232"},{"size":2092,"mtime":1786084511500,"results":"15523","hashOfConfig":"12232"},{"size":880,"mtime":1786084511500,"results":"15524","hashOfConfig":"12232"},{"size":13098,"mtime":1786084511500,"results":"15525","hashOfConfig":"12232"},{"size":7831,"mtime":1786084511500,"results":"15526","hashOfConfig":"12232"},{"size":2230,"mtime":1786084511500,"results":"15527","hashOfConfig":"12232"},{"size":3791,"mtime":1786084511500,"results":"15528","hashOfConfig":"12232"},{"size":9236,"mtime":1786084511501,"results":"15529","hashOfConfig":"12232"},{"size":8366,"mtime":1786084511501,"results":"15530","hashOfConfig":"12232"},{"size":3695,"mtime":1786084511501,"results":"15531","hashOfConfig":"12232"},{"size":3422,"mtime":1786084511501,"results":"15532","hashOfConfig":"12232"},{"size":7994,"mtime":1786084511501,"results":"15533","hashOfConfig":"12232"},{"size":2579,"mtime":1786084511501,"results":"15534","hashOfConfig":"12232"},{"size":1962,"mtime":1786084511501,"results":"15535","hashOfConfig":"12232"},{"size":1831,"mtime":1786084511501,"results":"15536","hashOfConfig":"12232"},{"size":4393,"mtime":1786084511501,"results":"15537","hashOfConfig":"12232"},{"size":6235,"mtime":1786084511502,"results":"15538","hashOfConfig":"12232"},{"size":2119,"mtime":1786084511502,"results":"15539","hashOfConfig":"12232"},{"size":3678,"mtime":1786084511502,"results":"15540","hashOfConfig":"12232"},{"size":1938,"mtime":1786084511503,"results":"15541","hashOfConfig":"12232"},{"size":2106,"mtime":1786084511503,"results":"15542","hashOfConfig":"12232"},{"size":1639,"mtime":1786084511503,"results":"15543","hashOfConfig":"12232"},{"size":1836,"mtime":1786084511503,"results":"15544","hashOfConfig":"12232"},{"size":3204,"mtime":1786084511502,"results":"15545","hashOfConfig":"12232"},{"size":3886,"mtime":1786084511502,"results":"15546","hashOfConfig":"12232"},{"size":1631,"mtime":1786084511502,"results":"15547","hashOfConfig":"12232"},{"size":3261,"mtime":1786084511503,"results":"15548","hashOfConfig":"12232"},{"size":3234,"mtime":1786084511503,"results":"15549","hashOfConfig":"12232"},{"size":5768,"mtime":1786084511503,"results":"15550","hashOfConfig":"12232"},{"size":3011,"mtime":1786084511503,"results":"15551","hashOfConfig":"12232"},{"size":612,"mtime":1786084511503,"results":"15552","hashOfConfig":"12232"},{"size":6827,"mtime":1786084511504,"results":"15553","hashOfConfig":"12232"},{"size":5616,"mtime":1786084511504,"results":"15554","hashOfConfig":"12232"},{"size":8842,"mtime":1786084511504,"results":"15555","hashOfConfig":"12232"},{"size":5496,"mtime":1786084511504,"results":"15556","hashOfConfig":"12232"},{"size":3557,"mtime":1786084511504,"results":"15557","hashOfConfig":"12232"},{"size":32536,"mtime":1786084511504,"results":"15558","hashOfConfig":"12232"},{"size":3253,"mtime":1786084511504,"results":"15559","hashOfConfig":"12232"},{"size":4686,"mtime":1786084511505,"results":"15560","hashOfConfig":"12232"},{"size":2191,"mtime":1786084511505,"results":"15561","hashOfConfig":"12232"},{"size":17448,"mtime":1786084511505,"results":"15562","hashOfConfig":"12232"},{"size":14087,"mtime":1786084511505,"results":"15563","hashOfConfig":"12232"},{"size":978,"mtime":1786084511505,"results":"15564","hashOfConfig":"12232"},{"size":8487,"mtime":1786084511505,"results":"15565","hashOfConfig":"12232"},{"size":3612,"mtime":1786084511505,"results":"15566","hashOfConfig":"12232"},{"size":2453,"mtime":1786084511506,"results":"15567","hashOfConfig":"12232"},{"size":2679,"mtime":1786084511506,"results":"15568","hashOfConfig":"12232"},{"size":2035,"mtime":1786084511506,"results":"15569","hashOfConfig":"12232"},{"size":1584,"mtime":1786084511506,"results":"15570","hashOfConfig":"12232"},{"size":3509,"mtime":1786084511507,"results":"15571","hashOfConfig":"12232"},{"size":6614,"mtime":1786084511507,"results":"15572","hashOfConfig":"12232"},{"size":7534,"mtime":1786084511507,"results":"15573","hashOfConfig":"12232"},{"size":1614,"mtime":1786084511507,"results":"15574","hashOfConfig":"12232"},{"size":3874,"mtime":1786084511507,"results":"15575","hashOfConfig":"12232"},{"size":3642,"mtime":1786084511506,"results":"15576","hashOfConfig":"12232"},{"size":9684,"mtime":1786084511506,"results":"15577","hashOfConfig":"12232"},{"size":951,"mtime":1786084511506,"results":"15578","hashOfConfig":"12232"},{"size":9623,"mtime":1786084511507,"results":"15579","hashOfConfig":"12232"},{"size":4680,"mtime":1786084511507,"results":"15580","hashOfConfig":"12232"},{"size":1323,"mtime":1786084511507,"results":"15581","hashOfConfig":"12232"},{"size":6838,"mtime":1786084511508,"results":"15582","hashOfConfig":"12232"},{"size":2362,"mtime":1786084511508,"results":"15583","hashOfConfig":"12232"},{"size":878,"mtime":1786084511508,"results":"15584","hashOfConfig":"12232"},{"size":6527,"mtime":1786084511508,"results":"15585","hashOfConfig":"12232"},{"size":10385,"mtime":1786084511508,"results":"15586","hashOfConfig":"12232"},{"size":5973,"mtime":1786084511508,"results":"15587","hashOfConfig":"12232"},{"size":1493,"mtime":1786084511509,"results":"15588","hashOfConfig":"12232"},{"size":11038,"mtime":1786084511509,"results":"15589","hashOfConfig":"12232"},{"size":7041,"mtime":1786084511509,"results":"15590","hashOfConfig":"12232"},{"size":3483,"mtime":1786084511509,"results":"15591","hashOfConfig":"12232"},{"size":702,"mtime":1786084511509,"results":"15592","hashOfConfig":"12232"},{"size":3842,"mtime":1786084511509,"results":"15593","hashOfConfig":"12232"},{"size":3510,"mtime":1786084511509,"results":"15594","hashOfConfig":"12232"},{"size":3436,"mtime":1786084511509,"results":"15595","hashOfConfig":"12232"},{"size":3499,"mtime":1786084511510,"results":"15596","hashOfConfig":"12232"},{"size":4093,"mtime":1786084511510,"results":"15597","hashOfConfig":"12232"},{"size":3028,"mtime":1786084511510,"results":"15598","hashOfConfig":"12232"},{"size":3358,"mtime":1786084511510,"results":"15599","hashOfConfig":"12232"},{"size":2970,"mtime":1786084511510,"results":"15600","hashOfConfig":"12232"},{"size":2142,"mtime":1786084511510,"results":"15601","hashOfConfig":"12232"},{"size":5118,"mtime":1786084511510,"results":"15602","hashOfConfig":"12232"},{"size":4682,"mtime":1786084511510,"results":"15603","hashOfConfig":"12232"},{"size":3426,"mtime":1786084511510,"results":"15604","hashOfConfig":"12232"},{"size":5143,"mtime":1786084511511,"results":"15605","hashOfConfig":"12232"},{"size":1821,"mtime":1786084511511,"results":"15606","hashOfConfig":"12232"},{"size":763,"mtime":1786084511511,"results":"15607","hashOfConfig":"12232"},{"size":5121,"mtime":1786084511511,"results":"15608","hashOfConfig":"12232"},{"size":3880,"mtime":1786084511511,"results":"15609","hashOfConfig":"12232"},{"size":9729,"mtime":1786084511512,"results":"15610","hashOfConfig":"12232"},{"size":1058,"mtime":1786084511512,"results":"15611","hashOfConfig":"12232"},{"size":3152,"mtime":1786084511512,"results":"15612","hashOfConfig":"12232"},{"size":13180,"mtime":1786084511512,"results":"15613","hashOfConfig":"12232"},{"size":14474,"mtime":1786084511512,"results":"15614","hashOfConfig":"12232"},{"size":8979,"mtime":1786084511512,"results":"15615","hashOfConfig":"12232"},{"size":6275,"mtime":1786084511512,"results":"15616","hashOfConfig":"12232"},{"size":22311,"mtime":1786084511513,"results":"15617","hashOfConfig":"12232"},{"size":4075,"mtime":1786084511513,"results":"15618","hashOfConfig":"12232"},{"size":12898,"mtime":1786084511513,"results":"15619","hashOfConfig":"12232"},{"size":9941,"mtime":1786084511513,"results":"15620","hashOfConfig":"12232"},{"size":4117,"mtime":1786084511513,"results":"15621","hashOfConfig":"12232"},{"size":4353,"mtime":1786084511513,"results":"15622","hashOfConfig":"12232"},{"size":5690,"mtime":1786084511514,"results":"15623","hashOfConfig":"12232"},{"size":3995,"mtime":1786084511514,"results":"15624","hashOfConfig":"12232"},{"size":4956,"mtime":1786084511514,"results":"15625","hashOfConfig":"12232"},{"size":4644,"mtime":1786084511514,"results":"15626","hashOfConfig":"12232"},{"size":7099,"mtime":1786084511514,"results":"15627","hashOfConfig":"12232"},{"size":3535,"mtime":1786084511514,"results":"15628","hashOfConfig":"12232"},{"size":7837,"mtime":1786084511514,"results":"15629","hashOfConfig":"12232"},{"size":9670,"mtime":1786084511515,"results":"15630","hashOfConfig":"12232"},{"size":7024,"mtime":1786084511515,"results":"15631","hashOfConfig":"12232"},{"size":6967,"mtime":1786084511515,"results":"15632","hashOfConfig":"12232"},{"size":3127,"mtime":1786084511515,"results":"15633","hashOfConfig":"12232"},{"size":18647,"mtime":1786084511511,"results":"15634","hashOfConfig":"12232"},{"size":12449,"mtime":1786084511515,"results":"15635","hashOfConfig":"12232"},{"size":18941,"mtime":1786084511516,"results":"15636","hashOfConfig":"12232"},{"size":5794,"mtime":1786084511516,"results":"15637","hashOfConfig":"12232"},{"size":12763,"mtime":1786084511516,"results":"15638","hashOfConfig":"12232"},{"size":8187,"mtime":1786084511516,"results":"15639","hashOfConfig":"12232"},{"size":14157,"mtime":1786084511516,"results":"15640","hashOfConfig":"12232"},{"size":12809,"mtime":1786084511518,"results":"15641","hashOfConfig":"12232"},{"size":3311,"mtime":1786084511518,"results":"15642","hashOfConfig":"12232"},{"size":9211,"mtime":1786084511517,"results":"15643","hashOfConfig":"12232"},{"size":5983,"mtime":1786084511517,"results":"15644","hashOfConfig":"12232"},{"size":11906,"mtime":1786084511517,"results":"15645","hashOfConfig":"12232"},{"size":2835,"mtime":1786084511517,"results":"15646","hashOfConfig":"12232"},{"size":5959,"mtime":1786084511517,"results":"15647","hashOfConfig":"12232"},{"size":2235,"mtime":1786084511517,"results":"15648","hashOfConfig":"12232"},{"size":4410,"mtime":1786084511517,"results":"15649","hashOfConfig":"12232"},{"size":1940,"mtime":1786084511518,"results":"15650","hashOfConfig":"12285"},{"size":1175,"mtime":1786084511519,"results":"15651","hashOfConfig":"12232"},{"size":2313,"mtime":1786084511519,"results":"15652","hashOfConfig":"12232"},{"size":2911,"mtime":1786084511519,"results":"15653","hashOfConfig":"12232"},{"size":3934,"mtime":1786084511519,"results":"15654","hashOfConfig":"8189"},{"size":7135,"mtime":1786084511519,"results":"15655","hashOfConfig":"8189"},{"size":14366,"mtime":1786084511519,"results":"15656","hashOfConfig":"8189"},{"size":8074,"mtime":1786084511519,"results":"15657","hashOfConfig":"12232"},{"size":4529,"mtime":1786084511520,"results":"15658","hashOfConfig":"12232"},{"size":3674,"mtime":1786084511518,"results":"15659","hashOfConfig":"12232"},{"size":2061,"mtime":1786084511518,"results":"15660","hashOfConfig":"8189"},{"size":5081,"mtime":1786084511518,"results":"15661","hashOfConfig":"12232"},{"size":2568,"mtime":1786084511520,"results":"15662","hashOfConfig":"12232"},{"size":1536,"mtime":1786084511520,"results":"15663","hashOfConfig":"12232"},{"size":1456,"mtime":1786084511520,"results":"15664","hashOfConfig":"12232"},{"size":3515,"mtime":1786084511520,"results":"15665","hashOfConfig":"12232"},{"size":6315,"mtime":1786084511520,"results":"15666","hashOfConfig":"12232"},{"size":1490,"mtime":1786084511521,"results":"15667","hashOfConfig":"12232"},{"size":4018,"mtime":1786084511521,"results":"15668","hashOfConfig":"12232"},{"size":1661,"mtime":1786084511521,"results":"15669","hashOfConfig":"12232"},{"size":3595,"mtime":1786084511521,"results":"15670","hashOfConfig":"12232"},{"size":1181,"mtime":1786084511521,"results":"15671","hashOfConfig":"12232"},{"size":3020,"mtime":1786084511521,"results":"15672","hashOfConfig":"12232"},{"size":3092,"mtime":1786084511521,"results":"15673","hashOfConfig":"12232"},{"size":6363,"mtime":1786084511521,"results":"15674","hashOfConfig":"12232"},{"size":4056,"mtime":1786084511522,"results":"15675","hashOfConfig":"12232"},{"size":5263,"mtime":1786084511522,"results":"15676","hashOfConfig":"12232"},{"size":6506,"mtime":1786084511522,"results":"15677","hashOfConfig":"12232"},{"size":4187,"mtime":1786084511522,"results":"15678","hashOfConfig":"12232"},{"size":2026,"mtime":1786084511522,"results":"15679","hashOfConfig":"12232"},{"size":18859,"mtime":1786084511522,"results":"15680","hashOfConfig":"12232"},{"size":11498,"mtime":1786084511523,"results":"15681","hashOfConfig":"12232"},{"size":4973,"mtime":1786084511523,"results":"15682","hashOfConfig":"12232"},{"size":8207,"mtime":1786084511523,"results":"15683","hashOfConfig":"12232"},{"size":9765,"mtime":1786084511523,"results":"15684","hashOfConfig":"12232"},{"size":759,"mtime":1786084511523,"results":"15685","hashOfConfig":"12232"},{"size":13015,"mtime":1786084511523,"results":"15686","hashOfConfig":"12232"},{"size":3026,"mtime":1786084511523,"results":"15687","hashOfConfig":"12232"},{"size":5899,"mtime":1786084511524,"results":"15688","hashOfConfig":"12232"},{"size":1396,"mtime":1786084511524,"results":"15689","hashOfConfig":"12232"},{"size":9784,"mtime":1786084511524,"results":"15690","hashOfConfig":"12232"},{"size":8856,"mtime":1786084511524,"results":"15691","hashOfConfig":"12232"},{"size":5938,"mtime":1786084511524,"results":"15692","hashOfConfig":"12232"},{"size":794,"mtime":1786084511524,"results":"15693","hashOfConfig":"12232"},{"size":696,"mtime":1786084511524,"results":"15694","hashOfConfig":"12232"},{"size":1499,"mtime":1786084511524,"results":"15695","hashOfConfig":"12232"},{"size":1664,"mtime":1786084511524,"results":"15696","hashOfConfig":"12232"},{"size":2664,"mtime":1786084511525,"results":"15697","hashOfConfig":"12232"},{"size":15464,"mtime":1786084511525,"results":"15698","hashOfConfig":"12232"},{"size":2413,"mtime":1786084511525,"results":"15699","hashOfConfig":"12232"},{"size":5298,"mtime":1786084511525,"results":"15700","hashOfConfig":"12232"},{"size":13156,"mtime":1786084511525,"results":"15701","hashOfConfig":"12232"},{"size":5560,"mtime":1786084511525,"results":"15702","hashOfConfig":"12232"},{"size":4895,"mtime":1786084511525,"results":"15703","hashOfConfig":"12232"},{"size":3862,"mtime":1786084511526,"results":"15704","hashOfConfig":"12232"},{"size":1755,"mtime":1786084511526,"results":"15705","hashOfConfig":"12232"},{"size":10062,"mtime":1786084511526,"results":"15706","hashOfConfig":"12232"},{"size":11833,"mtime":1786084511526,"results":"15707","hashOfConfig":"12232"},{"size":9259,"mtime":1786084511526,"results":"15708","hashOfConfig":"12232"},{"size":2757,"mtime":1786084511526,"results":"15709","hashOfConfig":"12232"},{"size":1606,"mtime":1786084511526,"results":"15710","hashOfConfig":"12232"},{"size":55158,"mtime":1786084511527,"results":"15711","hashOfConfig":"12232"},{"size":6406,"mtime":1786084511527,"results":"15712","hashOfConfig":"12232"},{"size":5539,"mtime":1786084511527,"results":"15713","hashOfConfig":"12232"},{"size":4260,"mtime":1786084511527,"results":"15714","hashOfConfig":"12232"},{"size":8371,"mtime":1786084511528,"results":"15715","hashOfConfig":"12232"},{"size":3344,"mtime":1786084511528,"results":"15716","hashOfConfig":"12232"},{"size":7703,"mtime":1786084511528,"results":"15717","hashOfConfig":"12232"},{"size":17102,"mtime":1786084511528,"results":"15718","hashOfConfig":"12232"},{"size":2699,"mtime":1786084511528,"results":"15719","hashOfConfig":"12232"},{"size":2850,"mtime":1786084511528,"results":"15720","hashOfConfig":"12232"},{"size":8567,"mtime":1786084511528,"results":"15721","hashOfConfig":"12232"},{"size":3974,"mtime":1786084511529,"results":"15722","hashOfConfig":"12232"},{"size":2042,"mtime":1786084511529,"results":"15723","hashOfConfig":"12285"},{"size":9906,"mtime":1786084511529,"results":"15724","hashOfConfig":"12232"},{"size":1274,"mtime":1786084511529,"results":"15725","hashOfConfig":"12232"},{"size":1110,"mtime":1786084511529,"results":"15726","hashOfConfig":"12232"},{"size":2690,"mtime":1786084511529,"results":"15727","hashOfConfig":"12232"},{"size":4216,"mtime":1786084511529,"results":"15728","hashOfConfig":"12232"},{"size":2071,"mtime":1786084511530,"results":"15729","hashOfConfig":"12232"},{"size":4490,"mtime":1786084511530,"results":"15730","hashOfConfig":"12232"},{"size":4157,"mtime":1786084511530,"results":"15731","hashOfConfig":"12232"},{"size":2651,"mtime":1786084511530,"results":"15732","hashOfConfig":"12232"},{"size":5577,"mtime":1786084511530,"results":"15733","hashOfConfig":"12232"},{"size":4886,"mtime":1786084511530,"results":"15734","hashOfConfig":"12232"},{"size":1918,"mtime":1786084511530,"results":"15735","hashOfConfig":"12232"},{"size":2058,"mtime":1786084511530,"results":"15736","hashOfConfig":"12232"},{"size":1780,"mtime":1786084511531,"results":"15737","hashOfConfig":"12232"},{"size":24511,"mtime":1786084511531,"results":"15738","hashOfConfig":"12232"},{"size":2149,"mtime":1786084511531,"results":"15739","hashOfConfig":"12232"},{"size":4036,"mtime":1786084511531,"results":"15740","hashOfConfig":"12232"},{"size":15407,"mtime":1786084511532,"results":"15741","hashOfConfig":"12232"},{"size":4252,"mtime":1786084511532,"results":"15742","hashOfConfig":"12232"},{"size":2763,"mtime":1786084511532,"results":"15743","hashOfConfig":"12232"},{"size":7308,"mtime":1786084511532,"results":"15744","hashOfConfig":"12232"},{"size":3761,"mtime":1786084511533,"results":"15745","hashOfConfig":"12232"},{"size":8803,"mtime":1786084511533,"results":"15746","hashOfConfig":"12232"},{"size":21933,"mtime":1786084511533,"results":"15747","hashOfConfig":"12232"},{"size":10202,"mtime":1786084511534,"results":"15748","hashOfConfig":"12232"},{"size":4069,"mtime":1786084511534,"results":"15749","hashOfConfig":"12232"},{"size":8515,"mtime":1786084511534,"results":"15750","hashOfConfig":"12232"},{"size":15917,"mtime":1786084511534,"results":"15751","hashOfConfig":"12232"},{"size":77813,"mtime":1786084511536,"results":"15752","hashOfConfig":"12232"},{"size":9094,"mtime":1786084511536,"results":"15753","hashOfConfig":"12232"},{"size":4933,"mtime":1786084511536,"results":"15754","hashOfConfig":"12232"},{"size":11950,"mtime":1786084511536,"results":"15755","hashOfConfig":"12232"},{"size":1269,"mtime":1786084511537,"results":"15756","hashOfConfig":"12232"},{"size":21182,"mtime":1786084511537,"results":"15757","hashOfConfig":"12232"},{"size":6165,"mtime":1786084511537,"results":"15758","hashOfConfig":"12232"},{"size":3038,"mtime":1786084511537,"results":"15759","hashOfConfig":"12232"},{"size":5022,"mtime":1786084511538,"results":"15760","hashOfConfig":"12232"},{"size":1717,"mtime":1786084511538,"results":"15761","hashOfConfig":"12232"},{"size":6092,"mtime":1786084511538,"results":"15762","hashOfConfig":"12232"},{"size":3112,"mtime":1786084511538,"results":"15763","hashOfConfig":"12232"},{"size":2234,"mtime":1786084511538,"results":"15764","hashOfConfig":"12232"},{"size":6195,"mtime":1786084511539,"results":"15765","hashOfConfig":"12232"},{"size":4395,"mtime":1786084511539,"results":"15766","hashOfConfig":"12232"},{"size":4804,"mtime":1786084511539,"results":"15767","hashOfConfig":"12232"},{"size":6989,"mtime":1786084511539,"results":"15768","hashOfConfig":"12232"},{"size":2222,"mtime":1786084511540,"results":"15769","hashOfConfig":"12232"},{"size":6450,"mtime":1786084511540,"results":"15770","hashOfConfig":"12232"},{"size":15803,"mtime":1786084511540,"results":"15771","hashOfConfig":"12232"},{"size":6087,"mtime":1786084511540,"results":"15772","hashOfConfig":"12232"},{"size":387,"mtime":1786084511541,"results":"15773","hashOfConfig":"12232"},{"size":3398,"mtime":1786084511541,"results":"15774","hashOfConfig":"12232"},{"size":1453,"mtime":1786084511541,"results":"15775","hashOfConfig":"12232"},{"size":3372,"mtime":1786084511541,"results":"15776","hashOfConfig":"12232"},{"size":5902,"mtime":1786084511542,"results":"15777","hashOfConfig":"12232"},{"size":3539,"mtime":1786084511542,"results":"15778","hashOfConfig":"12232"},{"size":5719,"mtime":1786084511542,"results":"15779","hashOfConfig":"12232"},{"size":4435,"mtime":1786084511542,"results":"15780","hashOfConfig":"12232"},{"size":24304,"mtime":1786084511543,"results":"15781","hashOfConfig":"12232"},{"size":2038,"mtime":1786084511543,"results":"15782","hashOfConfig":"12232"},{"size":3833,"mtime":1786084511543,"results":"15783","hashOfConfig":"12232"},{"size":5535,"mtime":1786084511543,"results":"15784","hashOfConfig":"12232"},{"size":6622,"mtime":1786084511544,"results":"15785","hashOfConfig":"12232"},{"size":5399,"mtime":1786084511544,"results":"15786","hashOfConfig":"12232"},{"size":6449,"mtime":1786084511544,"results":"15787","hashOfConfig":"12232"},{"size":2387,"mtime":1786084511544,"results":"15788","hashOfConfig":"12232"},{"size":2549,"mtime":1786084511545,"results":"15789","hashOfConfig":"12232"},{"size":4072,"mtime":1786084511545,"results":"15790","hashOfConfig":"12232"},{"size":1035,"mtime":1786084511545,"results":"15791","hashOfConfig":"12232"},{"size":3487,"mtime":1786084511545,"results":"15792","hashOfConfig":"12232"},{"size":1416,"mtime":1786084511545,"results":"15793","hashOfConfig":"12232"},{"size":1782,"mtime":1786084511545,"results":"15794","hashOfConfig":"12232"},{"size":6707,"mtime":1786084511545,"results":"15795","hashOfConfig":"12232"},{"size":5393,"mtime":1786084511546,"results":"15796","hashOfConfig":"12232"},{"size":7615,"mtime":1786084511546,"results":"15797","hashOfConfig":"12232"},{"size":7555,"mtime":1786084511546,"results":"15798","hashOfConfig":"12232"},{"size":7177,"mtime":1786084511546,"results":"15799","hashOfConfig":"12232"},{"size":3249,"mtime":1786084511546,"results":"15800","hashOfConfig":"12232"},{"size":3396,"mtime":1786084511546,"results":"15801","hashOfConfig":"12232"},{"size":13254,"mtime":1786084511547,"results":"15802","hashOfConfig":"12232"},{"size":1664,"mtime":1786084511547,"results":"15803","hashOfConfig":"12232"},{"size":8784,"mtime":1786084511547,"results":"15804","hashOfConfig":"12232"},{"size":4175,"mtime":1786084511547,"results":"15805","hashOfConfig":"12232"},{"size":7722,"mtime":1786084511547,"results":"15806","hashOfConfig":"12232"},{"size":3262,"mtime":1786084511547,"results":"15807","hashOfConfig":"12232"},{"size":5593,"mtime":1786084511548,"results":"15808","hashOfConfig":"12232"},{"size":3146,"mtime":1786084511548,"results":"15809","hashOfConfig":"12232"},{"size":5137,"mtime":1786084511548,"results":"15810","hashOfConfig":"12232"},{"size":1413,"mtime":1786084511548,"results":"15811","hashOfConfig":"12232"},{"size":8529,"mtime":1786084511548,"results":"15812","hashOfConfig":"12232"},{"size":464,"mtime":1786084511548,"results":"15813","hashOfConfig":"12232"},{"size":3796,"mtime":1786084511548,"results":"15814","hashOfConfig":"12232"},{"size":4458,"mtime":1786084511548,"results":"15815","hashOfConfig":"12232"},{"size":8059,"mtime":1786084511549,"results":"15816","hashOfConfig":"12232"},{"size":1320,"mtime":1786084511549,"results":"15817","hashOfConfig":"12232"},{"size":8178,"mtime":1786084511549,"results":"15818","hashOfConfig":"12232"},{"size":2255,"mtime":1786084511549,"results":"15819","hashOfConfig":"12232"},{"size":4386,"mtime":1786084511549,"results":"15820","hashOfConfig":"12232"},{"size":2900,"mtime":1786084511549,"results":"15821","hashOfConfig":"12232"},{"size":3281,"mtime":1786084511550,"results":"15822","hashOfConfig":"12232"},{"size":2959,"mtime":1786084511550,"results":"15823","hashOfConfig":"12232"},{"size":2854,"mtime":1786084511550,"results":"15824","hashOfConfig":"12232"},{"size":3571,"mtime":1786084511550,"results":"15825","hashOfConfig":"12232"},{"size":4150,"mtime":1786084511550,"results":"15826","hashOfConfig":"12232"},{"size":1966,"mtime":1786084511550,"results":"15827","hashOfConfig":"12232"},{"size":2682,"mtime":1786084511551,"results":"15828","hashOfConfig":"12232"},{"size":3738,"mtime":1786084511551,"results":"15829","hashOfConfig":"12232"},{"size":1788,"mtime":1786084511551,"results":"15830","hashOfConfig":"12232"},{"size":1442,"mtime":1786084511551,"results":"15831","hashOfConfig":"12232"},{"size":2169,"mtime":1786084511551,"results":"15832","hashOfConfig":"12232"},{"size":7982,"mtime":1786084511551,"results":"15833","hashOfConfig":"12232"},{"size":2845,"mtime":1786084511551,"results":"15834","hashOfConfig":"12232"},{"size":1861,"mtime":1786084511551,"results":"15835","hashOfConfig":"12232"},{"size":2451,"mtime":1786084511552,"results":"15836","hashOfConfig":"12232"},{"size":2800,"mtime":1786084511552,"results":"15837","hashOfConfig":"12232"},{"size":3022,"mtime":1786084511552,"results":"15838","hashOfConfig":"12232"},{"size":13390,"mtime":1786084511552,"results":"15839","hashOfConfig":"12232"},{"size":5257,"mtime":1786084511552,"results":"15840","hashOfConfig":"12232"},{"size":5201,"mtime":1786084511552,"results":"15841","hashOfConfig":"12232"},{"size":1645,"mtime":1786084511552,"results":"15842","hashOfConfig":"12232"},{"size":3517,"mtime":1786084511553,"results":"15843","hashOfConfig":"12232"},{"size":1786,"mtime":1786084511553,"results":"15844","hashOfConfig":"12232"},{"size":2391,"mtime":1786084511553,"results":"15845","hashOfConfig":"12232"},{"size":1999,"mtime":1786084511553,"results":"15846","hashOfConfig":"12232"},{"size":1252,"mtime":1786084511553,"results":"15847","hashOfConfig":"12232"},{"size":5770,"mtime":1786084511553,"results":"15848","hashOfConfig":"12232"},{"size":2274,"mtime":1786084511553,"results":"15849","hashOfConfig":"12285"},{"size":6317,"mtime":1786084511554,"results":"15850","hashOfConfig":"12232"},{"size":3853,"mtime":1786084511554,"results":"15851","hashOfConfig":"12232"},{"size":3993,"mtime":1786084511554,"results":"15852","hashOfConfig":"12232"},{"size":2520,"mtime":1786084511554,"results":"15853","hashOfConfig":"12232"},{"size":6316,"mtime":1786084511554,"results":"15854","hashOfConfig":"12232"},{"size":2853,"mtime":1786084511554,"results":"15855","hashOfConfig":"12232"},{"size":20161,"mtime":1786084511554,"results":"15856","hashOfConfig":"12232"},{"size":8205,"mtime":1786084511555,"results":"15857","hashOfConfig":"12232"},{"size":13593,"mtime":1786084511555,"results":"15858","hashOfConfig":"12232"},{"size":3950,"mtime":1786084511555,"results":"15859","hashOfConfig":"12232"},{"size":4910,"mtime":1786084511555,"results":"15860","hashOfConfig":"12232"},{"size":5771,"mtime":1786084511555,"results":"15861","hashOfConfig":"12232"},{"size":8131,"mtime":1786084511555,"results":"15862","hashOfConfig":"12232"},{"size":3857,"mtime":1786084511556,"results":"15863","hashOfConfig":"12232"},{"size":20105,"mtime":1786084511556,"results":"15864","hashOfConfig":"12232"},{"size":44296,"mtime":1786084511556,"results":"15865","hashOfConfig":"12232"},{"size":6034,"mtime":1786084511556,"results":"15866","hashOfConfig":"12232"},{"size":5088,"mtime":1786084511557,"results":"15867","hashOfConfig":"12232"},{"size":6424,"mtime":1786084511557,"results":"15868","hashOfConfig":"12232"},{"size":2325,"mtime":1786084511557,"results":"15869","hashOfConfig":"12232"},{"size":2218,"mtime":1786084511557,"results":"15870","hashOfConfig":"12232"},{"size":4904,"mtime":1786084511557,"results":"15871","hashOfConfig":"12232"},{"size":4344,"mtime":1786084511557,"results":"15872","hashOfConfig":"12232"},{"size":6685,"mtime":1786084511557,"results":"15873","hashOfConfig":"12232"},{"size":15529,"mtime":1786084511558,"results":"15874","hashOfConfig":"12285"},{"size":3561,"mtime":1786084511558,"results":"15875","hashOfConfig":"12232"},{"size":2629,"mtime":1786084511558,"results":"15876","hashOfConfig":"12232"},{"size":5650,"mtime":1786084511558,"results":"15877","hashOfConfig":"12232"},{"size":2833,"mtime":1786084511558,"results":"15878","hashOfConfig":"12232"},{"size":2977,"mtime":1786084511558,"results":"15879","hashOfConfig":"12232"},{"size":3721,"mtime":1786084511558,"results":"15880","hashOfConfig":"12232"},{"size":1715,"mtime":1786084511558,"results":"15881","hashOfConfig":"12232"},{"size":1134,"mtime":1786084511559,"results":"15882","hashOfConfig":"12232"},{"size":3924,"mtime":1786084511559,"results":"15883","hashOfConfig":"12232"},{"size":2666,"mtime":1786084511559,"results":"15884","hashOfConfig":"12232"},{"size":3685,"mtime":1786084511559,"results":"15885","hashOfConfig":"12232"},{"size":3451,"mtime":1786084511559,"results":"15886","hashOfConfig":"12232"},{"size":4348,"mtime":1786084511559,"results":"15887","hashOfConfig":"12232"},{"size":8496,"mtime":1786084511559,"results":"15888","hashOfConfig":"12232"},{"size":4806,"mtime":1786084511560,"results":"15889","hashOfConfig":"12232"},{"size":3334,"mtime":1786084511560,"results":"15890","hashOfConfig":"12232"},{"size":2578,"mtime":1786084511560,"results":"15891","hashOfConfig":"12232"},{"size":3336,"mtime":1786084511560,"results":"15892","hashOfConfig":"12232"},{"size":9890,"mtime":1786084511560,"results":"15893","hashOfConfig":"12232"},{"size":5116,"mtime":1786084511560,"results":"15894","hashOfConfig":"12232"},{"size":16863,"mtime":1786084511561,"results":"15895","hashOfConfig":"12232"},{"size":1413,"mtime":1786084511561,"results":"15896","hashOfConfig":"12232"},{"size":4292,"mtime":1786084511561,"results":"15897","hashOfConfig":"12232"},{"size":9427,"mtime":1786084511561,"results":"15898","hashOfConfig":"12232"},{"size":2357,"mtime":1786084511561,"results":"15899","hashOfConfig":"12232"},{"size":11540,"mtime":1786084511561,"results":"15900","hashOfConfig":"12232"},{"size":13235,"mtime":1786084511561,"results":"15901","hashOfConfig":"12232"},{"size":15961,"mtime":1786084511562,"results":"15902","hashOfConfig":"12232"},{"size":7942,"mtime":1786084511562,"results":"15903","hashOfConfig":"12232"},{"size":2760,"mtime":1786084511562,"results":"15904","hashOfConfig":"12232"},{"size":13197,"mtime":1786084511562,"results":"15905","hashOfConfig":"12232"},{"size":658,"mtime":1786084511563,"results":"15906","hashOfConfig":"12232"},{"size":5879,"mtime":1786084511563,"results":"15907","hashOfConfig":"8189"},{"size":19684,"mtime":1786084511563,"results":"15908","hashOfConfig":"8189"},{"size":11249,"mtime":1786084511563,"results":"15909","hashOfConfig":"8189"},{"size":7462,"mtime":1786084511563,"results":"15910","hashOfConfig":"12232"},{"size":7401,"mtime":1786084511563,"results":"15911","hashOfConfig":"12232"},{"size":11967,"mtime":1786084511564,"results":"15912","hashOfConfig":"8189"},{"size":17295,"mtime":1786084511564,"results":"15913","hashOfConfig":"8189"},{"size":11105,"mtime":1786084511564,"results":"15914","hashOfConfig":"8189"},{"size":12939,"mtime":1786084511564,"results":"15915","hashOfConfig":"8189"},{"size":12077,"mtime":1786084511564,"results":"15916","hashOfConfig":"8189"},{"size":12120,"mtime":1786084511565,"results":"15917","hashOfConfig":"8189"},{"size":15685,"mtime":1786084511565,"results":"15918","hashOfConfig":"12232"},{"size":13002,"mtime":1786084511565,"results":"15919","hashOfConfig":"8189"},{"size":15788,"mtime":1786084511565,"results":"15920","hashOfConfig":"8189"},{"size":31326,"mtime":1786084511565,"results":"15921","hashOfConfig":"8189"},{"size":10241,"mtime":1786084511566,"results":"15922","hashOfConfig":"8189"},{"size":3598,"mtime":1786084511566,"results":"15923","hashOfConfig":"12232"},{"size":4760,"mtime":1786084511566,"results":"15924","hashOfConfig":"12232"},{"size":2716,"mtime":1786084511566,"results":"15925","hashOfConfig":"12232"},{"size":3113,"mtime":1786084511566,"results":"15926","hashOfConfig":"12232"},{"size":4684,"mtime":1786084511566,"results":"15927","hashOfConfig":"12232"},{"size":29575,"mtime":1786084511567,"results":"15928","hashOfConfig":"12232"},{"size":2188,"mtime":1786084511567,"results":"15929","hashOfConfig":"12232"},{"size":2074,"mtime":1786084511567,"results":"15930","hashOfConfig":"12232"},{"size":1986,"mtime":1786084511567,"results":"15931","hashOfConfig":"12232"},{"size":8443,"mtime":1786084511567,"results":"15932","hashOfConfig":"12232"},{"size":1866,"mtime":1786084511567,"results":"15933","hashOfConfig":"12232"},{"size":5893,"mtime":1786084511567,"results":"15934","hashOfConfig":"12232"},{"size":38310,"mtime":1786084511568,"results":"15935","hashOfConfig":"12232"},{"size":787,"mtime":1786084511568,"results":"15936","hashOfConfig":"12232"},{"size":24959,"mtime":1786084511568,"results":"15937","hashOfConfig":"12232"},{"size":5494,"mtime":1786084511568,"results":"15938","hashOfConfig":"12232"},{"size":1657,"mtime":1786084511568,"results":"15939","hashOfConfig":"12232"},{"size":8635,"mtime":1786084511569,"results":"15940","hashOfConfig":"12232"},{"size":57546,"mtime":1786084511569,"results":"15941","hashOfConfig":"12232"},{"size":41991,"mtime":1786084511569,"results":"15942","hashOfConfig":"12232"},{"size":3227,"mtime":1786084511569,"results":"15943","hashOfConfig":"12232"},{"size":3291,"mtime":1786084511569,"results":"15944","hashOfConfig":"12232"},{"size":2134,"mtime":1786084511569,"results":"15945","hashOfConfig":"12232"},{"size":12968,"mtime":1786084511570,"results":"15946","hashOfConfig":"12232"},{"size":1071,"mtime":1786084511570,"results":"15947","hashOfConfig":"12232"},{"size":7912,"mtime":1786084511570,"results":"15948","hashOfConfig":"12232"},{"size":4655,"mtime":1786084511570,"results":"15949","hashOfConfig":"12232"},{"size":37767,"mtime":1786084511570,"results":"15950","hashOfConfig":"12232"},{"size":2927,"mtime":1786084511571,"results":"15951","hashOfConfig":"12232"},{"size":9479,"mtime":1786084511571,"results":"15952","hashOfConfig":"12232"},{"size":8230,"mtime":1786084511571,"results":"15953","hashOfConfig":"12232"},{"size":15255,"mtime":1786084511571,"results":"15954","hashOfConfig":"12232"},{"size":22451,"mtime":1786084511571,"results":"15955","hashOfConfig":"12232"},{"size":4118,"mtime":1786084511572,"results":"15956","hashOfConfig":"12232"},{"size":18479,"mtime":1786084511572,"results":"15957","hashOfConfig":"12232"},{"size":4349,"mtime":1786084511572,"results":"15958","hashOfConfig":"12232"},{"size":961,"mtime":1786084511572,"results":"15959","hashOfConfig":"12232"},{"size":1302,"mtime":1786084511572,"results":"15960","hashOfConfig":"12232"},{"size":1120,"mtime":1786084511572,"results":"15961","hashOfConfig":"12232"},{"size":7290,"mtime":1786084511572,"results":"15962","hashOfConfig":"12232"},{"size":13834,"mtime":1786084511572,"results":"15963","hashOfConfig":"12232"},{"size":5283,"mtime":1786084511573,"results":"15964","hashOfConfig":"12232"},{"size":4695,"mtime":1786084511573,"results":"15965","hashOfConfig":"12232"},{"size":1802,"mtime":1786084511573,"results":"15966","hashOfConfig":"12232"},{"size":2787,"mtime":1786084511573,"results":"15967","hashOfConfig":"12232"},{"size":3252,"mtime":1786084511573,"results":"15968","hashOfConfig":"12232"},{"size":4443,"mtime":1786084511573,"results":"15969","hashOfConfig":"12232"},{"size":8375,"mtime":1786084511573,"results":"15970","hashOfConfig":"12232"},{"size":4060,"mtime":1786084511573,"results":"15971","hashOfConfig":"12232"},{"size":3379,"mtime":1786084511574,"results":"15972","hashOfConfig":"12232"},{"size":5195,"mtime":1786084511574,"results":"15973","hashOfConfig":"12232"},{"size":5883,"mtime":1786084511574,"results":"15974","hashOfConfig":"12232"},{"size":5354,"mtime":1786084511574,"results":"15975","hashOfConfig":"12232"},{"size":3832,"mtime":1786084511574,"results":"15976","hashOfConfig":"12232"},{"size":2956,"mtime":1786084511574,"results":"15977","hashOfConfig":"12232"},{"size":5645,"mtime":1786084511574,"results":"15978","hashOfConfig":"12232"},{"size":2667,"mtime":1786084511574,"results":"15979","hashOfConfig":"12232"},{"size":6516,"mtime":1786084511575,"results":"15980","hashOfConfig":"8189"},{"size":1535,"mtime":1786084511575,"results":"15981","hashOfConfig":"8189"},{"size":2959,"mtime":1786084511575,"results":"15982","hashOfConfig":"8189"},{"size":6595,"mtime":1786084511575,"results":"15983","hashOfConfig":"8189"},{"size":9705,"mtime":1786084511575,"results":"15984","hashOfConfig":"8189"},{"size":16726,"mtime":1786084511575,"results":"15985","hashOfConfig":"8189"},{"size":4782,"mtime":1786084511576,"results":"15986","hashOfConfig":"8189"},{"size":4554,"mtime":1786084511576,"results":"15987","hashOfConfig":"8189"},{"size":7649,"mtime":1786084511576,"results":"15988","hashOfConfig":"8189"},{"size":6136,"mtime":1786084511576,"results":"15989","hashOfConfig":"8189"},{"size":3387,"mtime":1786084511576,"results":"15990","hashOfConfig":"8189"},{"size":2181,"mtime":1786084511576,"results":"15991","hashOfConfig":"8189"},{"size":2154,"mtime":1786084511576,"results":"15992","hashOfConfig":"8189"},{"size":6110,"mtime":1786084511576,"results":"15993","hashOfConfig":"8189"},{"size":5340,"mtime":1786084511576,"results":"15994","hashOfConfig":"8189"},{"size":1348,"mtime":1786084511577,"results":"15995","hashOfConfig":"8189"},{"size":9877,"mtime":1786084511577,"results":"15996","hashOfConfig":"8189"},{"size":3419,"mtime":1786084511577,"results":"15997","hashOfConfig":"12232"},{"size":6041,"mtime":1786084511577,"results":"15998","hashOfConfig":"8189"},{"size":4597,"mtime":1786084511577,"results":"15999","hashOfConfig":"8189"},{"size":4136,"mtime":1786084511577,"results":"16000","hashOfConfig":"8189"},{"size":6613,"mtime":1786084511577,"results":"16001","hashOfConfig":"8189"},{"size":2949,"mtime":1786084511577,"results":"16002","hashOfConfig":"8189"},{"size":11821,"mtime":1786084511578,"results":"16003","hashOfConfig":"8189"},{"size":6652,"mtime":1786084511578,"results":"16004","hashOfConfig":"8189"},{"size":3522,"mtime":1786084511578,"results":"16005","hashOfConfig":"8189"},{"size":3716,"mtime":1786084511578,"results":"16006","hashOfConfig":"8189"},{"size":4158,"mtime":1786084511578,"results":"16007","hashOfConfig":"8189"},{"size":3783,"mtime":1786084511578,"results":"16008","hashOfConfig":"8189"},{"size":5842,"mtime":1786084511578,"results":"16009","hashOfConfig":"8189"},{"size":4312,"mtime":1786084511578,"results":"16010","hashOfConfig":"8189"},{"size":4391,"mtime":1786084511578,"results":"16011","hashOfConfig":"8189"},{"size":1531,"mtime":1786084511579,"results":"16012","hashOfConfig":"8189"},{"size":5665,"mtime":1786084511579,"results":"16013","hashOfConfig":"8189"},{"size":2977,"mtime":1786084511579,"results":"16014","hashOfConfig":"8189"},{"size":2887,"mtime":1786084511579,"results":"16015","hashOfConfig":"8189"},{"size":3488,"mtime":1786084511579,"results":"16016","hashOfConfig":"8189"},{"size":2927,"mtime":1786084511579,"results":"16017","hashOfConfig":"8189"},{"size":4161,"mtime":1786084511579,"results":"16018","hashOfConfig":"12232"},{"size":4951,"mtime":1786084511580,"results":"16019","hashOfConfig":"12232"},{"size":12938,"mtime":1786084511580,"results":"16020","hashOfConfig":"12232"},{"size":8393,"mtime":1786084511580,"results":"16021","hashOfConfig":"8189"},{"size":2194,"mtime":1786084511580,"results":"16022","hashOfConfig":"8189"},{"size":373,"mtime":1786084511580,"results":"16023","hashOfConfig":"8189"},{"size":3806,"mtime":1786084511581,"results":"16024","hashOfConfig":"8189"},{"size":4394,"mtime":1786084511581,"results":"16025","hashOfConfig":"8189"},{"size":5676,"mtime":1786084511581,"results":"16026","hashOfConfig":"8189"},{"size":5848,"mtime":1786084511581,"results":"16027","hashOfConfig":"8189"},{"size":4808,"mtime":1786084511581,"results":"16028","hashOfConfig":"8189"},{"size":4912,"mtime":1786084511581,"results":"16029","hashOfConfig":"8189"},{"size":4052,"mtime":1786084511582,"results":"16030","hashOfConfig":"8189"},{"size":4645,"mtime":1786084511582,"results":"16031","hashOfConfig":"8189"},{"size":3602,"mtime":1786084511582,"results":"16032","hashOfConfig":"12232"},{"size":3500,"mtime":1786084511582,"results":"16033","hashOfConfig":"8189"},{"size":4887,"mtime":1786084511582,"results":"16034","hashOfConfig":"8189"},{"size":5180,"mtime":1786084511583,"results":"16035","hashOfConfig":"8189"},{"size":2033,"mtime":1786084511583,"results":"16036","hashOfConfig":"8189"},{"size":7341,"mtime":1786084511583,"results":"16037","hashOfConfig":"8189"},{"size":7968,"mtime":1786084511583,"results":"16038","hashOfConfig":"12232"},{"size":5668,"mtime":1786084511583,"results":"16039","hashOfConfig":"8189"},{"size":6605,"mtime":1786084511584,"results":"16040","hashOfConfig":"8189"},{"size":7136,"mtime":1786084511584,"results":"16041","hashOfConfig":"8189"},{"size":7280,"mtime":1786084511584,"results":"16042","hashOfConfig":"8189"},{"size":5631,"mtime":1786084511584,"results":"16043","hashOfConfig":"8189"},{"size":2167,"mtime":1786084511584,"results":"16044","hashOfConfig":"8189"},{"size":5653,"mtime":1786084511584,"results":"16045","hashOfConfig":"8189"},{"size":5854,"mtime":1786084511585,"results":"16046","hashOfConfig":"8189"},{"size":3665,"mtime":1786084511585,"results":"16047","hashOfConfig":"8189"},{"size":2814,"mtime":1786084511585,"results":"16048","hashOfConfig":"8189"},{"size":7308,"mtime":1786084511585,"results":"16049","hashOfConfig":"8189"},{"size":5763,"mtime":1786084511585,"results":"16050","hashOfConfig":"8189"},{"size":4115,"mtime":1786084511586,"results":"16051","hashOfConfig":"8189"},{"size":2815,"mtime":1786084511586,"results":"16052","hashOfConfig":"8189"},{"size":4456,"mtime":1786084511586,"results":"16053","hashOfConfig":"8189"},{"size":1076,"mtime":1786084511586,"results":"16054","hashOfConfig":"8189"},{"size":2372,"mtime":1786084511586,"results":"16055","hashOfConfig":"12232"},{"size":7910,"mtime":1786084511586,"results":"16056","hashOfConfig":"8189"},{"size":9943,"mtime":1786084511587,"results":"16057","hashOfConfig":"8189"},{"size":6358,"mtime":1786084511587,"results":"16058","hashOfConfig":"8189"},{"size":7050,"mtime":1786084511587,"results":"16059","hashOfConfig":"8189"},{"size":7175,"mtime":1786084511587,"results":"16060","hashOfConfig":"8189"},{"size":8346,"mtime":1786084511587,"results":"16061","hashOfConfig":"8189"},{"size":17447,"mtime":1786084511588,"results":"16062","hashOfConfig":"8189"},{"size":4771,"mtime":1786084511588,"results":"16063","hashOfConfig":"8189"},{"size":386,"mtime":1786084511588,"results":"16064","hashOfConfig":"8189"},{"size":1069,"mtime":1786084511588,"results":"16065","hashOfConfig":"8189"},{"size":6745,"mtime":1786084511588,"results":"16066","hashOfConfig":"12232"},{"size":2672,"mtime":1786084511588,"results":"16067","hashOfConfig":"8189"},{"size":11131,"mtime":1786084511589,"results":"16068","hashOfConfig":"8189"},{"size":11993,"mtime":1786084511589,"results":"16069","hashOfConfig":"8189"},{"size":8551,"mtime":1786084511589,"results":"16070","hashOfConfig":"8189"},{"size":1095,"mtime":1786084511589,"results":"16071","hashOfConfig":"8189"},{"size":15878,"mtime":1786084511590,"results":"16072","hashOfConfig":"8189"},{"size":3953,"mtime":1786084511590,"results":"16073","hashOfConfig":"8189"},{"size":2107,"mtime":1786084511590,"results":"16074","hashOfConfig":"8189"},{"size":5040,"mtime":1786084511590,"results":"16075","hashOfConfig":"8189"},{"size":2867,"mtime":1786084511590,"results":"16076","hashOfConfig":"8189"},{"size":4195,"mtime":1786084511590,"results":"16077","hashOfConfig":"8189"},{"size":2532,"mtime":1786084511591,"results":"16078","hashOfConfig":"8189"},{"size":2627,"mtime":1786084511591,"results":"16079","hashOfConfig":"8189"},{"size":4936,"mtime":1786084511591,"results":"16080","hashOfConfig":"8189"},{"size":2140,"mtime":1786084511591,"results":"16081","hashOfConfig":"12232"},{"size":1853,"mtime":1786084511592,"results":"16082","hashOfConfig":"12232"},{"size":384,"mtime":1786084511592,"results":"16083","hashOfConfig":"8189"},{"size":3523,"mtime":1786084511592,"results":"16084","hashOfConfig":"8189"},{"size":2520,"mtime":1786084511592,"results":"16085","hashOfConfig":"8189"},{"size":4087,"mtime":1786084511592,"results":"16086","hashOfConfig":"8189"},{"size":2572,"mtime":1786084511592,"results":"16087","hashOfConfig":"12232"},{"size":1341,"mtime":1786084511592,"results":"16088","hashOfConfig":"8189"},{"size":501,"mtime":1786084511593,"results":"16089","hashOfConfig":"8189"},{"size":6662,"mtime":1786084511593,"results":"16090","hashOfConfig":"8189"},{"size":5376,"mtime":1786084511593,"results":"16091","hashOfConfig":"8189"},{"size":10553,"mtime":1786084511593,"results":"16092","hashOfConfig":"8189"},{"size":4985,"mtime":1786084511593,"results":"16093","hashOfConfig":"8189"},{"size":2235,"mtime":1786084511593,"results":"16094","hashOfConfig":"8189"},{"size":3725,"mtime":1786084511594,"results":"16095","hashOfConfig":"8189"},{"size":8780,"mtime":1786084511594,"results":"16096","hashOfConfig":"8189"},{"size":3624,"mtime":1786084511594,"results":"16097","hashOfConfig":"8189"},{"size":6853,"mtime":1786084511594,"results":"16098","hashOfConfig":"8189"},{"size":7092,"mtime":1786084511594,"results":"16099","hashOfConfig":"8189"},{"size":9712,"mtime":1786084511595,"results":"16100","hashOfConfig":"8189"},{"size":3983,"mtime":1786084511595,"results":"16101","hashOfConfig":"8189"},{"size":7553,"mtime":1786084511595,"results":"16102","hashOfConfig":"8189"},{"size":2659,"mtime":1786084511595,"results":"16103","hashOfConfig":"8189"},{"size":2993,"mtime":1786084511595,"results":"16104","hashOfConfig":"8189"},{"size":3222,"mtime":1786084511596,"results":"16105","hashOfConfig":"8189"},{"size":10162,"mtime":1786084511596,"results":"16106","hashOfConfig":"8189"},{"size":3751,"mtime":1786084511596,"results":"16107","hashOfConfig":"8189"},{"size":5297,"mtime":1786084511596,"results":"16108","hashOfConfig":"8189"},{"size":2941,"mtime":1786084511596,"results":"16109","hashOfConfig":"8189"},{"size":1204,"mtime":1786084511597,"results":"16110","hashOfConfig":"8189"},{"size":1848,"mtime":1786084511597,"results":"16111","hashOfConfig":"8189"},{"size":10653,"mtime":1786084511597,"results":"16112","hashOfConfig":"8189"},{"size":10204,"mtime":1786084511597,"results":"16113","hashOfConfig":"8189"},{"size":10254,"mtime":1786084511597,"results":"16114","hashOfConfig":"8189"},{"size":4831,"mtime":1786084511598,"results":"16115","hashOfConfig":"8189"},{"size":9050,"mtime":1786084511598,"results":"16116","hashOfConfig":"8189"},{"size":7296,"mtime":1786084511598,"results":"16117","hashOfConfig":"8189"},{"size":5754,"mtime":1786084511598,"results":"16118","hashOfConfig":"8189"},{"size":5674,"mtime":1786084511598,"results":"16119","hashOfConfig":"8189"},{"size":5426,"mtime":1786084511599,"results":"16120","hashOfConfig":"8189"},{"size":6817,"mtime":1786084511599,"results":"16121","hashOfConfig":"8189"},{"size":5776,"mtime":1786084511599,"results":"16122","hashOfConfig":"8189"},{"size":10125,"mtime":1786084511599,"results":"16123","hashOfConfig":"8189"},{"size":7730,"mtime":1786084511599,"results":"16124","hashOfConfig":"8189"},{"size":3442,"mtime":1786084511600,"results":"16125","hashOfConfig":"8189"},{"size":5800,"mtime":1786084511600,"results":"16126","hashOfConfig":"8189"},{"size":4783,"mtime":1786084511600,"results":"16127","hashOfConfig":"8189"},{"size":1235,"mtime":1786084511600,"results":"16128","hashOfConfig":"8189"},{"size":3377,"mtime":1786084511600,"results":"16129","hashOfConfig":"8189"},{"size":2118,"mtime":1786084511600,"results":"16130","hashOfConfig":"8189"},{"size":4281,"mtime":1786084511601,"results":"16131","hashOfConfig":"8189"},{"size":4188,"mtime":1786084511601,"results":"16132","hashOfConfig":"8189"},{"size":10955,"mtime":1786084511601,"results":"16133","hashOfConfig":"8189"},{"size":3435,"mtime":1786084511601,"results":"16134","hashOfConfig":"8189"},{"size":3078,"mtime":1786084511601,"results":"16135","hashOfConfig":"8189"},{"size":4422,"mtime":1786084511601,"results":"16136","hashOfConfig":"8189"},{"size":5819,"mtime":1786084511602,"results":"16137","hashOfConfig":"8189"},{"size":11232,"mtime":1786084511602,"results":"16138","hashOfConfig":"8189"},{"size":1422,"mtime":1786084511602,"results":"16139","hashOfConfig":"8189"},{"size":2045,"mtime":1786084511602,"results":"16140","hashOfConfig":"12232"},{"size":2832,"mtime":1786084511602,"results":"16141","hashOfConfig":"8189"},{"size":6707,"mtime":1786084511603,"results":"16142","hashOfConfig":"8189"},{"size":9162,"mtime":1786084511603,"results":"16143","hashOfConfig":"8189"},{"size":11785,"mtime":1786084511603,"results":"16144","hashOfConfig":"8189"},{"size":9460,"mtime":1786084511603,"results":"16145","hashOfConfig":"8189"},{"size":1574,"mtime":1786084511603,"results":"16146","hashOfConfig":"8189"},{"size":4114,"mtime":1786084511604,"results":"16147","hashOfConfig":"8189"},{"size":6087,"mtime":1786084511604,"results":"16148","hashOfConfig":"8189"},{"size":4720,"mtime":1786084511604,"results":"16149","hashOfConfig":"8189"},{"size":6857,"mtime":1786084511604,"results":"16150","hashOfConfig":"8189"},{"size":3572,"mtime":1786084511604,"results":"16151","hashOfConfig":"8189"},{"size":5261,"mtime":1786084511604,"results":"16152","hashOfConfig":"8189"},{"size":11235,"mtime":1786084511604,"results":"16153","hashOfConfig":"8189"},{"size":4857,"mtime":1786084511605,"results":"16154","hashOfConfig":"8189"},{"size":7917,"mtime":1786084511605,"results":"16155","hashOfConfig":"8189"},{"size":8638,"mtime":1786084511605,"results":"16156","hashOfConfig":"8189"},{"size":10856,"mtime":1786084511605,"results":"16157","hashOfConfig":"8189"},{"size":9973,"mtime":1786084511605,"results":"16158","hashOfConfig":"8189"},{"size":9538,"mtime":1786084511605,"results":"16159","hashOfConfig":"8189"},{"size":2943,"mtime":1786084511606,"results":"16160","hashOfConfig":"8189"},{"size":5523,"mtime":1786084511606,"results":"16161","hashOfConfig":"8189"},{"size":3859,"mtime":1786084511606,"results":"16162","hashOfConfig":"12232"},{"size":1874,"mtime":1786084511606,"results":"16163","hashOfConfig":"8189"},{"size":5188,"mtime":1786084511606,"results":"16164","hashOfConfig":"8189"},{"size":3069,"mtime":1786084511606,"results":"16165","hashOfConfig":"8189"},{"size":2476,"mtime":1786084511606,"results":"16166","hashOfConfig":"8189"},{"size":1872,"mtime":1786084511606,"results":"16167","hashOfConfig":"8189"},{"size":1381,"mtime":1786084511606,"results":"16168","hashOfConfig":"8189"},{"size":3319,"mtime":1786084511606,"results":"16169","hashOfConfig":"8189"},{"size":4343,"mtime":1786084511607,"results":"16170","hashOfConfig":"8189"},{"size":2934,"mtime":1786084511607,"results":"16171","hashOfConfig":"8189"},{"size":2076,"mtime":1786084511607,"results":"16172","hashOfConfig":"8189"},{"size":3450,"mtime":1786084511607,"results":"16173","hashOfConfig":"8189"},{"size":6875,"mtime":1786084511607,"results":"16174","hashOfConfig":"8189"},{"size":5521,"mtime":1786084511607,"results":"16175","hashOfConfig":"8189"},{"size":4819,"mtime":1786084511607,"results":"16176","hashOfConfig":"8189"},{"size":7618,"mtime":1786084511608,"results":"16177","hashOfConfig":"8189"},{"size":9240,"mtime":1786084511608,"results":"16178","hashOfConfig":"8189"},{"size":3081,"mtime":1786084511608,"results":"16179","hashOfConfig":"8189"},{"size":4534,"mtime":1786084511608,"results":"16180","hashOfConfig":"8189"},{"size":8959,"mtime":1786084511608,"results":"16181","hashOfConfig":"8189"},{"size":9238,"mtime":1786084511608,"results":"16182","hashOfConfig":"8189"},{"size":5785,"mtime":1786084511608,"results":"16183","hashOfConfig":"8189"},{"size":9495,"mtime":1786084511608,"results":"16184","hashOfConfig":"8189"},{"size":6334,"mtime":1786084511609,"results":"16185","hashOfConfig":"8189"},{"size":4111,"mtime":1786084511609,"results":"16186","hashOfConfig":"8189"},{"size":2310,"mtime":1786084511609,"results":"16187","hashOfConfig":"8189"},{"size":6925,"mtime":1786084511609,"results":"16188","hashOfConfig":"8189"},{"size":5222,"mtime":1786084511609,"results":"16189","hashOfConfig":"8189"},{"size":3473,"mtime":1786084511609,"results":"16190","hashOfConfig":"8189"},{"size":4882,"mtime":1786084511574,"results":"16191","hashOfConfig":"12232"},{"size":8202,"mtime":1786084511609,"results":"16192","hashOfConfig":"12232"},{"size":1749,"mtime":1786084511609,"results":"16193","hashOfConfig":"12232"},{"size":4918,"mtime":1786084511609,"results":"16194","hashOfConfig":"12232"},{"size":4596,"mtime":1786084511610,"results":"16195","hashOfConfig":"12232"},{"size":887,"mtime":1786084511610,"results":"16196","hashOfConfig":"12232"},{"size":4131,"mtime":1786084511610,"results":"16197","hashOfConfig":"12232"},{"size":1650,"mtime":1786084511610,"results":"16198","hashOfConfig":"12232"},{"size":2329,"mtime":1786084511610,"results":"16199","hashOfConfig":"12232"},{"size":1682,"mtime":1786084511610,"results":"16200","hashOfConfig":"12232"},{"size":4844,"mtime":1786084511615,"results":"16201","hashOfConfig":"12232"},{"size":12872,"mtime":1786084511610,"results":"16202","hashOfConfig":"12232"},{"size":1221,"mtime":1786084511610,"results":"16203","hashOfConfig":"12232"},{"size":2967,"mtime":1786084511610,"results":"16204","hashOfConfig":"12232"},{"size":3181,"mtime":1786084511611,"results":"16205","hashOfConfig":"12232"},{"size":23562,"mtime":1786084511611,"results":"16206","hashOfConfig":"12232"},{"size":19396,"mtime":1786084511611,"results":"16207","hashOfConfig":"12232"},{"size":2412,"mtime":1786084511611,"results":"16208","hashOfConfig":"12232"},{"size":2236,"mtime":1786084511611,"results":"16209","hashOfConfig":"12232"},{"size":5005,"mtime":1786084511611,"results":"16210","hashOfConfig":"12232"},{"size":5396,"mtime":1786084511611,"results":"16211","hashOfConfig":"12232"},{"size":2771,"mtime":1786084511611,"results":"16212","hashOfConfig":"12232"},{"size":2781,"mtime":1786084511612,"results":"16213","hashOfConfig":"12232"},{"size":4163,"mtime":1786084511612,"results":"16214","hashOfConfig":"12232"},{"size":1539,"mtime":1786084511612,"results":"16215","hashOfConfig":"12232"},{"size":12235,"mtime":1786084511612,"results":"16216","hashOfConfig":"12232"},{"size":3347,"mtime":1786084511612,"results":"16217","hashOfConfig":"12232"},{"size":2546,"mtime":1786084511612,"results":"16218","hashOfConfig":"12232"},{"size":1548,"mtime":1786084511612,"results":"16219","hashOfConfig":"12232"},{"size":5240,"mtime":1786084511612,"results":"16220","hashOfConfig":"12232"},{"size":11906,"mtime":1786084511613,"results":"16221","hashOfConfig":"12232"},{"size":5173,"mtime":1786084511613,"results":"16222","hashOfConfig":"12232"},{"size":13149,"mtime":1786084511613,"results":"16223","hashOfConfig":"12232"},{"size":2263,"mtime":1786084511613,"results":"16224","hashOfConfig":"12232"},{"size":2811,"mtime":1786084511613,"results":"16225","hashOfConfig":"12232"},{"size":929,"mtime":1786084511613,"results":"16226","hashOfConfig":"12232"},{"size":4036,"mtime":1786084511613,"results":"16227","hashOfConfig":"12232"},{"size":5858,"mtime":1786084511613,"results":"16228","hashOfConfig":"12232"},{"size":2423,"mtime":1786084511613,"results":"16229","hashOfConfig":"12232"},{"size":2385,"mtime":1786084511614,"results":"16230","hashOfConfig":"12232"},{"size":2256,"mtime":1786084511614,"results":"16231","hashOfConfig":"12232"},{"size":2693,"mtime":1786084511614,"results":"16232","hashOfConfig":"12232"},{"size":3236,"mtime":1786084511614,"results":"16233","hashOfConfig":"12232"},{"size":5194,"mtime":1786084511614,"results":"16234","hashOfConfig":"12232"},{"size":49189,"mtime":1786084511614,"results":"16235","hashOfConfig":"12232"},{"size":7479,"mtime":1786084511614,"results":"16236","hashOfConfig":"12232"},{"size":13147,"mtime":1786084511615,"results":"16237","hashOfConfig":"12232"},{"size":2944,"mtime":1786084511615,"results":"16238","hashOfConfig":"12232"},{"size":2594,"mtime":1786084511615,"results":"16239","hashOfConfig":"12232"},{"size":2790,"mtime":1786084511615,"results":"16240","hashOfConfig":"12232"},{"size":5102,"mtime":1786084511615,"results":"16241","hashOfConfig":"12232"},{"size":3071,"mtime":1786084511615,"results":"16242","hashOfConfig":"12232"},{"size":5064,"mtime":1786084511616,"results":"16243","hashOfConfig":"12232"},{"size":2984,"mtime":1786084511616,"results":"16244","hashOfConfig":"12232"},{"size":3646,"mtime":1786084511616,"results":"16245","hashOfConfig":"12232"},{"size":2527,"mtime":1786084511616,"results":"16246","hashOfConfig":"12232"},{"size":3037,"mtime":1786084511616,"results":"16247","hashOfConfig":"12232"},{"size":3448,"mtime":1786084511616,"results":"16248","hashOfConfig":"12232"},{"size":4195,"mtime":1786084511616,"results":"16249","hashOfConfig":"12232"},{"size":5910,"mtime":1786084511616,"results":"16250","hashOfConfig":"12232"},{"size":6329,"mtime":1786084511616,"results":"16251","hashOfConfig":"12232"},{"size":3884,"mtime":1786084511616,"results":"16252","hashOfConfig":"12232"},{"size":8535,"mtime":1786084511617,"results":"16253","hashOfConfig":"12232"},{"size":4988,"mtime":1786084511617,"results":"16254","hashOfConfig":"12232"},{"size":3417,"mtime":1786084511617,"results":"16255","hashOfConfig":"12232"},{"size":10054,"mtime":1786084511617,"results":"16256","hashOfConfig":"12232"},{"size":3579,"mtime":1786084511617,"results":"16257","hashOfConfig":"12232"},{"size":2459,"mtime":1786084511617,"results":"16258","hashOfConfig":"12232"},{"size":1855,"mtime":1786084511617,"results":"16259","hashOfConfig":"12232"},{"size":3123,"mtime":1786084511617,"results":"16260","hashOfConfig":"12232"},{"size":1292,"mtime":1786084511617,"results":"16261","hashOfConfig":"12232"},{"size":14494,"mtime":1786084511618,"results":"16262","hashOfConfig":"12232"},{"size":6431,"mtime":1786084511618,"results":"16263","hashOfConfig":"12232"},{"size":1481,"mtime":1786084511618,"results":"16264","hashOfConfig":"12232"},{"size":1341,"mtime":1786084511618,"results":"16265","hashOfConfig":"12232"},{"size":1861,"mtime":1786084511618,"results":"16266","hashOfConfig":"12232"},{"size":2330,"mtime":1786084511618,"results":"16267","hashOfConfig":"12232"},{"size":3139,"mtime":1786084511618,"results":"16268","hashOfConfig":"12232"},{"size":3809,"mtime":1786084511618,"results":"16269","hashOfConfig":"12232"},{"size":1757,"mtime":1786084511618,"results":"16270","hashOfConfig":"12232"},{"size":2964,"mtime":1786084511618,"results":"16271","hashOfConfig":"12232"},{"size":2190,"mtime":1786084511619,"results":"16272","hashOfConfig":"12232"},{"size":3025,"mtime":1786084511619,"results":"16273","hashOfConfig":"12232"},{"size":5508,"mtime":1786084511619,"results":"16274","hashOfConfig":"12232"},{"size":11310,"mtime":1786084511619,"results":"16275","hashOfConfig":"12232"},{"size":4297,"mtime":1786084511619,"results":"16276","hashOfConfig":"12232"},{"size":2182,"mtime":1786084511619,"results":"16277","hashOfConfig":"12232"},{"size":3602,"mtime":1786084511619,"results":"16278","hashOfConfig":"12232"},{"size":3517,"mtime":1786084511619,"results":"16279","hashOfConfig":"12232"},{"size":5042,"mtime":1786084511619,"results":"16280","hashOfConfig":"12232"},{"size":1895,"mtime":1786084511620,"results":"16281","hashOfConfig":"12232"},{"size":7789,"mtime":1786084511620,"results":"16282","hashOfConfig":"12232"},{"size":3027,"mtime":1786084511620,"results":"16283","hashOfConfig":"12232"},{"size":1499,"mtime":1786084511620,"results":"16284","hashOfConfig":"12232"},{"size":12584,"mtime":1786084511620,"results":"16285","hashOfConfig":"12232"},{"size":2461,"mtime":1786084511620,"results":"16286","hashOfConfig":"12232"},{"size":4144,"mtime":1786084511620,"results":"16287","hashOfConfig":"12232"},{"size":6415,"mtime":1786088242944,"results":"16288","hashOfConfig":"12232"},{"size":6945,"mtime":1786084511620,"results":"16289","hashOfConfig":"12232"},{"size":1374,"mtime":1786084511620,"results":"16290","hashOfConfig":"12232"},{"size":4613,"mtime":1786084511621,"results":"16291","hashOfConfig":"12232"},{"size":1834,"mtime":1786084511621,"results":"16292","hashOfConfig":"12232"},{"size":6967,"mtime":1786084511621,"results":"16293","hashOfConfig":"12232"},{"size":17591,"mtime":1786084511621,"results":"16294","hashOfConfig":"12232"},{"size":11104,"mtime":1786084511621,"results":"16295","hashOfConfig":"12232"},{"size":7458,"mtime":1786084511621,"results":"16296","hashOfConfig":"12232"},{"size":9463,"mtime":1786084511621,"results":"16297","hashOfConfig":"12232"},{"size":7869,"mtime":1786084511622,"results":"16298","hashOfConfig":"12232"},{"size":6821,"mtime":1786084511622,"results":"16299","hashOfConfig":"12232"},{"size":8024,"mtime":1786084511622,"results":"16300","hashOfConfig":"12232"},{"size":3955,"mtime":1786084511622,"results":"16301","hashOfConfig":"12232"},{"size":790,"mtime":1786084511622,"results":"16302","hashOfConfig":"12232"},{"size":4840,"mtime":1786084529051,"results":"16303","hashOfConfig":"12232"},{"size":3265,"mtime":1786084511622,"results":"16304","hashOfConfig":"12232"},{"size":2701,"mtime":1786084511622,"results":"16305","hashOfConfig":"12232"},{"size":3931,"mtime":1786084511623,"results":"16306","hashOfConfig":"12232"},{"size":3801,"mtime":1786084511623,"results":"16307","hashOfConfig":"12232"},{"size":3937,"mtime":1786084511623,"results":"16308","hashOfConfig":"12232"},{"size":5674,"mtime":1786084511623,"results":"16309","hashOfConfig":"12232"},{"size":3689,"mtime":1786084511623,"results":"16310","hashOfConfig":"12232"},{"size":4158,"mtime":1786084511623,"results":"16311","hashOfConfig":"12232"},{"size":2071,"mtime":1786084511623,"results":"16312","hashOfConfig":"12232"},{"size":6797,"mtime":1786084511623,"results":"16313","hashOfConfig":"12232"},{"size":6000,"mtime":1786084511623,"results":"16314","hashOfConfig":"12232"},{"size":46093,"mtime":1786084511624,"results":"16315","hashOfConfig":"12232"},{"size":1947,"mtime":1786084511624,"results":"16316","hashOfConfig":"12232"},{"size":3002,"mtime":1786084511624,"results":"16317","hashOfConfig":"12232"},{"size":2827,"mtime":1786084511624,"results":"16318","hashOfConfig":"12285"},{"size":5862,"mtime":1786084511624,"results":"16319","hashOfConfig":"12232"},{"size":31230,"mtime":1786084511624,"results":"16320","hashOfConfig":"12232"},{"size":4998,"mtime":1786084511625,"results":"16321","hashOfConfig":"12232"},{"size":1724,"mtime":1786084511625,"results":"16322","hashOfConfig":"12232"},{"size":4408,"mtime":1786084511625,"results":"16323","hashOfConfig":"12232"},{"size":5155,"mtime":1786084511625,"results":"16324","hashOfConfig":"12232"},{"size":5222,"mtime":1786084511625,"results":"16325","hashOfConfig":"12232"},{"size":5187,"mtime":1786084511625,"results":"16326","hashOfConfig":"12232"},{"size":9204,"mtime":1786084511625,"results":"16327","hashOfConfig":"12232"},{"size":2593,"mtime":1786084511625,"results":"16328","hashOfConfig":"12232"},{"size":11526,"mtime":1786084511625,"results":"16329","hashOfConfig":"12232"},{"size":6396,"mtime":1786084511626,"results":"16330","hashOfConfig":"12232"},{"size":5390,"mtime":1786084511626,"results":"16331","hashOfConfig":"12232"},{"size":1779,"mtime":1786084511626,"results":"16332","hashOfConfig":"12232"},{"size":13321,"mtime":1786084511626,"results":"16333","hashOfConfig":"12232"},{"size":1134,"mtime":1786084511626,"results":"16334","hashOfConfig":"12232"},{"size":6047,"mtime":1786084511626,"results":"16335","hashOfConfig":"12232"},{"size":2440,"mtime":1786084511626,"results":"16336","hashOfConfig":"12232"},{"size":9258,"mtime":1786084511626,"results":"16337","hashOfConfig":"12232"},{"size":32061,"mtime":1786084511626,"results":"16338","hashOfConfig":"12232"},{"size":2365,"mtime":1786084511627,"results":"16339","hashOfConfig":"12232"},{"size":3591,"mtime":1786084511627,"results":"16340","hashOfConfig":"12232"},{"size":1569,"mtime":1786084511627,"results":"16341","hashOfConfig":"12232"},{"size":1169,"mtime":1786084511627,"results":"16342","hashOfConfig":"12232"},{"size":1694,"mtime":1786084511627,"results":"16343","hashOfConfig":"12232"},{"size":583,"mtime":1786084511627,"results":"16344","hashOfConfig":"12232"},{"size":2720,"mtime":1786084511627,"results":"16345","hashOfConfig":"12232"},{"size":2663,"mtime":1786084511627,"results":"16346","hashOfConfig":"12232"},{"size":2127,"mtime":1786084511627,"results":"16347","hashOfConfig":"12232"},{"size":4649,"mtime":1786084511627,"results":"16348","hashOfConfig":"12232"},{"size":3278,"mtime":1786084511627,"results":"16349","hashOfConfig":"12232"},{"size":13596,"mtime":1786084511628,"results":"16350","hashOfConfig":"12232"},{"size":2464,"mtime":1786084511628,"results":"16351","hashOfConfig":"12232"},{"size":4174,"mtime":1786084511628,"results":"16352","hashOfConfig":"12232"},{"size":6661,"mtime":1786084511628,"results":"16353","hashOfConfig":"12232"},{"size":2063,"mtime":1786084511628,"results":"16354","hashOfConfig":"12232"},{"size":3109,"mtime":1786084511628,"results":"16355","hashOfConfig":"12232"},{"size":13631,"mtime":1786084511628,"results":"16356","hashOfConfig":"12232"},{"size":3917,"mtime":1786084511628,"results":"16357","hashOfConfig":"12232"},{"size":13110,"mtime":1786084511628,"results":"16358","hashOfConfig":"12232"},{"size":6459,"mtime":1786084511629,"results":"16359","hashOfConfig":"12232"},{"size":4859,"mtime":1786084511629,"results":"16360","hashOfConfig":"12232"},{"size":5026,"mtime":1786084511629,"results":"16361","hashOfConfig":"12232"},{"size":2038,"mtime":1786084511629,"results":"16362","hashOfConfig":"12232"},{"size":8772,"mtime":1786084511629,"results":"16363","hashOfConfig":"12232"},{"size":19985,"mtime":1786084511629,"results":"16364","hashOfConfig":"12232"},{"size":4974,"mtime":1786084511629,"results":"16365","hashOfConfig":"12232"},{"size":3963,"mtime":1786084511629,"results":"16366","hashOfConfig":"12232"},{"size":4076,"mtime":1786084511629,"results":"16367","hashOfConfig":"12232"},{"size":9975,"mtime":1786084511630,"results":"16368","hashOfConfig":"12232"},{"size":2366,"mtime":1786084511630,"results":"16369","hashOfConfig":"12232"},{"size":2138,"mtime":1786084511630,"results":"16370","hashOfConfig":"12232"},{"size":2195,"mtime":1786084511630,"results":"16371","hashOfConfig":"12232"},{"size":2173,"mtime":1786084511630,"results":"16372","hashOfConfig":"12232"},{"size":7759,"mtime":1786084511630,"results":"16373","hashOfConfig":"12232"},{"size":1414,"mtime":1786084511630,"results":"16374","hashOfConfig":"12232"},{"size":8720,"mtime":1786084511630,"results":"16375","hashOfConfig":"12232"},{"size":1407,"mtime":1786084511631,"results":"16376","hashOfConfig":"12232"},{"size":2791,"mtime":1786084511631,"results":"16377","hashOfConfig":"12232"},{"size":1808,"mtime":1786084511631,"results":"16378","hashOfConfig":"12232"},{"size":2801,"mtime":1786084511631,"results":"16379","hashOfConfig":"12232"},{"size":17117,"mtime":1786084511631,"results":"16380","hashOfConfig":"12232"},{"size":9082,"mtime":1786084511631,"results":"16381","hashOfConfig":"12232"},{"size":4911,"mtime":1786084511631,"results":"16382","hashOfConfig":"12232"},{"size":2560,"mtime":1786084511631,"results":"16383","hashOfConfig":"12232"},{"size":1697,"mtime":1786084511632,"results":"16384","hashOfConfig":"8189"},{"size":1300,"mtime":1786084511632,"results":"16385","hashOfConfig":"8189"},{"filePath":"16386","messages":"16387","suppressedMessages":"16388","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"pvwjgk",{"filePath":"16389","messages":"16390","suppressedMessages":"16391","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16392","messages":"16393","suppressedMessages":"16394","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16395","messages":"16396","suppressedMessages":"16397","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16398","messages":"16399","suppressedMessages":"16400","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16401","messages":"16402","suppressedMessages":"16403","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16404","messages":"16405","suppressedMessages":"16406","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16407","messages":"16408","suppressedMessages":"16409","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16410","messages":"16411","suppressedMessages":"16412","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16413","messages":"16414","suppressedMessages":"16415","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16416","messages":"16417","suppressedMessages":"16418","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16419","messages":"16420","suppressedMessages":"16421","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16422","messages":"16423","suppressedMessages":"16424","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16425","messages":"16426","suppressedMessages":"16427","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16428","messages":"16429","suppressedMessages":"16430","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16431","messages":"16432","suppressedMessages":"16433","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16434","messages":"16435","suppressedMessages":"16436","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16437","messages":"16438","suppressedMessages":"16439","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16440","messages":"16441","suppressedMessages":"16442","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16443","messages":"16444","suppressedMessages":"16445","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16446","messages":"16447","suppressedMessages":"16448","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16449","messages":"16450","suppressedMessages":"16451","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16452","messages":"16453","suppressedMessages":"16454","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16455","messages":"16456","suppressedMessages":"16457","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16458","messages":"16459","suppressedMessages":"16460","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16461","messages":"16462","suppressedMessages":"16463","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16464","messages":"16465","suppressedMessages":"16466","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"jf3292",{"filePath":"16467","messages":"16468","suppressedMessages":"16469","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16470","messages":"16471","suppressedMessages":"16472","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16473","messages":"16474","suppressedMessages":"16475","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16476","messages":"16477","suppressedMessages":"16478","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16479","messages":"16480","suppressedMessages":"16481","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16482","messages":"16483","suppressedMessages":"16484","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16485","messages":"16486","suppressedMessages":"16487","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16488","messages":"16489","suppressedMessages":"16490","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16491","messages":"16492","suppressedMessages":"16493","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16494","messages":"16495","suppressedMessages":"16496","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16497","messages":"16498","suppressedMessages":"16499","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16500","messages":"16501","suppressedMessages":"16502","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16503","messages":"16504","suppressedMessages":"16505","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16506","messages":"16507","suppressedMessages":"16508","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"wjq4sy",{"filePath":"16509","messages":"16510","suppressedMessages":"16511","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16512","messages":"16513","suppressedMessages":"16514","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16515","messages":"16516","suppressedMessages":"16517","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16518","messages":"16519","suppressedMessages":"16520","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16521","messages":"16522","suppressedMessages":"16523","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16524","messages":"16525","suppressedMessages":"16526","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16527","messages":"16528","suppressedMessages":"16529","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16530","messages":"16531","suppressedMessages":"16532","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16533","messages":"16534","suppressedMessages":"16535","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16536","messages":"16537","suppressedMessages":"16538","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16539","messages":"16540","suppressedMessages":"16541","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16542","messages":"16543","suppressedMessages":"16544","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16545","messages":"16546","suppressedMessages":"16547","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16548","messages":"16549","suppressedMessages":"16550","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16551","messages":"16552","suppressedMessages":"16553","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16554","messages":"16555","suppressedMessages":"16556","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16557","messages":"16558","suppressedMessages":"16559","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16560","messages":"16561","suppressedMessages":"16562","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16563","messages":"16564","suppressedMessages":"16565","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16566","messages":"16567","suppressedMessages":"16568","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16569","messages":"16570","suppressedMessages":"16571","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16572","messages":"16573","suppressedMessages":"16574","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16575","messages":"16576","suppressedMessages":"16577","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16578","messages":"16579","suppressedMessages":"16580","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16581","messages":"16582","suppressedMessages":"16583","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16584","messages":"16585","suppressedMessages":"16586","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16587","messages":"16588","suppressedMessages":"16589","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16590","messages":"16591","suppressedMessages":"16592","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16593","messages":"16594","suppressedMessages":"16595","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16596","messages":"16597","suppressedMessages":"16598","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16599","messages":"16600","suppressedMessages":"16601","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16602","messages":"16603","suppressedMessages":"16604","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16605","messages":"16606","suppressedMessages":"16607","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16608","messages":"16609","suppressedMessages":"16610","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16611","messages":"16612","suppressedMessages":"16613","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16614","messages":"16615","suppressedMessages":"16616","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16617","messages":"16618","suppressedMessages":"16619","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16620","messages":"16621","suppressedMessages":"16622","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16623","messages":"16624","suppressedMessages":"16625","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16626","messages":"16627","suppressedMessages":"16628","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16629","messages":"16630","suppressedMessages":"16631","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16632","messages":"16633","suppressedMessages":"16634","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16635","messages":"16636","suppressedMessages":"16637","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16638","messages":"16639","suppressedMessages":"16640","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16641","messages":"16642","suppressedMessages":"16643","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16644","messages":"16645","suppressedMessages":"16646","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16647","messages":"16648","suppressedMessages":"16649","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16650","messages":"16651","suppressedMessages":"16652","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16653","messages":"16654","suppressedMessages":"16655","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16656","messages":"16657","suppressedMessages":"16658","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16659","messages":"16660","suppressedMessages":"16661","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16662","messages":"16663","suppressedMessages":"16664","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16665","messages":"16666","suppressedMessages":"16667","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16668","messages":"16669","suppressedMessages":"16670","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16671","messages":"16672","suppressedMessages":"16673","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16674","messages":"16675","suppressedMessages":"16676","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16677","messages":"16678","suppressedMessages":"16679","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16680","messages":"16681","suppressedMessages":"16682","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16683","messages":"16684","suppressedMessages":"16685","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16686","messages":"16687","suppressedMessages":"16688","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16689","messages":"16690","suppressedMessages":"16691","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16692","messages":"16693","suppressedMessages":"16694","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16695","messages":"16696","suppressedMessages":"16697","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16698","messages":"16699","suppressedMessages":"16700","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16701","messages":"16702","suppressedMessages":"16703","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16704","messages":"16705","suppressedMessages":"16706","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16707","messages":"16708","suppressedMessages":"16709","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16710","messages":"16711","suppressedMessages":"16712","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16713","messages":"16714","suppressedMessages":"16715","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16716","messages":"16717","suppressedMessages":"16718","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16719","messages":"16720","suppressedMessages":"16721","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16722","messages":"16723","suppressedMessages":"16724","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16725","messages":"16726","suppressedMessages":"16727","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16728","messages":"16729","suppressedMessages":"16730","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16731","messages":"16732","suppressedMessages":"16733","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16734","messages":"16735","suppressedMessages":"16736","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16737","messages":"16738","suppressedMessages":"16739","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16740","messages":"16741","suppressedMessages":"16742","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16743","messages":"16744","suppressedMessages":"16745","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16746","messages":"16747","suppressedMessages":"16748","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16749","messages":"16750","suppressedMessages":"16751","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16752","messages":"16753","suppressedMessages":"16754","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16755","messages":"16756","suppressedMessages":"16757","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16758","messages":"16759","suppressedMessages":"16760","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16761","messages":"16762","suppressedMessages":"16763","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16764","messages":"16765","suppressedMessages":"16766","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16767","messages":"16768","suppressedMessages":"16769","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16770","messages":"16771","suppressedMessages":"16772","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16773","messages":"16774","suppressedMessages":"16775","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16776","messages":"16777","suppressedMessages":"16778","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16779","messages":"16780","suppressedMessages":"16781","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16782","messages":"16783","suppressedMessages":"16784","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16785","messages":"16786","suppressedMessages":"16787","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16788","messages":"16789","suppressedMessages":"16790","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16791","messages":"16792","suppressedMessages":"16793","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16794","messages":"16795","suppressedMessages":"16796","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16797","messages":"16798","suppressedMessages":"16799","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16800","messages":"16801","suppressedMessages":"16802","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16803","messages":"16804","suppressedMessages":"16805","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16806","messages":"16807","suppressedMessages":"16808","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16809","messages":"16810","suppressedMessages":"16811","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16812","messages":"16813","suppressedMessages":"16814","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16815","messages":"16816","suppressedMessages":"16817","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16818","messages":"16819","suppressedMessages":"16820","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16821","messages":"16822","suppressedMessages":"16823","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16824","messages":"16825","suppressedMessages":"16826","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16827","messages":"16828","suppressedMessages":"16829","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16830","messages":"16831","suppressedMessages":"16832","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16833","messages":"16834","suppressedMessages":"16835","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16836","messages":"16837","suppressedMessages":"16838","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16839","messages":"16840","suppressedMessages":"16841","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16842","messages":"16843","suppressedMessages":"16844","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16845","messages":"16846","suppressedMessages":"16847","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16848","messages":"16849","suppressedMessages":"16850","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16851","messages":"16852","suppressedMessages":"16853","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16854","messages":"16855","suppressedMessages":"16856","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16857","messages":"16858","suppressedMessages":"16859","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16860","messages":"16861","suppressedMessages":"16862","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16863","messages":"16864","suppressedMessages":"16865","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16866","messages":"16867","suppressedMessages":"16868","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16869","messages":"16870","suppressedMessages":"16871","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16872","messages":"16873","suppressedMessages":"16874","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16875","messages":"16876","suppressedMessages":"16877","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16878","messages":"16879","suppressedMessages":"16880","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16881","messages":"16882","suppressedMessages":"16883","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16884","messages":"16885","suppressedMessages":"16886","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16887","messages":"16888","suppressedMessages":"16889","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16890","messages":"16891","suppressedMessages":"16892","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16893","messages":"16894","suppressedMessages":"16895","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16896","messages":"16897","suppressedMessages":"16898","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16899","messages":"16900","suppressedMessages":"16901","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16902","messages":"16903","suppressedMessages":"16904","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16905","messages":"16906","suppressedMessages":"16907","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16908","messages":"16909","suppressedMessages":"16910","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16911","messages":"16912","suppressedMessages":"16913","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16914","messages":"16915","suppressedMessages":"16916","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16917","messages":"16918","suppressedMessages":"16919","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16920","messages":"16921","suppressedMessages":"16922","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16923","messages":"16924","suppressedMessages":"16925","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16926","messages":"16927","suppressedMessages":"16928","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16929","messages":"16930","suppressedMessages":"16931","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16932","messages":"16933","suppressedMessages":"16934","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16935","messages":"16936","suppressedMessages":"16937","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16938","messages":"16939","suppressedMessages":"16940","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16941","messages":"16942","suppressedMessages":"16943","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16944","messages":"16945","suppressedMessages":"16946","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16947","messages":"16948","suppressedMessages":"16949","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16950","messages":"16951","suppressedMessages":"16952","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16953","messages":"16954","suppressedMessages":"16955","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16956","messages":"16957","suppressedMessages":"16958","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16959","messages":"16960","suppressedMessages":"16961","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16962","messages":"16963","suppressedMessages":"16964","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16965","messages":"16966","suppressedMessages":"16967","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16968","messages":"16969","suppressedMessages":"16970","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16971","messages":"16972","suppressedMessages":"16973","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16974","messages":"16975","suppressedMessages":"16976","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16977","messages":"16978","suppressedMessages":"16979","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16980","messages":"16981","suppressedMessages":"16982","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16983","messages":"16984","suppressedMessages":"16985","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16986","messages":"16987","suppressedMessages":"16988","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16989","messages":"16990","suppressedMessages":"16991","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16992","messages":"16993","suppressedMessages":"16994","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16995","messages":"16996","suppressedMessages":"16997","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16998","messages":"16999","suppressedMessages":"17000","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17001","messages":"17002","suppressedMessages":"17003","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17004","messages":"17005","suppressedMessages":"17006","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17007","messages":"17008","suppressedMessages":"17009","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17010","messages":"17011","suppressedMessages":"17012","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17013","messages":"17014","suppressedMessages":"17015","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17016","messages":"17017","suppressedMessages":"17018","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17019","messages":"17020","suppressedMessages":"17021","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17022","messages":"17023","suppressedMessages":"17024","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17025","messages":"17026","suppressedMessages":"17027","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17028","messages":"17029","suppressedMessages":"17030","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17031","messages":"17032","suppressedMessages":"17033","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17034","messages":"17035","suppressedMessages":"17036","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17037","messages":"17038","suppressedMessages":"17039","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17040","messages":"17041","suppressedMessages":"17042","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17043","messages":"17044","suppressedMessages":"17045","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17046","messages":"17047","suppressedMessages":"17048","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17049","messages":"17050","suppressedMessages":"17051","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17052","messages":"17053","suppressedMessages":"17054","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17055","messages":"17056","suppressedMessages":"17057","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17058","messages":"17059","suppressedMessages":"17060","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17061","messages":"17062","suppressedMessages":"17063","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17064","messages":"17065","suppressedMessages":"17066","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17067","messages":"17068","suppressedMessages":"17069","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17070","messages":"17071","suppressedMessages":"17072","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17073","messages":"17074","suppressedMessages":"17075","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17076","messages":"17077","suppressedMessages":"17078","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17079","messages":"17080","suppressedMessages":"17081","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17082","messages":"17083","suppressedMessages":"17084","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17085","messages":"17086","suppressedMessages":"17087","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17088","messages":"17089","suppressedMessages":"17090","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17091","messages":"17092","suppressedMessages":"17093","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17094","messages":"17095","suppressedMessages":"17096","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17097","messages":"17098","suppressedMessages":"17099","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17100","messages":"17101","suppressedMessages":"17102","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17103","messages":"17104","suppressedMessages":"17105","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17106","messages":"17107","suppressedMessages":"17108","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17109","messages":"17110","suppressedMessages":"17111","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17112","messages":"17113","suppressedMessages":"17114","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17115","messages":"17116","suppressedMessages":"17117","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17118","messages":"17119","suppressedMessages":"17120","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17121","messages":"17122","suppressedMessages":"17123","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17124","messages":"17125","suppressedMessages":"17126","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17127","messages":"17128","suppressedMessages":"17129","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17130","messages":"17131","suppressedMessages":"17132","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17133","messages":"17134","suppressedMessages":"17135","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17136","messages":"17137","suppressedMessages":"17138","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17139","messages":"17140","suppressedMessages":"17141","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17142","messages":"17143","suppressedMessages":"17144","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17145","messages":"17146","suppressedMessages":"17147","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17148","messages":"17149","suppressedMessages":"17150","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17151","messages":"17152","suppressedMessages":"17153","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17154","messages":"17155","suppressedMessages":"17156","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17157","messages":"17158","suppressedMessages":"17159","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17160","messages":"17161","suppressedMessages":"17162","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17163","messages":"17164","suppressedMessages":"17165","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17166","messages":"17167","suppressedMessages":"17168","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17169","messages":"17170","suppressedMessages":"17171","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17172","messages":"17173","suppressedMessages":"17174","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17175","messages":"17176","suppressedMessages":"17177","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17178","messages":"17179","suppressedMessages":"17180","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17181","messages":"17182","suppressedMessages":"17183","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17184","messages":"17185","suppressedMessages":"17186","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17187","messages":"17188","suppressedMessages":"17189","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17190","messages":"17191","suppressedMessages":"17192","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17193","messages":"17194","suppressedMessages":"17195","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17196","messages":"17197","suppressedMessages":"17198","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17199","messages":"17200","suppressedMessages":"17201","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17202","messages":"17203","suppressedMessages":"17204","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17205","messages":"17206","suppressedMessages":"17207","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17208","messages":"17209","suppressedMessages":"17210","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17211","messages":"17212","suppressedMessages":"17213","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17214","messages":"17215","suppressedMessages":"17216","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17217","messages":"17218","suppressedMessages":"17219","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17220","messages":"17221","suppressedMessages":"17222","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17223","messages":"17224","suppressedMessages":"17225","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17226","messages":"17227","suppressedMessages":"17228","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17229","messages":"17230","suppressedMessages":"17231","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17232","messages":"17233","suppressedMessages":"17234","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17235","messages":"17236","suppressedMessages":"17237","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17238","messages":"17239","suppressedMessages":"17240","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17241","messages":"17242","suppressedMessages":"17243","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17244","messages":"17245","suppressedMessages":"17246","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17247","messages":"17248","suppressedMessages":"17249","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17250","messages":"17251","suppressedMessages":"17252","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17253","messages":"17254","suppressedMessages":"17255","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17256","messages":"17257","suppressedMessages":"17258","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17259","messages":"17260","suppressedMessages":"17261","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17262","messages":"17263","suppressedMessages":"17264","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17265","messages":"17266","suppressedMessages":"17267","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17268","messages":"17269","suppressedMessages":"17270","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17271","messages":"17272","suppressedMessages":"17273","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17274","messages":"17275","suppressedMessages":"17276","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17277","messages":"17278","suppressedMessages":"17279","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17280","messages":"17281","suppressedMessages":"17282","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17283","messages":"17284","suppressedMessages":"17285","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17286","messages":"17287","suppressedMessages":"17288","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17289","messages":"17290","suppressedMessages":"17291","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17292","messages":"17293","suppressedMessages":"17294","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17295","messages":"17296","suppressedMessages":"17297","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17298","messages":"17299","suppressedMessages":"17300","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17301","messages":"17302","suppressedMessages":"17303","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17304","messages":"17305","suppressedMessages":"17306","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17307","messages":"17308","suppressedMessages":"17309","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17310","messages":"17311","suppressedMessages":"17312","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17313","messages":"17314","suppressedMessages":"17315","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17316","messages":"17317","suppressedMessages":"17318","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17319","messages":"17320","suppressedMessages":"17321","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17322","messages":"17323","suppressedMessages":"17324","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17325","messages":"17326","suppressedMessages":"17327","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17328","messages":"17329","suppressedMessages":"17330","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17331","messages":"17332","suppressedMessages":"17333","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17334","messages":"17335","suppressedMessages":"17336","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17337","messages":"17338","suppressedMessages":"17339","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17340","messages":"17341","suppressedMessages":"17342","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17343","messages":"17344","suppressedMessages":"17345","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17346","messages":"17347","suppressedMessages":"17348","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17349","messages":"17350","suppressedMessages":"17351","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17352","messages":"17353","suppressedMessages":"17354","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17355","messages":"17356","suppressedMessages":"17357","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17358","messages":"17359","suppressedMessages":"17360","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17361","messages":"17362","suppressedMessages":"17363","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17364","messages":"17365","suppressedMessages":"17366","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17367","messages":"17368","suppressedMessages":"17369","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17370","messages":"17371","suppressedMessages":"17372","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17373","messages":"17374","suppressedMessages":"17375","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17376","messages":"17377","suppressedMessages":"17378","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17379","messages":"17380","suppressedMessages":"17381","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17382","messages":"17383","suppressedMessages":"17384","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17385","messages":"17386","suppressedMessages":"17387","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17388","messages":"17389","suppressedMessages":"17390","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17391","messages":"17392","suppressedMessages":"17393","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17394","messages":"17395","suppressedMessages":"17396","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17397","messages":"17398","suppressedMessages":"17399","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17400","messages":"17401","suppressedMessages":"17402","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17403","messages":"17404","suppressedMessages":"17405","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17406","messages":"17407","suppressedMessages":"17408","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17409","messages":"17410","suppressedMessages":"17411","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17412","messages":"17413","suppressedMessages":"17414","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17415","messages":"17416","suppressedMessages":"17417","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17418","messages":"17419","suppressedMessages":"17420","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17421","messages":"17422","suppressedMessages":"17423","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17424","messages":"17425","suppressedMessages":"17426","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17427","messages":"17428","suppressedMessages":"17429","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17430","messages":"17431","suppressedMessages":"17432","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17433","messages":"17434","suppressedMessages":"17435","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17436","messages":"17437","suppressedMessages":"17438","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17439","messages":"17440","suppressedMessages":"17441","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17442","messages":"17443","suppressedMessages":"17444","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"17445","messages":"17446","suppressedMessages":"17447","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17448","messages":"17449","suppressedMessages":"17450","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17451","messages":"17452","suppressedMessages":"17453","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17454","messages":"17455","suppressedMessages":"17456","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17457","messages":"17458","suppressedMessages":"17459","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17460","messages":"17461","suppressedMessages":"17462","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17463","messages":"17464","suppressedMessages":"17465","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17466","messages":"17467","suppressedMessages":"17468","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17469","messages":"17470","suppressedMessages":"17471","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17472","messages":"17473","suppressedMessages":"17474","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17475","messages":"17476","suppressedMessages":"17477","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17478","messages":"17479","suppressedMessages":"17480","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17481","messages":"17482","suppressedMessages":"17483","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17484","messages":"17485","suppressedMessages":"17486","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17487","messages":"17488","suppressedMessages":"17489","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17490","messages":"17491","suppressedMessages":"17492","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"17493","messages":"17494","suppressedMessages":"17495","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17496","messages":"17497","suppressedMessages":"17498","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17499","messages":"17500","suppressedMessages":"17501","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17502","messages":"17503","suppressedMessages":"17504","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17505","messages":"17506","suppressedMessages":"17507","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17508","messages":"17509","suppressedMessages":"17510","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17511","messages":"17512","suppressedMessages":"17513","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17514","messages":"17515","suppressedMessages":"17516","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17517","messages":"17518","suppressedMessages":"17519","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17520","messages":"17521","suppressedMessages":"17522","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17523","messages":"17524","suppressedMessages":"17525","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17526","messages":"17527","suppressedMessages":"17528","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17529","messages":"17530","suppressedMessages":"17531","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17532","messages":"17533","suppressedMessages":"17534","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17535","messages":"17536","suppressedMessages":"17537","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17538","messages":"17539","suppressedMessages":"17540","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17541","messages":"17542","suppressedMessages":"17543","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17544","messages":"17545","suppressedMessages":"17546","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17547","messages":"17548","suppressedMessages":"17549","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17550","messages":"17551","suppressedMessages":"17552","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17553","messages":"17554","suppressedMessages":"17555","errorCount":12,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"17556","messages":"17557","suppressedMessages":"17558","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17559","messages":"17560","suppressedMessages":"17561","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17562","messages":"17563","suppressedMessages":"17564","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17565","messages":"17566","suppressedMessages":"17567","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17568","messages":"17569","suppressedMessages":"17570","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17571","messages":"17572","suppressedMessages":"17573","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17574","messages":"17575","suppressedMessages":"17576","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17577","messages":"17578","suppressedMessages":"17579","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17580","messages":"17581","suppressedMessages":"17582","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17583","messages":"17584","suppressedMessages":"17585","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17586","messages":"17587","suppressedMessages":"17588","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17589","messages":"17590","suppressedMessages":"17591","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17592","messages":"17593","suppressedMessages":"17594","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17595","messages":"17596","suppressedMessages":"17597","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17598","messages":"17599","suppressedMessages":"17600","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17601","messages":"17602","suppressedMessages":"17603","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17604","messages":"17605","suppressedMessages":"17606","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17607","messages":"17608","suppressedMessages":"17609","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17610","messages":"17611","suppressedMessages":"17612","errorCount":2,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"17613","messages":"17614","suppressedMessages":"17615","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17616","messages":"17617","suppressedMessages":"17618","errorCount":14,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"17619","messages":"17620","suppressedMessages":"17621","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17622","messages":"17623","suppressedMessages":"17624","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17625","messages":"17626","suppressedMessages":"17627","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17628","messages":"17629","suppressedMessages":"17630","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17631","messages":"17632","suppressedMessages":"17633","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17634","messages":"17635","suppressedMessages":"17636","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17637","messages":"17638","suppressedMessages":"17639","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17640","messages":"17641","suppressedMessages":"17642","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17643","messages":"17644","suppressedMessages":"17645","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17646","messages":"17647","suppressedMessages":"17648","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17649","messages":"17650","suppressedMessages":"17651","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17652","messages":"17653","suppressedMessages":"17654","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17655","messages":"17656","suppressedMessages":"17657","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17658","messages":"17659","suppressedMessages":"17660","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17661","messages":"17662","suppressedMessages":"17663","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17664","messages":"17665","suppressedMessages":"17666","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17667","messages":"17668","suppressedMessages":"17669","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17670","messages":"17671","suppressedMessages":"17672","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17673","messages":"17674","suppressedMessages":"17675","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17676","messages":"17677","suppressedMessages":"17678","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17679","messages":"17680","suppressedMessages":"17681","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17682","messages":"17683","suppressedMessages":"17684","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17685","messages":"17686","suppressedMessages":"17687","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17688","messages":"17689","suppressedMessages":"17690","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17691","messages":"17692","suppressedMessages":"17693","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17694","messages":"17695","suppressedMessages":"17696","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17697","messages":"17698","suppressedMessages":"17699","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17700","messages":"17701","suppressedMessages":"17702","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17703","messages":"17704","suppressedMessages":"17705","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17706","messages":"17707","suppressedMessages":"17708","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17709","messages":"17710","suppressedMessages":"17711","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17712","messages":"17713","suppressedMessages":"17714","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17715","messages":"17716","suppressedMessages":"17717","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17718","messages":"17719","suppressedMessages":"17720","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17721","messages":"17722","suppressedMessages":"17723","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17724","messages":"17725","suppressedMessages":"17726","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17727","messages":"17728","suppressedMessages":"17729","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17730","messages":"17731","suppressedMessages":"17732","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17733","messages":"17734","suppressedMessages":"17735","errorCount":2,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"17736","messages":"17737","suppressedMessages":"17738","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17739","messages":"17740","suppressedMessages":"17741","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17742","messages":"17743","suppressedMessages":"17744","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17745","messages":"17746","suppressedMessages":"17747","errorCount":7,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"17748","messages":"17749","suppressedMessages":"17750","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17751","messages":"17752","suppressedMessages":"17753","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17754","messages":"17755","suppressedMessages":"17756","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17757","messages":"17758","suppressedMessages":"17759","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17760","messages":"17761","suppressedMessages":"17762","errorCount":4,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"17763","messages":"17764","suppressedMessages":"17765","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17766","messages":"17767","suppressedMessages":"17768","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17769","messages":"17770","suppressedMessages":"17771","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17772","messages":"17773","suppressedMessages":"17774","errorCount":11,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"17775","messages":"17776","suppressedMessages":"17777","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17778","messages":"17779","suppressedMessages":"17780","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17781","messages":"17782","suppressedMessages":"17783","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17784","messages":"17785","suppressedMessages":"17786","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17787","messages":"17788","suppressedMessages":"17789","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17790","messages":"17791","suppressedMessages":"17792","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17793","messages":"17794","suppressedMessages":"17795","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17796","messages":"17797","suppressedMessages":"17798","errorCount":3,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"17799","messages":"17800","suppressedMessages":"17801","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17802","messages":"17803","suppressedMessages":"17804","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17805","messages":"17806","suppressedMessages":"17807","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17808","messages":"17809","suppressedMessages":"17810","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17811","messages":"17812","suppressedMessages":"17813","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17814","messages":"17815","suppressedMessages":"17816","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17817","messages":"17818","suppressedMessages":"17819","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17820","messages":"17821","suppressedMessages":"17822","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17823","messages":"17824","suppressedMessages":"17825","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17826","messages":"17827","suppressedMessages":"17828","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17829","messages":"17830","suppressedMessages":"17831","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17832","messages":"17833","suppressedMessages":"17834","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17835","messages":"17836","suppressedMessages":"17837","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17838","messages":"17839","suppressedMessages":"17840","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17841","messages":"17842","suppressedMessages":"17843","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17844","messages":"17845","suppressedMessages":"17846","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17847","messages":"17848","suppressedMessages":"17849","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17850","messages":"17851","suppressedMessages":"17852","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17853","messages":"17854","suppressedMessages":"17855","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17856","messages":"17857","suppressedMessages":"17858","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17859","messages":"17860","suppressedMessages":"17861","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17862","messages":"17863","suppressedMessages":"17864","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17865","messages":"17866","suppressedMessages":"17867","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17868","messages":"17869","suppressedMessages":"17870","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17871","messages":"17872","suppressedMessages":"17873","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17874","messages":"17875","suppressedMessages":"17876","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17877","messages":"17878","suppressedMessages":"17879","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17880","messages":"17881","suppressedMessages":"17882","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"17883","messages":"17884","suppressedMessages":"17885","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17886","messages":"17887","suppressedMessages":"17888","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"17889","messages":"17890","suppressedMessages":"17891","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17892","messages":"17893","suppressedMessages":"17894","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17895","messages":"17896","suppressedMessages":"17897","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17898","messages":"17899","suppressedMessages":"17900","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17901","messages":"17902","suppressedMessages":"17903","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17904","messages":"17905","suppressedMessages":"17906","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17907","messages":"17908","suppressedMessages":"17909","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17910","messages":"17911","suppressedMessages":"17912","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17913","messages":"17914","suppressedMessages":"17915","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17916","messages":"17917","suppressedMessages":"17918","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17919","messages":"17920","suppressedMessages":"17921","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17922","messages":"17923","suppressedMessages":"17924","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17925","messages":"17926","suppressedMessages":"17927","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17928","messages":"17929","suppressedMessages":"17930","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17931","messages":"17932","suppressedMessages":"17933","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17934","messages":"17935","suppressedMessages":"17936","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17937","messages":"17938","suppressedMessages":"17939","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17940","messages":"17941","suppressedMessages":"17942","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17943","messages":"17944","suppressedMessages":"17945","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17946","messages":"17947","suppressedMessages":"17948","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17949","messages":"17950","suppressedMessages":"17951","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17952","messages":"17953","suppressedMessages":"17954","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17955","messages":"17956","suppressedMessages":"17957","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17958","messages":"17959","suppressedMessages":"17960","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17961","messages":"17962","suppressedMessages":"17963","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17964","messages":"17965","suppressedMessages":"17966","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17967","messages":"17968","suppressedMessages":"17969","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17970","messages":"17971","suppressedMessages":"17972","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17973","messages":"17974","suppressedMessages":"17975","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17976","messages":"17977","suppressedMessages":"17978","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17979","messages":"17980","suppressedMessages":"17981","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17982","messages":"17983","suppressedMessages":"17984","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17985","messages":"17986","suppressedMessages":"17987","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17988","messages":"17989","suppressedMessages":"17990","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17991","messages":"17992","suppressedMessages":"17993","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17994","messages":"17995","suppressedMessages":"17996","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"17997","messages":"17998","suppressedMessages":"17999","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18000","messages":"18001","suppressedMessages":"18002","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18003","messages":"18004","suppressedMessages":"18005","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18006","messages":"18007","suppressedMessages":"18008","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18009","messages":"18010","suppressedMessages":"18011","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18012","messages":"18013","suppressedMessages":"18014","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18015","messages":"18016","suppressedMessages":"18017","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18018","messages":"18019","suppressedMessages":"18020","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18021","messages":"18022","suppressedMessages":"18023","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18024","messages":"18025","suppressedMessages":"18026","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18027","messages":"18028","suppressedMessages":"18029","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18030","messages":"18031","suppressedMessages":"18032","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18033","messages":"18034","suppressedMessages":"18035","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18036","messages":"18037","suppressedMessages":"18038","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18039","messages":"18040","suppressedMessages":"18041","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18042","messages":"18043","suppressedMessages":"18044","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18045","messages":"18046","suppressedMessages":"18047","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18048","messages":"18049","suppressedMessages":"18050","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18051","messages":"18052","suppressedMessages":"18053","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18054","messages":"18055","suppressedMessages":"18056","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18057","messages":"18058","suppressedMessages":"18059","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18060","messages":"18061","suppressedMessages":"18062","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18063","messages":"18064","suppressedMessages":"18065","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18066","messages":"18067","suppressedMessages":"18068","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18069","messages":"18070","suppressedMessages":"18071","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"18072","messages":"18073","suppressedMessages":"18074","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18075","messages":"18076","suppressedMessages":"18077","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18078","messages":"18079","suppressedMessages":"18080","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18081","messages":"18082","suppressedMessages":"18083","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18084","messages":"18085","suppressedMessages":"18086","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18087","messages":"18088","suppressedMessages":"18089","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18090","messages":"18091","suppressedMessages":"18092","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18093","messages":"18094","suppressedMessages":"18095","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18096","messages":"18097","suppressedMessages":"18098","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18099","messages":"18100","suppressedMessages":"18101","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18102","messages":"18103","suppressedMessages":"18104","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18105","messages":"18106","suppressedMessages":"18107","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18108","messages":"18109","suppressedMessages":"18110","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18111","messages":"18112","suppressedMessages":"18113","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18114","messages":"18115","suppressedMessages":"18116","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18117","messages":"18118","suppressedMessages":"18119","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18120","messages":"18121","suppressedMessages":"18122","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18123","messages":"18124","suppressedMessages":"18125","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18126","messages":"18127","suppressedMessages":"18128","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18129","messages":"18130","suppressedMessages":"18131","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18132","messages":"18133","suppressedMessages":"18134","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18135","messages":"18136","suppressedMessages":"18137","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18138","messages":"18139","suppressedMessages":"18140","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18141","messages":"18142","suppressedMessages":"18143","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18144","messages":"18145","suppressedMessages":"18146","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18147","messages":"18148","suppressedMessages":"18149","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18150","messages":"18151","suppressedMessages":"18152","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18153","messages":"18154","suppressedMessages":"18155","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"18156","messages":"18157","suppressedMessages":"18158","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18159","messages":"18160","suppressedMessages":"18161","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18162","messages":"18163","suppressedMessages":"18164","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18165","messages":"18166","suppressedMessages":"18167","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18168","messages":"18169","suppressedMessages":"18170","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"18171","messages":"18172","suppressedMessages":"18173","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"18174","messages":"18175","suppressedMessages":"18176","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18177","messages":"18178","suppressedMessages":"18179","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18180","messages":"18181","suppressedMessages":"18182","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18183","messages":"18184","suppressedMessages":"18185","errorCount":34,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"18186","messages":"18187","suppressedMessages":"18188","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18189","messages":"18190","suppressedMessages":"18191","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"18192","messages":"18193","suppressedMessages":"18194","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18195","messages":"18196","suppressedMessages":"18197","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18198","messages":"18199","suppressedMessages":"18200","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18201","messages":"18202","suppressedMessages":"18203","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18204","messages":"18205","suppressedMessages":"18206","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18207","messages":"18208","suppressedMessages":"18209","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18210","messages":"18211","suppressedMessages":"18212","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18213","messages":"18214","suppressedMessages":"18215","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18216","messages":"18217","suppressedMessages":"18218","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18219","messages":"18220","suppressedMessages":"18221","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18222","messages":"18223","suppressedMessages":"18224","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18225","messages":"18226","suppressedMessages":"18227","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"18228","messages":"18229","suppressedMessages":"18230","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18231","messages":"18232","suppressedMessages":"18233","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18234","messages":"18235","suppressedMessages":"18236","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"1invka3",{"filePath":"18237","messages":"18238","suppressedMessages":"18239","errorCount":5,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"18240","messages":"18241","suppressedMessages":"18242","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"18243","messages":"18244","suppressedMessages":"18245","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18246","messages":"18247","suppressedMessages":"18248","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18249","messages":"18250","suppressedMessages":"18251","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18252","messages":"18253","suppressedMessages":"18254","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18255","messages":"18256","suppressedMessages":"18257","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"18258","messages":"18259","suppressedMessages":"18260","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18261","messages":"18262","suppressedMessages":"18263","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18264","messages":"18265","suppressedMessages":"18266","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18267","messages":"18268","suppressedMessages":"18269","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18270","messages":"18271","suppressedMessages":"18272","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18273","messages":"18274","suppressedMessages":"18275","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18276","messages":"18277","suppressedMessages":"18278","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18279","messages":"18280","suppressedMessages":"18281","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18282","messages":"18283","suppressedMessages":"18284","errorCount":2,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"18285","messages":"18286","suppressedMessages":"18287","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"18288","messages":"18289","suppressedMessages":"18290","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18291","messages":"18292","suppressedMessages":"18293","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18294","messages":"18295","suppressedMessages":"18296","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18297","messages":"18298","suppressedMessages":"18299","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18300","messages":"18301","suppressedMessages":"18302","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18303","messages":"18304","suppressedMessages":"18305","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18306","messages":"18307","suppressedMessages":"18308","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18309","messages":"18310","suppressedMessages":"18311","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18312","messages":"18313","suppressedMessages":"18314","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18315","messages":"18316","suppressedMessages":"18317","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18318","messages":"18319","suppressedMessages":"18320","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18321","messages":"18322","suppressedMessages":"18323","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18324","messages":"18325","suppressedMessages":"18326","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18327","messages":"18328","suppressedMessages":"18329","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18330","messages":"18331","suppressedMessages":"18332","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18333","messages":"18334","suppressedMessages":"18335","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18336","messages":"18337","suppressedMessages":"18338","errorCount":4,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"18339","messages":"18340","suppressedMessages":"18341","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18342","messages":"18343","suppressedMessages":"18344","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18345","messages":"18346","suppressedMessages":"18347","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18348","messages":"18349","suppressedMessages":"18350","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18351","messages":"18352","suppressedMessages":"18353","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18354","messages":"18355","suppressedMessages":"18356","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18357","messages":"18358","suppressedMessages":"18359","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18360","messages":"18361","suppressedMessages":"18362","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18363","messages":"18364","suppressedMessages":"18365","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"18366","messages":"18367","suppressedMessages":"18368","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18369","messages":"18370","suppressedMessages":"18371","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18372","messages":"18373","suppressedMessages":"18374","errorCount":2,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"18375","messages":"18376","suppressedMessages":"18377","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18378","messages":"18379","suppressedMessages":"18380","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18381","messages":"18382","suppressedMessages":"18383","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18384","messages":"18385","suppressedMessages":"18386","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18387","messages":"18388","suppressedMessages":"18389","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18390","messages":"18391","suppressedMessages":"18392","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"18393","messages":"18394","suppressedMessages":"18395","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"18396","messages":"18397","suppressedMessages":"18398","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18399","messages":"18400","suppressedMessages":"18401","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18402","messages":"18403","suppressedMessages":"18404","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18405","messages":"18406","suppressedMessages":"18407","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18408","messages":"18409","suppressedMessages":"18410","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18411","messages":"18412","suppressedMessages":"18413","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18414","messages":"18415","suppressedMessages":"18416","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18417","messages":"18418","suppressedMessages":"18419","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18420","messages":"18421","suppressedMessages":"18422","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18423","messages":"18424","suppressedMessages":"18425","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18426","messages":"18427","suppressedMessages":"18428","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18429","messages":"18430","suppressedMessages":"18431","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18432","messages":"18433","suppressedMessages":"18434","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18435","messages":"18436","suppressedMessages":"18437","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18438","messages":"18439","suppressedMessages":"18440","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18441","messages":"18442","suppressedMessages":"18443","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18444","messages":"18445","suppressedMessages":"18446","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18447","messages":"18448","suppressedMessages":"18449","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18450","messages":"18451","suppressedMessages":"18452","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18453","messages":"18454","suppressedMessages":"18455","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18456","messages":"18457","suppressedMessages":"18458","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18459","messages":"18460","suppressedMessages":"18461","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18462","messages":"18463","suppressedMessages":"18464","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18465","messages":"18466","suppressedMessages":"18467","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18468","messages":"18469","suppressedMessages":"18470","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18471","messages":"18472","suppressedMessages":"18473","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18474","messages":"18475","suppressedMessages":"18476","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18477","messages":"18478","suppressedMessages":"18479","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18480","messages":"18481","suppressedMessages":"18482","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18483","messages":"18484","suppressedMessages":"18485","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18486","messages":"18487","suppressedMessages":"18488","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18489","messages":"18490","suppressedMessages":"18491","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"18492","messages":"18493","suppressedMessages":"18494","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18495","messages":"18496","suppressedMessages":"18497","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18498","messages":"18499","suppressedMessages":"18500","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18501","messages":"18502","suppressedMessages":"18503","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18504","messages":"18505","suppressedMessages":"18506","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18507","messages":"18508","suppressedMessages":"18509","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18510","messages":"18511","suppressedMessages":"18512","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18513","messages":"18514","suppressedMessages":"18515","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18516","messages":"18517","suppressedMessages":"18518","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18519","messages":"18520","suppressedMessages":"18521","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18522","messages":"18523","suppressedMessages":"18524","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18525","messages":"18526","suppressedMessages":"18527","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18528","messages":"18529","suppressedMessages":"18530","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18531","messages":"18532","suppressedMessages":"18533","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18534","messages":"18535","suppressedMessages":"18536","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18537","messages":"18538","suppressedMessages":"18539","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18540","messages":"18541","suppressedMessages":"18542","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18543","messages":"18544","suppressedMessages":"18545","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18546","messages":"18547","suppressedMessages":"18548","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18549","messages":"18550","suppressedMessages":"18551","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18552","messages":"18553","suppressedMessages":"18554","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18555","messages":"18556","suppressedMessages":"18557","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18558","messages":"18559","suppressedMessages":"18560","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18561","messages":"18562","suppressedMessages":"18563","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18564","messages":"18565","suppressedMessages":"18566","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18567","messages":"18568","suppressedMessages":"18569","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18570","messages":"18571","suppressedMessages":"18572","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18573","messages":"18574","suppressedMessages":"18575","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18576","messages":"18577","suppressedMessages":"18578","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18579","messages":"18580","suppressedMessages":"18581","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18582","messages":"18583","suppressedMessages":"18584","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18585","messages":"18586","suppressedMessages":"18587","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18588","messages":"18589","suppressedMessages":"18590","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18591","messages":"18592","suppressedMessages":"18593","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18594","messages":"18595","suppressedMessages":"18596","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18597","messages":"18598","suppressedMessages":"18599","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18600","messages":"18601","suppressedMessages":"18602","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18603","messages":"18604","suppressedMessages":"18605","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18606","messages":"18607","suppressedMessages":"18608","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18609","messages":"18610","suppressedMessages":"18611","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18612","messages":"18613","suppressedMessages":"18614","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18615","messages":"18616","suppressedMessages":"18617","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18618","messages":"18619","suppressedMessages":"18620","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"18621","messages":"18622","suppressedMessages":"18623","errorCount":20,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"18624","messages":"18625","suppressedMessages":"18626","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18627","messages":"18628","suppressedMessages":"18629","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18630","messages":"18631","suppressedMessages":"18632","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18633","messages":"18634","suppressedMessages":"18635","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18636","messages":"18637","suppressedMessages":"18638","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18639","messages":"18640","suppressedMessages":"18641","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18642","messages":"18643","suppressedMessages":"18644","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18645","messages":"18646","suppressedMessages":"18647","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18648","messages":"18649","suppressedMessages":"18650","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18651","messages":"18652","suppressedMessages":"18653","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18654","messages":"18655","suppressedMessages":"18656","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18657","messages":"18658","suppressedMessages":"18659","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18660","messages":"18661","suppressedMessages":"18662","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18663","messages":"18664","suppressedMessages":"18665","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18666","messages":"18667","suppressedMessages":"18668","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18669","messages":"18670","suppressedMessages":"18671","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18672","messages":"18673","suppressedMessages":"18674","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18675","messages":"18676","suppressedMessages":"18677","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18678","messages":"18679","suppressedMessages":"18680","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18681","messages":"18682","suppressedMessages":"18683","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18684","messages":"18685","suppressedMessages":"18686","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18687","messages":"18688","suppressedMessages":"18689","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18690","messages":"18691","suppressedMessages":"18692","errorCount":3,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"18693","messages":"18694","suppressedMessages":"18695","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18696","messages":"18697","suppressedMessages":"18698","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18699","messages":"18700","suppressedMessages":"18701","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18702","messages":"18703","suppressedMessages":"18704","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18705","messages":"18706","suppressedMessages":"18707","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"18708","messages":"18709","suppressedMessages":"18710","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"18711","messages":"18712","suppressedMessages":"18713","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18714","messages":"18715","suppressedMessages":"18716","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18717","messages":"18718","suppressedMessages":"18719","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18720","messages":"18721","suppressedMessages":"18722","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18723","messages":"18724","suppressedMessages":"18725","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18726","messages":"18727","suppressedMessages":"18728","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18729","messages":"18730","suppressedMessages":"18731","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18732","messages":"18733","suppressedMessages":"18734","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18735","messages":"18736","suppressedMessages":"18737","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18738","messages":"18739","suppressedMessages":"18740","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18741","messages":"18742","suppressedMessages":"18743","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18744","messages":"18745","suppressedMessages":"18746","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"18747","messages":"18748","suppressedMessages":"18749","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18750","messages":"18751","suppressedMessages":"18752","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18753","messages":"18754","suppressedMessages":"18755","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18756","messages":"18757","suppressedMessages":"18758","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18759","messages":"18760","suppressedMessages":"18761","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18762","messages":"18763","suppressedMessages":"18764","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18765","messages":"18766","suppressedMessages":"18767","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18768","messages":"18769","suppressedMessages":"18770","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18771","messages":"18772","suppressedMessages":"18773","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18774","messages":"18775","suppressedMessages":"18776","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18777","messages":"18778","suppressedMessages":"18779","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18780","messages":"18781","suppressedMessages":"18782","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18783","messages":"18784","suppressedMessages":"18785","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"18786","messages":"18787","suppressedMessages":"18788","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18789","messages":"18790","suppressedMessages":"18791","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18792","messages":"18793","suppressedMessages":"18794","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18795","messages":"18796","suppressedMessages":"18797","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18798","messages":"18799","suppressedMessages":"18800","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18801","messages":"18802","suppressedMessages":"18803","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18804","messages":"18805","suppressedMessages":"18806","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18807","messages":"18808","suppressedMessages":"18809","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18810","messages":"18811","suppressedMessages":"18812","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18813","messages":"18814","suppressedMessages":"18815","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18816","messages":"18817","suppressedMessages":"18818","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18819","messages":"18820","suppressedMessages":"18821","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18822","messages":"18823","suppressedMessages":"18824","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18825","messages":"18826","suppressedMessages":"18827","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18828","messages":"18829","suppressedMessages":"18830","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18831","messages":"18832","suppressedMessages":"18833","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18834","messages":"18835","suppressedMessages":"18836","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18837","messages":"18838","suppressedMessages":"18839","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18840","messages":"18841","suppressedMessages":"18842","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18843","messages":"18844","suppressedMessages":"18845","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18846","messages":"18847","suppressedMessages":"18848","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18849","messages":"18850","suppressedMessages":"18851","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18852","messages":"18853","suppressedMessages":"18854","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18855","messages":"18856","suppressedMessages":"18857","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18858","messages":"18859","suppressedMessages":"18860","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18861","messages":"18862","suppressedMessages":"18863","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18864","messages":"18865","suppressedMessages":"18866","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18867","messages":"18868","suppressedMessages":"18869","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18870","messages":"18871","suppressedMessages":"18872","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18873","messages":"18874","suppressedMessages":"18875","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18876","messages":"18877","suppressedMessages":"18878","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18879","messages":"18880","suppressedMessages":"18881","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18882","messages":"18883","suppressedMessages":"18884","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18885","messages":"18886","suppressedMessages":"18887","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18888","messages":"18889","suppressedMessages":"18890","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18891","messages":"18892","suppressedMessages":"18893","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18894","messages":"18895","suppressedMessages":"18896","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18897","messages":"18898","suppressedMessages":"18899","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18900","messages":"18901","suppressedMessages":"18902","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18903","messages":"18904","suppressedMessages":"18905","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18906","messages":"18907","suppressedMessages":"18908","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18909","messages":"18910","suppressedMessages":"18911","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18912","messages":"18913","suppressedMessages":"18914","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18915","messages":"18916","suppressedMessages":"18917","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18918","messages":"18919","suppressedMessages":"18920","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18921","messages":"18922","suppressedMessages":"18923","errorCount":22,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"18924","messages":"18925","suppressedMessages":"18926","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18927","messages":"18928","suppressedMessages":"18929","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18930","messages":"18931","suppressedMessages":"18932","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"18933","messages":"18934","suppressedMessages":"18935","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18936","messages":"18937","suppressedMessages":"18938","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18939","messages":"18940","suppressedMessages":"18941","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18942","messages":"18943","suppressedMessages":"18944","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18945","messages":"18946","suppressedMessages":"18947","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18948","messages":"18949","suppressedMessages":"18950","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18951","messages":"18952","suppressedMessages":"18953","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18954","messages":"18955","suppressedMessages":"18956","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18957","messages":"18958","suppressedMessages":"18959","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18960","messages":"18961","suppressedMessages":"18962","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18963","messages":"18964","suppressedMessages":"18965","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18966","messages":"18967","suppressedMessages":"18968","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18969","messages":"18970","suppressedMessages":"18971","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18972","messages":"18973","suppressedMessages":"18974","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18975","messages":"18976","suppressedMessages":"18977","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18978","messages":"18979","suppressedMessages":"18980","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18981","messages":"18982","suppressedMessages":"18983","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18984","messages":"18985","suppressedMessages":"18986","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18987","messages":"18988","suppressedMessages":"18989","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18990","messages":"18991","suppressedMessages":"18992","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18993","messages":"18994","suppressedMessages":"18995","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18996","messages":"18997","suppressedMessages":"18998","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18999","messages":"19000","suppressedMessages":"19001","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19002","messages":"19003","suppressedMessages":"19004","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19005","messages":"19006","suppressedMessages":"19007","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19008","messages":"19009","suppressedMessages":"19010","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19011","messages":"19012","suppressedMessages":"19013","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19014","messages":"19015","suppressedMessages":"19016","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19017","messages":"19018","suppressedMessages":"19019","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19020","messages":"19021","suppressedMessages":"19022","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19023","messages":"19024","suppressedMessages":"19025","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19026","messages":"19027","suppressedMessages":"19028","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19029","messages":"19030","suppressedMessages":"19031","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19032","messages":"19033","suppressedMessages":"19034","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19035","messages":"19036","suppressedMessages":"19037","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19038","messages":"19039","suppressedMessages":"19040","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19041","messages":"19042","suppressedMessages":"19043","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19044","messages":"19045","suppressedMessages":"19046","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19047","messages":"19048","suppressedMessages":"19049","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19050","messages":"19051","suppressedMessages":"19052","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19053","messages":"19054","suppressedMessages":"19055","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19056","messages":"19057","suppressedMessages":"19058","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19059","messages":"19060","suppressedMessages":"19061","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19062","messages":"19063","suppressedMessages":"19064","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19065","messages":"19066","suppressedMessages":"19067","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19068","messages":"19069","suppressedMessages":"19070","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19071","messages":"19072","suppressedMessages":"19073","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19074","messages":"19075","suppressedMessages":"19076","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19077","messages":"19078","suppressedMessages":"19079","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19080","messages":"19081","suppressedMessages":"19082","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19083","messages":"19084","suppressedMessages":"19085","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19086","messages":"19087","suppressedMessages":"19088","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19089","messages":"19090","suppressedMessages":"19091","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19092","messages":"19093","suppressedMessages":"19094","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19095","messages":"19096","suppressedMessages":"19097","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19098","messages":"19099","suppressedMessages":"19100","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19101","messages":"19102","suppressedMessages":"19103","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19104","messages":"19105","suppressedMessages":"19106","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19107","messages":"19108","suppressedMessages":"19109","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19110","messages":"19111","suppressedMessages":"19112","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19113","messages":"19114","suppressedMessages":"19115","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19116","messages":"19117","suppressedMessages":"19118","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19119","messages":"19120","suppressedMessages":"19121","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19122","messages":"19123","suppressedMessages":"19124","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19125","messages":"19126","suppressedMessages":"19127","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19128","messages":"19129","suppressedMessages":"19130","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19131","messages":"19132","suppressedMessages":"19133","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19134","messages":"19135","suppressedMessages":"19136","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19137","messages":"19138","suppressedMessages":"19139","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19140","messages":"19141","suppressedMessages":"19142","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19143","messages":"19144","suppressedMessages":"19145","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19146","messages":"19147","suppressedMessages":"19148","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19149","messages":"19150","suppressedMessages":"19151","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19152","messages":"19153","suppressedMessages":"19154","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19155","messages":"19156","suppressedMessages":"19157","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19158","messages":"19159","suppressedMessages":"19160","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19161","messages":"19162","suppressedMessages":"19163","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19164","messages":"19165","suppressedMessages":"19166","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19167","messages":"19168","suppressedMessages":"19169","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19170","messages":"19171","suppressedMessages":"19172","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19173","messages":"19174","suppressedMessages":"19175","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19176","messages":"19177","suppressedMessages":"19178","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19179","messages":"19180","suppressedMessages":"19181","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19182","messages":"19183","suppressedMessages":"19184","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19185","messages":"19186","suppressedMessages":"19187","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19188","messages":"19189","suppressedMessages":"19190","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19191","messages":"19192","suppressedMessages":"19193","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19194","messages":"19195","suppressedMessages":"19196","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19197","messages":"19198","suppressedMessages":"19199","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19200","messages":"19201","suppressedMessages":"19202","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19203","messages":"19204","suppressedMessages":"19205","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19206","messages":"19207","suppressedMessages":"19208","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19209","messages":"19210","suppressedMessages":"19211","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19212","messages":"19213","suppressedMessages":"19214","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19215","messages":"19216","suppressedMessages":"19217","errorCount":2,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"19218","messages":"19219","suppressedMessages":"19220","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19221","messages":"19222","suppressedMessages":"19223","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19224","messages":"19225","suppressedMessages":"19226","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19227","messages":"19228","suppressedMessages":"19229","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19230","messages":"19231","suppressedMessages":"19232","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19233","messages":"19234","suppressedMessages":"19235","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19236","messages":"19237","suppressedMessages":"19238","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19239","messages":"19240","suppressedMessages":"19241","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19242","messages":"19243","suppressedMessages":"19244","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19245","messages":"19246","suppressedMessages":"19247","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19248","messages":"19249","suppressedMessages":"19250","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19251","messages":"19252","suppressedMessages":"19253","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19254","messages":"19255","suppressedMessages":"19256","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19257","messages":"19258","suppressedMessages":"19259","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19260","messages":"19261","suppressedMessages":"19262","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19263","messages":"19264","suppressedMessages":"19265","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19266","messages":"19267","suppressedMessages":"19268","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19269","messages":"19270","suppressedMessages":"19271","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19272","messages":"19273","suppressedMessages":"19274","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19275","messages":"19276","suppressedMessages":"19277","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"19278","messages":"19279","suppressedMessages":"19280","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"19281","messages":"19282","suppressedMessages":"19283","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19284","messages":"19285","suppressedMessages":"19286","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"19287","messages":"19288","suppressedMessages":"19289","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19290","messages":"19291","suppressedMessages":"19292","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19293","messages":"19294","suppressedMessages":"19295","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19296","messages":"19297","suppressedMessages":"19298","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19299","messages":"19300","suppressedMessages":"19301","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19302","messages":"19303","suppressedMessages":"19304","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19305","messages":"19306","suppressedMessages":"19307","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19308","messages":"19309","suppressedMessages":"19310","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19311","messages":"19312","suppressedMessages":"19313","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19314","messages":"19315","suppressedMessages":"19316","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19317","messages":"19318","suppressedMessages":"19319","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19320","messages":"19321","suppressedMessages":"19322","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"19323","messages":"19324","suppressedMessages":"19325","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19326","messages":"19327","suppressedMessages":"19328","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19329","messages":"19330","suppressedMessages":"19331","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19332","messages":"19333","suppressedMessages":"19334","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19335","messages":"19336","suppressedMessages":"19337","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19338","messages":"19339","suppressedMessages":"19340","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19341","messages":"19342","suppressedMessages":"19343","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19344","messages":"19345","suppressedMessages":"19346","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19347","messages":"19348","suppressedMessages":"19349","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19350","messages":"19351","suppressedMessages":"19352","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19353","messages":"19354","suppressedMessages":"19355","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19356","messages":"19357","suppressedMessages":"19358","errorCount":2,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"19359","messages":"19360","suppressedMessages":"19361","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19362","messages":"19363","suppressedMessages":"19364","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19365","messages":"19366","suppressedMessages":"19367","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"19368","messages":"19369","suppressedMessages":"19370","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19371","messages":"19372","suppressedMessages":"19373","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19374","messages":"19375","suppressedMessages":"19376","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19377","messages":"19378","suppressedMessages":"19379","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19380","messages":"19381","suppressedMessages":"19382","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19383","messages":"19384","suppressedMessages":"19385","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19386","messages":"19387","suppressedMessages":"19388","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19389","messages":"19390","suppressedMessages":"19391","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19392","messages":"19393","suppressedMessages":"19394","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19395","messages":"19396","suppressedMessages":"19397","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19398","messages":"19399","suppressedMessages":"19400","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19401","messages":"19402","suppressedMessages":"19403","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19404","messages":"19405","suppressedMessages":"19406","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19407","messages":"19408","suppressedMessages":"19409","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19410","messages":"19411","suppressedMessages":"19412","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19413","messages":"19414","suppressedMessages":"19415","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19416","messages":"19417","suppressedMessages":"19418","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19419","messages":"19420","suppressedMessages":"19421","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19422","messages":"19423","suppressedMessages":"19424","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19425","messages":"19426","suppressedMessages":"19427","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19428","messages":"19429","suppressedMessages":"19430","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"19431","messages":"19432","suppressedMessages":"19433","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"19434","messages":"19435","suppressedMessages":"19436","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19437","messages":"19438","suppressedMessages":"19439","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19440","messages":"19441","suppressedMessages":"19442","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19443","messages":"19444","suppressedMessages":"19445","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19446","messages":"19447","suppressedMessages":"19448","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19449","messages":"19450","suppressedMessages":"19451","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19452","messages":"19453","suppressedMessages":"19454","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19455","messages":"19456","suppressedMessages":"19457","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19458","messages":"19459","suppressedMessages":"19460","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19461","messages":"19462","suppressedMessages":"19463","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19464","messages":"19465","suppressedMessages":"19466","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19467","messages":"19468","suppressedMessages":"19469","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19470","messages":"19471","suppressedMessages":"19472","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19473","messages":"19474","suppressedMessages":"19475","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19476","messages":"19477","suppressedMessages":"19478","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19479","messages":"19480","suppressedMessages":"19481","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19482","messages":"19483","suppressedMessages":"19484","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19485","messages":"19486","suppressedMessages":"19487","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19488","messages":"19489","suppressedMessages":"19490","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19491","messages":"19492","suppressedMessages":"19493","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19494","messages":"19495","suppressedMessages":"19496","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19497","messages":"19498","suppressedMessages":"19499","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19500","messages":"19501","suppressedMessages":"19502","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19503","messages":"19504","suppressedMessages":"19505","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19506","messages":"19507","suppressedMessages":"19508","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19509","messages":"19510","suppressedMessages":"19511","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19512","messages":"19513","suppressedMessages":"19514","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19515","messages":"19516","suppressedMessages":"19517","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19518","messages":"19519","suppressedMessages":"19520","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19521","messages":"19522","suppressedMessages":"19523","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19524","messages":"19525","suppressedMessages":"19526","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19527","messages":"19528","suppressedMessages":"19529","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19530","messages":"19531","suppressedMessages":"19532","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19533","messages":"19534","suppressedMessages":"19535","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19536","messages":"19537","suppressedMessages":"19538","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19539","messages":"19540","suppressedMessages":"19541","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19542","messages":"19543","suppressedMessages":"19544","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19545","messages":"19546","suppressedMessages":"19547","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19548","messages":"19549","suppressedMessages":"19550","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19551","messages":"19552","suppressedMessages":"19553","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19554","messages":"19555","suppressedMessages":"19556","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19557","messages":"19558","suppressedMessages":"19559","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19560","messages":"19561","suppressedMessages":"19562","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19563","messages":"19564","suppressedMessages":"19565","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19566","messages":"19567","suppressedMessages":"19568","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19569","messages":"19570","suppressedMessages":"19571","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19572","messages":"19573","suppressedMessages":"19574","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19575","messages":"19576","suppressedMessages":"19577","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19578","messages":"19579","suppressedMessages":"19580","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19581","messages":"19582","suppressedMessages":"19583","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19584","messages":"19585","suppressedMessages":"19586","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19587","messages":"19588","suppressedMessages":"19589","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19590","messages":"19591","suppressedMessages":"19592","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19593","messages":"19594","suppressedMessages":"19595","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19596","messages":"19597","suppressedMessages":"19598","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19599","messages":"19600","suppressedMessages":"19601","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19602","messages":"19603","suppressedMessages":"19604","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19605","messages":"19606","suppressedMessages":"19607","errorCount":4,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"19608","messages":"19609","suppressedMessages":"19610","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19611","messages":"19612","suppressedMessages":"19613","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19614","messages":"19615","suppressedMessages":"19616","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19617","messages":"19618","suppressedMessages":"19619","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19620","messages":"19621","suppressedMessages":"19622","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19623","messages":"19624","suppressedMessages":"19625","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19626","messages":"19627","suppressedMessages":"19628","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19629","messages":"19630","suppressedMessages":"19631","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19632","messages":"19633","suppressedMessages":"19634","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"19635","messages":"19636","suppressedMessages":"19637","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19638","messages":"19639","suppressedMessages":"19640","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19641","messages":"19642","suppressedMessages":"19643","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19644","messages":"19645","suppressedMessages":"19646","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19647","messages":"19648","suppressedMessages":"19649","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19650","messages":"19651","suppressedMessages":"19652","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19653","messages":"19654","suppressedMessages":"19655","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19656","messages":"19657","suppressedMessages":"19658","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19659","messages":"19660","suppressedMessages":"19661","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19662","messages":"19663","suppressedMessages":"19664","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19665","messages":"19666","suppressedMessages":"19667","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19668","messages":"19669","suppressedMessages":"19670","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19671","messages":"19672","suppressedMessages":"19673","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19674","messages":"19675","suppressedMessages":"19676","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19677","messages":"19678","suppressedMessages":"19679","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19680","messages":"19681","suppressedMessages":"19682","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19683","messages":"19684","suppressedMessages":"19685","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19686","messages":"19687","suppressedMessages":"19688","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"19689","messages":"19690","suppressedMessages":"19691","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19692","messages":"19693","suppressedMessages":"19694","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19695","messages":"19696","suppressedMessages":"19697","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19698","messages":"19699","suppressedMessages":"19700","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19701","messages":"19702","suppressedMessages":"19703","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19704","messages":"19705","suppressedMessages":"19706","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19707","messages":"19708","suppressedMessages":"19709","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19710","messages":"19711","suppressedMessages":"19712","errorCount":2,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"19713","messages":"19714","suppressedMessages":"19715","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19716","messages":"19717","suppressedMessages":"19718","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19719","messages":"19720","suppressedMessages":"19721","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19722","messages":"19723","suppressedMessages":"19724","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19725","messages":"19726","suppressedMessages":"19727","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19728","messages":"19729","suppressedMessages":"19730","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19731","messages":"19732","suppressedMessages":"19733","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19734","messages":"19735","suppressedMessages":"19736","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19737","messages":"19738","suppressedMessages":"19739","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19740","messages":"19741","suppressedMessages":"19742","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19743","messages":"19744","suppressedMessages":"19745","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19746","messages":"19747","suppressedMessages":"19748","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19749","messages":"19750","suppressedMessages":"19751","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19752","messages":"19753","suppressedMessages":"19754","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19755","messages":"19756","suppressedMessages":"19757","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19758","messages":"19759","suppressedMessages":"19760","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19761","messages":"19762","suppressedMessages":"19763","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19764","messages":"19765","suppressedMessages":"19766","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19767","messages":"19768","suppressedMessages":"19769","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"19770","messages":"19771","suppressedMessages":"19772","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19773","messages":"19774","suppressedMessages":"19775","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19776","messages":"19777","suppressedMessages":"19778","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19779","messages":"19780","suppressedMessages":"19781","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19782","messages":"19783","suppressedMessages":"19784","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19785","messages":"19786","suppressedMessages":"19787","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"19788","messages":"19789","suppressedMessages":"19790","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19791","messages":"19792","suppressedMessages":"19793","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19794","messages":"19795","suppressedMessages":"19796","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19797","messages":"19798","suppressedMessages":"19799","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19800","messages":"19801","suppressedMessages":"19802","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19803","messages":"19804","suppressedMessages":"19805","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19806","messages":"19807","suppressedMessages":"19808","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19809","messages":"19810","suppressedMessages":"19811","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19812","messages":"19813","suppressedMessages":"19814","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19815","messages":"19816","suppressedMessages":"19817","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19818","messages":"19819","suppressedMessages":"19820","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19821","messages":"19822","suppressedMessages":"19823","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19824","messages":"19825","suppressedMessages":"19826","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19827","messages":"19828","suppressedMessages":"19829","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19830","messages":"19831","suppressedMessages":"19832","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19833","messages":"19834","suppressedMessages":"19835","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19836","messages":"19837","suppressedMessages":"19838","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19839","messages":"19840","suppressedMessages":"19841","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19842","messages":"19843","suppressedMessages":"19844","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19845","messages":"19846","suppressedMessages":"19847","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19848","messages":"19849","suppressedMessages":"19850","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19851","messages":"19852","suppressedMessages":"19853","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19854","messages":"19855","suppressedMessages":"19856","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19857","messages":"19858","suppressedMessages":"19859","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19860","messages":"19861","suppressedMessages":"19862","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19863","messages":"19864","suppressedMessages":"19865","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19866","messages":"19867","suppressedMessages":"19868","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19869","messages":"19870","suppressedMessages":"19871","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19872","messages":"19873","suppressedMessages":"19874","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19875","messages":"19876","suppressedMessages":"19877","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19878","messages":"19879","suppressedMessages":"19880","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19881","messages":"19882","suppressedMessages":"19883","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19884","messages":"19885","suppressedMessages":"19886","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19887","messages":"19888","suppressedMessages":"19889","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19890","messages":"19891","suppressedMessages":"19892","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19893","messages":"19894","suppressedMessages":"19895","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19896","messages":"19897","suppressedMessages":"19898","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19899","messages":"19900","suppressedMessages":"19901","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19902","messages":"19903","suppressedMessages":"19904","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19905","messages":"19906","suppressedMessages":"19907","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19908","messages":"19909","suppressedMessages":"19910","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19911","messages":"19912","suppressedMessages":"19913","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19914","messages":"19915","suppressedMessages":"19916","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19917","messages":"19918","suppressedMessages":"19919","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19920","messages":"19921","suppressedMessages":"19922","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19923","messages":"19924","suppressedMessages":"19925","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19926","messages":"19927","suppressedMessages":"19928","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19929","messages":"19930","suppressedMessages":"19931","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19932","messages":"19933","suppressedMessages":"19934","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19935","messages":"19936","suppressedMessages":"19937","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19938","messages":"19939","suppressedMessages":"19940","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19941","messages":"19942","suppressedMessages":"19943","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19944","messages":"19945","suppressedMessages":"19946","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19947","messages":"19948","suppressedMessages":"19949","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19950","messages":"19951","suppressedMessages":"19952","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19953","messages":"19954","suppressedMessages":"19955","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19956","messages":"19957","suppressedMessages":"19958","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19959","messages":"19960","suppressedMessages":"19961","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19962","messages":"19963","suppressedMessages":"19964","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19965","messages":"19966","suppressedMessages":"19967","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19968","messages":"19969","suppressedMessages":"19970","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19971","messages":"19972","suppressedMessages":"19973","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19974","messages":"19975","suppressedMessages":"19976","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19977","messages":"19978","suppressedMessages":"19979","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19980","messages":"19981","suppressedMessages":"19982","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19983","messages":"19984","suppressedMessages":"19985","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19986","messages":"19987","suppressedMessages":"19988","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19989","messages":"19990","suppressedMessages":"19991","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19992","messages":"19993","suppressedMessages":"19994","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19995","messages":"19996","suppressedMessages":"19997","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"19998","messages":"19999","suppressedMessages":"20000","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20001","messages":"20002","suppressedMessages":"20003","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20004","messages":"20005","suppressedMessages":"20006","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20007","messages":"20008","suppressedMessages":"20009","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20010","messages":"20011","suppressedMessages":"20012","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20013","messages":"20014","suppressedMessages":"20015","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20016","messages":"20017","suppressedMessages":"20018","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20019","messages":"20020","suppressedMessages":"20021","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20022","messages":"20023","suppressedMessages":"20024","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20025","messages":"20026","suppressedMessages":"20027","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20028","messages":"20029","suppressedMessages":"20030","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20031","messages":"20032","suppressedMessages":"20033","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20034","messages":"20035","suppressedMessages":"20036","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20037","messages":"20038","suppressedMessages":"20039","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20040","messages":"20041","suppressedMessages":"20042","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20043","messages":"20044","suppressedMessages":"20045","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20046","messages":"20047","suppressedMessages":"20048","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20049","messages":"20050","suppressedMessages":"20051","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20052","messages":"20053","suppressedMessages":"20054","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20055","messages":"20056","suppressedMessages":"20057","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20058","messages":"20059","suppressedMessages":"20060","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20061","messages":"20062","suppressedMessages":"20063","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20064","messages":"20065","suppressedMessages":"20066","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20067","messages":"20068","suppressedMessages":"20069","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20070","messages":"20071","suppressedMessages":"20072","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20073","messages":"20074","suppressedMessages":"20075","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20076","messages":"20077","suppressedMessages":"20078","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20079","messages":"20080","suppressedMessages":"20081","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20082","messages":"20083","suppressedMessages":"20084","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20085","messages":"20086","suppressedMessages":"20087","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20088","messages":"20089","suppressedMessages":"20090","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20091","messages":"20092","suppressedMessages":"20093","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20094","messages":"20095","suppressedMessages":"20096","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20097","messages":"20098","suppressedMessages":"20099","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20100","messages":"20101","suppressedMessages":"20102","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20103","messages":"20104","suppressedMessages":"20105","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20106","messages":"20107","suppressedMessages":"20108","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20109","messages":"20110","suppressedMessages":"20111","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20112","messages":"20113","suppressedMessages":"20114","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20115","messages":"20116","suppressedMessages":"20117","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20118","messages":"20119","suppressedMessages":"20120","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20121","messages":"20122","suppressedMessages":"20123","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20124","messages":"20125","suppressedMessages":"20126","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20127","messages":"20128","suppressedMessages":"20129","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20130","messages":"20131","suppressedMessages":"20132","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20133","messages":"20134","suppressedMessages":"20135","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20136","messages":"20137","suppressedMessages":"20138","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20139","messages":"20140","suppressedMessages":"20141","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20142","messages":"20143","suppressedMessages":"20144","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"20145","messages":"20146","suppressedMessages":"20147","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20148","messages":"20149","suppressedMessages":"20150","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20151","messages":"20152","suppressedMessages":"20153","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20154","messages":"20155","suppressedMessages":"20156","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20157","messages":"20158","suppressedMessages":"20159","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20160","messages":"20161","suppressedMessages":"20162","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20163","messages":"20164","suppressedMessages":"20165","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20166","messages":"20167","suppressedMessages":"20168","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20169","messages":"20170","suppressedMessages":"20171","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20172","messages":"20173","suppressedMessages":"20174","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20175","messages":"20176","suppressedMessages":"20177","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20178","messages":"20179","suppressedMessages":"20180","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20181","messages":"20182","suppressedMessages":"20183","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20184","messages":"20185","suppressedMessages":"20186","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20187","messages":"20188","suppressedMessages":"20189","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20190","messages":"20191","suppressedMessages":"20192","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20193","messages":"20194","suppressedMessages":"20195","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20196","messages":"20197","suppressedMessages":"20198","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20199","messages":"20200","suppressedMessages":"20201","errorCount":5,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"20202","messages":"20203","suppressedMessages":"20204","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20205","messages":"20206","suppressedMessages":"20207","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20208","messages":"20209","suppressedMessages":"20210","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20211","messages":"20212","suppressedMessages":"20213","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20214","messages":"20215","suppressedMessages":"20216","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20217","messages":"20218","suppressedMessages":"20219","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20220","messages":"20221","suppressedMessages":"20222","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20223","messages":"20224","suppressedMessages":"20225","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20226","messages":"20227","suppressedMessages":"20228","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20229","messages":"20230","suppressedMessages":"20231","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"20232","messages":"20233","suppressedMessages":"20234","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20235","messages":"20236","suppressedMessages":"20237","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20238","messages":"20239","suppressedMessages":"20240","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20241","messages":"20242","suppressedMessages":"20243","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20244","messages":"20245","suppressedMessages":"20246","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20247","messages":"20248","suppressedMessages":"20249","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20250","messages":"20251","suppressedMessages":"20252","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20253","messages":"20254","suppressedMessages":"20255","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20256","messages":"20257","suppressedMessages":"20258","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20259","messages":"20260","suppressedMessages":"20261","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20262","messages":"20263","suppressedMessages":"20264","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20265","messages":"20266","suppressedMessages":"20267","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20268","messages":"20269","suppressedMessages":"20270","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20271","messages":"20272","suppressedMessages":"20273","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20274","messages":"20275","suppressedMessages":"20276","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20277","messages":"20278","suppressedMessages":"20279","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20280","messages":"20281","suppressedMessages":"20282","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20283","messages":"20284","suppressedMessages":"20285","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20286","messages":"20287","suppressedMessages":"20288","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"z7bfz5",{"filePath":"20289","messages":"20290","suppressedMessages":"20291","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"20292","messages":"20293","suppressedMessages":"20294","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20295","messages":"20296","suppressedMessages":"20297","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20298","messages":"20299","suppressedMessages":"20300","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20301","messages":"20302","suppressedMessages":"20303","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20304","messages":"20305","suppressedMessages":"20306","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20307","messages":"20308","suppressedMessages":"20309","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20310","messages":"20311","suppressedMessages":"20312","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20313","messages":"20314","suppressedMessages":"20315","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20316","messages":"20317","suppressedMessages":"20318","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20319","messages":"20320","suppressedMessages":"20321","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20322","messages":"20323","suppressedMessages":"20324","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20325","messages":"20326","suppressedMessages":"20327","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20328","messages":"20329","suppressedMessages":"20330","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20331","messages":"20332","suppressedMessages":"20333","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20334","messages":"20335","suppressedMessages":"20336","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20337","messages":"20338","suppressedMessages":"20339","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20340","messages":"20341","suppressedMessages":"20342","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20343","messages":"20344","suppressedMessages":"20345","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20346","messages":"20347","suppressedMessages":"20348","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20349","messages":"20350","suppressedMessages":"20351","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20352","messages":"20353","suppressedMessages":"20354","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20355","messages":"20356","suppressedMessages":"20357","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20358","messages":"20359","suppressedMessages":"20360","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20361","messages":"20362","suppressedMessages":"20363","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20364","messages":"20365","suppressedMessages":"20366","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20367","messages":"20368","suppressedMessages":"20369","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20370","messages":"20371","suppressedMessages":"20372","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20373","messages":"20374","suppressedMessages":"20375","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20376","messages":"20377","suppressedMessages":"20378","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20379","messages":"20380","suppressedMessages":"20381","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20382","messages":"20383","suppressedMessages":"20384","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20385","messages":"20386","suppressedMessages":"20387","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20388","messages":"20389","suppressedMessages":"20390","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20391","messages":"20392","suppressedMessages":"20393","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20394","messages":"20395","suppressedMessages":"20396","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20397","messages":"20398","suppressedMessages":"20399","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20400","messages":"20401","suppressedMessages":"20402","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20403","messages":"20404","suppressedMessages":"20405","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20406","messages":"20407","suppressedMessages":"20408","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20409","messages":"20410","suppressedMessages":"20411","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20412","messages":"20413","suppressedMessages":"20414","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20415","messages":"20416","suppressedMessages":"20417","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20418","messages":"20419","suppressedMessages":"20420","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20421","messages":"20422","suppressedMessages":"20423","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20424","messages":"20425","suppressedMessages":"20426","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20427","messages":"20428","suppressedMessages":"20429","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20430","messages":"20431","suppressedMessages":"20432","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20433","messages":"20434","suppressedMessages":"20435","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20436","messages":"20437","suppressedMessages":"20438","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20439","messages":"20440","suppressedMessages":"20441","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20442","messages":"20443","suppressedMessages":"20444","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20445","messages":"20446","suppressedMessages":"20447","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20448","messages":"20449","suppressedMessages":"20450","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20451","messages":"20452","suppressedMessages":"20453","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20454","messages":"20455","suppressedMessages":"20456","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20457","messages":"20458","suppressedMessages":"20459","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20460","messages":"20461","suppressedMessages":"20462","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20463","messages":"20464","suppressedMessages":"20465","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20466","messages":"20467","suppressedMessages":"20468","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20469","messages":"20470","suppressedMessages":"20471","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20472","messages":"20473","suppressedMessages":"20474","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20475","messages":"20476","suppressedMessages":"20477","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20478","messages":"20479","suppressedMessages":"20480","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20481","messages":"20482","suppressedMessages":"20483","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20484","messages":"20485","suppressedMessages":"20486","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20487","messages":"20488","suppressedMessages":"20489","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20490","messages":"20491","suppressedMessages":"20492","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20493","messages":"20494","suppressedMessages":"20495","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20496","messages":"20497","suppressedMessages":"20498","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20499","messages":"20500","suppressedMessages":"20501","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20502","messages":"20503","suppressedMessages":"20504","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20505","messages":"20506","suppressedMessages":"20507","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20508","messages":"20509","suppressedMessages":"20510","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20511","messages":"20512","suppressedMessages":"20513","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20514","messages":"20515","suppressedMessages":"20516","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20517","messages":"20518","suppressedMessages":"20519","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20520","messages":"20521","suppressedMessages":"20522","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20523","messages":"20524","suppressedMessages":"20525","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20526","messages":"20527","suppressedMessages":"20528","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20529","messages":"20530","suppressedMessages":"20531","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20532","messages":"20533","suppressedMessages":"20534","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20535","messages":"20536","suppressedMessages":"20537","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20538","messages":"20539","suppressedMessages":"20540","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20541","messages":"20542","suppressedMessages":"20543","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20544","messages":"20545","suppressedMessages":"20546","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20547","messages":"20548","suppressedMessages":"20549","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20550","messages":"20551","suppressedMessages":"20552","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20553","messages":"20554","suppressedMessages":"20555","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20556","messages":"20557","suppressedMessages":"20558","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20559","messages":"20560","suppressedMessages":"20561","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20562","messages":"20563","suppressedMessages":"20564","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20565","messages":"20566","suppressedMessages":"20567","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20568","messages":"20569","suppressedMessages":"20570","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20571","messages":"20572","suppressedMessages":"20573","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20574","messages":"20575","suppressedMessages":"20576","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20577","messages":"20578","suppressedMessages":"20579","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20580","messages":"20581","suppressedMessages":"20582","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20583","messages":"20584","suppressedMessages":"20585","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20586","messages":"20587","suppressedMessages":"20588","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20589","messages":"20590","suppressedMessages":"20591","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20592","messages":"20593","suppressedMessages":"20594","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20595","messages":"20596","suppressedMessages":"20597","errorCount":4,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"20598","messages":"20599","suppressedMessages":"20600","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20601","messages":"20602","suppressedMessages":"20603","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20604","messages":"20605","suppressedMessages":"20606","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20607","messages":"20608","suppressedMessages":"20609","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20610","messages":"20611","suppressedMessages":"20612","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"20613","messages":"20614","suppressedMessages":"20615","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20616","messages":"20617","suppressedMessages":"20618","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20619","messages":"20620","suppressedMessages":"20621","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20622","messages":"20623","suppressedMessages":"20624","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20625","messages":"20626","suppressedMessages":"20627","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20628","messages":"20629","suppressedMessages":"20630","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20631","messages":"20632","suppressedMessages":"20633","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20634","messages":"20635","suppressedMessages":"20636","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20637","messages":"20638","suppressedMessages":"20639","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20640","messages":"20641","suppressedMessages":"20642","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20643","messages":"20644","suppressedMessages":"20645","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20646","messages":"20647","suppressedMessages":"20648","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20649","messages":"20650","suppressedMessages":"20651","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20652","messages":"20653","suppressedMessages":"20654","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20655","messages":"20656","suppressedMessages":"20657","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20658","messages":"20659","suppressedMessages":"20660","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20661","messages":"20662","suppressedMessages":"20663","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20664","messages":"20665","suppressedMessages":"20666","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20667","messages":"20668","suppressedMessages":"20669","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20670","messages":"20671","suppressedMessages":"20672","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20673","messages":"20674","suppressedMessages":"20675","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20676","messages":"20677","suppressedMessages":"20678","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20679","messages":"20680","suppressedMessages":"20681","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20682","messages":"20683","suppressedMessages":"20684","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20685","messages":"20686","suppressedMessages":"20687","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20688","messages":"20689","suppressedMessages":"20690","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20691","messages":"20692","suppressedMessages":"20693","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20694","messages":"20695","suppressedMessages":"20696","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20697","messages":"20698","suppressedMessages":"20699","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20700","messages":"20701","suppressedMessages":"20702","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20703","messages":"20704","suppressedMessages":"20705","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20706","messages":"20707","suppressedMessages":"20708","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20709","messages":"20710","suppressedMessages":"20711","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20712","messages":"20713","suppressedMessages":"20714","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20715","messages":"20716","suppressedMessages":"20717","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20718","messages":"20719","suppressedMessages":"20720","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20721","messages":"20722","suppressedMessages":"20723","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20724","messages":"20725","suppressedMessages":"20726","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20727","messages":"20728","suppressedMessages":"20729","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20730","messages":"20731","suppressedMessages":"20732","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20733","messages":"20734","suppressedMessages":"20735","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20736","messages":"20737","suppressedMessages":"20738","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20739","messages":"20740","suppressedMessages":"20741","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20742","messages":"20743","suppressedMessages":"20744","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20745","messages":"20746","suppressedMessages":"20747","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20748","messages":"20749","suppressedMessages":"20750","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20751","messages":"20752","suppressedMessages":"20753","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20754","messages":"20755","suppressedMessages":"20756","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20757","messages":"20758","suppressedMessages":"20759","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20760","messages":"20761","suppressedMessages":"20762","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20763","messages":"20764","suppressedMessages":"20765","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20766","messages":"20767","suppressedMessages":"20768","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20769","messages":"20770","suppressedMessages":"20771","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20772","messages":"20773","suppressedMessages":"20774","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20775","messages":"20776","suppressedMessages":"20777","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20778","messages":"20779","suppressedMessages":"20780","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20781","messages":"20782","suppressedMessages":"20783","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20784","messages":"20785","suppressedMessages":"20786","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20787","messages":"20788","suppressedMessages":"20789","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20790","messages":"20791","suppressedMessages":"20792","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20793","messages":"20794","suppressedMessages":"20795","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20796","messages":"20797","suppressedMessages":"20798","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20799","messages":"20800","suppressedMessages":"20801","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20802","messages":"20803","suppressedMessages":"20804","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20805","messages":"20806","suppressedMessages":"20807","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20808","messages":"20809","suppressedMessages":"20810","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20811","messages":"20812","suppressedMessages":"20813","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20814","messages":"20815","suppressedMessages":"20816","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20817","messages":"20818","suppressedMessages":"20819","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20820","messages":"20821","suppressedMessages":"20822","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20823","messages":"20824","suppressedMessages":"20825","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20826","messages":"20827","suppressedMessages":"20828","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20829","messages":"20830","suppressedMessages":"20831","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20832","messages":"20833","suppressedMessages":"20834","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20835","messages":"20836","suppressedMessages":"20837","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20838","messages":"20839","suppressedMessages":"20840","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20841","messages":"20842","suppressedMessages":"20843","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20844","messages":"20845","suppressedMessages":"20846","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20847","messages":"20848","suppressedMessages":"20849","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20850","messages":"20851","suppressedMessages":"20852","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20853","messages":"20854","suppressedMessages":"20855","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20856","messages":"20857","suppressedMessages":"20858","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20859","messages":"20860","suppressedMessages":"20861","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20862","messages":"20863","suppressedMessages":"20864","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20865","messages":"20866","suppressedMessages":"20867","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20868","messages":"20869","suppressedMessages":"20870","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20871","messages":"20872","suppressedMessages":"20873","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20874","messages":"20875","suppressedMessages":"20876","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20877","messages":"20878","suppressedMessages":"20879","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20880","messages":"20881","suppressedMessages":"20882","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20883","messages":"20884","suppressedMessages":"20885","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20886","messages":"20887","suppressedMessages":"20888","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20889","messages":"20890","suppressedMessages":"20891","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20892","messages":"20893","suppressedMessages":"20894","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20895","messages":"20896","suppressedMessages":"20897","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20898","messages":"20899","suppressedMessages":"20900","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20901","messages":"20902","suppressedMessages":"20903","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20904","messages":"20905","suppressedMessages":"20906","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20907","messages":"20908","suppressedMessages":"20909","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20910","messages":"20911","suppressedMessages":"20912","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20913","messages":"20914","suppressedMessages":"20915","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20916","messages":"20917","suppressedMessages":"20918","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20919","messages":"20920","suppressedMessages":"20921","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"20922","messages":"20923","suppressedMessages":"20924","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20925","messages":"20926","suppressedMessages":"20927","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20928","messages":"20929","suppressedMessages":"20930","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20931","messages":"20932","suppressedMessages":"20933","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20934","messages":"20935","suppressedMessages":"20936","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20937","messages":"20938","suppressedMessages":"20939","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20940","messages":"20941","suppressedMessages":"20942","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20943","messages":"20944","suppressedMessages":"20945","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20946","messages":"20947","suppressedMessages":"20948","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20949","messages":"20950","suppressedMessages":"20951","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20952","messages":"20953","suppressedMessages":"20954","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20955","messages":"20956","suppressedMessages":"20957","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20958","messages":"20959","suppressedMessages":"20960","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20961","messages":"20962","suppressedMessages":"20963","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20964","messages":"20965","suppressedMessages":"20966","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20967","messages":"20968","suppressedMessages":"20969","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20970","messages":"20971","suppressedMessages":"20972","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20973","messages":"20974","suppressedMessages":"20975","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20976","messages":"20977","suppressedMessages":"20978","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20979","messages":"20980","suppressedMessages":"20981","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20982","messages":"20983","suppressedMessages":"20984","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20985","messages":"20986","suppressedMessages":"20987","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20988","messages":"20989","suppressedMessages":"20990","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20991","messages":"20992","suppressedMessages":"20993","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20994","messages":"20995","suppressedMessages":"20996","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20997","messages":"20998","suppressedMessages":"20999","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21000","messages":"21001","suppressedMessages":"21002","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21003","messages":"21004","suppressedMessages":"21005","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21006","messages":"21007","suppressedMessages":"21008","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21009","messages":"21010","suppressedMessages":"21011","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21012","messages":"21013","suppressedMessages":"21014","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21015","messages":"21016","suppressedMessages":"21017","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21018","messages":"21019","suppressedMessages":"21020","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21021","messages":"21022","suppressedMessages":"21023","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21024","messages":"21025","suppressedMessages":"21026","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21027","messages":"21028","suppressedMessages":"21029","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21030","messages":"21031","suppressedMessages":"21032","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21033","messages":"21034","suppressedMessages":"21035","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21036","messages":"21037","suppressedMessages":"21038","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21039","messages":"21040","suppressedMessages":"21041","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21042","messages":"21043","suppressedMessages":"21044","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21045","messages":"21046","suppressedMessages":"21047","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21048","messages":"21049","suppressedMessages":"21050","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21051","messages":"21052","suppressedMessages":"21053","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21054","messages":"21055","suppressedMessages":"21056","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21057","messages":"21058","suppressedMessages":"21059","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21060","messages":"21061","suppressedMessages":"21062","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21063","messages":"21064","suppressedMessages":"21065","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21066","messages":"21067","suppressedMessages":"21068","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21069","messages":"21070","suppressedMessages":"21071","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21072","messages":"21073","suppressedMessages":"21074","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21075","messages":"21076","suppressedMessages":"21077","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21078","messages":"21079","suppressedMessages":"21080","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21081","messages":"21082","suppressedMessages":"21083","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21084","messages":"21085","suppressedMessages":"21086","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21087","messages":"21088","suppressedMessages":"21089","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21090","messages":"21091","suppressedMessages":"21092","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21093","messages":"21094","suppressedMessages":"21095","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21096","messages":"21097","suppressedMessages":"21098","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21099","messages":"21100","suppressedMessages":"21101","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21102","messages":"21103","suppressedMessages":"21104","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21105","messages":"21106","suppressedMessages":"21107","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21108","messages":"21109","suppressedMessages":"21110","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21111","messages":"21112","suppressedMessages":"21113","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21114","messages":"21115","suppressedMessages":"21116","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21117","messages":"21118","suppressedMessages":"21119","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21120","messages":"21121","suppressedMessages":"21122","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21123","messages":"21124","suppressedMessages":"21125","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21126","messages":"21127","suppressedMessages":"21128","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21129","messages":"21130","suppressedMessages":"21131","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21132","messages":"21133","suppressedMessages":"21134","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21135","messages":"21136","suppressedMessages":"21137","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21138","messages":"21139","suppressedMessages":"21140","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21141","messages":"21142","suppressedMessages":"21143","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21144","messages":"21145","suppressedMessages":"21146","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21147","messages":"21148","suppressedMessages":"21149","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21150","messages":"21151","suppressedMessages":"21152","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21153","messages":"21154","suppressedMessages":"21155","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21156","messages":"21157","suppressedMessages":"21158","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21159","messages":"21160","suppressedMessages":"21161","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21162","messages":"21163","suppressedMessages":"21164","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21165","messages":"21166","suppressedMessages":"21167","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21168","messages":"21169","suppressedMessages":"21170","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21171","messages":"21172","suppressedMessages":"21173","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21174","messages":"21175","suppressedMessages":"21176","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21177","messages":"21178","suppressedMessages":"21179","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21180","messages":"21181","suppressedMessages":"21182","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21183","messages":"21184","suppressedMessages":"21185","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21186","messages":"21187","suppressedMessages":"21188","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21189","messages":"21190","suppressedMessages":"21191","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21192","messages":"21193","suppressedMessages":"21194","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21195","messages":"21196","suppressedMessages":"21197","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21198","messages":"21199","suppressedMessages":"21200","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21201","messages":"21202","suppressedMessages":"21203","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21204","messages":"21205","suppressedMessages":"21206","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21207","messages":"21208","suppressedMessages":"21209","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21210","messages":"21211","suppressedMessages":"21212","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21213","messages":"21214","suppressedMessages":"21215","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21216","messages":"21217","suppressedMessages":"21218","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21219","messages":"21220","suppressedMessages":"21221","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21222","messages":"21223","suppressedMessages":"21224","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21225","messages":"21226","suppressedMessages":"21227","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21228","messages":"21229","suppressedMessages":"21230","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21231","messages":"21232","suppressedMessages":"21233","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21234","messages":"21235","suppressedMessages":"21236","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21237","messages":"21238","suppressedMessages":"21239","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21240","messages":"21241","suppressedMessages":"21242","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21243","messages":"21244","suppressedMessages":"21245","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21246","messages":"21247","suppressedMessages":"21248","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21249","messages":"21250","suppressedMessages":"21251","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21252","messages":"21253","suppressedMessages":"21254","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21255","messages":"21256","suppressedMessages":"21257","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21258","messages":"21259","suppressedMessages":"21260","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"21261","messages":"21262","suppressedMessages":"21263","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21264","messages":"21265","suppressedMessages":"21266","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21267","messages":"21268","suppressedMessages":"21269","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21270","messages":"21271","suppressedMessages":"21272","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21273","messages":"21274","suppressedMessages":"21275","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21276","messages":"21277","suppressedMessages":"21278","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21279","messages":"21280","suppressedMessages":"21281","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21282","messages":"21283","suppressedMessages":"21284","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21285","messages":"21286","suppressedMessages":"21287","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21288","messages":"21289","suppressedMessages":"21290","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21291","messages":"21292","suppressedMessages":"21293","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21294","messages":"21295","suppressedMessages":"21296","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21297","messages":"21298","suppressedMessages":"21299","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21300","messages":"21301","suppressedMessages":"21302","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21303","messages":"21304","suppressedMessages":"21305","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21306","messages":"21307","suppressedMessages":"21308","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21309","messages":"21310","suppressedMessages":"21311","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21312","messages":"21313","suppressedMessages":"21314","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21315","messages":"21316","suppressedMessages":"21317","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21318","messages":"21319","suppressedMessages":"21320","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21321","messages":"21322","suppressedMessages":"21323","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21324","messages":"21325","suppressedMessages":"21326","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21327","messages":"21328","suppressedMessages":"21329","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21330","messages":"21331","suppressedMessages":"21332","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21333","messages":"21334","suppressedMessages":"21335","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21336","messages":"21337","suppressedMessages":"21338","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21339","messages":"21340","suppressedMessages":"21341","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21342","messages":"21343","suppressedMessages":"21344","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21345","messages":"21346","suppressedMessages":"21347","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21348","messages":"21349","suppressedMessages":"21350","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21351","messages":"21352","suppressedMessages":"21353","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21354","messages":"21355","suppressedMessages":"21356","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21357","messages":"21358","suppressedMessages":"21359","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21360","messages":"21361","suppressedMessages":"21362","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21363","messages":"21364","suppressedMessages":"21365","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21366","messages":"21367","suppressedMessages":"21368","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21369","messages":"21370","suppressedMessages":"21371","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21372","messages":"21373","suppressedMessages":"21374","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21375","messages":"21376","suppressedMessages":"21377","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21378","messages":"21379","suppressedMessages":"21380","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21381","messages":"21382","suppressedMessages":"21383","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21384","messages":"21385","suppressedMessages":"21386","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21387","messages":"21388","suppressedMessages":"21389","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21390","messages":"21391","suppressedMessages":"21392","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21393","messages":"21394","suppressedMessages":"21395","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21396","messages":"21397","suppressedMessages":"21398","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21399","messages":"21400","suppressedMessages":"21401","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21402","messages":"21403","suppressedMessages":"21404","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21405","messages":"21406","suppressedMessages":"21407","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21408","messages":"21409","suppressedMessages":"21410","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21411","messages":"21412","suppressedMessages":"21413","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21414","messages":"21415","suppressedMessages":"21416","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21417","messages":"21418","suppressedMessages":"21419","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21420","messages":"21421","suppressedMessages":"21422","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21423","messages":"21424","suppressedMessages":"21425","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21426","messages":"21427","suppressedMessages":"21428","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21429","messages":"21430","suppressedMessages":"21431","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21432","messages":"21433","suppressedMessages":"21434","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21435","messages":"21436","suppressedMessages":"21437","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21438","messages":"21439","suppressedMessages":"21440","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21441","messages":"21442","suppressedMessages":"21443","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21444","messages":"21445","suppressedMessages":"21446","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21447","messages":"21448","suppressedMessages":"21449","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21450","messages":"21451","suppressedMessages":"21452","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21453","messages":"21454","suppressedMessages":"21455","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21456","messages":"21457","suppressedMessages":"21458","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21459","messages":"21460","suppressedMessages":"21461","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21462","messages":"21463","suppressedMessages":"21464","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21465","messages":"21466","suppressedMessages":"21467","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21468","messages":"21469","suppressedMessages":"21470","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21471","messages":"21472","suppressedMessages":"21473","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21474","messages":"21475","suppressedMessages":"21476","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21477","messages":"21478","suppressedMessages":"21479","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21480","messages":"21481","suppressedMessages":"21482","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21483","messages":"21484","suppressedMessages":"21485","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21486","messages":"21487","suppressedMessages":"21488","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21489","messages":"21490","suppressedMessages":"21491","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21492","messages":"21493","suppressedMessages":"21494","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21495","messages":"21496","suppressedMessages":"21497","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21498","messages":"21499","suppressedMessages":"21500","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21501","messages":"21502","suppressedMessages":"21503","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21504","messages":"21505","suppressedMessages":"21506","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21507","messages":"21508","suppressedMessages":"21509","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21510","messages":"21511","suppressedMessages":"21512","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21513","messages":"21514","suppressedMessages":"21515","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21516","messages":"21517","suppressedMessages":"21518","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21519","messages":"21520","suppressedMessages":"21521","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21522","messages":"21523","suppressedMessages":"21524","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21525","messages":"21526","suppressedMessages":"21527","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21528","messages":"21529","suppressedMessages":"21530","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21531","messages":"21532","suppressedMessages":"21533","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21534","messages":"21535","suppressedMessages":"21536","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21537","messages":"21538","suppressedMessages":"21539","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21540","messages":"21541","suppressedMessages":"21542","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21543","messages":"21544","suppressedMessages":"21545","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21546","messages":"21547","suppressedMessages":"21548","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21549","messages":"21550","suppressedMessages":"21551","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21552","messages":"21553","suppressedMessages":"21554","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21555","messages":"21556","suppressedMessages":"21557","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21558","messages":"21559","suppressedMessages":"21560","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21561","messages":"21562","suppressedMessages":"21563","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21564","messages":"21565","suppressedMessages":"21566","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21567","messages":"21568","suppressedMessages":"21569","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21570","messages":"21571","suppressedMessages":"21572","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21573","messages":"21574","suppressedMessages":"21575","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21576","messages":"21577","suppressedMessages":"21578","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21579","messages":"21580","suppressedMessages":"21581","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21582","messages":"21583","suppressedMessages":"21584","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21585","messages":"21586","suppressedMessages":"21587","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21588","messages":"21589","suppressedMessages":"21590","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21591","messages":"21592","suppressedMessages":"21593","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21594","messages":"21595","suppressedMessages":"21596","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21597","messages":"21598","suppressedMessages":"21599","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21600","messages":"21601","suppressedMessages":"21602","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21603","messages":"21604","suppressedMessages":"21605","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21606","messages":"21607","suppressedMessages":"21608","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21609","messages":"21610","suppressedMessages":"21611","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21612","messages":"21613","suppressedMessages":"21614","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21615","messages":"21616","suppressedMessages":"21617","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21618","messages":"21619","suppressedMessages":"21620","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21621","messages":"21622","suppressedMessages":"21623","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21624","messages":"21625","suppressedMessages":"21626","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21627","messages":"21628","suppressedMessages":"21629","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21630","messages":"21631","suppressedMessages":"21632","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21633","messages":"21634","suppressedMessages":"21635","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21636","messages":"21637","suppressedMessages":"21638","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21639","messages":"21640","suppressedMessages":"21641","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21642","messages":"21643","suppressedMessages":"21644","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21645","messages":"21646","suppressedMessages":"21647","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21648","messages":"21649","suppressedMessages":"21650","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21651","messages":"21652","suppressedMessages":"21653","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21654","messages":"21655","suppressedMessages":"21656","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21657","messages":"21658","suppressedMessages":"21659","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21660","messages":"21661","suppressedMessages":"21662","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21663","messages":"21664","suppressedMessages":"21665","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21666","messages":"21667","suppressedMessages":"21668","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21669","messages":"21670","suppressedMessages":"21671","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21672","messages":"21673","suppressedMessages":"21674","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21675","messages":"21676","suppressedMessages":"21677","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21678","messages":"21679","suppressedMessages":"21680","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21681","messages":"21682","suppressedMessages":"21683","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21684","messages":"21685","suppressedMessages":"21686","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21687","messages":"21688","suppressedMessages":"21689","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21690","messages":"21691","suppressedMessages":"21692","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21693","messages":"21694","suppressedMessages":"21695","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21696","messages":"21697","suppressedMessages":"21698","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21699","messages":"21700","suppressedMessages":"21701","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21702","messages":"21703","suppressedMessages":"21704","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21705","messages":"21706","suppressedMessages":"21707","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21708","messages":"21709","suppressedMessages":"21710","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21711","messages":"21712","suppressedMessages":"21713","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21714","messages":"21715","suppressedMessages":"21716","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21717","messages":"21718","suppressedMessages":"21719","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21720","messages":"21721","suppressedMessages":"21722","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21723","messages":"21724","suppressedMessages":"21725","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21726","messages":"21727","suppressedMessages":"21728","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21729","messages":"21730","suppressedMessages":"21731","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21732","messages":"21733","suppressedMessages":"21734","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21735","messages":"21736","suppressedMessages":"21737","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21738","messages":"21739","suppressedMessages":"21740","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21741","messages":"21742","suppressedMessages":"21743","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21744","messages":"21745","suppressedMessages":"21746","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21747","messages":"21748","suppressedMessages":"21749","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21750","messages":"21751","suppressedMessages":"21752","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21753","messages":"21754","suppressedMessages":"21755","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21756","messages":"21757","suppressedMessages":"21758","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21759","messages":"21760","suppressedMessages":"21761","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21762","messages":"21763","suppressedMessages":"21764","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21765","messages":"21766","suppressedMessages":"21767","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21768","messages":"21769","suppressedMessages":"21770","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21771","messages":"21772","suppressedMessages":"21773","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21774","messages":"21775","suppressedMessages":"21776","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21777","messages":"21778","suppressedMessages":"21779","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21780","messages":"21781","suppressedMessages":"21782","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21783","messages":"21784","suppressedMessages":"21785","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21786","messages":"21787","suppressedMessages":"21788","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21789","messages":"21790","suppressedMessages":"21791","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21792","messages":"21793","suppressedMessages":"21794","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21795","messages":"21796","suppressedMessages":"21797","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21798","messages":"21799","suppressedMessages":"21800","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21801","messages":"21802","suppressedMessages":"21803","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21804","messages":"21805","suppressedMessages":"21806","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21807","messages":"21808","suppressedMessages":"21809","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21810","messages":"21811","suppressedMessages":"21812","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21813","messages":"21814","suppressedMessages":"21815","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21816","messages":"21817","suppressedMessages":"21818","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21819","messages":"21820","suppressedMessages":"21821","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21822","messages":"21823","suppressedMessages":"21824","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21825","messages":"21826","suppressedMessages":"21827","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21828","messages":"21829","suppressedMessages":"21830","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21831","messages":"21832","suppressedMessages":"21833","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21834","messages":"21835","suppressedMessages":"21836","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21837","messages":"21838","suppressedMessages":"21839","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21840","messages":"21841","suppressedMessages":"21842","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21843","messages":"21844","suppressedMessages":"21845","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21846","messages":"21847","suppressedMessages":"21848","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21849","messages":"21850","suppressedMessages":"21851","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21852","messages":"21853","suppressedMessages":"21854","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21855","messages":"21856","suppressedMessages":"21857","errorCount":4,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"21858","messages":"21859","suppressedMessages":"21860","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"21861","messages":"21862","suppressedMessages":"21863","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21864","messages":"21865","suppressedMessages":"21866","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21867","messages":"21868","suppressedMessages":"21869","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21870","messages":"21871","suppressedMessages":"21872","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21873","messages":"21874","suppressedMessages":"21875","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21876","messages":"21877","suppressedMessages":"21878","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21879","messages":"21880","suppressedMessages":"21881","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21882","messages":"21883","suppressedMessages":"21884","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21885","messages":"21886","suppressedMessages":"21887","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21888","messages":"21889","suppressedMessages":"21890","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21891","messages":"21892","suppressedMessages":"21893","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21894","messages":"21895","suppressedMessages":"21896","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21897","messages":"21898","suppressedMessages":"21899","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21900","messages":"21901","suppressedMessages":"21902","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21903","messages":"21904","suppressedMessages":"21905","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21906","messages":"21907","suppressedMessages":"21908","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21909","messages":"21910","suppressedMessages":"21911","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21912","messages":"21913","suppressedMessages":"21914","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21915","messages":"21916","suppressedMessages":"21917","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21918","messages":"21919","suppressedMessages":"21920","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21921","messages":"21922","suppressedMessages":"21923","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21924","messages":"21925","suppressedMessages":"21926","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"21927","messages":"21928","suppressedMessages":"21929","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21930","messages":"21931","suppressedMessages":"21932","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21933","messages":"21934","suppressedMessages":"21935","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21936","messages":"21937","suppressedMessages":"21938","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21939","messages":"21940","suppressedMessages":"21941","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21942","messages":"21943","suppressedMessages":"21944","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21945","messages":"21946","suppressedMessages":"21947","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21948","messages":"21949","suppressedMessages":"21950","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21951","messages":"21952","suppressedMessages":"21953","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21954","messages":"21955","suppressedMessages":"21956","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"21957","messages":"21958","suppressedMessages":"21959","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21960","messages":"21961","suppressedMessages":"21962","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21963","messages":"21964","suppressedMessages":"21965","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21966","messages":"21967","suppressedMessages":"21968","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21969","messages":"21970","suppressedMessages":"21971","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21972","messages":"21973","suppressedMessages":"21974","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21975","messages":"21976","suppressedMessages":"21977","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21978","messages":"21979","suppressedMessages":"21980","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21981","messages":"21982","suppressedMessages":"21983","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21984","messages":"21985","suppressedMessages":"21986","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21987","messages":"21988","suppressedMessages":"21989","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21990","messages":"21991","suppressedMessages":"21992","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21993","messages":"21994","suppressedMessages":"21995","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21996","messages":"21997","suppressedMessages":"21998","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"21999","messages":"22000","suppressedMessages":"22001","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22002","messages":"22003","suppressedMessages":"22004","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"22005","messages":"22006","suppressedMessages":"22007","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22008","messages":"22009","suppressedMessages":"22010","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22011","messages":"22012","suppressedMessages":"22013","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22014","messages":"22015","suppressedMessages":"22016","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22017","messages":"22018","suppressedMessages":"22019","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22020","messages":"22021","suppressedMessages":"22022","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22023","messages":"22024","suppressedMessages":"22025","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22026","messages":"22027","suppressedMessages":"22028","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22029","messages":"22030","suppressedMessages":"22031","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22032","messages":"22033","suppressedMessages":"22034","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22035","messages":"22036","suppressedMessages":"22037","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22038","messages":"22039","suppressedMessages":"22040","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22041","messages":"22042","suppressedMessages":"22043","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22044","messages":"22045","suppressedMessages":"22046","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22047","messages":"22048","suppressedMessages":"22049","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22050","messages":"22051","suppressedMessages":"22052","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22053","messages":"22054","suppressedMessages":"22055","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22056","messages":"22057","suppressedMessages":"22058","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22059","messages":"22060","suppressedMessages":"22061","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22062","messages":"22063","suppressedMessages":"22064","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22065","messages":"22066","suppressedMessages":"22067","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22068","messages":"22069","suppressedMessages":"22070","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22071","messages":"22072","suppressedMessages":"22073","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22074","messages":"22075","suppressedMessages":"22076","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22077","messages":"22078","suppressedMessages":"22079","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22080","messages":"22081","suppressedMessages":"22082","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22083","messages":"22084","suppressedMessages":"22085","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22086","messages":"22087","suppressedMessages":"22088","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22089","messages":"22090","suppressedMessages":"22091","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22092","messages":"22093","suppressedMessages":"22094","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22095","messages":"22096","suppressedMessages":"22097","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22098","messages":"22099","suppressedMessages":"22100","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22101","messages":"22102","suppressedMessages":"22103","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22104","messages":"22105","suppressedMessages":"22106","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22107","messages":"22108","suppressedMessages":"22109","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22110","messages":"22111","suppressedMessages":"22112","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22113","messages":"22114","suppressedMessages":"22115","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22116","messages":"22117","suppressedMessages":"22118","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22119","messages":"22120","suppressedMessages":"22121","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22122","messages":"22123","suppressedMessages":"22124","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22125","messages":"22126","suppressedMessages":"22127","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22128","messages":"22129","suppressedMessages":"22130","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22131","messages":"22132","suppressedMessages":"22133","errorCount":3,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"22134","messages":"22135","suppressedMessages":"22136","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22137","messages":"22138","suppressedMessages":"22139","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22140","messages":"22141","suppressedMessages":"22142","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22143","messages":"22144","suppressedMessages":"22145","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22146","messages":"22147","suppressedMessages":"22148","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22149","messages":"22150","suppressedMessages":"22151","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22152","messages":"22153","suppressedMessages":"22154","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22155","messages":"22156","suppressedMessages":"22157","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22158","messages":"22159","suppressedMessages":"22160","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22161","messages":"22162","suppressedMessages":"22163","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22164","messages":"22165","suppressedMessages":"22166","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22167","messages":"22168","suppressedMessages":"22169","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22170","messages":"22171","suppressedMessages":"22172","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22173","messages":"22174","suppressedMessages":"22175","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22176","messages":"22177","suppressedMessages":"22178","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22179","messages":"22180","suppressedMessages":"22181","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22182","messages":"22183","suppressedMessages":"22184","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22185","messages":"22186","suppressedMessages":"22187","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22188","messages":"22189","suppressedMessages":"22190","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22191","messages":"22192","suppressedMessages":"22193","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22194","messages":"22195","suppressedMessages":"22196","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22197","messages":"22198","suppressedMessages":"22199","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22200","messages":"22201","suppressedMessages":"22202","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22203","messages":"22204","suppressedMessages":"22205","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22206","messages":"22207","suppressedMessages":"22208","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22209","messages":"22210","suppressedMessages":"22211","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22212","messages":"22213","suppressedMessages":"22214","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22215","messages":"22216","suppressedMessages":"22217","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22218","messages":"22219","suppressedMessages":"22220","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22221","messages":"22222","suppressedMessages":"22223","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22224","messages":"22225","suppressedMessages":"22226","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22227","messages":"22228","suppressedMessages":"22229","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22230","messages":"22231","suppressedMessages":"22232","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22233","messages":"22234","suppressedMessages":"22235","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22236","messages":"22237","suppressedMessages":"22238","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22239","messages":"22240","suppressedMessages":"22241","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22242","messages":"22243","suppressedMessages":"22244","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22245","messages":"22246","suppressedMessages":"22247","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22248","messages":"22249","suppressedMessages":"22250","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22251","messages":"22252","suppressedMessages":"22253","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22254","messages":"22255","suppressedMessages":"22256","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22257","messages":"22258","suppressedMessages":"22259","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22260","messages":"22261","suppressedMessages":"22262","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22263","messages":"22264","suppressedMessages":"22265","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22266","messages":"22267","suppressedMessages":"22268","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22269","messages":"22270","suppressedMessages":"22271","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22272","messages":"22273","suppressedMessages":"22274","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22275","messages":"22276","suppressedMessages":"22277","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22278","messages":"22279","suppressedMessages":"22280","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22281","messages":"22282","suppressedMessages":"22283","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22284","messages":"22285","suppressedMessages":"22286","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22287","messages":"22288","suppressedMessages":"22289","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22290","messages":"22291","suppressedMessages":"22292","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22293","messages":"22294","suppressedMessages":"22295","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22296","messages":"22297","suppressedMessages":"22298","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22299","messages":"22300","suppressedMessages":"22301","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22302","messages":"22303","suppressedMessages":"22304","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22305","messages":"22306","suppressedMessages":"22307","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22308","messages":"22309","suppressedMessages":"22310","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22311","messages":"22312","suppressedMessages":"22313","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22314","messages":"22315","suppressedMessages":"22316","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22317","messages":"22318","suppressedMessages":"22319","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22320","messages":"22321","suppressedMessages":"22322","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22323","messages":"22324","suppressedMessages":"22325","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22326","messages":"22327","suppressedMessages":"22328","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22329","messages":"22330","suppressedMessages":"22331","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22332","messages":"22333","suppressedMessages":"22334","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22335","messages":"22336","suppressedMessages":"22337","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22338","messages":"22339","suppressedMessages":"22340","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22341","messages":"22342","suppressedMessages":"22343","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22344","messages":"22345","suppressedMessages":"22346","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22347","messages":"22348","suppressedMessages":"22349","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22350","messages":"22351","suppressedMessages":"22352","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22353","messages":"22354","suppressedMessages":"22355","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22356","messages":"22357","suppressedMessages":"22358","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22359","messages":"22360","suppressedMessages":"22361","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22362","messages":"22363","suppressedMessages":"22364","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22365","messages":"22366","suppressedMessages":"22367","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22368","messages":"22369","suppressedMessages":"22370","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22371","messages":"22372","suppressedMessages":"22373","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22374","messages":"22375","suppressedMessages":"22376","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22377","messages":"22378","suppressedMessages":"22379","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22380","messages":"22381","suppressedMessages":"22382","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22383","messages":"22384","suppressedMessages":"22385","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22386","messages":"22387","suppressedMessages":"22388","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22389","messages":"22390","suppressedMessages":"22391","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22392","messages":"22393","suppressedMessages":"22394","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22395","messages":"22396","suppressedMessages":"22397","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22398","messages":"22399","suppressedMessages":"22400","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22401","messages":"22402","suppressedMessages":"22403","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22404","messages":"22405","suppressedMessages":"22406","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22407","messages":"22408","suppressedMessages":"22409","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22410","messages":"22411","suppressedMessages":"22412","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22413","messages":"22414","suppressedMessages":"22415","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22416","messages":"22417","suppressedMessages":"22418","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22419","messages":"22420","suppressedMessages":"22421","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22422","messages":"22423","suppressedMessages":"22424","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22425","messages":"22426","suppressedMessages":"22427","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22428","messages":"22429","suppressedMessages":"22430","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22431","messages":"22432","suppressedMessages":"22433","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22434","messages":"22435","suppressedMessages":"22436","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22437","messages":"22438","suppressedMessages":"22439","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22440","messages":"22441","suppressedMessages":"22442","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22443","messages":"22444","suppressedMessages":"22445","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22446","messages":"22447","suppressedMessages":"22448","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22449","messages":"22450","suppressedMessages":"22451","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22452","messages":"22453","suppressedMessages":"22454","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22455","messages":"22456","suppressedMessages":"22457","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22458","messages":"22459","suppressedMessages":"22460","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22461","messages":"22462","suppressedMessages":"22463","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22464","messages":"22465","suppressedMessages":"22466","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22467","messages":"22468","suppressedMessages":"22469","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22470","messages":"22471","suppressedMessages":"22472","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22473","messages":"22474","suppressedMessages":"22475","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22476","messages":"22477","suppressedMessages":"22478","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22479","messages":"22480","suppressedMessages":"22481","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22482","messages":"22483","suppressedMessages":"22484","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22485","messages":"22486","suppressedMessages":"22487","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22488","messages":"22489","suppressedMessages":"22490","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22491","messages":"22492","suppressedMessages":"22493","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22494","messages":"22495","suppressedMessages":"22496","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22497","messages":"22498","suppressedMessages":"22499","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22500","messages":"22501","suppressedMessages":"22502","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22503","messages":"22504","suppressedMessages":"22505","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22506","messages":"22507","suppressedMessages":"22508","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22509","messages":"22510","suppressedMessages":"22511","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22512","messages":"22513","suppressedMessages":"22514","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22515","messages":"22516","suppressedMessages":"22517","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"22518","messages":"22519","suppressedMessages":"22520","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22521","messages":"22522","suppressedMessages":"22523","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22524","messages":"22525","suppressedMessages":"22526","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22527","messages":"22528","suppressedMessages":"22529","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22530","messages":"22531","suppressedMessages":"22532","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22533","messages":"22534","suppressedMessages":"22535","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22536","messages":"22537","suppressedMessages":"22538","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22539","messages":"22540","suppressedMessages":"22541","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22542","messages":"22543","suppressedMessages":"22544","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22545","messages":"22546","suppressedMessages":"22547","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22548","messages":"22549","suppressedMessages":"22550","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22551","messages":"22552","suppressedMessages":"22553","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22554","messages":"22555","suppressedMessages":"22556","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22557","messages":"22558","suppressedMessages":"22559","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22560","messages":"22561","suppressedMessages":"22562","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22563","messages":"22564","suppressedMessages":"22565","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22566","messages":"22567","suppressedMessages":"22568","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22569","messages":"22570","suppressedMessages":"22571","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22572","messages":"22573","suppressedMessages":"22574","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22575","messages":"22576","suppressedMessages":"22577","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22578","messages":"22579","suppressedMessages":"22580","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22581","messages":"22582","suppressedMessages":"22583","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22584","messages":"22585","suppressedMessages":"22586","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22587","messages":"22588","suppressedMessages":"22589","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22590","messages":"22591","suppressedMessages":"22592","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22593","messages":"22594","suppressedMessages":"22595","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22596","messages":"22597","suppressedMessages":"22598","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22599","messages":"22600","suppressedMessages":"22601","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22602","messages":"22603","suppressedMessages":"22604","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22605","messages":"22606","suppressedMessages":"22607","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22608","messages":"22609","suppressedMessages":"22610","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22611","messages":"22612","suppressedMessages":"22613","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22614","messages":"22615","suppressedMessages":"22616","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22617","messages":"22618","suppressedMessages":"22619","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22620","messages":"22621","suppressedMessages":"22622","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22623","messages":"22624","suppressedMessages":"22625","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22626","messages":"22627","suppressedMessages":"22628","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22629","messages":"22630","suppressedMessages":"22631","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22632","messages":"22633","suppressedMessages":"22634","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"22635","messages":"22636","suppressedMessages":"22637","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22638","messages":"22639","suppressedMessages":"22640","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"22641","messages":"22642","suppressedMessages":"22643","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"22644","messages":"22645","suppressedMessages":"22646","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22647","messages":"22648","suppressedMessages":"22649","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"22650","messages":"22651","suppressedMessages":"22652","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"22653","messages":"22654","suppressedMessages":"22655","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22656","messages":"22657","suppressedMessages":"22658","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22659","messages":"22660","suppressedMessages":"22661","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"22662","messages":"22663","suppressedMessages":"22664","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22665","messages":"22666","suppressedMessages":"22667","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22668","messages":"22669","suppressedMessages":"22670","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22671","messages":"22672","suppressedMessages":"22673","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"22674","messages":"22675","suppressedMessages":"22676","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22677","messages":"22678","suppressedMessages":"22679","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22680","messages":"22681","suppressedMessages":"22682","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22683","messages":"22684","suppressedMessages":"22685","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22686","messages":"22687","suppressedMessages":"22688","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22689","messages":"22690","suppressedMessages":"22691","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22692","messages":"22693","suppressedMessages":"22694","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22695","messages":"22696","suppressedMessages":"22697","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22698","messages":"22699","suppressedMessages":"22700","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22701","messages":"22702","suppressedMessages":"22703","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"22704","messages":"22705","suppressedMessages":"22706","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22707","messages":"22708","suppressedMessages":"22709","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22710","messages":"22711","suppressedMessages":"22712","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22713","messages":"22714","suppressedMessages":"22715","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"22716","messages":"22717","suppressedMessages":"22718","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22719","messages":"22720","suppressedMessages":"22721","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22722","messages":"22723","suppressedMessages":"22724","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22725","messages":"22726","suppressedMessages":"22727","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22728","messages":"22729","suppressedMessages":"22730","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22731","messages":"22732","suppressedMessages":"22733","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22734","messages":"22735","suppressedMessages":"22736","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22737","messages":"22738","suppressedMessages":"22739","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22740","messages":"22741","suppressedMessages":"22742","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22743","messages":"22744","suppressedMessages":"22745","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22746","messages":"22747","suppressedMessages":"22748","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"22749","messages":"22750","suppressedMessages":"22751","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22752","messages":"22753","suppressedMessages":"22754","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22755","messages":"22756","suppressedMessages":"22757","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22758","messages":"22759","suppressedMessages":"22760","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22761","messages":"22762","suppressedMessages":"22763","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22764","messages":"22765","suppressedMessages":"22766","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22767","messages":"22768","suppressedMessages":"22769","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22770","messages":"22771","suppressedMessages":"22772","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22773","messages":"22774","suppressedMessages":"22775","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22776","messages":"22777","suppressedMessages":"22778","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22779","messages":"22780","suppressedMessages":"22781","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22782","messages":"22783","suppressedMessages":"22784","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22785","messages":"22786","suppressedMessages":"22787","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22788","messages":"22789","suppressedMessages":"22790","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22791","messages":"22792","suppressedMessages":"22793","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22794","messages":"22795","suppressedMessages":"22796","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22797","messages":"22798","suppressedMessages":"22799","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"22800","messages":"22801","suppressedMessages":"22802","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22803","messages":"22804","suppressedMessages":"22805","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22806","messages":"22807","suppressedMessages":"22808","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22809","messages":"22810","suppressedMessages":"22811","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"22812","messages":"22813","suppressedMessages":"22814","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"22815","messages":"22816","suppressedMessages":"22817","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"22818","messages":"22819","suppressedMessages":"22820","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22821","messages":"22822","suppressedMessages":"22823","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22824","messages":"22825","suppressedMessages":"22826","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"22827","messages":"22828","suppressedMessages":"22829","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22830","messages":"22831","suppressedMessages":"22832","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22833","messages":"22834","suppressedMessages":"22835","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22836","messages":"22837","suppressedMessages":"22838","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22839","messages":"22840","suppressedMessages":"22841","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22842","messages":"22843","suppressedMessages":"22844","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22845","messages":"22846","suppressedMessages":"22847","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22848","messages":"22849","suppressedMessages":"22850","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22851","messages":"22852","suppressedMessages":"22853","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22854","messages":"22855","suppressedMessages":"22856","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22857","messages":"22858","suppressedMessages":"22859","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22860","messages":"22861","suppressedMessages":"22862","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22863","messages":"22864","suppressedMessages":"22865","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22866","messages":"22867","suppressedMessages":"22868","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22869","messages":"22870","suppressedMessages":"22871","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22872","messages":"22873","suppressedMessages":"22874","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22875","messages":"22876","suppressedMessages":"22877","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22878","messages":"22879","suppressedMessages":"22880","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22881","messages":"22882","suppressedMessages":"22883","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22884","messages":"22885","suppressedMessages":"22886","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22887","messages":"22888","suppressedMessages":"22889","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22890","messages":"22891","suppressedMessages":"22892","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22893","messages":"22894","suppressedMessages":"22895","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22896","messages":"22897","suppressedMessages":"22898","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22899","messages":"22900","suppressedMessages":"22901","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22902","messages":"22903","suppressedMessages":"22904","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"22905","messages":"22906","suppressedMessages":"22907","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22908","messages":"22909","suppressedMessages":"22910","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22911","messages":"22912","suppressedMessages":"22913","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22914","messages":"22915","suppressedMessages":"22916","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22917","messages":"22918","suppressedMessages":"22919","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22920","messages":"22921","suppressedMessages":"22922","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22923","messages":"22924","suppressedMessages":"22925","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22926","messages":"22927","suppressedMessages":"22928","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"22929","messages":"22930","suppressedMessages":"22931","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"22932","messages":"22933","suppressedMessages":"22934","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"22935","messages":"22936","suppressedMessages":"22937","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22938","messages":"22939","suppressedMessages":"22940","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"22941","messages":"22942","suppressedMessages":"22943","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"22944","messages":"22945","suppressedMessages":"22946","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22947","messages":"22948","suppressedMessages":"22949","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22950","messages":"22951","suppressedMessages":"22952","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22953","messages":"22954","suppressedMessages":"22955","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22956","messages":"22957","suppressedMessages":"22958","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22959","messages":"22960","suppressedMessages":"22961","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22962","messages":"22963","suppressedMessages":"22964","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22965","messages":"22966","suppressedMessages":"22967","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22968","messages":"22969","suppressedMessages":"22970","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22971","messages":"22972","suppressedMessages":"22973","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22974","messages":"22975","suppressedMessages":"22976","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22977","messages":"22978","suppressedMessages":"22979","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22980","messages":"22981","suppressedMessages":"22982","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22983","messages":"22984","suppressedMessages":"22985","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22986","messages":"22987","suppressedMessages":"22988","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22989","messages":"22990","suppressedMessages":"22991","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22992","messages":"22993","suppressedMessages":"22994","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22995","messages":"22996","suppressedMessages":"22997","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22998","messages":"22999","suppressedMessages":"23000","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23001","messages":"23002","suppressedMessages":"23003","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23004","messages":"23005","suppressedMessages":"23006","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23007","messages":"23008","suppressedMessages":"23009","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23010","messages":"23011","suppressedMessages":"23012","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23013","messages":"23014","suppressedMessages":"23015","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23016","messages":"23017","suppressedMessages":"23018","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23019","messages":"23020","suppressedMessages":"23021","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23022","messages":"23023","suppressedMessages":"23024","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23025","messages":"23026","suppressedMessages":"23027","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23028","messages":"23029","suppressedMessages":"23030","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23031","messages":"23032","suppressedMessages":"23033","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23034","messages":"23035","suppressedMessages":"23036","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"23037","messages":"23038","suppressedMessages":"23039","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23040","messages":"23041","suppressedMessages":"23042","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23043","messages":"23044","suppressedMessages":"23045","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"23046","messages":"23047","suppressedMessages":"23048","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"23049","messages":"23050","suppressedMessages":"23051","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"23052","messages":"23053","suppressedMessages":"23054","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23055","messages":"23056","suppressedMessages":"23057","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"23058","messages":"23059","suppressedMessages":"23060","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"23061","messages":"23062","suppressedMessages":"23063","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"23064","messages":"23065","suppressedMessages":"23066","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"23067","messages":"23068","suppressedMessages":"23069","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"23070","messages":"23071","suppressedMessages":"23072","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23073","messages":"23074","suppressedMessages":"23075","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23076","messages":"23077","suppressedMessages":"23078","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23079","messages":"23080","suppressedMessages":"23081","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23082","messages":"23083","suppressedMessages":"23084","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23085","messages":"23086","suppressedMessages":"23087","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23088","messages":"23089","suppressedMessages":"23090","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23091","messages":"23092","suppressedMessages":"23093","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23094","messages":"23095","suppressedMessages":"23096","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23097","messages":"23098","suppressedMessages":"23099","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23100","messages":"23101","suppressedMessages":"23102","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23103","messages":"23104","suppressedMessages":"23105","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23106","messages":"23107","suppressedMessages":"23108","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23109","messages":"23110","suppressedMessages":"23111","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23112","messages":"23113","suppressedMessages":"23114","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23115","messages":"23116","suppressedMessages":"23117","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23118","messages":"23119","suppressedMessages":"23120","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23121","messages":"23122","suppressedMessages":"23123","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23124","messages":"23125","suppressedMessages":"23126","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"23127","messages":"23128","suppressedMessages":"23129","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23130","messages":"23131","suppressedMessages":"23132","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23133","messages":"23134","suppressedMessages":"23135","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23136","messages":"23137","suppressedMessages":"23138","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"23139","messages":"23140","suppressedMessages":"23141","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"23142","messages":"23143","suppressedMessages":"23144","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23145","messages":"23146","suppressedMessages":"23147","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"23148","messages":"23149","suppressedMessages":"23150","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"23151","messages":"23152","suppressedMessages":"23153","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23154","messages":"23155","suppressedMessages":"23156","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23157","messages":"23158","suppressedMessages":"23159","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23160","messages":"23161","suppressedMessages":"23162","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23163","messages":"23164","suppressedMessages":"23165","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23166","messages":"23167","suppressedMessages":"23168","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"23169","messages":"23170","suppressedMessages":"23171","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"23172","messages":"23173","suppressedMessages":"23174","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23175","messages":"23176","suppressedMessages":"23177","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23178","messages":"23179","suppressedMessages":"23180","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23181","messages":"23182","suppressedMessages":"23183","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23184","messages":"23185","suppressedMessages":"23186","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23187","messages":"23188","suppressedMessages":"23189","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23190","messages":"23191","suppressedMessages":"23192","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23193","messages":"23194","suppressedMessages":"23195","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23196","messages":"23197","suppressedMessages":"23198","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23199","messages":"23200","suppressedMessages":"23201","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23202","messages":"23203","suppressedMessages":"23204","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23205","messages":"23206","suppressedMessages":"23207","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23208","messages":"23209","suppressedMessages":"23210","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23211","messages":"23212","suppressedMessages":"23213","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23214","messages":"23215","suppressedMessages":"23216","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23217","messages":"23218","suppressedMessages":"23219","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23220","messages":"23221","suppressedMessages":"23222","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23223","messages":"23224","suppressedMessages":"23225","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23226","messages":"23227","suppressedMessages":"23228","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23229","messages":"23230","suppressedMessages":"23231","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23232","messages":"23233","suppressedMessages":"23234","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23235","messages":"23236","suppressedMessages":"23237","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23238","messages":"23239","suppressedMessages":"23240","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23241","messages":"23242","suppressedMessages":"23243","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23244","messages":"23245","suppressedMessages":"23246","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23247","messages":"23248","suppressedMessages":"23249","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23250","messages":"23251","suppressedMessages":"23252","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23253","messages":"23254","suppressedMessages":"23255","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23256","messages":"23257","suppressedMessages":"23258","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23259","messages":"23260","suppressedMessages":"23261","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23262","messages":"23263","suppressedMessages":"23264","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23265","messages":"23266","suppressedMessages":"23267","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23268","messages":"23269","suppressedMessages":"23270","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23271","messages":"23272","suppressedMessages":"23273","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23274","messages":"23275","suppressedMessages":"23276","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"23277","messages":"23278","suppressedMessages":"23279","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"23280","messages":"23281","suppressedMessages":"23282","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23283","messages":"23284","suppressedMessages":"23285","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23286","messages":"23287","suppressedMessages":"23288","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"23289","messages":"23290","suppressedMessages":"23291","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23292","messages":"23293","suppressedMessages":"23294","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23295","messages":"23296","suppressedMessages":"23297","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23298","messages":"23299","suppressedMessages":"23300","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23301","messages":"23302","suppressedMessages":"23303","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23304","messages":"23305","suppressedMessages":"23306","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23307","messages":"23308","suppressedMessages":"23309","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23310","messages":"23311","suppressedMessages":"23312","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23313","messages":"23314","suppressedMessages":"23315","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23316","messages":"23317","suppressedMessages":"23318","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23319","messages":"23320","suppressedMessages":"23321","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23322","messages":"23323","suppressedMessages":"23324","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"23325","messages":"23326","suppressedMessages":"23327","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23328","messages":"23329","suppressedMessages":"23330","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23331","messages":"23332","suppressedMessages":"23333","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23334","messages":"23335","suppressedMessages":"23336","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"23337","messages":"23338","suppressedMessages":"23339","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23340","messages":"23341","suppressedMessages":"23342","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23343","messages":"23344","suppressedMessages":"23345","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23346","messages":"23347","suppressedMessages":"23348","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"23349","messages":"23350","suppressedMessages":"23351","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23352","messages":"23353","suppressedMessages":"23354","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23355","messages":"23356","suppressedMessages":"23357","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"23358","messages":"23359","suppressedMessages":"23360","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"23361","messages":"23362","suppressedMessages":"23363","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23364","messages":"23365","suppressedMessages":"23366","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"23367","messages":"23368","suppressedMessages":"23369","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23370","messages":"23371","suppressedMessages":"23372","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23373","messages":"23374","suppressedMessages":"23375","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23376","messages":"23377","suppressedMessages":"23378","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"23379","messages":"23380","suppressedMessages":"23381","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23382","messages":"23383","suppressedMessages":"23384","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23385","messages":"23386","suppressedMessages":"23387","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23388","messages":"23389","suppressedMessages":"23390","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23391","messages":"23392","suppressedMessages":"23393","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"23394","messages":"23395","suppressedMessages":"23396","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23397","messages":"23398","suppressedMessages":"23399","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23400","messages":"23401","suppressedMessages":"23402","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23403","messages":"23404","suppressedMessages":"23405","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23406","messages":"23407","suppressedMessages":"23408","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"23409","messages":"23410","suppressedMessages":"23411","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23412","messages":"23413","suppressedMessages":"23414","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23415","messages":"23416","suppressedMessages":"23417","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23418","messages":"23419","suppressedMessages":"23420","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"23421","messages":"23422","suppressedMessages":"23423","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23424","messages":"23425","suppressedMessages":"23426","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23427","messages":"23428","suppressedMessages":"23429","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23430","messages":"23431","suppressedMessages":"23432","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23433","messages":"23434","suppressedMessages":"23435","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23436","messages":"23437","suppressedMessages":"23438","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23439","messages":"23440","suppressedMessages":"23441","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23442","messages":"23443","suppressedMessages":"23444","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23445","messages":"23446","suppressedMessages":"23447","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"23448","messages":"23449","suppressedMessages":"23450","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23451","messages":"23452","suppressedMessages":"23453","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"23454","messages":"23455","suppressedMessages":"23456","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23457","messages":"23458","suppressedMessages":"23459","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23460","messages":"23461","suppressedMessages":"23462","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"23463","messages":"23464","suppressedMessages":"23465","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23466","messages":"23467","suppressedMessages":"23468","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23469","messages":"23470","suppressedMessages":"23471","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23472","messages":"23473","suppressedMessages":"23474","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23475","messages":"23476","suppressedMessages":"23477","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"23478","messages":"23479","suppressedMessages":"23480","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"23481","messages":"23482","suppressedMessages":"23483","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"23484","messages":"23485","suppressedMessages":"23486","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"23487","messages":"23488","suppressedMessages":"23489","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"23490","messages":"23491","suppressedMessages":"23492","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23493","messages":"23494","suppressedMessages":"23495","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"23496","messages":"23497","suppressedMessages":"23498","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"23499","messages":"23500","suppressedMessages":"23501","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"23502","messages":"23503","suppressedMessages":"23504","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"23505","messages":"23506","suppressedMessages":"23507","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23508","messages":"23509","suppressedMessages":"23510","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23511","messages":"23512","suppressedMessages":"23513","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23514","messages":"23515","suppressedMessages":"23516","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23517","messages":"23518","suppressedMessages":"23519","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"23520","messages":"23521","suppressedMessages":"23522","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23523","messages":"23524","suppressedMessages":"23525","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23526","messages":"23527","suppressedMessages":"23528","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23529","messages":"23530","suppressedMessages":"23531","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23532","messages":"23533","suppressedMessages":"23534","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"23535","messages":"23536","suppressedMessages":"23537","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23538","messages":"23539","suppressedMessages":"23540","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23541","messages":"23542","suppressedMessages":"23543","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23544","messages":"23545","suppressedMessages":"23546","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23547","messages":"23548","suppressedMessages":"23549","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23550","messages":"23551","suppressedMessages":"23552","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23553","messages":"23554","suppressedMessages":"23555","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23556","messages":"23557","suppressedMessages":"23558","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23559","messages":"23560","suppressedMessages":"23561","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23562","messages":"23563","suppressedMessages":"23564","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23565","messages":"23566","suppressedMessages":"23567","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23568","messages":"23569","suppressedMessages":"23570","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23571","messages":"23572","suppressedMessages":"23573","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23574","messages":"23575","suppressedMessages":"23576","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23577","messages":"23578","suppressedMessages":"23579","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23580","messages":"23581","suppressedMessages":"23582","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23583","messages":"23584","suppressedMessages":"23585","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"23586","messages":"23587","suppressedMessages":"23588","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23589","messages":"23590","suppressedMessages":"23591","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23592","messages":"23593","suppressedMessages":"23594","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23595","messages":"23596","suppressedMessages":"23597","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23598","messages":"23599","suppressedMessages":"23600","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23601","messages":"23602","suppressedMessages":"23603","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23604","messages":"23605","suppressedMessages":"23606","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23607","messages":"23608","suppressedMessages":"23609","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23610","messages":"23611","suppressedMessages":"23612","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23613","messages":"23614","suppressedMessages":"23615","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23616","messages":"23617","suppressedMessages":"23618","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23619","messages":"23620","suppressedMessages":"23621","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23622","messages":"23623","suppressedMessages":"23624","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23625","messages":"23626","suppressedMessages":"23627","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23628","messages":"23629","suppressedMessages":"23630","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23631","messages":"23632","suppressedMessages":"23633","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23634","messages":"23635","suppressedMessages":"23636","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23637","messages":"23638","suppressedMessages":"23639","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23640","messages":"23641","suppressedMessages":"23642","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23643","messages":"23644","suppressedMessages":"23645","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23646","messages":"23647","suppressedMessages":"23648","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23649","messages":"23650","suppressedMessages":"23651","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23652","messages":"23653","suppressedMessages":"23654","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23655","messages":"23656","suppressedMessages":"23657","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23658","messages":"23659","suppressedMessages":"23660","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23661","messages":"23662","suppressedMessages":"23663","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23664","messages":"23665","suppressedMessages":"23666","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23667","messages":"23668","suppressedMessages":"23669","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23670","messages":"23671","suppressedMessages":"23672","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23673","messages":"23674","suppressedMessages":"23675","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23676","messages":"23677","suppressedMessages":"23678","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23679","messages":"23680","suppressedMessages":"23681","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23682","messages":"23683","suppressedMessages":"23684","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23685","messages":"23686","suppressedMessages":"23687","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23688","messages":"23689","suppressedMessages":"23690","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23691","messages":"23692","suppressedMessages":"23693","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23694","messages":"23695","suppressedMessages":"23696","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23697","messages":"23698","suppressedMessages":"23699","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23700","messages":"23701","suppressedMessages":"23702","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23703","messages":"23704","suppressedMessages":"23705","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23706","messages":"23707","suppressedMessages":"23708","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23709","messages":"23710","suppressedMessages":"23711","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23712","messages":"23713","suppressedMessages":"23714","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23715","messages":"23716","suppressedMessages":"23717","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23718","messages":"23719","suppressedMessages":"23720","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23721","messages":"23722","suppressedMessages":"23723","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23724","messages":"23725","suppressedMessages":"23726","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"23727","messages":"23728","suppressedMessages":"23729","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"23730","messages":"23731","suppressedMessages":"23732","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"23733","messages":"23734","suppressedMessages":"23735","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"23736","messages":"23737","suppressedMessages":"23738","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23739","messages":"23740","suppressedMessages":"23741","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23742","messages":"23743","suppressedMessages":"23744","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23745","messages":"23746","suppressedMessages":"23747","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23748","messages":"23749","suppressedMessages":"23750","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"23751","messages":"23752","suppressedMessages":"23753","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23754","messages":"23755","suppressedMessages":"23756","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23757","messages":"23758","suppressedMessages":"23759","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23760","messages":"23761","suppressedMessages":"23762","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23763","messages":"23764","suppressedMessages":"23765","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23766","messages":"23767","suppressedMessages":"23768","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23769","messages":"23770","suppressedMessages":"23771","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23772","messages":"23773","suppressedMessages":"23774","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"23775","messages":"23776","suppressedMessages":"23777","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23778","messages":"23779","suppressedMessages":"23780","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23781","messages":"23782","suppressedMessages":"23783","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"23784","messages":"23785","suppressedMessages":"23786","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"23787","messages":"23788","suppressedMessages":"23789","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"23790","messages":"23791","suppressedMessages":"23792","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"23793","messages":"23794","suppressedMessages":"23795","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23796","messages":"23797","suppressedMessages":"23798","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23799","messages":"23800","suppressedMessages":"23801","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23802","messages":"23803","suppressedMessages":"23804","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23805","messages":"23806","suppressedMessages":"23807","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23808","messages":"23809","suppressedMessages":"23810","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"23811","messages":"23812","suppressedMessages":"23813","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23814","messages":"23815","suppressedMessages":"23816","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23817","messages":"23818","suppressedMessages":"23819","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23820","messages":"23821","suppressedMessages":"23822","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23823","messages":"23824","suppressedMessages":"23825","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23826","messages":"23827","suppressedMessages":"23828","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23829","messages":"23830","suppressedMessages":"23831","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23832","messages":"23833","suppressedMessages":"23834","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23835","messages":"23836","suppressedMessages":"23837","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"23838","messages":"23839","suppressedMessages":"23840","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"23841","messages":"23842","suppressedMessages":"23843","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"23844","messages":"23845","suppressedMessages":"23846","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"23847","messages":"23848","suppressedMessages":"23849","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"23850","messages":"23851","suppressedMessages":"23852","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"23853","messages":"23854","suppressedMessages":"23855","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"23856","messages":"23857","suppressedMessages":"23858","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"23859","messages":"23860","suppressedMessages":"23861","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23862","messages":"23863","suppressedMessages":"23864","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"23865","messages":"23866","suppressedMessages":"23867","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"23868","messages":"23869","suppressedMessages":"23870","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"23871","messages":"23872","suppressedMessages":"23873","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"23874","messages":"23875","suppressedMessages":"23876","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"23877","messages":"23878","suppressedMessages":"23879","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"23880","messages":"23881","suppressedMessages":"23882","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"23883","messages":"23884","suppressedMessages":"23885","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23886","messages":"23887","suppressedMessages":"23888","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"23889","messages":"23890","suppressedMessages":"23891","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"23892","messages":"23893","suppressedMessages":"23894","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23895","messages":"23896","suppressedMessages":"23897","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23898","messages":"23899","suppressedMessages":"23900","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23901","messages":"23902","suppressedMessages":"23903","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23904","messages":"23905","suppressedMessages":"23906","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23907","messages":"23908","suppressedMessages":"23909","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23910","messages":"23911","suppressedMessages":"23912","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23913","messages":"23914","suppressedMessages":"23915","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23916","messages":"23917","suppressedMessages":"23918","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23919","messages":"23920","suppressedMessages":"23921","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"23922","messages":"23923","suppressedMessages":"23924","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23925","messages":"23926","suppressedMessages":"23927","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"23928","messages":"23929","suppressedMessages":"23930","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23931","messages":"23932","suppressedMessages":"23933","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23934","messages":"23935","suppressedMessages":"23936","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23937","messages":"23938","suppressedMessages":"23939","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"23940","messages":"23941","suppressedMessages":"23942","errorCount":2,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"23943","messages":"23944","suppressedMessages":"23945","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"23946","messages":"23947","suppressedMessages":"23948","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23949","messages":"23950","suppressedMessages":"23951","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"23952","messages":"23953","suppressedMessages":"23954","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23955","messages":"23956","suppressedMessages":"23957","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23958","messages":"23959","suppressedMessages":"23960","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23961","messages":"23962","suppressedMessages":"23963","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"23964","messages":"23965","suppressedMessages":"23966","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23967","messages":"23968","suppressedMessages":"23969","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23970","messages":"23971","suppressedMessages":"23972","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23973","messages":"23974","suppressedMessages":"23975","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23976","messages":"23977","suppressedMessages":"23978","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23979","messages":"23980","suppressedMessages":"23981","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23982","messages":"23983","suppressedMessages":"23984","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23985","messages":"23986","suppressedMessages":"23987","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23988","messages":"23989","suppressedMessages":"23990","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23991","messages":"23992","suppressedMessages":"23993","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23994","messages":"23995","suppressedMessages":"23996","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"23997","messages":"23998","suppressedMessages":"23999","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"24000","messages":"24001","suppressedMessages":"24002","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24003","messages":"24004","suppressedMessages":"24005","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24006","messages":"24007","suppressedMessages":"24008","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24009","messages":"24010","suppressedMessages":"24011","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24012","messages":"24013","suppressedMessages":"24014","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24015","messages":"24016","suppressedMessages":"24017","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24018","messages":"24019","suppressedMessages":"24020","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24021","messages":"24022","suppressedMessages":"24023","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24024","messages":"24025","suppressedMessages":"24026","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"24027","messages":"24028","suppressedMessages":"24029","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24030","messages":"24031","suppressedMessages":"24032","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24033","messages":"24034","suppressedMessages":"24035","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24036","messages":"24037","suppressedMessages":"24038","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24039","messages":"24040","suppressedMessages":"24041","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24042","messages":"24043","suppressedMessages":"24044","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24045","messages":"24046","suppressedMessages":"24047","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24048","messages":"24049","suppressedMessages":"24050","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24051","messages":"24052","suppressedMessages":"24053","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24054","messages":"24055","suppressedMessages":"24056","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24057","messages":"24058","suppressedMessages":"24059","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24060","messages":"24061","suppressedMessages":"24062","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24063","messages":"24064","suppressedMessages":"24065","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24066","messages":"24067","suppressedMessages":"24068","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"24069","messages":"24070","suppressedMessages":"24071","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24072","messages":"24073","suppressedMessages":"24074","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24075","messages":"24076","suppressedMessages":"24077","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24078","messages":"24079","suppressedMessages":"24080","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24081","messages":"24082","suppressedMessages":"24083","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24084","messages":"24085","suppressedMessages":"24086","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24087","messages":"24088","suppressedMessages":"24089","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24090","messages":"24091","suppressedMessages":"24092","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24093","messages":"24094","suppressedMessages":"24095","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24096","messages":"24097","suppressedMessages":"24098","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24099","messages":"24100","suppressedMessages":"24101","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24102","messages":"24103","suppressedMessages":"24104","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24105","messages":"24106","suppressedMessages":"24107","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24108","messages":"24109","suppressedMessages":"24110","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24111","messages":"24112","suppressedMessages":"24113","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24114","messages":"24115","suppressedMessages":"24116","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24117","messages":"24118","suppressedMessages":"24119","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24120","messages":"24121","suppressedMessages":"24122","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24123","messages":"24124","suppressedMessages":"24125","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24126","messages":"24127","suppressedMessages":"24128","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24129","messages":"24130","suppressedMessages":"24131","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24132","messages":"24133","suppressedMessages":"24134","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24135","messages":"24136","suppressedMessages":"24137","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24138","messages":"24139","suppressedMessages":"24140","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"24141","messages":"24142","suppressedMessages":"24143","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24144","messages":"24145","suppressedMessages":"24146","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"24147","messages":"24148","suppressedMessages":"24149","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24150","messages":"24151","suppressedMessages":"24152","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24153","messages":"24154","suppressedMessages":"24155","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24156","messages":"24157","suppressedMessages":"24158","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24159","messages":"24160","suppressedMessages":"24161","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24162","messages":"24163","suppressedMessages":"24164","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24165","messages":"24166","suppressedMessages":"24167","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24168","messages":"24169","suppressedMessages":"24170","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24171","messages":"24172","suppressedMessages":"24173","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24174","messages":"24175","suppressedMessages":"24176","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24177","messages":"24178","suppressedMessages":"24179","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24180","messages":"24181","suppressedMessages":"24182","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24183","messages":"24184","suppressedMessages":"24185","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24186","messages":"24187","suppressedMessages":"24188","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24189","messages":"24190","suppressedMessages":"24191","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24192","messages":"24193","suppressedMessages":"24194","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24195","messages":"24196","suppressedMessages":"24197","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24198","messages":"24199","suppressedMessages":"24200","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"24201","messages":"24202","suppressedMessages":"24203","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24204","messages":"24205","suppressedMessages":"24206","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24207","messages":"24208","suppressedMessages":"24209","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24210","messages":"24211","suppressedMessages":"24212","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24213","messages":"24214","suppressedMessages":"24215","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24216","messages":"24217","suppressedMessages":"24218","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24219","messages":"24220","suppressedMessages":"24221","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24222","messages":"24223","suppressedMessages":"24224","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24225","messages":"24226","suppressedMessages":"24227","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24228","messages":"24229","suppressedMessages":"24230","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24231","messages":"24232","suppressedMessages":"24233","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24234","messages":"24235","suppressedMessages":"24236","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24237","messages":"24238","suppressedMessages":"24239","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24240","messages":"24241","suppressedMessages":"24242","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"24243","messages":"24244","suppressedMessages":"24245","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24246","messages":"24247","suppressedMessages":"24248","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24249","messages":"24250","suppressedMessages":"24251","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24252","messages":"24253","suppressedMessages":"24254","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"24255","messages":"24256","suppressedMessages":"24257","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24258","messages":"24259","suppressedMessages":"24260","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24261","messages":"24262","suppressedMessages":"24263","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"24264","messages":"24265","suppressedMessages":"24266","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24267","messages":"24268","suppressedMessages":"24269","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24270","messages":"24271","suppressedMessages":"24272","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24273","messages":"24274","suppressedMessages":"24275","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24276","messages":"24277","suppressedMessages":"24278","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24279","messages":"24280","suppressedMessages":"24281","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24282","messages":"24283","suppressedMessages":"24284","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24285","messages":"24286","suppressedMessages":"24287","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24288","messages":"24289","suppressedMessages":"24290","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24291","messages":"24292","suppressedMessages":"24293","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24294","messages":"24295","suppressedMessages":"24296","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24297","messages":"24298","suppressedMessages":"24299","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24300","messages":"24301","suppressedMessages":"24302","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"24303","messages":"24304","suppressedMessages":"24305","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24306","messages":"24307","suppressedMessages":"24308","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24309","messages":"24310","suppressedMessages":"24311","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"24312","messages":"24313","suppressedMessages":"24314","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"24315","messages":"24316","suppressedMessages":"24317","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"24318","messages":"24319","suppressedMessages":"24320","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24321","messages":"24322","suppressedMessages":"24323","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24324","messages":"24325","suppressedMessages":"24326","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"24327","messages":"24328","suppressedMessages":"24329","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24330","messages":"24331","suppressedMessages":"24332","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24333","messages":"24334","suppressedMessages":"24335","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24336","messages":"24337","suppressedMessages":"24338","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"24339","messages":"24340","suppressedMessages":"24341","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24342","messages":"24343","suppressedMessages":"24344","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24345","messages":"24346","suppressedMessages":"24347","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24348","messages":"24349","suppressedMessages":"24350","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"24351","messages":"24352","suppressedMessages":"24353","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"24354","messages":"24355","suppressedMessages":"24356","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"24357","messages":"24358","suppressedMessages":"24359","errorCount":2,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"24360","messages":"24361","suppressedMessages":"24362","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24363","messages":"24364","suppressedMessages":"24365","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24366","messages":"24367","suppressedMessages":"24368","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24369","messages":"24370","suppressedMessages":"24371","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"24372","messages":"24373","suppressedMessages":"24374","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"24375","messages":"24376","suppressedMessages":"24377","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"24378","messages":"24379","suppressedMessages":"24380","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"24381","messages":"24382","suppressedMessages":"24383","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24384","messages":"24385","suppressedMessages":"24386","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24387","messages":"24388","suppressedMessages":"24389","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24390","messages":"24391","suppressedMessages":"24392","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24393","messages":"24394","suppressedMessages":"24395","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24396","messages":"24397","suppressedMessages":"24398","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"24399","messages":"24400","suppressedMessages":"24401","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24402","messages":"24403","suppressedMessages":"24404","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24405","messages":"24406","suppressedMessages":"24407","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24408","messages":"24409","suppressedMessages":"24410","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"24411","messages":"24412","suppressedMessages":"24413","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24414","messages":"24415","suppressedMessages":"24416","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24417","messages":"24418","suppressedMessages":"24419","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24420","messages":"24421","suppressedMessages":"24422","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24423","messages":"24424","suppressedMessages":"24425","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24426","messages":"24427","suppressedMessages":"24428","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24429","messages":"24430","suppressedMessages":"24431","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24432","messages":"24433","suppressedMessages":"24434","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24435","messages":"24436","suppressedMessages":"24437","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24438","messages":"24439","suppressedMessages":"24440","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24441","messages":"24442","suppressedMessages":"24443","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24444","messages":"24445","suppressedMessages":"24446","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24447","messages":"24448","suppressedMessages":"24449","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24450","messages":"24451","suppressedMessages":"24452","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24453","messages":"24454","suppressedMessages":"24455","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24456","messages":"24457","suppressedMessages":"24458","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24459","messages":"24460","suppressedMessages":"24461","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24462","messages":"24463","suppressedMessages":"24464","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24465","messages":"24466","suppressedMessages":"24467","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24468","messages":"24469","suppressedMessages":"24470","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24471","messages":"24472","suppressedMessages":"24473","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24474","messages":"24475","suppressedMessages":"24476","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24477","messages":"24478","suppressedMessages":"24479","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24480","messages":"24481","suppressedMessages":"24482","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24483","messages":"24484","suppressedMessages":"24485","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24486","messages":"24487","suppressedMessages":"24488","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24489","messages":"24490","suppressedMessages":"24491","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24492","messages":"24493","suppressedMessages":"24494","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24495","messages":"24496","suppressedMessages":"24497","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24498","messages":"24499","suppressedMessages":"24500","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24501","messages":"24502","suppressedMessages":"24503","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24504","messages":"24505","suppressedMessages":"24506","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24507","messages":"24508","suppressedMessages":"24509","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24510","messages":"24511","suppressedMessages":"24512","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24513","messages":"24514","suppressedMessages":"24515","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24516","messages":"24517","suppressedMessages":"24518","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"24519","messages":"24520","suppressedMessages":"24521","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24522","messages":"24523","suppressedMessages":"24524","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24525","messages":"24526","suppressedMessages":"24527","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24528","messages":"24529","suppressedMessages":"24530","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24531","messages":"24532","suppressedMessages":"24533","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24534","messages":"24535","suppressedMessages":"24536","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24537","messages":"24538","suppressedMessages":"24539","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24540","messages":"24541","suppressedMessages":"24542","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24543","messages":"24544","suppressedMessages":"24545","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24546","messages":"24547","suppressedMessages":"24548","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24549","messages":"24550","suppressedMessages":"24551","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24552","messages":"24553","suppressedMessages":"24554","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24555","messages":"24556","suppressedMessages":"24557","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24558","messages":"24559","suppressedMessages":"24560","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24561","messages":"24562","suppressedMessages":"24563","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"24564","messages":"24565","suppressedMessages":"24566","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24567","messages":"24568","suppressedMessages":"24569","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24570","messages":"24571","suppressedMessages":"24572","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24573","messages":"24574","suppressedMessages":"24575","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24576","messages":"24577","suppressedMessages":"24578","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24579","messages":"24580","suppressedMessages":"24581","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24582","messages":"24583","suppressedMessages":"24584","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24585","messages":"24586","suppressedMessages":"24587","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24588","messages":"24589","suppressedMessages":"24590","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24591","messages":"24592","suppressedMessages":"24593","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24594","messages":"24595","suppressedMessages":"24596","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24597","messages":"24598","suppressedMessages":"24599","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24600","messages":"24601","suppressedMessages":"24602","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24603","messages":"24604","suppressedMessages":"24605","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24606","messages":"24607","suppressedMessages":"24608","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24609","messages":"24610","suppressedMessages":"24611","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24612","messages":"24613","suppressedMessages":"24614","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24615","messages":"24616","suppressedMessages":"24617","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24618","messages":"24619","suppressedMessages":"24620","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24621","messages":"24622","suppressedMessages":"24623","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24624","messages":"24625","suppressedMessages":"24626","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24627","messages":"24628","suppressedMessages":"24629","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24630","messages":"24631","suppressedMessages":"24632","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24633","messages":"24634","suppressedMessages":"24635","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24636","messages":"24637","suppressedMessages":"24638","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24639","messages":"24640","suppressedMessages":"24641","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24642","messages":"24643","suppressedMessages":"24644","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24645","messages":"24646","suppressedMessages":"24647","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24648","messages":"24649","suppressedMessages":"24650","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24651","messages":"24652","suppressedMessages":"24653","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24654","messages":"24655","suppressedMessages":"24656","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"24657","messages":"24658","suppressedMessages":"24659","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24660","messages":"24661","suppressedMessages":"24662","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24663","messages":"24664","suppressedMessages":"24665","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24666","messages":"24667","suppressedMessages":"24668","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24669","messages":"24670","suppressedMessages":"24671","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24672","messages":"24673","suppressedMessages":"24674","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24675","messages":"24676","suppressedMessages":"24677","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24678","messages":"24679","suppressedMessages":"24680","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24681","messages":"24682","suppressedMessages":"24683","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24684","messages":"24685","suppressedMessages":"24686","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"24687","messages":"24688","suppressedMessages":"24689","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"24690","messages":"24691","suppressedMessages":"24692","errorCount":2,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"24693","messages":"24694","suppressedMessages":"24695","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"24696","messages":"24697","suppressedMessages":"24698","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24699","messages":"24700","suppressedMessages":"24701","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24702","messages":"24703","suppressedMessages":"24704","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24705","messages":"24706","suppressedMessages":"24707","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24708","messages":"24709","suppressedMessages":"24710","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24711","messages":"24712","suppressedMessages":"24713","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24714","messages":"24715","suppressedMessages":"24716","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24717","messages":"24718","suppressedMessages":"24719","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24720","messages":"24721","suppressedMessages":"24722","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24723","messages":"24724","suppressedMessages":"24725","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24726","messages":"24727","suppressedMessages":"24728","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24729","messages":"24730","suppressedMessages":"24731","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24732","messages":"24733","suppressedMessages":"24734","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24735","messages":"24736","suppressedMessages":"24737","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24738","messages":"24739","suppressedMessages":"24740","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24741","messages":"24742","suppressedMessages":"24743","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24744","messages":"24745","suppressedMessages":"24746","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24747","messages":"24748","suppressedMessages":"24749","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24750","messages":"24751","suppressedMessages":"24752","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24753","messages":"24754","suppressedMessages":"24755","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24756","messages":"24757","suppressedMessages":"24758","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24759","messages":"24760","suppressedMessages":"24761","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24762","messages":"24763","suppressedMessages":"24764","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24765","messages":"24766","suppressedMessages":"24767","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24768","messages":"24769","suppressedMessages":"24770","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24771","messages":"24772","suppressedMessages":"24773","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24774","messages":"24775","suppressedMessages":"24776","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24777","messages":"24778","suppressedMessages":"24779","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24780","messages":"24781","suppressedMessages":"24782","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24783","messages":"24784","suppressedMessages":"24785","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24786","messages":"24787","suppressedMessages":"24788","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24789","messages":"24790","suppressedMessages":"24791","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24792","messages":"24793","suppressedMessages":"24794","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24795","messages":"24796","suppressedMessages":"24797","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24798","messages":"24799","suppressedMessages":"24800","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24801","messages":"24802","suppressedMessages":"24803","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24804","messages":"24805","suppressedMessages":"24806","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24807","messages":"24808","suppressedMessages":"24809","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24810","messages":"24811","suppressedMessages":"24812","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24813","messages":"24814","suppressedMessages":"24815","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24816","messages":"24817","suppressedMessages":"24818","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24819","messages":"24820","suppressedMessages":"24821","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"11lzzz9",{"filePath":"24822","messages":"24823","suppressedMessages":"24824","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24825","messages":"24826","suppressedMessages":"24827","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24828","messages":"24829","suppressedMessages":"24830","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24831","messages":"24832","suppressedMessages":"24833","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24834","messages":"24835","suppressedMessages":"24836","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24837","messages":"24838","suppressedMessages":"24839","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24840","messages":"24841","suppressedMessages":"24842","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24843","messages":"24844","suppressedMessages":"24845","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24846","messages":"24847","suppressedMessages":"24848","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"24849","messages":"24850","suppressedMessages":"24851","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24852","messages":"24853","suppressedMessages":"24854","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24855","messages":"24856","suppressedMessages":"24857","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24858","messages":"24859","suppressedMessages":"24860","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24861","messages":"24862","suppressedMessages":"24863","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24864","messages":"24865","suppressedMessages":"24866","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24867","messages":"24868","suppressedMessages":"24869","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24870","messages":"24871","suppressedMessages":"24872","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24873","messages":"24874","suppressedMessages":"24875","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24876","messages":"24877","suppressedMessages":"24878","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24879","messages":"24880","suppressedMessages":"24881","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"24882","messages":"24883","suppressedMessages":"24884","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24885","messages":"24886","suppressedMessages":"24887","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24888","messages":"24889","suppressedMessages":"24890","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24891","messages":"24892","suppressedMessages":"24893","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24894","messages":"24895","suppressedMessages":"24896","errorCount":2,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"24897","messages":"24898","suppressedMessages":"24899","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24900","messages":"24901","suppressedMessages":"24902","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24903","messages":"24904","suppressedMessages":"24905","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24906","messages":"24907","suppressedMessages":"24908","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24909","messages":"24910","suppressedMessages":"24911","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24912","messages":"24913","suppressedMessages":"24914","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24915","messages":"24916","suppressedMessages":"24917","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24918","messages":"24919","suppressedMessages":"24920","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24921","messages":"24922","suppressedMessages":"24923","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24924","messages":"24925","suppressedMessages":"24926","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"24927","messages":"24928","suppressedMessages":"24929","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24930","messages":"24931","suppressedMessages":"24932","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24933","messages":"24934","suppressedMessages":"24935","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24936","messages":"24937","suppressedMessages":"24938","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24939","messages":"24940","suppressedMessages":"24941","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24942","messages":"24943","suppressedMessages":"24944","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24945","messages":"24946","suppressedMessages":"24947","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24948","messages":"24949","suppressedMessages":"24950","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24951","messages":"24952","suppressedMessages":"24953","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24954","messages":"24955","suppressedMessages":"24956","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24957","messages":"24958","suppressedMessages":"24959","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24960","messages":"24961","suppressedMessages":"24962","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24963","messages":"24964","suppressedMessages":"24965","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24966","messages":"24967","suppressedMessages":"24968","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24969","messages":"24970","suppressedMessages":"24971","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24972","messages":"24973","suppressedMessages":"24974","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24975","messages":"24976","suppressedMessages":"24977","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24978","messages":"24979","suppressedMessages":"24980","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24981","messages":"24982","suppressedMessages":"24983","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24984","messages":"24985","suppressedMessages":"24986","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24987","messages":"24988","suppressedMessages":"24989","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"24990","messages":"24991","suppressedMessages":"24992","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"24993","messages":"24994","suppressedMessages":"24995","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24996","messages":"24997","suppressedMessages":"24998","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24999","messages":"25000","suppressedMessages":"25001","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25002","messages":"25003","suppressedMessages":"25004","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25005","messages":"25006","suppressedMessages":"25007","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25008","messages":"25009","suppressedMessages":"25010","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25011","messages":"25012","suppressedMessages":"25013","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25014","messages":"25015","suppressedMessages":"25016","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25017","messages":"25018","suppressedMessages":"25019","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25020","messages":"25021","suppressedMessages":"25022","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25023","messages":"25024","suppressedMessages":"25025","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25026","messages":"25027","suppressedMessages":"25028","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25029","messages":"25030","suppressedMessages":"25031","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25032","messages":"25033","suppressedMessages":"25034","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25035","messages":"25036","suppressedMessages":"25037","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25038","messages":"25039","suppressedMessages":"25040","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25041","messages":"25042","suppressedMessages":"25043","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25044","messages":"25045","suppressedMessages":"25046","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25047","messages":"25048","suppressedMessages":"25049","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25050","messages":"25051","suppressedMessages":"25052","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25053","messages":"25054","suppressedMessages":"25055","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25056","messages":"25057","suppressedMessages":"25058","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25059","messages":"25060","suppressedMessages":"25061","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25062","messages":"25063","suppressedMessages":"25064","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25065","messages":"25066","suppressedMessages":"25067","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25068","messages":"25069","suppressedMessages":"25070","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25071","messages":"25072","suppressedMessages":"25073","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25074","messages":"25075","suppressedMessages":"25076","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25077","messages":"25078","suppressedMessages":"25079","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25080","messages":"25081","suppressedMessages":"25082","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25083","messages":"25084","suppressedMessages":"25085","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25086","messages":"25087","suppressedMessages":"25088","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25089","messages":"25090","suppressedMessages":"25091","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25092","messages":"25093","suppressedMessages":"25094","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25095","messages":"25096","suppressedMessages":"25097","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25098","messages":"25099","suppressedMessages":"25100","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25101","messages":"25102","suppressedMessages":"25103","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25104","messages":"25105","suppressedMessages":"25106","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25107","messages":"25108","suppressedMessages":"25109","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25110","messages":"25111","suppressedMessages":"25112","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25113","messages":"25114","suppressedMessages":"25115","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25116","messages":"25117","suppressedMessages":"25118","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25119","messages":"25120","suppressedMessages":"25121","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25122","messages":"25123","suppressedMessages":"25124","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25125","messages":"25126","suppressedMessages":"25127","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25128","messages":"25129","suppressedMessages":"25130","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25131","messages":"25132","suppressedMessages":"25133","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25134","messages":"25135","suppressedMessages":"25136","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25137","messages":"25138","suppressedMessages":"25139","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25140","messages":"25141","suppressedMessages":"25142","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25143","messages":"25144","suppressedMessages":"25145","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25146","messages":"25147","suppressedMessages":"25148","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25149","messages":"25150","suppressedMessages":"25151","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25152","messages":"25153","suppressedMessages":"25154","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25155","messages":"25156","suppressedMessages":"25157","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25158","messages":"25159","suppressedMessages":"25160","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25161","messages":"25162","suppressedMessages":"25163","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"25164","messages":"25165","suppressedMessages":"25166","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25167","messages":"25168","suppressedMessages":"25169","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25170","messages":"25171","suppressedMessages":"25172","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25173","messages":"25174","suppressedMessages":"25175","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"25176","messages":"25177","suppressedMessages":"25178","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25179","messages":"25180","suppressedMessages":"25181","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25182","messages":"25183","suppressedMessages":"25184","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"25185","messages":"25186","suppressedMessages":"25187","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25188","messages":"25189","suppressedMessages":"25190","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25191","messages":"25192","suppressedMessages":"25193","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25194","messages":"25195","suppressedMessages":"25196","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25197","messages":"25198","suppressedMessages":"25199","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25200","messages":"25201","suppressedMessages":"25202","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25203","messages":"25204","suppressedMessages":"25205","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25206","messages":"25207","suppressedMessages":"25208","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25209","messages":"25210","suppressedMessages":"25211","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25212","messages":"25213","suppressedMessages":"25214","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25215","messages":"25216","suppressedMessages":"25217","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25218","messages":"25219","suppressedMessages":"25220","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25221","messages":"25222","suppressedMessages":"25223","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"25224","messages":"25225","suppressedMessages":"25226","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25227","messages":"25228","suppressedMessages":"25229","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25230","messages":"25231","suppressedMessages":"25232","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25233","messages":"25234","suppressedMessages":"25235","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25236","messages":"25237","suppressedMessages":"25238","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25239","messages":"25240","suppressedMessages":"25241","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25242","messages":"25243","suppressedMessages":"25244","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25245","messages":"25246","suppressedMessages":"25247","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"25248","messages":"25249","suppressedMessages":"25250","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25251","messages":"25252","suppressedMessages":"25253","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"1h4i9bm",{"filePath":"25254","messages":"25255","suppressedMessages":"25256","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25257","messages":"25258","suppressedMessages":"25259","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25260","messages":"25261","suppressedMessages":"25262","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25263","messages":"25264","suppressedMessages":"25265","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25266","messages":"25267","suppressedMessages":"25268","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25269","messages":"25270","suppressedMessages":"25271","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25272","messages":"25273","suppressedMessages":"25274","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25275","messages":"25276","suppressedMessages":"25277","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25278","messages":"25279","suppressedMessages":"25280","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25281","messages":"25282","suppressedMessages":"25283","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25284","messages":"25285","suppressedMessages":"25286","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25287","messages":"25288","suppressedMessages":"25289","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25290","messages":"25291","suppressedMessages":"25292","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25293","messages":"25294","suppressedMessages":"25295","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25296","messages":"25297","suppressedMessages":"25298","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25299","messages":"25300","suppressedMessages":"25301","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25302","messages":"25303","suppressedMessages":"25304","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25305","messages":"25306","suppressedMessages":"25307","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25308","messages":"25309","suppressedMessages":"25310","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25311","messages":"25312","suppressedMessages":"25313","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25314","messages":"25315","suppressedMessages":"25316","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25317","messages":"25318","suppressedMessages":"25319","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25320","messages":"25321","suppressedMessages":"25322","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25323","messages":"25324","suppressedMessages":"25325","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25326","messages":"25327","suppressedMessages":"25328","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25329","messages":"25330","suppressedMessages":"25331","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25332","messages":"25333","suppressedMessages":"25334","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25335","messages":"25336","suppressedMessages":"25337","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25338","messages":"25339","suppressedMessages":"25340","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25341","messages":"25342","suppressedMessages":"25343","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25344","messages":"25345","suppressedMessages":"25346","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25347","messages":"25348","suppressedMessages":"25349","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"25350","messages":"25351","suppressedMessages":"25352","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25353","messages":"25354","suppressedMessages":"25355","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25356","messages":"25357","suppressedMessages":"25358","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25359","messages":"25360","suppressedMessages":"25361","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25362","messages":"25363","suppressedMessages":"25364","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25365","messages":"25366","suppressedMessages":"25367","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25368","messages":"25369","suppressedMessages":"25370","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25371","messages":"25372","suppressedMessages":"25373","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25374","messages":"25375","suppressedMessages":"25376","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25377","messages":"25378","suppressedMessages":"25379","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25380","messages":"25381","suppressedMessages":"25382","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25383","messages":"25384","suppressedMessages":"25385","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25386","messages":"25387","suppressedMessages":"25388","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25389","messages":"25390","suppressedMessages":"25391","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25392","messages":"25393","suppressedMessages":"25394","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25395","messages":"25396","suppressedMessages":"25397","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25398","messages":"25399","suppressedMessages":"25400","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"25401","messages":"25402","suppressedMessages":"25403","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25404","messages":"25405","suppressedMessages":"25406","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25407","messages":"25408","suppressedMessages":"25409","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25410","messages":"25411","suppressedMessages":"25412","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25413","messages":"25414","suppressedMessages":"25415","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25416","messages":"25417","suppressedMessages":"25418","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25419","messages":"25420","suppressedMessages":"25421","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25422","messages":"25423","suppressedMessages":"25424","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25425","messages":"25426","suppressedMessages":"25427","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25428","messages":"25429","suppressedMessages":"25430","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25431","messages":"25432","suppressedMessages":"25433","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25434","messages":"25435","suppressedMessages":"25436","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25437","messages":"25438","suppressedMessages":"25439","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25440","messages":"25441","suppressedMessages":"25442","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25443","messages":"25444","suppressedMessages":"25445","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25446","messages":"25447","suppressedMessages":"25448","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25449","messages":"25450","suppressedMessages":"25451","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25452","messages":"25453","suppressedMessages":"25454","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25455","messages":"25456","suppressedMessages":"25457","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25458","messages":"25459","suppressedMessages":"25460","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25461","messages":"25462","suppressedMessages":"25463","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25464","messages":"25465","suppressedMessages":"25466","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25467","messages":"25468","suppressedMessages":"25469","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25470","messages":"25471","suppressedMessages":"25472","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25473","messages":"25474","suppressedMessages":"25475","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25476","messages":"25477","suppressedMessages":"25478","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25479","messages":"25480","suppressedMessages":"25481","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25482","messages":"25483","suppressedMessages":"25484","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25485","messages":"25486","suppressedMessages":"25487","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25488","messages":"25489","suppressedMessages":"25490","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25491","messages":"25492","suppressedMessages":"25493","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25494","messages":"25495","suppressedMessages":"25496","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25497","messages":"25498","suppressedMessages":"25499","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25500","messages":"25501","suppressedMessages":"25502","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25503","messages":"25504","suppressedMessages":"25505","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25506","messages":"25507","suppressedMessages":"25508","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25509","messages":"25510","suppressedMessages":"25511","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25512","messages":"25513","suppressedMessages":"25514","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25515","messages":"25516","suppressedMessages":"25517","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25518","messages":"25519","suppressedMessages":"25520","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"25521","messages":"25522","suppressedMessages":"25523","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25524","messages":"25525","suppressedMessages":"25526","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25527","messages":"25528","suppressedMessages":"25529","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25530","messages":"25531","suppressedMessages":"25532","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25533","messages":"25534","suppressedMessages":"25535","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25536","messages":"25537","suppressedMessages":"25538","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25539","messages":"25540","suppressedMessages":"25541","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"25542","messages":"25543","suppressedMessages":"25544","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25545","messages":"25546","suppressedMessages":"25547","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25548","messages":"25549","suppressedMessages":"25550","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25551","messages":"25552","suppressedMessages":"25553","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25554","messages":"25555","suppressedMessages":"25556","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25557","messages":"25558","suppressedMessages":"25559","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25560","messages":"25561","suppressedMessages":"25562","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25563","messages":"25564","suppressedMessages":"25565","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25566","messages":"25567","suppressedMessages":"25568","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25569","messages":"25570","suppressedMessages":"25571","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25572","messages":"25573","suppressedMessages":"25574","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25575","messages":"25576","suppressedMessages":"25577","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25578","messages":"25579","suppressedMessages":"25580","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25581","messages":"25582","suppressedMessages":"25583","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25584","messages":"25585","suppressedMessages":"25586","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25587","messages":"25588","suppressedMessages":"25589","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25590","messages":"25591","suppressedMessages":"25592","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25593","messages":"25594","suppressedMessages":"25595","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25596","messages":"25597","suppressedMessages":"25598","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25599","messages":"25600","suppressedMessages":"25601","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25602","messages":"25603","suppressedMessages":"25604","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25605","messages":"25606","suppressedMessages":"25607","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25608","messages":"25609","suppressedMessages":"25610","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25611","messages":"25612","suppressedMessages":"25613","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25614","messages":"25615","suppressedMessages":"25616","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25617","messages":"25618","suppressedMessages":"25619","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25620","messages":"25621","suppressedMessages":"25622","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25623","messages":"25624","suppressedMessages":"25625","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25626","messages":"25627","suppressedMessages":"25628","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25629","messages":"25630","suppressedMessages":"25631","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25632","messages":"25633","suppressedMessages":"25634","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25635","messages":"25636","suppressedMessages":"25637","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25638","messages":"25639","suppressedMessages":"25640","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25641","messages":"25642","suppressedMessages":"25643","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25644","messages":"25645","suppressedMessages":"25646","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25647","messages":"25648","suppressedMessages":"25649","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25650","messages":"25651","suppressedMessages":"25652","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25653","messages":"25654","suppressedMessages":"25655","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25656","messages":"25657","suppressedMessages":"25658","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25659","messages":"25660","suppressedMessages":"25661","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25662","messages":"25663","suppressedMessages":"25664","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25665","messages":"25666","suppressedMessages":"25667","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25668","messages":"25669","suppressedMessages":"25670","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25671","messages":"25672","suppressedMessages":"25673","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25674","messages":"25675","suppressedMessages":"25676","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25677","messages":"25678","suppressedMessages":"25679","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25680","messages":"25681","suppressedMessages":"25682","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25683","messages":"25684","suppressedMessages":"25685","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"25686","messages":"25687","suppressedMessages":"25688","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25689","messages":"25690","suppressedMessages":"25691","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25692","messages":"25693","suppressedMessages":"25694","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25695","messages":"25696","suppressedMessages":"25697","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25698","messages":"25699","suppressedMessages":"25700","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25701","messages":"25702","suppressedMessages":"25703","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25704","messages":"25705","suppressedMessages":"25706","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25707","messages":"25708","suppressedMessages":"25709","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25710","messages":"25711","suppressedMessages":"25712","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25713","messages":"25714","suppressedMessages":"25715","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25716","messages":"25717","suppressedMessages":"25718","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25719","messages":"25720","suppressedMessages":"25721","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25722","messages":"25723","suppressedMessages":"25724","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25725","messages":"25726","suppressedMessages":"25727","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25728","messages":"25729","suppressedMessages":"25730","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25731","messages":"25732","suppressedMessages":"25733","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25734","messages":"25735","suppressedMessages":"25736","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"25737","messages":"25738","suppressedMessages":"25739","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25740","messages":"25741","suppressedMessages":"25742","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25743","messages":"25744","suppressedMessages":"25745","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25746","messages":"25747","suppressedMessages":"25748","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"25749","messages":"25750","suppressedMessages":"25751","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25752","messages":"25753","suppressedMessages":"25754","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25755","messages":"25756","suppressedMessages":"25757","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25758","messages":"25759","suppressedMessages":"25760","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25761","messages":"25762","suppressedMessages":"25763","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25764","messages":"25765","suppressedMessages":"25766","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25767","messages":"25768","suppressedMessages":"25769","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25770","messages":"25771","suppressedMessages":"25772","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25773","messages":"25774","suppressedMessages":"25775","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"25776","messages":"25777","suppressedMessages":"25778","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"25779","messages":"25780","suppressedMessages":"25781","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25782","messages":"25783","suppressedMessages":"25784","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25785","messages":"25786","suppressedMessages":"25787","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25788","messages":"25789","suppressedMessages":"25790","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25791","messages":"25792","suppressedMessages":"25793","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25794","messages":"25795","suppressedMessages":"25796","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25797","messages":"25798","suppressedMessages":"25799","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25800","messages":"25801","suppressedMessages":"25802","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25803","messages":"25804","suppressedMessages":"25805","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25806","messages":"25807","suppressedMessages":"25808","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25809","messages":"25810","suppressedMessages":"25811","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25812","messages":"25813","suppressedMessages":"25814","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25815","messages":"25816","suppressedMessages":"25817","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25818","messages":"25819","suppressedMessages":"25820","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25821","messages":"25822","suppressedMessages":"25823","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25824","messages":"25825","suppressedMessages":"25826","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25827","messages":"25828","suppressedMessages":"25829","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25830","messages":"25831","suppressedMessages":"25832","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25833","messages":"25834","suppressedMessages":"25835","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25836","messages":"25837","suppressedMessages":"25838","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25839","messages":"25840","suppressedMessages":"25841","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25842","messages":"25843","suppressedMessages":"25844","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25845","messages":"25846","suppressedMessages":"25847","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25848","messages":"25849","suppressedMessages":"25850","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25851","messages":"25852","suppressedMessages":"25853","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25854","messages":"25855","suppressedMessages":"25856","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25857","messages":"25858","suppressedMessages":"25859","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"25860","messages":"25861","suppressedMessages":"25862","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"25863","messages":"25864","suppressedMessages":"25865","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25866","messages":"25867","suppressedMessages":"25868","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25869","messages":"25870","suppressedMessages":"25871","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25872","messages":"25873","suppressedMessages":"25874","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25875","messages":"25876","suppressedMessages":"25877","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25878","messages":"25879","suppressedMessages":"25880","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25881","messages":"25882","suppressedMessages":"25883","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25884","messages":"25885","suppressedMessages":"25886","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25887","messages":"25888","suppressedMessages":"25889","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25890","messages":"25891","suppressedMessages":"25892","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25893","messages":"25894","suppressedMessages":"25895","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25896","messages":"25897","suppressedMessages":"25898","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25899","messages":"25900","suppressedMessages":"25901","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25902","messages":"25903","suppressedMessages":"25904","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25905","messages":"25906","suppressedMessages":"25907","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25908","messages":"25909","suppressedMessages":"25910","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25911","messages":"25912","suppressedMessages":"25913","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25914","messages":"25915","suppressedMessages":"25916","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25917","messages":"25918","suppressedMessages":"25919","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25920","messages":"25921","suppressedMessages":"25922","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25923","messages":"25924","suppressedMessages":"25925","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"25926","messages":"25927","suppressedMessages":"25928","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25929","messages":"25930","suppressedMessages":"25931","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25932","messages":"25933","suppressedMessages":"25934","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25935","messages":"25936","suppressedMessages":"25937","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25938","messages":"25939","suppressedMessages":"25940","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25941","messages":"25942","suppressedMessages":"25943","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25944","messages":"25945","suppressedMessages":"25946","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25947","messages":"25948","suppressedMessages":"25949","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25950","messages":"25951","suppressedMessages":"25952","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25953","messages":"25954","suppressedMessages":"25955","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25956","messages":"25957","suppressedMessages":"25958","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25959","messages":"25960","suppressedMessages":"25961","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25962","messages":"25963","suppressedMessages":"25964","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"25965","messages":"25966","suppressedMessages":"25967","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25968","messages":"25969","suppressedMessages":"25970","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25971","messages":"25972","suppressedMessages":"25973","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25974","messages":"25975","suppressedMessages":"25976","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25977","messages":"25978","suppressedMessages":"25979","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25980","messages":"25981","suppressedMessages":"25982","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25983","messages":"25984","suppressedMessages":"25985","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25986","messages":"25987","suppressedMessages":"25988","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25989","messages":"25990","suppressedMessages":"25991","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25992","messages":"25993","suppressedMessages":"25994","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25995","messages":"25996","suppressedMessages":"25997","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"25998","messages":"25999","suppressedMessages":"26000","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"26001","messages":"26002","suppressedMessages":"26003","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26004","messages":"26005","suppressedMessages":"26006","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26007","messages":"26008","suppressedMessages":"26009","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26010","messages":"26011","suppressedMessages":"26012","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26013","messages":"26014","suppressedMessages":"26015","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26016","messages":"26017","suppressedMessages":"26018","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"26019","messages":"26020","suppressedMessages":"26021","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26022","messages":"26023","suppressedMessages":"26024","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26025","messages":"26026","suppressedMessages":"26027","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26028","messages":"26029","suppressedMessages":"26030","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"26031","messages":"26032","suppressedMessages":"26033","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26034","messages":"26035","suppressedMessages":"26036","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26037","messages":"26038","suppressedMessages":"26039","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26040","messages":"26041","suppressedMessages":"26042","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26043","messages":"26044","suppressedMessages":"26045","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26046","messages":"26047","suppressedMessages":"26048","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26049","messages":"26050","suppressedMessages":"26051","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26052","messages":"26053","suppressedMessages":"26054","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26055","messages":"26056","suppressedMessages":"26057","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26058","messages":"26059","suppressedMessages":"26060","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26061","messages":"26062","suppressedMessages":"26063","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26064","messages":"26065","suppressedMessages":"26066","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26067","messages":"26068","suppressedMessages":"26069","errorCount":2,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"26070","messages":"26071","suppressedMessages":"26072","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"26073","messages":"26074","suppressedMessages":"26075","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26076","messages":"26077","suppressedMessages":"26078","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26079","messages":"26080","suppressedMessages":"26081","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26082","messages":"26083","suppressedMessages":"26084","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26085","messages":"26086","suppressedMessages":"26087","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26088","messages":"26089","suppressedMessages":"26090","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26091","messages":"26092","suppressedMessages":"26093","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26094","messages":"26095","suppressedMessages":"26096","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26097","messages":"26098","suppressedMessages":"26099","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26100","messages":"26101","suppressedMessages":"26102","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26103","messages":"26104","suppressedMessages":"26105","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26106","messages":"26107","suppressedMessages":"26108","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26109","messages":"26110","suppressedMessages":"26111","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26112","messages":"26113","suppressedMessages":"26114","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26115","messages":"26116","suppressedMessages":"26117","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26118","messages":"26119","suppressedMessages":"26120","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26121","messages":"26122","suppressedMessages":"26123","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26124","messages":"26125","suppressedMessages":"26126","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26127","messages":"26128","suppressedMessages":"26129","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26130","messages":"26131","suppressedMessages":"26132","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26133","messages":"26134","suppressedMessages":"26135","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26136","messages":"26137","suppressedMessages":"26138","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26139","messages":"26140","suppressedMessages":"26141","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26142","messages":"26143","suppressedMessages":"26144","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26145","messages":"26146","suppressedMessages":"26147","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26148","messages":"26149","suppressedMessages":"26150","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26151","messages":"26152","suppressedMessages":"26153","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26154","messages":"26155","suppressedMessages":"26156","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26157","messages":"26158","suppressedMessages":"26159","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26160","messages":"26161","suppressedMessages":"26162","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26163","messages":"26164","suppressedMessages":"26165","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26166","messages":"26167","suppressedMessages":"26168","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26169","messages":"26170","suppressedMessages":"26171","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26172","messages":"26173","suppressedMessages":"26174","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26175","messages":"26176","suppressedMessages":"26177","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26178","messages":"26179","suppressedMessages":"26180","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26181","messages":"26182","suppressedMessages":"26183","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26184","messages":"26185","suppressedMessages":"26186","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26187","messages":"26188","suppressedMessages":"26189","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26190","messages":"26191","suppressedMessages":"26192","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26193","messages":"26194","suppressedMessages":"26195","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26196","messages":"26197","suppressedMessages":"26198","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"26199","messages":"26200","suppressedMessages":"26201","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26202","messages":"26203","suppressedMessages":"26204","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"26205","messages":"26206","suppressedMessages":"26207","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"26208","messages":"26209","suppressedMessages":"26210","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26211","messages":"26212","suppressedMessages":"26213","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26214","messages":"26215","suppressedMessages":"26216","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"26217","messages":"26218","suppressedMessages":"26219","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"26220","messages":"26221","suppressedMessages":"26222","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26223","messages":"26224","suppressedMessages":"26225","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26226","messages":"26227","suppressedMessages":"26228","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26229","messages":"26230","suppressedMessages":"26231","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26232","messages":"26233","suppressedMessages":"26234","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26235","messages":"26236","suppressedMessages":"26237","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26238","messages":"26239","suppressedMessages":"26240","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26241","messages":"26242","suppressedMessages":"26243","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26244","messages":"26245","suppressedMessages":"26246","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26247","messages":"26248","suppressedMessages":"26249","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26250","messages":"26251","suppressedMessages":"26252","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26253","messages":"26254","suppressedMessages":"26255","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26256","messages":"26257","suppressedMessages":"26258","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26259","messages":"26260","suppressedMessages":"26261","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26262","messages":"26263","suppressedMessages":"26264","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26265","messages":"26266","suppressedMessages":"26267","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26268","messages":"26269","suppressedMessages":"26270","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26271","messages":"26272","suppressedMessages":"26273","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26274","messages":"26275","suppressedMessages":"26276","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26277","messages":"26278","suppressedMessages":"26279","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26280","messages":"26281","suppressedMessages":"26282","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26283","messages":"26284","suppressedMessages":"26285","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26286","messages":"26287","suppressedMessages":"26288","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26289","messages":"26290","suppressedMessages":"26291","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26292","messages":"26293","suppressedMessages":"26294","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26295","messages":"26296","suppressedMessages":"26297","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26298","messages":"26299","suppressedMessages":"26300","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26301","messages":"26302","suppressedMessages":"26303","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26304","messages":"26305","suppressedMessages":"26306","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26307","messages":"26308","suppressedMessages":"26309","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26310","messages":"26311","suppressedMessages":"26312","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26313","messages":"26314","suppressedMessages":"26315","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26316","messages":"26317","suppressedMessages":"26318","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26319","messages":"26320","suppressedMessages":"26321","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26322","messages":"26323","suppressedMessages":"26324","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26325","messages":"26326","suppressedMessages":"26327","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26328","messages":"26329","suppressedMessages":"26330","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26331","messages":"26332","suppressedMessages":"26333","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26334","messages":"26335","suppressedMessages":"26336","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26337","messages":"26338","suppressedMessages":"26339","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"26340","messages":"26341","suppressedMessages":"26342","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26343","messages":"26344","suppressedMessages":"26345","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26346","messages":"26347","suppressedMessages":"26348","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26349","messages":"26350","suppressedMessages":"26351","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26352","messages":"26353","suppressedMessages":"26354","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26355","messages":"26356","suppressedMessages":"26357","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26358","messages":"26359","suppressedMessages":"26360","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26361","messages":"26362","suppressedMessages":"26363","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26364","messages":"26365","suppressedMessages":"26366","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26367","messages":"26368","suppressedMessages":"26369","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26370","messages":"26371","suppressedMessages":"26372","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26373","messages":"26374","suppressedMessages":"26375","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26376","messages":"26377","suppressedMessages":"26378","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26379","messages":"26380","suppressedMessages":"26381","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26382","messages":"26383","suppressedMessages":"26384","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26385","messages":"26386","suppressedMessages":"26387","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26388","messages":"26389","suppressedMessages":"26390","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26391","messages":"26392","suppressedMessages":"26393","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26394","messages":"26395","suppressedMessages":"26396","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26397","messages":"26398","suppressedMessages":"26399","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26400","messages":"26401","suppressedMessages":"26402","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26403","messages":"26404","suppressedMessages":"26405","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26406","messages":"26407","suppressedMessages":"26408","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26409","messages":"26410","suppressedMessages":"26411","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26412","messages":"26413","suppressedMessages":"26414","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26415","messages":"26416","suppressedMessages":"26417","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26418","messages":"26419","suppressedMessages":"26420","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26421","messages":"26422","suppressedMessages":"26423","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26424","messages":"26425","suppressedMessages":"26426","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26427","messages":"26428","suppressedMessages":"26429","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26430","messages":"26431","suppressedMessages":"26432","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26433","messages":"26434","suppressedMessages":"26435","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26436","messages":"26437","suppressedMessages":"26438","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26439","messages":"26440","suppressedMessages":"26441","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26442","messages":"26443","suppressedMessages":"26444","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26445","messages":"26446","suppressedMessages":"26447","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26448","messages":"26449","suppressedMessages":"26450","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26451","messages":"26452","suppressedMessages":"26453","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26454","messages":"26455","suppressedMessages":"26456","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26457","messages":"26458","suppressedMessages":"26459","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26460","messages":"26461","suppressedMessages":"26462","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"26463","messages":"26464","suppressedMessages":"26465","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26466","messages":"26467","suppressedMessages":"26468","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26469","messages":"26470","suppressedMessages":"26471","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26472","messages":"26473","suppressedMessages":"26474","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26475","messages":"26476","suppressedMessages":"26477","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26478","messages":"26479","suppressedMessages":"26480","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26481","messages":"26482","suppressedMessages":"26483","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26484","messages":"26485","suppressedMessages":"26486","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26487","messages":"26488","suppressedMessages":"26489","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26490","messages":"26491","suppressedMessages":"26492","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26493","messages":"26494","suppressedMessages":"26495","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26496","messages":"26497","suppressedMessages":"26498","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26499","messages":"26500","suppressedMessages":"26501","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26502","messages":"26503","suppressedMessages":"26504","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26505","messages":"26506","suppressedMessages":"26507","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26508","messages":"26509","suppressedMessages":"26510","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26511","messages":"26512","suppressedMessages":"26513","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26514","messages":"26515","suppressedMessages":"26516","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26517","messages":"26518","suppressedMessages":"26519","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26520","messages":"26521","suppressedMessages":"26522","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26523","messages":"26524","suppressedMessages":"26525","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26526","messages":"26527","suppressedMessages":"26528","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26529","messages":"26530","suppressedMessages":"26531","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26532","messages":"26533","suppressedMessages":"26534","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26535","messages":"26536","suppressedMessages":"26537","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"26538","messages":"26539","suppressedMessages":"26540","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"26541","messages":"26542","suppressedMessages":"26543","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"26544","messages":"26545","suppressedMessages":"26546","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26547","messages":"26548","suppressedMessages":"26549","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"26550","messages":"26551","suppressedMessages":"26552","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26553","messages":"26554","suppressedMessages":"26555","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26556","messages":"26557","suppressedMessages":"26558","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"26559","messages":"26560","suppressedMessages":"26561","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26562","messages":"26563","suppressedMessages":"26564","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26565","messages":"26566","suppressedMessages":"26567","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26568","messages":"26569","suppressedMessages":"26570","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26571","messages":"26572","suppressedMessages":"26573","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26574","messages":"26575","suppressedMessages":"26576","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26577","messages":"26578","suppressedMessages":"26579","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26580","messages":"26581","suppressedMessages":"26582","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26583","messages":"26584","suppressedMessages":"26585","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26586","messages":"26587","suppressedMessages":"26588","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26589","messages":"26590","suppressedMessages":"26591","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26592","messages":"26593","suppressedMessages":"26594","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26595","messages":"26596","suppressedMessages":"26597","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26598","messages":"26599","suppressedMessages":"26600","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26601","messages":"26602","suppressedMessages":"26603","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26604","messages":"26605","suppressedMessages":"26606","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26607","messages":"26608","suppressedMessages":"26609","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26610","messages":"26611","suppressedMessages":"26612","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26613","messages":"26614","suppressedMessages":"26615","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"26616","messages":"26617","suppressedMessages":"26618","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26619","messages":"26620","suppressedMessages":"26621","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26622","messages":"26623","suppressedMessages":"26624","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26625","messages":"26626","suppressedMessages":"26627","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26628","messages":"26629","suppressedMessages":"26630","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26631","messages":"26632","suppressedMessages":"26633","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26634","messages":"26635","suppressedMessages":"26636","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26637","messages":"26638","suppressedMessages":"26639","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26640","messages":"26641","suppressedMessages":"26642","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26643","messages":"26644","suppressedMessages":"26645","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26646","messages":"26647","suppressedMessages":"26648","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26649","messages":"26650","suppressedMessages":"26651","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26652","messages":"26653","suppressedMessages":"26654","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26655","messages":"26656","suppressedMessages":"26657","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26658","messages":"26659","suppressedMessages":"26660","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26661","messages":"26662","suppressedMessages":"26663","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26664","messages":"26665","suppressedMessages":"26666","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26667","messages":"26668","suppressedMessages":"26669","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26670","messages":"26671","suppressedMessages":"26672","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26673","messages":"26674","suppressedMessages":"26675","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"26676","messages":"26677","suppressedMessages":"26678","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26679","messages":"26680","suppressedMessages":"26681","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26682","messages":"26683","suppressedMessages":"26684","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26685","messages":"26686","suppressedMessages":"26687","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26688","messages":"26689","suppressedMessages":"26690","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26691","messages":"26692","suppressedMessages":"26693","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26694","messages":"26695","suppressedMessages":"26696","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26697","messages":"26698","suppressedMessages":"26699","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26700","messages":"26701","suppressedMessages":"26702","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26703","messages":"26704","suppressedMessages":"26705","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26706","messages":"26707","suppressedMessages":"26708","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26709","messages":"26710","suppressedMessages":"26711","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26712","messages":"26713","suppressedMessages":"26714","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26715","messages":"26716","suppressedMessages":"26717","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26718","messages":"26719","suppressedMessages":"26720","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26721","messages":"26722","suppressedMessages":"26723","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26724","messages":"26725","suppressedMessages":"26726","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26727","messages":"26728","suppressedMessages":"26729","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26730","messages":"26731","suppressedMessages":"26732","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26733","messages":"26734","suppressedMessages":"26735","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26736","messages":"26737","suppressedMessages":"26738","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26739","messages":"26740","suppressedMessages":"26741","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26742","messages":"26743","suppressedMessages":"26744","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26745","messages":"26746","suppressedMessages":"26747","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26748","messages":"26749","suppressedMessages":"26750","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26751","messages":"26752","suppressedMessages":"26753","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26754","messages":"26755","suppressedMessages":"26756","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26757","messages":"26758","suppressedMessages":"26759","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"26760","messages":"26761","suppressedMessages":"26762","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26763","messages":"26764","suppressedMessages":"26765","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26766","messages":"26767","suppressedMessages":"26768","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26769","messages":"26770","suppressedMessages":"26771","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26772","messages":"26773","suppressedMessages":"26774","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26775","messages":"26776","suppressedMessages":"26777","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26778","messages":"26779","suppressedMessages":"26780","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"26781","messages":"26782","suppressedMessages":"26783","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"26784","messages":"26785","suppressedMessages":"26786","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26787","messages":"26788","suppressedMessages":"26789","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26790","messages":"26791","suppressedMessages":"26792","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26793","messages":"26794","suppressedMessages":"26795","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26796","messages":"26797","suppressedMessages":"26798","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26799","messages":"26800","suppressedMessages":"26801","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"26802","messages":"26803","suppressedMessages":"26804","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"26805","messages":"26806","suppressedMessages":"26807","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26808","messages":"26809","suppressedMessages":"26810","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26811","messages":"26812","suppressedMessages":"26813","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26814","messages":"26815","suppressedMessages":"26816","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26817","messages":"26818","suppressedMessages":"26819","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26820","messages":"26821","suppressedMessages":"26822","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26823","messages":"26824","suppressedMessages":"26825","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"26826","messages":"26827","suppressedMessages":"26828","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26829","messages":"26830","suppressedMessages":"26831","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26832","messages":"26833","suppressedMessages":"26834","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26835","messages":"26836","suppressedMessages":"26837","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26838","messages":"26839","suppressedMessages":"26840","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26841","messages":"26842","suppressedMessages":"26843","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"26844","messages":"26845","suppressedMessages":"26846","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26847","messages":"26848","suppressedMessages":"26849","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26850","messages":"26851","suppressedMessages":"26852","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"26853","messages":"26854","suppressedMessages":"26855","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26856","messages":"26857","suppressedMessages":"26858","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26859","messages":"26860","suppressedMessages":"26861","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26862","messages":"26863","suppressedMessages":"26864","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26865","messages":"26866","suppressedMessages":"26867","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26868","messages":"26869","suppressedMessages":"26870","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26871","messages":"26872","suppressedMessages":"26873","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26874","messages":"26875","suppressedMessages":"26876","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"26877","messages":"26878","suppressedMessages":"26879","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26880","messages":"26881","suppressedMessages":"26882","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"26883","messages":"26884","suppressedMessages":"26885","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26886","messages":"26887","suppressedMessages":"26888","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26889","messages":"26890","suppressedMessages":"26891","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26892","messages":"26893","suppressedMessages":"26894","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26895","messages":"26896","suppressedMessages":"26897","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26898","messages":"26899","suppressedMessages":"26900","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26901","messages":"26902","suppressedMessages":"26903","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26904","messages":"26905","suppressedMessages":"26906","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26907","messages":"26908","suppressedMessages":"26909","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26910","messages":"26911","suppressedMessages":"26912","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26913","messages":"26914","suppressedMessages":"26915","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26916","messages":"26917","suppressedMessages":"26918","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26919","messages":"26920","suppressedMessages":"26921","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26922","messages":"26923","suppressedMessages":"26924","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26925","messages":"26926","suppressedMessages":"26927","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26928","messages":"26929","suppressedMessages":"26930","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26931","messages":"26932","suppressedMessages":"26933","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26934","messages":"26935","suppressedMessages":"26936","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26937","messages":"26938","suppressedMessages":"26939","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26940","messages":"26941","suppressedMessages":"26942","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26943","messages":"26944","suppressedMessages":"26945","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26946","messages":"26947","suppressedMessages":"26948","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26949","messages":"26950","suppressedMessages":"26951","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26952","messages":"26953","suppressedMessages":"26954","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26955","messages":"26956","suppressedMessages":"26957","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26958","messages":"26959","suppressedMessages":"26960","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"26961","messages":"26962","suppressedMessages":"26963","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26964","messages":"26965","suppressedMessages":"26966","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26967","messages":"26968","suppressedMessages":"26969","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26970","messages":"26971","suppressedMessages":"26972","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26973","messages":"26974","suppressedMessages":"26975","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26976","messages":"26977","suppressedMessages":"26978","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26979","messages":"26980","suppressedMessages":"26981","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26982","messages":"26983","suppressedMessages":"26984","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26985","messages":"26986","suppressedMessages":"26987","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26988","messages":"26989","suppressedMessages":"26990","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26991","messages":"26992","suppressedMessages":"26993","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26994","messages":"26995","suppressedMessages":"26996","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"26997","messages":"26998","suppressedMessages":"26999","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27000","messages":"27001","suppressedMessages":"27002","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27003","messages":"27004","suppressedMessages":"27005","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27006","messages":"27007","suppressedMessages":"27008","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27009","messages":"27010","suppressedMessages":"27011","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27012","messages":"27013","suppressedMessages":"27014","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27015","messages":"27016","suppressedMessages":"27017","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27018","messages":"27019","suppressedMessages":"27020","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27021","messages":"27022","suppressedMessages":"27023","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27024","messages":"27025","suppressedMessages":"27026","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27027","messages":"27028","suppressedMessages":"27029","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27030","messages":"27031","suppressedMessages":"27032","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27033","messages":"27034","suppressedMessages":"27035","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27036","messages":"27037","suppressedMessages":"27038","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27039","messages":"27040","suppressedMessages":"27041","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27042","messages":"27043","suppressedMessages":"27044","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27045","messages":"27046","suppressedMessages":"27047","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27048","messages":"27049","suppressedMessages":"27050","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27051","messages":"27052","suppressedMessages":"27053","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27054","messages":"27055","suppressedMessages":"27056","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27057","messages":"27058","suppressedMessages":"27059","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27060","messages":"27061","suppressedMessages":"27062","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27063","messages":"27064","suppressedMessages":"27065","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27066","messages":"27067","suppressedMessages":"27068","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27069","messages":"27070","suppressedMessages":"27071","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27072","messages":"27073","suppressedMessages":"27074","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27075","messages":"27076","suppressedMessages":"27077","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27078","messages":"27079","suppressedMessages":"27080","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27081","messages":"27082","suppressedMessages":"27083","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27084","messages":"27085","suppressedMessages":"27086","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27087","messages":"27088","suppressedMessages":"27089","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27090","messages":"27091","suppressedMessages":"27092","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27093","messages":"27094","suppressedMessages":"27095","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27096","messages":"27097","suppressedMessages":"27098","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27099","messages":"27100","suppressedMessages":"27101","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27102","messages":"27103","suppressedMessages":"27104","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27105","messages":"27106","suppressedMessages":"27107","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27108","messages":"27109","suppressedMessages":"27110","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27111","messages":"27112","suppressedMessages":"27113","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27114","messages":"27115","suppressedMessages":"27116","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27117","messages":"27118","suppressedMessages":"27119","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27120","messages":"27121","suppressedMessages":"27122","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27123","messages":"27124","suppressedMessages":"27125","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27126","messages":"27127","suppressedMessages":"27128","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27129","messages":"27130","suppressedMessages":"27131","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27132","messages":"27133","suppressedMessages":"27134","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27135","messages":"27136","suppressedMessages":"27137","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27138","messages":"27139","suppressedMessages":"27140","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27141","messages":"27142","suppressedMessages":"27143","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27144","messages":"27145","suppressedMessages":"27146","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27147","messages":"27148","suppressedMessages":"27149","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27150","messages":"27151","suppressedMessages":"27152","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27153","messages":"27154","suppressedMessages":"27155","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27156","messages":"27157","suppressedMessages":"27158","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27159","messages":"27160","suppressedMessages":"27161","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27162","messages":"27163","suppressedMessages":"27164","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27165","messages":"27166","suppressedMessages":"27167","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27168","messages":"27169","suppressedMessages":"27170","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27171","messages":"27172","suppressedMessages":"27173","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27174","messages":"27175","suppressedMessages":"27176","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27177","messages":"27178","suppressedMessages":"27179","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27180","messages":"27181","suppressedMessages":"27182","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27183","messages":"27184","suppressedMessages":"27185","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27186","messages":"27187","suppressedMessages":"27188","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27189","messages":"27190","suppressedMessages":"27191","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27192","messages":"27193","suppressedMessages":"27194","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27195","messages":"27196","suppressedMessages":"27197","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27198","messages":"27199","suppressedMessages":"27200","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27201","messages":"27202","suppressedMessages":"27203","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27204","messages":"27205","suppressedMessages":"27206","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27207","messages":"27208","suppressedMessages":"27209","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27210","messages":"27211","suppressedMessages":"27212","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27213","messages":"27214","suppressedMessages":"27215","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27216","messages":"27217","suppressedMessages":"27218","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27219","messages":"27220","suppressedMessages":"27221","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27222","messages":"27223","suppressedMessages":"27224","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27225","messages":"27226","suppressedMessages":"27227","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"27228","messages":"27229","suppressedMessages":"27230","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27231","messages":"27232","suppressedMessages":"27233","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27234","messages":"27235","suppressedMessages":"27236","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27237","messages":"27238","suppressedMessages":"27239","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27240","messages":"27241","suppressedMessages":"27242","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27243","messages":"27244","suppressedMessages":"27245","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27246","messages":"27247","suppressedMessages":"27248","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27249","messages":"27250","suppressedMessages":"27251","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27252","messages":"27253","suppressedMessages":"27254","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27255","messages":"27256","suppressedMessages":"27257","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27258","messages":"27259","suppressedMessages":"27260","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27261","messages":"27262","suppressedMessages":"27263","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27264","messages":"27265","suppressedMessages":"27266","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27267","messages":"27268","suppressedMessages":"27269","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27270","messages":"27271","suppressedMessages":"27272","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27273","messages":"27274","suppressedMessages":"27275","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27276","messages":"27277","suppressedMessages":"27278","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27279","messages":"27280","suppressedMessages":"27281","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27282","messages":"27283","suppressedMessages":"27284","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27285","messages":"27286","suppressedMessages":"27287","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27288","messages":"27289","suppressedMessages":"27290","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27291","messages":"27292","suppressedMessages":"27293","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27294","messages":"27295","suppressedMessages":"27296","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27297","messages":"27298","suppressedMessages":"27299","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"4cfoa2",{"filePath":"27300","messages":"27301","suppressedMessages":"27302","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27303","messages":"27304","suppressedMessages":"27305","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27306","messages":"27307","suppressedMessages":"27308","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27309","messages":"27310","suppressedMessages":"27311","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27312","messages":"27313","suppressedMessages":"27314","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27315","messages":"27316","suppressedMessages":"27317","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27318","messages":"27319","suppressedMessages":"27320","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27321","messages":"27322","suppressedMessages":"27323","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27324","messages":"27325","suppressedMessages":"27326","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27327","messages":"27328","suppressedMessages":"27329","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27330","messages":"27331","suppressedMessages":"27332","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27333","messages":"27334","suppressedMessages":"27335","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27336","messages":"27337","suppressedMessages":"27338","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"27339","messages":"27340","suppressedMessages":"27341","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27342","messages":"27343","suppressedMessages":"27344","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27345","messages":"27346","suppressedMessages":"27347","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27348","messages":"27349","suppressedMessages":"27350","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27351","messages":"27352","suppressedMessages":"27353","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27354","messages":"27355","suppressedMessages":"27356","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27357","messages":"27358","suppressedMessages":"27359","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27360","messages":"27361","suppressedMessages":"27362","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27363","messages":"27364","suppressedMessages":"27365","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27366","messages":"27367","suppressedMessages":"27368","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27369","messages":"27370","suppressedMessages":"27371","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27372","messages":"27373","suppressedMessages":"27374","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27375","messages":"27376","suppressedMessages":"27377","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27378","messages":"27379","suppressedMessages":"27380","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27381","messages":"27382","suppressedMessages":"27383","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"27384","messages":"27385","suppressedMessages":"27386","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27387","messages":"27388","suppressedMessages":"27389","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27390","messages":"27391","suppressedMessages":"27392","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27393","messages":"27394","suppressedMessages":"27395","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27396","messages":"27397","suppressedMessages":"27398","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27399","messages":"27400","suppressedMessages":"27401","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27402","messages":"27403","suppressedMessages":"27404","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27405","messages":"27406","suppressedMessages":"27407","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27408","messages":"27409","suppressedMessages":"27410","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27411","messages":"27412","suppressedMessages":"27413","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27414","messages":"27415","suppressedMessages":"27416","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27417","messages":"27418","suppressedMessages":"27419","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27420","messages":"27421","suppressedMessages":"27422","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27423","messages":"27424","suppressedMessages":"27425","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27426","messages":"27427","suppressedMessages":"27428","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27429","messages":"27430","suppressedMessages":"27431","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27432","messages":"27433","suppressedMessages":"27434","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27435","messages":"27436","suppressedMessages":"27437","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27438","messages":"27439","suppressedMessages":"27440","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27441","messages":"27442","suppressedMessages":"27443","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27444","messages":"27445","suppressedMessages":"27446","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27447","messages":"27448","suppressedMessages":"27449","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27450","messages":"27451","suppressedMessages":"27452","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27453","messages":"27454","suppressedMessages":"27455","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"27456","messages":"27457","suppressedMessages":"27458","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27459","messages":"27460","suppressedMessages":"27461","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27462","messages":"27463","suppressedMessages":"27464","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27465","messages":"27466","suppressedMessages":"27467","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27468","messages":"27469","suppressedMessages":"27470","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27471","messages":"27472","suppressedMessages":"27473","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27474","messages":"27475","suppressedMessages":"27476","errorCount":6,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"27477","messages":"27478","suppressedMessages":"27479","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27480","messages":"27481","suppressedMessages":"27482","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27483","messages":"27484","suppressedMessages":"27485","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27486","messages":"27487","suppressedMessages":"27488","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27489","messages":"27490","suppressedMessages":"27491","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27492","messages":"27493","suppressedMessages":"27494","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"27495","messages":"27496","suppressedMessages":"27497","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27498","messages":"27499","suppressedMessages":"27500","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27501","messages":"27502","suppressedMessages":"27503","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27504","messages":"27505","suppressedMessages":"27506","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27507","messages":"27508","suppressedMessages":"27509","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27510","messages":"27511","suppressedMessages":"27512","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27513","messages":"27514","suppressedMessages":"27515","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27516","messages":"27517","suppressedMessages":"27518","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27519","messages":"27520","suppressedMessages":"27521","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27522","messages":"27523","suppressedMessages":"27524","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27525","messages":"27526","suppressedMessages":"27527","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27528","messages":"27529","suppressedMessages":"27530","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27531","messages":"27532","suppressedMessages":"27533","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27534","messages":"27535","suppressedMessages":"27536","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27537","messages":"27538","suppressedMessages":"27539","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27540","messages":"27541","suppressedMessages":"27542","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27543","messages":"27544","suppressedMessages":"27545","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27546","messages":"27547","suppressedMessages":"27548","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27549","messages":"27550","suppressedMessages":"27551","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27552","messages":"27553","suppressedMessages":"27554","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27555","messages":"27556","suppressedMessages":"27557","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27558","messages":"27559","suppressedMessages":"27560","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27561","messages":"27562","suppressedMessages":"27563","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27564","messages":"27565","suppressedMessages":"27566","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27567","messages":"27568","suppressedMessages":"27569","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27570","messages":"27571","suppressedMessages":"27572","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27573","messages":"27574","suppressedMessages":"27575","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27576","messages":"27577","suppressedMessages":"27578","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27579","messages":"27580","suppressedMessages":"27581","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27582","messages":"27583","suppressedMessages":"27584","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27585","messages":"27586","suppressedMessages":"27587","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27588","messages":"27589","suppressedMessages":"27590","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27591","messages":"27592","suppressedMessages":"27593","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27594","messages":"27595","suppressedMessages":"27596","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27597","messages":"27598","suppressedMessages":"27599","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27600","messages":"27601","suppressedMessages":"27602","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27603","messages":"27604","suppressedMessages":"27605","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27606","messages":"27607","suppressedMessages":"27608","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27609","messages":"27610","suppressedMessages":"27611","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27612","messages":"27613","suppressedMessages":"27614","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27615","messages":"27616","suppressedMessages":"27617","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27618","messages":"27619","suppressedMessages":"27620","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27621","messages":"27622","suppressedMessages":"27623","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27624","messages":"27625","suppressedMessages":"27626","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27627","messages":"27628","suppressedMessages":"27629","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27630","messages":"27631","suppressedMessages":"27632","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27633","messages":"27634","suppressedMessages":"27635","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27636","messages":"27637","suppressedMessages":"27638","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27639","messages":"27640","suppressedMessages":"27641","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27642","messages":"27643","suppressedMessages":"27644","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27645","messages":"27646","suppressedMessages":"27647","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27648","messages":"27649","suppressedMessages":"27650","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27651","messages":"27652","suppressedMessages":"27653","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27654","messages":"27655","suppressedMessages":"27656","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27657","messages":"27658","suppressedMessages":"27659","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27660","messages":"27661","suppressedMessages":"27662","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27663","messages":"27664","suppressedMessages":"27665","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27666","messages":"27667","suppressedMessages":"27668","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27669","messages":"27670","suppressedMessages":"27671","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27672","messages":"27673","suppressedMessages":"27674","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27675","messages":"27676","suppressedMessages":"27677","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27678","messages":"27679","suppressedMessages":"27680","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27681","messages":"27682","suppressedMessages":"27683","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27684","messages":"27685","suppressedMessages":"27686","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27687","messages":"27688","suppressedMessages":"27689","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27690","messages":"27691","suppressedMessages":"27692","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27693","messages":"27694","suppressedMessages":"27695","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27696","messages":"27697","suppressedMessages":"27698","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27699","messages":"27700","suppressedMessages":"27701","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27702","messages":"27703","suppressedMessages":"27704","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27705","messages":"27706","suppressedMessages":"27707","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27708","messages":"27709","suppressedMessages":"27710","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27711","messages":"27712","suppressedMessages":"27713","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27714","messages":"27715","suppressedMessages":"27716","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27717","messages":"27718","suppressedMessages":"27719","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27720","messages":"27721","suppressedMessages":"27722","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27723","messages":"27724","suppressedMessages":"27725","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27726","messages":"27727","suppressedMessages":"27728","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27729","messages":"27730","suppressedMessages":"27731","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27732","messages":"27733","suppressedMessages":"27734","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27735","messages":"27736","suppressedMessages":"27737","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27738","messages":"27739","suppressedMessages":"27740","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27741","messages":"27742","suppressedMessages":"27743","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27744","messages":"27745","suppressedMessages":"27746","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27747","messages":"27748","suppressedMessages":"27749","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27750","messages":"27751","suppressedMessages":"27752","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27753","messages":"27754","suppressedMessages":"27755","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27756","messages":"27757","suppressedMessages":"27758","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27759","messages":"27760","suppressedMessages":"27761","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27762","messages":"27763","suppressedMessages":"27764","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27765","messages":"27766","suppressedMessages":"27767","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27768","messages":"27769","suppressedMessages":"27770","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27771","messages":"27772","suppressedMessages":"27773","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27774","messages":"27775","suppressedMessages":"27776","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27777","messages":"27778","suppressedMessages":"27779","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27780","messages":"27781","suppressedMessages":"27782","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27783","messages":"27784","suppressedMessages":"27785","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27786","messages":"27787","suppressedMessages":"27788","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27789","messages":"27790","suppressedMessages":"27791","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27792","messages":"27793","suppressedMessages":"27794","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27795","messages":"27796","suppressedMessages":"27797","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27798","messages":"27799","suppressedMessages":"27800","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27801","messages":"27802","suppressedMessages":"27803","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27804","messages":"27805","suppressedMessages":"27806","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27807","messages":"27808","suppressedMessages":"27809","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27810","messages":"27811","suppressedMessages":"27812","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27813","messages":"27814","suppressedMessages":"27815","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27816","messages":"27817","suppressedMessages":"27818","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27819","messages":"27820","suppressedMessages":"27821","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27822","messages":"27823","suppressedMessages":"27824","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27825","messages":"27826","suppressedMessages":"27827","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27828","messages":"27829","suppressedMessages":"27830","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27831","messages":"27832","suppressedMessages":"27833","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27834","messages":"27835","suppressedMessages":"27836","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27837","messages":"27838","suppressedMessages":"27839","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27840","messages":"27841","suppressedMessages":"27842","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27843","messages":"27844","suppressedMessages":"27845","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27846","messages":"27847","suppressedMessages":"27848","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27849","messages":"27850","suppressedMessages":"27851","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27852","messages":"27853","suppressedMessages":"27854","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27855","messages":"27856","suppressedMessages":"27857","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27858","messages":"27859","suppressedMessages":"27860","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27861","messages":"27862","suppressedMessages":"27863","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27864","messages":"27865","suppressedMessages":"27866","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27867","messages":"27868","suppressedMessages":"27869","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27870","messages":"27871","suppressedMessages":"27872","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27873","messages":"27874","suppressedMessages":"27875","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27876","messages":"27877","suppressedMessages":"27878","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27879","messages":"27880","suppressedMessages":"27881","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27882","messages":"27883","suppressedMessages":"27884","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27885","messages":"27886","suppressedMessages":"27887","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27888","messages":"27889","suppressedMessages":"27890","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27891","messages":"27892","suppressedMessages":"27893","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27894","messages":"27895","suppressedMessages":"27896","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27897","messages":"27898","suppressedMessages":"27899","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27900","messages":"27901","suppressedMessages":"27902","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27903","messages":"27904","suppressedMessages":"27905","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27906","messages":"27907","suppressedMessages":"27908","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27909","messages":"27910","suppressedMessages":"27911","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27912","messages":"27913","suppressedMessages":"27914","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27915","messages":"27916","suppressedMessages":"27917","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27918","messages":"27919","suppressedMessages":"27920","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"27921","messages":"27922","suppressedMessages":"27923","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27924","messages":"27925","suppressedMessages":"27926","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27927","messages":"27928","suppressedMessages":"27929","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27930","messages":"27931","suppressedMessages":"27932","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27933","messages":"27934","suppressedMessages":"27935","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27936","messages":"27937","suppressedMessages":"27938","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27939","messages":"27940","suppressedMessages":"27941","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27942","messages":"27943","suppressedMessages":"27944","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27945","messages":"27946","suppressedMessages":"27947","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27948","messages":"27949","suppressedMessages":"27950","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27951","messages":"27952","suppressedMessages":"27953","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27954","messages":"27955","suppressedMessages":"27956","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27957","messages":"27958","suppressedMessages":"27959","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27960","messages":"27961","suppressedMessages":"27962","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27963","messages":"27964","suppressedMessages":"27965","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27966","messages":"27967","suppressedMessages":"27968","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27969","messages":"27970","suppressedMessages":"27971","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27972","messages":"27973","suppressedMessages":"27974","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27975","messages":"27976","suppressedMessages":"27977","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27978","messages":"27979","suppressedMessages":"27980","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27981","messages":"27982","suppressedMessages":"27983","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27984","messages":"27985","suppressedMessages":"27986","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27987","messages":"27988","suppressedMessages":"27989","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27990","messages":"27991","suppressedMessages":"27992","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27993","messages":"27994","suppressedMessages":"27995","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27996","messages":"27997","suppressedMessages":"27998","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"27999","messages":"28000","suppressedMessages":"28001","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28002","messages":"28003","suppressedMessages":"28004","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28005","messages":"28006","suppressedMessages":"28007","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28008","messages":"28009","suppressedMessages":"28010","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28011","messages":"28012","suppressedMessages":"28013","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"28014","messages":"28015","suppressedMessages":"28016","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28017","messages":"28018","suppressedMessages":"28019","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28020","messages":"28021","suppressedMessages":"28022","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28023","messages":"28024","suppressedMessages":"28025","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28026","messages":"28027","suppressedMessages":"28028","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28029","messages":"28030","suppressedMessages":"28031","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28032","messages":"28033","suppressedMessages":"28034","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28035","messages":"28036","suppressedMessages":"28037","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"28038","messages":"28039","suppressedMessages":"28040","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28041","messages":"28042","suppressedMessages":"28043","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28044","messages":"28045","suppressedMessages":"28046","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28047","messages":"28048","suppressedMessages":"28049","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"28050","messages":"28051","suppressedMessages":"28052","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28053","messages":"28054","suppressedMessages":"28055","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"28056","messages":"28057","suppressedMessages":"28058","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28059","messages":"28060","suppressedMessages":"28061","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28062","messages":"28063","suppressedMessages":"28064","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28065","messages":"28066","suppressedMessages":"28067","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28068","messages":"28069","suppressedMessages":"28070","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28071","messages":"28072","suppressedMessages":"28073","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28074","messages":"28075","suppressedMessages":"28076","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28077","messages":"28078","suppressedMessages":"28079","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28080","messages":"28081","suppressedMessages":"28082","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28083","messages":"28084","suppressedMessages":"28085","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"28086","messages":"28087","suppressedMessages":"28088","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28089","messages":"28090","suppressedMessages":"28091","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"28092","messages":"28093","suppressedMessages":"28094","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28095","messages":"28096","suppressedMessages":"28097","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28098","messages":"28099","suppressedMessages":"28100","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28101","messages":"28102","suppressedMessages":"28103","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28104","messages":"28105","suppressedMessages":"28106","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28107","messages":"28108","suppressedMessages":"28109","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28110","messages":"28111","suppressedMessages":"28112","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28113","messages":"28114","suppressedMessages":"28115","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28116","messages":"28117","suppressedMessages":"28118","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28119","messages":"28120","suppressedMessages":"28121","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28122","messages":"28123","suppressedMessages":"28124","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28125","messages":"28126","suppressedMessages":"28127","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28128","messages":"28129","suppressedMessages":"28130","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28131","messages":"28132","suppressedMessages":"28133","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28134","messages":"28135","suppressedMessages":"28136","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28137","messages":"28138","suppressedMessages":"28139","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28140","messages":"28141","suppressedMessages":"28142","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28143","messages":"28144","suppressedMessages":"28145","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28146","messages":"28147","suppressedMessages":"28148","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28149","messages":"28150","suppressedMessages":"28151","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28152","messages":"28153","suppressedMessages":"28154","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28155","messages":"28156","suppressedMessages":"28157","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28158","messages":"28159","suppressedMessages":"28160","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28161","messages":"28162","suppressedMessages":"28163","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28164","messages":"28165","suppressedMessages":"28166","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28167","messages":"28168","suppressedMessages":"28169","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28170","messages":"28171","suppressedMessages":"28172","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28173","messages":"28174","suppressedMessages":"28175","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28176","messages":"28177","suppressedMessages":"28178","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28179","messages":"28180","suppressedMessages":"28181","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28182","messages":"28183","suppressedMessages":"28184","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28185","messages":"28186","suppressedMessages":"28187","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28188","messages":"28189","suppressedMessages":"28190","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28191","messages":"28192","suppressedMessages":"28193","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28194","messages":"28195","suppressedMessages":"28196","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28197","messages":"28198","suppressedMessages":"28199","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28200","messages":"28201","suppressedMessages":"28202","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28203","messages":"28204","suppressedMessages":"28205","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28206","messages":"28207","suppressedMessages":"28208","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28209","messages":"28210","suppressedMessages":"28211","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28212","messages":"28213","suppressedMessages":"28214","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"13oux51",{"filePath":"28215","messages":"28216","suppressedMessages":"28217","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28218","messages":"28219","suppressedMessages":"28220","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28221","messages":"28222","suppressedMessages":"28223","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28224","messages":"28225","suppressedMessages":"28226","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28227","messages":"28228","suppressedMessages":"28229","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28230","messages":"28231","suppressedMessages":"28232","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28233","messages":"28234","suppressedMessages":"28235","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28236","messages":"28237","suppressedMessages":"28238","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28239","messages":"28240","suppressedMessages":"28241","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28242","messages":"28243","suppressedMessages":"28244","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28245","messages":"28246","suppressedMessages":"28247","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28248","messages":"28249","suppressedMessages":"28250","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28251","messages":"28252","suppressedMessages":"28253","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28254","messages":"28255","suppressedMessages":"28256","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28257","messages":"28258","suppressedMessages":"28259","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28260","messages":"28261","suppressedMessages":"28262","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28263","messages":"28264","suppressedMessages":"28265","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28266","messages":"28267","suppressedMessages":"28268","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28269","messages":"28270","suppressedMessages":"28271","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28272","messages":"28273","suppressedMessages":"28274","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28275","messages":"28276","suppressedMessages":"28277","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28278","messages":"28279","suppressedMessages":"28280","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28281","messages":"28282","suppressedMessages":"28283","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28284","messages":"28285","suppressedMessages":"28286","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28287","messages":"28288","suppressedMessages":"28289","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28290","messages":"28291","suppressedMessages":"28292","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28293","messages":"28294","suppressedMessages":"28295","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28296","messages":"28297","suppressedMessages":"28298","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28299","messages":"28300","suppressedMessages":"28301","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28302","messages":"28303","suppressedMessages":"28304","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28305","messages":"28306","suppressedMessages":"28307","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28308","messages":"28309","suppressedMessages":"28310","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28311","messages":"28312","suppressedMessages":"28313","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28314","messages":"28315","suppressedMessages":"28316","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28317","messages":"28318","suppressedMessages":"28319","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28320","messages":"28321","suppressedMessages":"28322","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28323","messages":"28324","suppressedMessages":"28325","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28326","messages":"28327","suppressedMessages":"28328","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28329","messages":"28330","suppressedMessages":"28331","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28332","messages":"28333","suppressedMessages":"28334","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28335","messages":"28336","suppressedMessages":"28337","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28338","messages":"28339","suppressedMessages":"28340","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28341","messages":"28342","suppressedMessages":"28343","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28344","messages":"28345","suppressedMessages":"28346","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28347","messages":"28348","suppressedMessages":"28349","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28350","messages":"28351","suppressedMessages":"28352","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28353","messages":"28354","suppressedMessages":"28355","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28356","messages":"28357","suppressedMessages":"28358","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28359","messages":"28360","suppressedMessages":"28361","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28362","messages":"28363","suppressedMessages":"28364","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28365","messages":"28366","suppressedMessages":"28367","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28368","messages":"28369","suppressedMessages":"28370","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28371","messages":"28372","suppressedMessages":"28373","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28374","messages":"28375","suppressedMessages":"28376","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28377","messages":"28378","suppressedMessages":"28379","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"28380","messages":"28381","suppressedMessages":"28382","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28383","messages":"28384","suppressedMessages":"28385","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"28386","messages":"28387","suppressedMessages":"28388","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28389","messages":"28390","suppressedMessages":"28391","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"28392","messages":"28393","suppressedMessages":"28394","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28395","messages":"28396","suppressedMessages":"28397","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28398","messages":"28399","suppressedMessages":"28400","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28401","messages":"28402","suppressedMessages":"28403","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28404","messages":"28405","suppressedMessages":"28406","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28407","messages":"28408","suppressedMessages":"28409","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28410","messages":"28411","suppressedMessages":"28412","errorCount":2,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"28413","messages":"28414","suppressedMessages":"28415","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28416","messages":"28417","suppressedMessages":"28418","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28419","messages":"28420","suppressedMessages":"28421","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28422","messages":"28423","suppressedMessages":"28424","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28425","messages":"28426","suppressedMessages":"28427","errorCount":2,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"28428","messages":"28429","suppressedMessages":"28430","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"28431","messages":"28432","suppressedMessages":"28433","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28434","messages":"28435","suppressedMessages":"28436","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28437","messages":"28438","suppressedMessages":"28439","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28440","messages":"28441","suppressedMessages":"28442","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28443","messages":"28444","suppressedMessages":"28445","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28446","messages":"28447","suppressedMessages":"28448","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"28449","messages":"28450","suppressedMessages":"28451","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28452","messages":"28453","suppressedMessages":"28454","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28455","messages":"28456","suppressedMessages":"28457","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28458","messages":"28459","suppressedMessages":"28460","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28461","messages":"28462","suppressedMessages":"28463","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28464","messages":"28465","suppressedMessages":"28466","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28467","messages":"28468","suppressedMessages":"28469","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28470","messages":"28471","suppressedMessages":"28472","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28473","messages":"28474","suppressedMessages":"28475","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28476","messages":"28477","suppressedMessages":"28478","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28479","messages":"28480","suppressedMessages":"28481","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28482","messages":"28483","suppressedMessages":"28484","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28485","messages":"28486","suppressedMessages":"28487","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28488","messages":"28489","suppressedMessages":"28490","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"cz7bqe",{"filePath":"28491","messages":"28492","suppressedMessages":"28493","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28494","messages":"28495","suppressedMessages":"28496","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28497","messages":"28498","suppressedMessages":"28499","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28500","messages":"28501","suppressedMessages":"28502","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28503","messages":"28504","suppressedMessages":"28505","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28506","messages":"28507","suppressedMessages":"28508","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28509","messages":"28510","suppressedMessages":"28511","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28512","messages":"28513","suppressedMessages":"28514","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28515","messages":"28516","suppressedMessages":"28517","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28518","messages":"28519","suppressedMessages":"28520","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28521","messages":"28522","suppressedMessages":"28523","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28524","messages":"28525","suppressedMessages":"28526","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28527","messages":"28528","suppressedMessages":"28529","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28530","messages":"28531","suppressedMessages":"28532","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28533","messages":"28534","suppressedMessages":"28535","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28536","messages":"28537","suppressedMessages":"28538","errorCount":3,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"28539","messages":"28540","suppressedMessages":"28541","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28542","messages":"28543","suppressedMessages":"28544","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28545","messages":"28546","suppressedMessages":"28547","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28548","messages":"28549","suppressedMessages":"28550","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28551","messages":"28552","suppressedMessages":"28553","errorCount":17,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"28554","messages":"28555","suppressedMessages":"28556","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28557","messages":"28558","suppressedMessages":"28559","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28560","messages":"28561","suppressedMessages":"28562","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28563","messages":"28564","suppressedMessages":"28565","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28566","messages":"28567","suppressedMessages":"28568","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28569","messages":"28570","suppressedMessages":"28571","errorCount":2,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"28572","messages":"28573","suppressedMessages":"28574","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28575","messages":"28576","suppressedMessages":"28577","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28578","messages":"28579","suppressedMessages":"28580","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28581","messages":"28582","suppressedMessages":"28583","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28584","messages":"28585","suppressedMessages":"28586","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28587","messages":"28588","suppressedMessages":"28589","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28590","messages":"28591","suppressedMessages":"28592","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28593","messages":"28594","suppressedMessages":"28595","errorCount":6,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"28596","messages":"28597","suppressedMessages":"28598","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28599","messages":"28600","suppressedMessages":"28601","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28602","messages":"28603","suppressedMessages":"28604","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28605","messages":"28606","suppressedMessages":"28607","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28608","messages":"28609","suppressedMessages":"28610","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28611","messages":"28612","suppressedMessages":"28613","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28614","messages":"28615","suppressedMessages":"28616","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28617","messages":"28618","suppressedMessages":"28619","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28620","messages":"28621","suppressedMessages":"28622","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28623","messages":"28624","suppressedMessages":"28625","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28626","messages":"28627","suppressedMessages":"28628","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28629","messages":"28630","suppressedMessages":"28631","errorCount":2,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"28632","messages":"28633","suppressedMessages":"28634","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28635","messages":"28636","suppressedMessages":"28637","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28638","messages":"28639","suppressedMessages":"28640","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28641","messages":"28642","suppressedMessages":"28643","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28644","messages":"28645","suppressedMessages":"28646","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"1q4d2bs",{"filePath":"28647","messages":"28648","suppressedMessages":"28649","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28650","messages":"28651","suppressedMessages":"28652","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28653","messages":"28654","suppressedMessages":"28655","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28656","messages":"28657","suppressedMessages":"28658","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28659","messages":"28660","suppressedMessages":"28661","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28662","messages":"28663","suppressedMessages":"28664","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28665","messages":"28666","suppressedMessages":"28667","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28668","messages":"28669","suppressedMessages":"28670","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28671","messages":"28672","suppressedMessages":"28673","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28674","messages":"28675","suppressedMessages":"28676","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28677","messages":"28678","suppressedMessages":"28679","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28680","messages":"28681","suppressedMessages":"28682","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28683","messages":"28684","suppressedMessages":"28685","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28686","messages":"28687","suppressedMessages":"28688","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28689","messages":"28690","suppressedMessages":"28691","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28692","messages":"28693","suppressedMessages":"28694","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28695","messages":"28696","suppressedMessages":"28697","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28698","messages":"28699","suppressedMessages":"28700","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28701","messages":"28702","suppressedMessages":"28703","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28704","messages":"28705","suppressedMessages":"28706","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28707","messages":"28708","suppressedMessages":"28709","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28710","messages":"28711","suppressedMessages":"28712","errorCount":3,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"28713","messages":"28714","suppressedMessages":"28715","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28716","messages":"28717","suppressedMessages":"28718","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28719","messages":"28720","suppressedMessages":"28721","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28722","messages":"28723","suppressedMessages":"28724","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28725","messages":"28726","suppressedMessages":"28727","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28728","messages":"28729","suppressedMessages":"28730","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28731","messages":"28732","suppressedMessages":"28733","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28734","messages":"28735","suppressedMessages":"28736","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28737","messages":"28738","suppressedMessages":"28739","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28740","messages":"28741","suppressedMessages":"28742","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28743","messages":"28744","suppressedMessages":"28745","errorCount":23,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"28746","messages":"28747","suppressedMessages":"28748","errorCount":39,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"28749","messages":"28750","suppressedMessages":"28751","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28752","messages":"28753","suppressedMessages":"28754","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28755","messages":"28756","suppressedMessages":"28757","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28758","messages":"28759","suppressedMessages":"28760","errorCount":20,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"28761","messages":"28762","suppressedMessages":"28763","errorCount":9,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"28764","messages":"28765","suppressedMessages":"28766","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28767","messages":"28768","suppressedMessages":"28769","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28770","messages":"28771","suppressedMessages":"28772","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28773","messages":"28774","suppressedMessages":"28775","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28776","messages":"28777","suppressedMessages":"28778","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28779","messages":"28780","suppressedMessages":"28781","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28782","messages":"28783","suppressedMessages":"28784","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28785","messages":"28786","suppressedMessages":"28787","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28788","messages":"28789","suppressedMessages":"28790","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28791","messages":"28792","suppressedMessages":"28793","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28794","messages":"28795","suppressedMessages":"28796","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28797","messages":"28798","suppressedMessages":"28799","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28800","messages":"28801","suppressedMessages":"28802","errorCount":10,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"28803","messages":"28804","suppressedMessages":"28805","errorCount":22,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"28806","messages":"28807","suppressedMessages":"28808","errorCount":29,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"28809","messages":"28810","suppressedMessages":"28811","errorCount":4,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"28812","messages":"28813","suppressedMessages":"28814","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28815","messages":"28816","suppressedMessages":"28817","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28818","messages":"28819","suppressedMessages":"28820","errorCount":2,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"28821","messages":"28822","suppressedMessages":"28823","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28824","messages":"28825","suppressedMessages":"28826","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28827","messages":"28828","suppressedMessages":"28829","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28830","messages":"28831","suppressedMessages":"28832","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28833","messages":"28834","suppressedMessages":"28835","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28836","messages":"28837","suppressedMessages":"28838","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28839","messages":"28840","suppressedMessages":"28841","errorCount":19,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"28842","messages":"28843","suppressedMessages":"28844","errorCount":7,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"28845","messages":"28846","suppressedMessages":"28847","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28848","messages":"28849","suppressedMessages":"28850","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28851","messages":"28852","suppressedMessages":"28853","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"28854","messages":"28855","suppressedMessages":"28856","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28857","messages":"28858","suppressedMessages":"28859","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28860","messages":"28861","suppressedMessages":"28862","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28863","messages":"28864","suppressedMessages":"28865","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28866","messages":"28867","suppressedMessages":"28868","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28869","messages":"28870","suppressedMessages":"28871","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28872","messages":"28873","suppressedMessages":"28874","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28875","messages":"28876","suppressedMessages":"28877","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28878","messages":"28879","suppressedMessages":"28880","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28881","messages":"28882","suppressedMessages":"28883","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28884","messages":"28885","suppressedMessages":"28886","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28887","messages":"28888","suppressedMessages":"28889","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28890","messages":"28891","suppressedMessages":"28892","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28893","messages":"28894","suppressedMessages":"28895","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28896","messages":"28897","suppressedMessages":"28898","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"28899","messages":"28900","suppressedMessages":"28901","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"28902","messages":"28903","suppressedMessages":"28904","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28905","messages":"28906","suppressedMessages":"28907","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28908","messages":"28909","suppressedMessages":"28910","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28911","messages":"28912","suppressedMessages":"28913","errorCount":4,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"28914","messages":"28915","suppressedMessages":"28916","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28917","messages":"28918","suppressedMessages":"28919","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28920","messages":"28921","suppressedMessages":"28922","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28923","messages":"28924","suppressedMessages":"28925","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"28926","messages":"28927","suppressedMessages":"28928","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"28929","messages":"28930","suppressedMessages":"28931","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28932","messages":"28933","suppressedMessages":"28934","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"28935","messages":"28936","suppressedMessages":"28937","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"28938","messages":"28939","suppressedMessages":"28940","errorCount":13,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"28941","messages":"28942","suppressedMessages":"28943","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28944","messages":"28945","suppressedMessages":"28946","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28947","messages":"28948","suppressedMessages":"28949","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28950","messages":"28951","suppressedMessages":"28952","errorCount":12,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"28953","messages":"28954","suppressedMessages":"28955","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"28956","messages":"28957","suppressedMessages":"28958","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28959","messages":"28960","suppressedMessages":"28961","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28962","messages":"28963","suppressedMessages":"28964","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28965","messages":"28966","suppressedMessages":"28967","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28968","messages":"28969","suppressedMessages":"28970","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28971","messages":"28972","suppressedMessages":"28973","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28974","messages":"28975","suppressedMessages":"28976","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28977","messages":"28978","suppressedMessages":"28979","errorCount":9,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"28980","messages":"28981","suppressedMessages":"28982","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28983","messages":"28984","suppressedMessages":"28985","errorCount":9,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"28986","messages":"28987","suppressedMessages":"28988","errorCount":19,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"28989","messages":"28990","suppressedMessages":"28991","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28992","messages":"28993","suppressedMessages":"28994","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28995","messages":"28996","suppressedMessages":"28997","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"28998","messages":"28999","suppressedMessages":"29000","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29001","messages":"29002","suppressedMessages":"29003","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29004","messages":"29005","suppressedMessages":"29006","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29007","messages":"29008","suppressedMessages":"29009","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29010","messages":"29011","suppressedMessages":"29012","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29013","messages":"29014","suppressedMessages":"29015","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29016","messages":"29017","suppressedMessages":"29018","errorCount":3,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"29019","messages":"29020","suppressedMessages":"29021","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29022","messages":"29023","suppressedMessages":"29024","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29025","messages":"29026","suppressedMessages":"29027","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29028","messages":"29029","suppressedMessages":"29030","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29031","messages":"29032","suppressedMessages":"29033","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29034","messages":"29035","suppressedMessages":"29036","errorCount":14,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"29037","messages":"29038","suppressedMessages":"29039","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29040","messages":"29041","suppressedMessages":"29042","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29043","messages":"29044","suppressedMessages":"29045","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29046","messages":"29047","suppressedMessages":"29048","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29049","messages":"29050","suppressedMessages":"29051","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29052","messages":"29053","suppressedMessages":"29054","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29055","messages":"29056","suppressedMessages":"29057","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29058","messages":"29059","suppressedMessages":"29060","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29061","messages":"29062","suppressedMessages":"29063","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29064","messages":"29065","suppressedMessages":"29066","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29067","messages":"29068","suppressedMessages":"29069","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29070","messages":"29071","suppressedMessages":"29072","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29073","messages":"29074","suppressedMessages":"29075","errorCount":10,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"29076","messages":"29077","suppressedMessages":"29078","errorCount":2,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"29079","messages":"29080","suppressedMessages":"29081","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29082","messages":"29083","suppressedMessages":"29084","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29085","messages":"29086","suppressedMessages":"29087","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29088","messages":"29089","suppressedMessages":"29090","errorCount":10,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"29091","messages":"29092","suppressedMessages":"29093","errorCount":3,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"29094","messages":"29095","suppressedMessages":"29096","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29097","messages":"29098","suppressedMessages":"29099","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29100","messages":"29101","suppressedMessages":"29102","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29103","messages":"29104","suppressedMessages":"29105","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29106","messages":"29107","suppressedMessages":"29108","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29109","messages":"29110","suppressedMessages":"29111","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29112","messages":"29113","suppressedMessages":"29114","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29115","messages":"29116","suppressedMessages":"29117","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29118","messages":"29119","suppressedMessages":"29120","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29121","messages":"29122","suppressedMessages":"29123","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29124","messages":"29125","suppressedMessages":"29126","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29127","messages":"29128","suppressedMessages":"29129","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29130","messages":"29131","suppressedMessages":"29132","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29133","messages":"29134","suppressedMessages":"29135","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29136","messages":"29137","suppressedMessages":"29138","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29139","messages":"29140","suppressedMessages":"29141","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29142","messages":"29143","suppressedMessages":"29144","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29145","messages":"29146","suppressedMessages":"29147","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29148","messages":"29149","suppressedMessages":"29150","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29151","messages":"29152","suppressedMessages":"29153","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29154","messages":"29155","suppressedMessages":"29156","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29157","messages":"29158","suppressedMessages":"29159","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29160","messages":"29161","suppressedMessages":"29162","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29163","messages":"29164","suppressedMessages":"29165","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29166","messages":"29167","suppressedMessages":"29168","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29169","messages":"29170","suppressedMessages":"29171","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29172","messages":"29173","suppressedMessages":"29174","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29175","messages":"29176","suppressedMessages":"29177","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29178","messages":"29179","suppressedMessages":"29180","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29181","messages":"29182","suppressedMessages":"29183","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29184","messages":"29185","suppressedMessages":"29186","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29187","messages":"29188","suppressedMessages":"29189","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29190","messages":"29191","suppressedMessages":"29192","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29193","messages":"29194","suppressedMessages":"29195","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29196","messages":"29197","suppressedMessages":"29198","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29199","messages":"29200","suppressedMessages":"29201","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29202","messages":"29203","suppressedMessages":"29204","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29205","messages":"29206","suppressedMessages":"29207","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29208","messages":"29209","suppressedMessages":"29210","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29211","messages":"29212","suppressedMessages":"29213","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29214","messages":"29215","suppressedMessages":"29216","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29217","messages":"29218","suppressedMessages":"29219","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29220","messages":"29221","suppressedMessages":"29222","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29223","messages":"29224","suppressedMessages":"29225","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29226","messages":"29227","suppressedMessages":"29228","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29229","messages":"29230","suppressedMessages":"29231","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29232","messages":"29233","suppressedMessages":"29234","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29235","messages":"29236","suppressedMessages":"29237","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29238","messages":"29239","suppressedMessages":"29240","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29241","messages":"29242","suppressedMessages":"29243","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29244","messages":"29245","suppressedMessages":"29246","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29247","messages":"29248","suppressedMessages":"29249","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29250","messages":"29251","suppressedMessages":"29252","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29253","messages":"29254","suppressedMessages":"29255","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29256","messages":"29257","suppressedMessages":"29258","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29259","messages":"29260","suppressedMessages":"29261","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29262","messages":"29263","suppressedMessages":"29264","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29265","messages":"29266","suppressedMessages":"29267","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29268","messages":"29269","suppressedMessages":"29270","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"29271","messages":"29272","suppressedMessages":"29273","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29274","messages":"29275","suppressedMessages":"29276","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29277","messages":"29278","suppressedMessages":"29279","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29280","messages":"29281","suppressedMessages":"29282","errorCount":2,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"29283","messages":"29284","suppressedMessages":"29285","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29286","messages":"29287","suppressedMessages":"29288","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29289","messages":"29290","suppressedMessages":"29291","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29292","messages":"29293","suppressedMessages":"29294","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29295","messages":"29296","suppressedMessages":"29297","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29298","messages":"29299","suppressedMessages":"29300","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29301","messages":"29302","suppressedMessages":"29303","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29304","messages":"29305","suppressedMessages":"29306","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29307","messages":"29308","suppressedMessages":"29309","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29310","messages":"29311","suppressedMessages":"29312","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29313","messages":"29314","suppressedMessages":"29315","errorCount":11,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"29316","messages":"29317","suppressedMessages":"29318","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29319","messages":"29320","suppressedMessages":"29321","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29322","messages":"29323","suppressedMessages":"29324","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29325","messages":"29326","suppressedMessages":"29327","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29328","messages":"29329","suppressedMessages":"29330","errorCount":2,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"29331","messages":"29332","suppressedMessages":"29333","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29334","messages":"29335","suppressedMessages":"29336","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29337","messages":"29338","suppressedMessages":"29339","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29340","messages":"29341","suppressedMessages":"29342","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29343","messages":"29344","suppressedMessages":"29345","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29346","messages":"29347","suppressedMessages":"29348","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29349","messages":"29350","suppressedMessages":"29351","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29352","messages":"29353","suppressedMessages":"29354","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29355","messages":"29356","suppressedMessages":"29357","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29358","messages":"29359","suppressedMessages":"29360","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29361","messages":"29362","suppressedMessages":"29363","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29364","messages":"29365","suppressedMessages":"29366","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29367","messages":"29368","suppressedMessages":"29369","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29370","messages":"29371","suppressedMessages":"29372","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29373","messages":"29374","suppressedMessages":"29375","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29376","messages":"29377","suppressedMessages":"29378","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29379","messages":"29380","suppressedMessages":"29381","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29382","messages":"29383","suppressedMessages":"29384","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29385","messages":"29386","suppressedMessages":"29387","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29388","messages":"29389","suppressedMessages":"29390","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29391","messages":"29392","suppressedMessages":"29393","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29394","messages":"29395","suppressedMessages":"29396","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29397","messages":"29398","suppressedMessages":"29399","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29400","messages":"29401","suppressedMessages":"29402","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29403","messages":"29404","suppressedMessages":"29405","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29406","messages":"29407","suppressedMessages":"29408","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29409","messages":"29410","suppressedMessages":"29411","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29412","messages":"29413","suppressedMessages":"29414","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29415","messages":"29416","suppressedMessages":"29417","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29418","messages":"29419","suppressedMessages":"29420","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29421","messages":"29422","suppressedMessages":"29423","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29424","messages":"29425","suppressedMessages":"29426","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29427","messages":"29428","suppressedMessages":"29429","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29430","messages":"29431","suppressedMessages":"29432","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29433","messages":"29434","suppressedMessages":"29435","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29436","messages":"29437","suppressedMessages":"29438","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29439","messages":"29440","suppressedMessages":"29441","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29442","messages":"29443","suppressedMessages":"29444","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29445","messages":"29446","suppressedMessages":"29447","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29448","messages":"29449","suppressedMessages":"29450","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29451","messages":"29452","suppressedMessages":"29453","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29454","messages":"29455","suppressedMessages":"29456","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29457","messages":"29458","suppressedMessages":"29459","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29460","messages":"29461","suppressedMessages":"29462","errorCount":4,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"29463","messages":"29464","suppressedMessages":"29465","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29466","messages":"29467","suppressedMessages":"29468","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29469","messages":"29470","suppressedMessages":"29471","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29472","messages":"29473","suppressedMessages":"29474","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29475","messages":"29476","suppressedMessages":"29477","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29478","messages":"29479","suppressedMessages":"29480","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29481","messages":"29482","suppressedMessages":"29483","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29484","messages":"29485","suppressedMessages":"29486","errorCount":3,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"29487","messages":"29488","suppressedMessages":"29489","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29490","messages":"29491","suppressedMessages":"29492","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29493","messages":"29494","suppressedMessages":"29495","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29496","messages":"29497","suppressedMessages":"29498","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29499","messages":"29500","suppressedMessages":"29501","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29502","messages":"29503","suppressedMessages":"29504","errorCount":2,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"29505","messages":"29506","suppressedMessages":"29507","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29508","messages":"29509","suppressedMessages":"29510","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29511","messages":"29512","suppressedMessages":"29513","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29514","messages":"29515","suppressedMessages":"29516","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29517","messages":"29518","suppressedMessages":"29519","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29520","messages":"29521","suppressedMessages":"29522","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29523","messages":"29524","suppressedMessages":"29525","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29526","messages":"29527","suppressedMessages":"29528","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29529","messages":"29530","suppressedMessages":"29531","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29532","messages":"29533","suppressedMessages":"29534","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29535","messages":"29536","suppressedMessages":"29537","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29538","messages":"29539","suppressedMessages":"29540","errorCount":4,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"29541","messages":"29542","suppressedMessages":"29543","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29544","messages":"29545","suppressedMessages":"29546","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29547","messages":"29548","suppressedMessages":"29549","errorCount":3,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"29550","messages":"29551","suppressedMessages":"29552","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29553","messages":"29554","suppressedMessages":"29555","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29556","messages":"29557","suppressedMessages":"29558","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29559","messages":"29560","suppressedMessages":"29561","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29562","messages":"29563","suppressedMessages":"29564","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29565","messages":"29566","suppressedMessages":"29567","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29568","messages":"29569","suppressedMessages":"29570","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29571","messages":"29572","suppressedMessages":"29573","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29574","messages":"29575","suppressedMessages":"29576","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29577","messages":"29578","suppressedMessages":"29579","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29580","messages":"29581","suppressedMessages":"29582","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29583","messages":"29584","suppressedMessages":"29585","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29586","messages":"29587","suppressedMessages":"29588","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29589","messages":"29590","suppressedMessages":"29591","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29592","messages":"29593","suppressedMessages":"29594","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29595","messages":"29596","suppressedMessages":"29597","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29598","messages":"29599","suppressedMessages":"29600","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29601","messages":"29602","suppressedMessages":"29603","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29604","messages":"29605","suppressedMessages":"29606","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29607","messages":"29608","suppressedMessages":"29609","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29610","messages":"29611","suppressedMessages":"29612","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29613","messages":"29614","suppressedMessages":"29615","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29616","messages":"29617","suppressedMessages":"29618","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29619","messages":"29620","suppressedMessages":"29621","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29622","messages":"29623","suppressedMessages":"29624","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29625","messages":"29626","suppressedMessages":"29627","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29628","messages":"29629","suppressedMessages":"29630","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29631","messages":"29632","suppressedMessages":"29633","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29634","messages":"29635","suppressedMessages":"29636","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29637","messages":"29638","suppressedMessages":"29639","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29640","messages":"29641","suppressedMessages":"29642","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29643","messages":"29644","suppressedMessages":"29645","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29646","messages":"29647","suppressedMessages":"29648","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29649","messages":"29650","suppressedMessages":"29651","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29652","messages":"29653","suppressedMessages":"29654","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29655","messages":"29656","suppressedMessages":"29657","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29658","messages":"29659","suppressedMessages":"29660","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29661","messages":"29662","suppressedMessages":"29663","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29664","messages":"29665","suppressedMessages":"29666","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29667","messages":"29668","suppressedMessages":"29669","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29670","messages":"29671","suppressedMessages":"29672","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29673","messages":"29674","suppressedMessages":"29675","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29676","messages":"29677","suppressedMessages":"29678","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29679","messages":"29680","suppressedMessages":"29681","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29682","messages":"29683","suppressedMessages":"29684","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29685","messages":"29686","suppressedMessages":"29687","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29688","messages":"29689","suppressedMessages":"29690","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29691","messages":"29692","suppressedMessages":"29693","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29694","messages":"29695","suppressedMessages":"29696","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29697","messages":"29698","suppressedMessages":"29699","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29700","messages":"29701","suppressedMessages":"29702","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29703","messages":"29704","suppressedMessages":"29705","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29706","messages":"29707","suppressedMessages":"29708","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29709","messages":"29710","suppressedMessages":"29711","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29712","messages":"29713","suppressedMessages":"29714","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29715","messages":"29716","suppressedMessages":"29717","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29718","messages":"29719","suppressedMessages":"29720","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29721","messages":"29722","suppressedMessages":"29723","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29724","messages":"29725","suppressedMessages":"29726","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29727","messages":"29728","suppressedMessages":"29729","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29730","messages":"29731","suppressedMessages":"29732","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29733","messages":"29734","suppressedMessages":"29735","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29736","messages":"29737","suppressedMessages":"29738","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29739","messages":"29740","suppressedMessages":"29741","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29742","messages":"29743","suppressedMessages":"29744","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29745","messages":"29746","suppressedMessages":"29747","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29748","messages":"29749","suppressedMessages":"29750","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29751","messages":"29752","suppressedMessages":"29753","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29754","messages":"29755","suppressedMessages":"29756","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29757","messages":"29758","suppressedMessages":"29759","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29760","messages":"29761","suppressedMessages":"29762","errorCount":8,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"29763","messages":"29764","suppressedMessages":"29765","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29766","messages":"29767","suppressedMessages":"29768","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29769","messages":"29770","suppressedMessages":"29771","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29772","messages":"29773","suppressedMessages":"29774","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29775","messages":"29776","suppressedMessages":"29777","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29778","messages":"29779","suppressedMessages":"29780","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29781","messages":"29782","suppressedMessages":"29783","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29784","messages":"29785","suppressedMessages":"29786","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29787","messages":"29788","suppressedMessages":"29789","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29790","messages":"29791","suppressedMessages":"29792","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29793","messages":"29794","suppressedMessages":"29795","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29796","messages":"29797","suppressedMessages":"29798","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29799","messages":"29800","suppressedMessages":"29801","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29802","messages":"29803","suppressedMessages":"29804","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29805","messages":"29806","suppressedMessages":"29807","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29808","messages":"29809","suppressedMessages":"29810","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29811","messages":"29812","suppressedMessages":"29813","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29814","messages":"29815","suppressedMessages":"29816","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"29817","messages":"29818","suppressedMessages":"29819","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29820","messages":"29821","suppressedMessages":"29822","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29823","messages":"29824","suppressedMessages":"29825","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29826","messages":"29827","suppressedMessages":"29828","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29829","messages":"29830","suppressedMessages":"29831","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29832","messages":"29833","suppressedMessages":"29834","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29835","messages":"29836","suppressedMessages":"29837","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29838","messages":"29839","suppressedMessages":"29840","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29841","messages":"29842","suppressedMessages":"29843","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29844","messages":"29845","suppressedMessages":"29846","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29847","messages":"29848","suppressedMessages":"29849","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29850","messages":"29851","suppressedMessages":"29852","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29853","messages":"29854","suppressedMessages":"29855","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29856","messages":"29857","suppressedMessages":"29858","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29859","messages":"29860","suppressedMessages":"29861","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29862","messages":"29863","suppressedMessages":"29864","errorCount":9,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"29865","messages":"29866","suppressedMessages":"29867","errorCount":9,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"29868","messages":"29869","suppressedMessages":"29870","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29871","messages":"29872","suppressedMessages":"29873","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29874","messages":"29875","suppressedMessages":"29876","errorCount":6,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"29877","messages":"29878","suppressedMessages":"29879","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29880","messages":"29881","suppressedMessages":"29882","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29883","messages":"29884","suppressedMessages":"29885","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29886","messages":"29887","suppressedMessages":"29888","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29889","messages":"29890","suppressedMessages":"29891","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29892","messages":"29893","suppressedMessages":"29894","errorCount":9,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"29895","messages":"29896","suppressedMessages":"29897","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29898","messages":"29899","suppressedMessages":"29900","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29901","messages":"29902","suppressedMessages":"29903","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29904","messages":"29905","suppressedMessages":"29906","errorCount":5,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"29907","messages":"29908","suppressedMessages":"29909","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29910","messages":"29911","suppressedMessages":"29912","errorCount":11,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"29913","messages":"29914","suppressedMessages":"29915","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29916","messages":"29917","suppressedMessages":"29918","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"29919","messages":"29920","suppressedMessages":"29921","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29922","messages":"29923","suppressedMessages":"29924","errorCount":11,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"29925","messages":"29926","suppressedMessages":"29927","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29928","messages":"29929","suppressedMessages":"29930","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29931","messages":"29932","suppressedMessages":"29933","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29934","messages":"29935","suppressedMessages":"29936","errorCount":15,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"29937","messages":"29938","suppressedMessages":"29939","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29940","messages":"29941","suppressedMessages":"29942","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29943","messages":"29944","suppressedMessages":"29945","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29946","messages":"29947","suppressedMessages":"29948","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29949","messages":"29950","suppressedMessages":"29951","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29952","messages":"29953","suppressedMessages":"29954","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29955","messages":"29956","suppressedMessages":"29957","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29958","messages":"29959","suppressedMessages":"29960","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29961","messages":"29962","suppressedMessages":"29963","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29964","messages":"29965","suppressedMessages":"29966","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29967","messages":"29968","suppressedMessages":"29969","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29970","messages":"29971","suppressedMessages":"29972","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29973","messages":"29974","suppressedMessages":"29975","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29976","messages":"29977","suppressedMessages":"29978","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29979","messages":"29980","suppressedMessages":"29981","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29982","messages":"29983","suppressedMessages":"29984","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29985","messages":"29986","suppressedMessages":"29987","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29988","messages":"29989","suppressedMessages":"29990","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29991","messages":"29992","suppressedMessages":"29993","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29994","messages":"29995","suppressedMessages":"29996","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29997","messages":"29998","suppressedMessages":"29999","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30000","messages":"30001","suppressedMessages":"30002","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30003","messages":"30004","suppressedMessages":"30005","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30006","messages":"30007","suppressedMessages":"30008","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30009","messages":"30010","suppressedMessages":"30011","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30012","messages":"30013","suppressedMessages":"30014","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30015","messages":"30016","suppressedMessages":"30017","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30018","messages":"30019","suppressedMessages":"30020","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30021","messages":"30022","suppressedMessages":"30023","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30024","messages":"30025","suppressedMessages":"30026","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30027","messages":"30028","suppressedMessages":"30029","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30030","messages":"30031","suppressedMessages":"30032","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30033","messages":"30034","suppressedMessages":"30035","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30036","messages":"30037","suppressedMessages":"30038","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30039","messages":"30040","suppressedMessages":"30041","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30042","messages":"30043","suppressedMessages":"30044","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30045","messages":"30046","suppressedMessages":"30047","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30048","messages":"30049","suppressedMessages":"30050","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30051","messages":"30052","suppressedMessages":"30053","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30054","messages":"30055","suppressedMessages":"30056","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30057","messages":"30058","suppressedMessages":"30059","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30060","messages":"30061","suppressedMessages":"30062","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30063","messages":"30064","suppressedMessages":"30065","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30066","messages":"30067","suppressedMessages":"30068","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30069","messages":"30070","suppressedMessages":"30071","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30072","messages":"30073","suppressedMessages":"30074","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30075","messages":"30076","suppressedMessages":"30077","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30078","messages":"30079","suppressedMessages":"30080","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"30081","messages":"30082","suppressedMessages":"30083","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30084","messages":"30085","suppressedMessages":"30086","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30087","messages":"30088","suppressedMessages":"30089","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30090","messages":"30091","suppressedMessages":"30092","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30093","messages":"30094","suppressedMessages":"30095","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30096","messages":"30097","suppressedMessages":"30098","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30099","messages":"30100","suppressedMessages":"30101","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30102","messages":"30103","suppressedMessages":"30104","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30105","messages":"30106","suppressedMessages":"30107","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30108","messages":"30109","suppressedMessages":"30110","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30111","messages":"30112","suppressedMessages":"30113","errorCount":21,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"30114","messages":"30115","suppressedMessages":"30116","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30117","messages":"30118","suppressedMessages":"30119","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30120","messages":"30121","suppressedMessages":"30122","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30123","messages":"30124","suppressedMessages":"30125","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30126","messages":"30127","suppressedMessages":"30128","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30129","messages":"30130","suppressedMessages":"30131","errorCount":48,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"30132","messages":"30133","suppressedMessages":"30134","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30135","messages":"30136","suppressedMessages":"30137","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30138","messages":"30139","suppressedMessages":"30140","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30141","messages":"30142","suppressedMessages":"30143","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30144","messages":"30145","suppressedMessages":"30146","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30147","messages":"30148","suppressedMessages":"30149","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30150","messages":"30151","suppressedMessages":"30152","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30153","messages":"30154","suppressedMessages":"30155","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"30156","messages":"30157","suppressedMessages":"30158","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30159","messages":"30160","suppressedMessages":"30161","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30162","messages":"30163","suppressedMessages":"30164","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30165","messages":"30166","suppressedMessages":"30167","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30168","messages":"30169","suppressedMessages":"30170","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30171","messages":"30172","suppressedMessages":"30173","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30174","messages":"30175","suppressedMessages":"30176","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30177","messages":"30178","suppressedMessages":"30179","errorCount":7,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"30180","messages":"30181","suppressedMessages":"30182","errorCount":2,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"30183","messages":"30184","suppressedMessages":"30185","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30186","messages":"30187","suppressedMessages":"30188","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30189","messages":"30190","suppressedMessages":"30191","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30192","messages":"30193","suppressedMessages":"30194","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30195","messages":"30196","suppressedMessages":"30197","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30198","messages":"30199","suppressedMessages":"30200","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30201","messages":"30202","suppressedMessages":"30203","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30204","messages":"30205","suppressedMessages":"30206","errorCount":10,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"30207","messages":"30208","suppressedMessages":"30209","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30210","messages":"30211","suppressedMessages":"30212","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30213","messages":"30214","suppressedMessages":"30215","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30216","messages":"30217","suppressedMessages":"30218","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30219","messages":"30220","suppressedMessages":"30221","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30222","messages":"30223","suppressedMessages":"30224","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30225","messages":"30226","suppressedMessages":"30227","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30228","messages":"30229","suppressedMessages":"30230","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30231","messages":"30232","suppressedMessages":"30233","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30234","messages":"30235","suppressedMessages":"30236","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30237","messages":"30238","suppressedMessages":"30239","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30240","messages":"30241","suppressedMessages":"30242","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30243","messages":"30244","suppressedMessages":"30245","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30246","messages":"30247","suppressedMessages":"30248","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30249","messages":"30250","suppressedMessages":"30251","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30252","messages":"30253","suppressedMessages":"30254","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30255","messages":"30256","suppressedMessages":"30257","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30258","messages":"30259","suppressedMessages":"30260","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30261","messages":"30262","suppressedMessages":"30263","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30264","messages":"30265","suppressedMessages":"30266","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30267","messages":"30268","suppressedMessages":"30269","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30270","messages":"30271","suppressedMessages":"30272","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30273","messages":"30274","suppressedMessages":"30275","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30276","messages":"30277","suppressedMessages":"30278","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30279","messages":"30280","suppressedMessages":"30281","errorCount":5,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"30282","messages":"30283","suppressedMessages":"30284","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30285","messages":"30286","suppressedMessages":"30287","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30288","messages":"30289","suppressedMessages":"30290","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30291","messages":"30292","suppressedMessages":"30293","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30294","messages":"30295","suppressedMessages":"30296","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30297","messages":"30298","suppressedMessages":"30299","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30300","messages":"30301","suppressedMessages":"30302","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30303","messages":"30304","suppressedMessages":"30305","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30306","messages":"30307","suppressedMessages":"30308","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30309","messages":"30310","suppressedMessages":"30311","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30312","messages":"30313","suppressedMessages":"30314","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30315","messages":"30316","suppressedMessages":"30317","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30318","messages":"30319","suppressedMessages":"30320","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30321","messages":"30322","suppressedMessages":"30323","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30324","messages":"30325","suppressedMessages":"30326","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30327","messages":"30328","suppressedMessages":"30329","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30330","messages":"30331","suppressedMessages":"30332","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30333","messages":"30334","suppressedMessages":"30335","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30336","messages":"30337","suppressedMessages":"30338","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30339","messages":"30340","suppressedMessages":"30341","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30342","messages":"30343","suppressedMessages":"30344","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30345","messages":"30346","suppressedMessages":"30347","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30348","messages":"30349","suppressedMessages":"30350","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30351","messages":"30352","suppressedMessages":"30353","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30354","messages":"30355","suppressedMessages":"30356","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30357","messages":"30358","suppressedMessages":"30359","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30360","messages":"30361","suppressedMessages":"30362","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30363","messages":"30364","suppressedMessages":"30365","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30366","messages":"30367","suppressedMessages":"30368","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30369","messages":"30370","suppressedMessages":"30371","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30372","messages":"30373","suppressedMessages":"30374","errorCount":2,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"30375","messages":"30376","suppressedMessages":"30377","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30378","messages":"30379","suppressedMessages":"30380","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30381","messages":"30382","suppressedMessages":"30383","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30384","messages":"30385","suppressedMessages":"30386","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30387","messages":"30388","suppressedMessages":"30389","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30390","messages":"30391","suppressedMessages":"30392","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30393","messages":"30394","suppressedMessages":"30395","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30396","messages":"30397","suppressedMessages":"30398","errorCount":43,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"30399","messages":"30400","suppressedMessages":"30401","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30402","messages":"30403","suppressedMessages":"30404","errorCount":5,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"30405","messages":"30406","suppressedMessages":"30407","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30408","messages":"30409","suppressedMessages":"30410","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30411","messages":"30412","suppressedMessages":"30413","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"30414","messages":"30415","suppressedMessages":"30416","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30417","messages":"30418","suppressedMessages":"30419","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30420","messages":"30421","suppressedMessages":"30422","errorCount":3,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"30423","messages":"30424","suppressedMessages":"30425","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30426","messages":"30427","suppressedMessages":"30428","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30429","messages":"30430","suppressedMessages":"30431","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30432","messages":"30433","suppressedMessages":"30434","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30435","messages":"30436","suppressedMessages":"30437","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30438","messages":"30439","suppressedMessages":"30440","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30441","messages":"30442","suppressedMessages":"30443","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30444","messages":"30445","suppressedMessages":"30446","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30447","messages":"30448","suppressedMessages":"30449","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30450","messages":"30451","suppressedMessages":"30452","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30453","messages":"30454","suppressedMessages":"30455","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30456","messages":"30457","suppressedMessages":"30458","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30459","messages":"30460","suppressedMessages":"30461","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30462","messages":"30463","suppressedMessages":"30464","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30465","messages":"30466","suppressedMessages":"30467","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30468","messages":"30469","suppressedMessages":"30470","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30471","messages":"30472","suppressedMessages":"30473","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30474","messages":"30475","suppressedMessages":"30476","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30477","messages":"30478","suppressedMessages":"30479","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30480","messages":"30481","suppressedMessages":"30482","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30483","messages":"30484","suppressedMessages":"30485","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30486","messages":"30487","suppressedMessages":"30488","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30489","messages":"30490","suppressedMessages":"30491","errorCount":31,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"30492","messages":"30493","suppressedMessages":"30494","errorCount":2,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"30495","messages":"30496","suppressedMessages":"30497","errorCount":37,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"30498","messages":"30499","suppressedMessages":"30500","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30501","messages":"30502","suppressedMessages":"30503","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30504","messages":"30505","suppressedMessages":"30506","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30507","messages":"30508","suppressedMessages":"30509","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30510","messages":"30511","suppressedMessages":"30512","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30513","messages":"30514","suppressedMessages":"30515","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30516","messages":"30517","suppressedMessages":"30518","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30519","messages":"30520","suppressedMessages":"30521","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30522","messages":"30523","suppressedMessages":"30524","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30525","messages":"30526","suppressedMessages":"30527","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30528","messages":"30529","suppressedMessages":"30530","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30531","messages":"30532","suppressedMessages":"30533","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30534","messages":"30535","suppressedMessages":"30536","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30537","messages":"30538","suppressedMessages":"30539","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30540","messages":"30541","suppressedMessages":"30542","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30543","messages":"30544","suppressedMessages":"30545","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30546","messages":"30547","suppressedMessages":"30548","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30549","messages":"30550","suppressedMessages":"30551","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30552","messages":"30553","suppressedMessages":"30554","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30555","messages":"30556","suppressedMessages":"30557","errorCount":6,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"30558","messages":"30559","suppressedMessages":"30560","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30561","messages":"30562","suppressedMessages":"30563","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30564","messages":"30565","suppressedMessages":"30566","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30567","messages":"30568","suppressedMessages":"30569","errorCount":10,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"30570","messages":"30571","suppressedMessages":"30572","errorCount":10,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"30573","messages":"30574","suppressedMessages":"30575","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30576","messages":"30577","suppressedMessages":"30578","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30579","messages":"30580","suppressedMessages":"30581","errorCount":13,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"30582","messages":"30583","suppressedMessages":"30584","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30585","messages":"30586","suppressedMessages":"30587","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30588","messages":"30589","suppressedMessages":"30590","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30591","messages":"30592","suppressedMessages":"30593","errorCount":2,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"30594","messages":"30595","suppressedMessages":"30596","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30597","messages":"30598","suppressedMessages":"30599","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30600","messages":"30601","suppressedMessages":"30602","errorCount":15,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"30603","messages":"30604","suppressedMessages":"30605","errorCount":4,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"30606","messages":"30607","suppressedMessages":"30608","errorCount":2,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"30609","messages":"30610","suppressedMessages":"30611","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30612","messages":"30613","suppressedMessages":"30614","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30615","messages":"30616","suppressedMessages":"30617","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30618","messages":"30619","suppressedMessages":"30620","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30621","messages":"30622","suppressedMessages":"30623","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30624","messages":"30625","suppressedMessages":"30626","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30627","messages":"30628","suppressedMessages":"30629","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30630","messages":"30631","suppressedMessages":"30632","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30633","messages":"30634","suppressedMessages":"30635","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30636","messages":"30637","suppressedMessages":"30638","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30639","messages":"30640","suppressedMessages":"30641","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30642","messages":"30643","suppressedMessages":"30644","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30645","messages":"30646","suppressedMessages":"30647","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30648","messages":"30649","suppressedMessages":"30650","errorCount":4,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"30651","messages":"30652","suppressedMessages":"30653","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30654","messages":"30655","suppressedMessages":"30656","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30657","messages":"30658","suppressedMessages":"30659","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30660","messages":"30661","suppressedMessages":"30662","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30663","messages":"30664","suppressedMessages":"30665","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30666","messages":"30667","suppressedMessages":"30668","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30669","messages":"30670","suppressedMessages":"30671","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30672","messages":"30673","suppressedMessages":"30674","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30675","messages":"30676","suppressedMessages":"30677","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30678","messages":"30679","suppressedMessages":"30680","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30681","messages":"30682","suppressedMessages":"30683","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30684","messages":"30685","suppressedMessages":"30686","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30687","messages":"30688","suppressedMessages":"30689","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30690","messages":"30691","suppressedMessages":"30692","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30693","messages":"30694","suppressedMessages":"30695","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30696","messages":"30697","suppressedMessages":"30698","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30699","messages":"30700","suppressedMessages":"30701","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30702","messages":"30703","suppressedMessages":"30704","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30705","messages":"30706","suppressedMessages":"30707","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30708","messages":"30709","suppressedMessages":"30710","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30711","messages":"30712","suppressedMessages":"30713","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30714","messages":"30715","suppressedMessages":"30716","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30717","messages":"30718","suppressedMessages":"30719","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30720","messages":"30721","suppressedMessages":"30722","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30723","messages":"30724","suppressedMessages":"30725","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30726","messages":"30727","suppressedMessages":"30728","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30729","messages":"30730","suppressedMessages":"30731","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30732","messages":"30733","suppressedMessages":"30734","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30735","messages":"30736","suppressedMessages":"30737","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30738","messages":"30739","suppressedMessages":"30740","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30741","messages":"30742","suppressedMessages":"30743","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30744","messages":"30745","suppressedMessages":"30746","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30747","messages":"30748","suppressedMessages":"30749","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30750","messages":"30751","suppressedMessages":"30752","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30753","messages":"30754","suppressedMessages":"30755","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30756","messages":"30757","suppressedMessages":"30758","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30759","messages":"30760","suppressedMessages":"30761","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30762","messages":"30763","suppressedMessages":"30764","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30765","messages":"30766","suppressedMessages":"30767","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30768","messages":"30769","suppressedMessages":"30770","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30771","messages":"30772","suppressedMessages":"30773","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30774","messages":"30775","suppressedMessages":"30776","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30777","messages":"30778","suppressedMessages":"30779","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30780","messages":"30781","suppressedMessages":"30782","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30783","messages":"30784","suppressedMessages":"30785","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30786","messages":"30787","suppressedMessages":"30788","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30789","messages":"30790","suppressedMessages":"30791","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30792","messages":"30793","suppressedMessages":"30794","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30795","messages":"30796","suppressedMessages":"30797","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30798","messages":"30799","suppressedMessages":"30800","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30801","messages":"30802","suppressedMessages":"30803","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30804","messages":"30805","suppressedMessages":"30806","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30807","messages":"30808","suppressedMessages":"30809","errorCount":34,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"30810","messages":"30811","suppressedMessages":"30812","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30813","messages":"30814","suppressedMessages":"30815","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30816","messages":"30817","suppressedMessages":"30818","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30819","messages":"30820","suppressedMessages":"30821","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30822","messages":"30823","suppressedMessages":"30824","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30825","messages":"30826","suppressedMessages":"30827","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30828","messages":"30829","suppressedMessages":"30830","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30831","messages":"30832","suppressedMessages":"30833","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30834","messages":"30835","suppressedMessages":"30836","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30837","messages":"30838","suppressedMessages":"30839","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30840","messages":"30841","suppressedMessages":"30842","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30843","messages":"30844","suppressedMessages":"30845","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30846","messages":"30847","suppressedMessages":"30848","errorCount":6,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"30849","messages":"30850","suppressedMessages":"30851","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30852","messages":"30853","suppressedMessages":"30854","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30855","messages":"30856","suppressedMessages":"30857","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30858","messages":"30859","suppressedMessages":"30860","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30861","messages":"30862","suppressedMessages":"30863","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30864","messages":"30865","suppressedMessages":"30866","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30867","messages":"30868","suppressedMessages":"30869","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30870","messages":"30871","suppressedMessages":"30872","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30873","messages":"30874","suppressedMessages":"30875","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30876","messages":"30877","suppressedMessages":"30878","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30879","messages":"30880","suppressedMessages":"30881","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30882","messages":"30883","suppressedMessages":"30884","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30885","messages":"30886","suppressedMessages":"30887","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30888","messages":"30889","suppressedMessages":"30890","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30891","messages":"30892","suppressedMessages":"30893","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30894","messages":"30895","suppressedMessages":"30896","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30897","messages":"30898","suppressedMessages":"30899","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30900","messages":"30901","suppressedMessages":"30902","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30903","messages":"30904","suppressedMessages":"30905","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30906","messages":"30907","suppressedMessages":"30908","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30909","messages":"30910","suppressedMessages":"30911","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30912","messages":"30913","suppressedMessages":"30914","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30915","messages":"30916","suppressedMessages":"30917","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30918","messages":"30919","suppressedMessages":"30920","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30921","messages":"30922","suppressedMessages":"30923","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30924","messages":"30925","suppressedMessages":"30926","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30927","messages":"30928","suppressedMessages":"30929","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30930","messages":"30931","suppressedMessages":"30932","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30933","messages":"30934","suppressedMessages":"30935","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30936","messages":"30937","suppressedMessages":"30938","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30939","messages":"30940","suppressedMessages":"30941","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30942","messages":"30943","suppressedMessages":"30944","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30945","messages":"30946","suppressedMessages":"30947","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30948","messages":"30949","suppressedMessages":"30950","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30951","messages":"30952","suppressedMessages":"30953","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30954","messages":"30955","suppressedMessages":"30956","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30957","messages":"30958","suppressedMessages":"30959","errorCount":3,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"30960","messages":"30961","suppressedMessages":"30962","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30963","messages":"30964","suppressedMessages":"30965","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30966","messages":"30967","suppressedMessages":"30968","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30969","messages":"30970","suppressedMessages":"30971","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30972","messages":"30973","suppressedMessages":"30974","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30975","messages":"30976","suppressedMessages":"30977","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30978","messages":"30979","suppressedMessages":"30980","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30981","messages":"30982","suppressedMessages":"30983","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30984","messages":"30985","suppressedMessages":"30986","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30987","messages":"30988","suppressedMessages":"30989","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30990","messages":"30991","suppressedMessages":"30992","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30993","messages":"30994","suppressedMessages":"30995","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30996","messages":"30997","suppressedMessages":"30998","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"30999","messages":"31000","suppressedMessages":"31001","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31002","messages":"31003","suppressedMessages":"31004","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31005","messages":"31006","suppressedMessages":"31007","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31008","messages":"31009","suppressedMessages":"31010","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31011","messages":"31012","suppressedMessages":"31013","errorCount":2,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"31014","messages":"31015","suppressedMessages":"31016","errorCount":27,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"31017","messages":"31018","suppressedMessages":"31019","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31020","messages":"31021","suppressedMessages":"31022","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31023","messages":"31024","suppressedMessages":"31025","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31026","messages":"31027","suppressedMessages":"31028","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31029","messages":"31030","suppressedMessages":"31031","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31032","messages":"31033","suppressedMessages":"31034","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31035","messages":"31036","suppressedMessages":"31037","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31038","messages":"31039","suppressedMessages":"31040","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31041","messages":"31042","suppressedMessages":"31043","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31044","messages":"31045","suppressedMessages":"31046","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31047","messages":"31048","suppressedMessages":"31049","errorCount":4,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"31050","messages":"31051","suppressedMessages":"31052","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31053","messages":"31054","suppressedMessages":"31055","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31056","messages":"31057","suppressedMessages":"31058","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31059","messages":"31060","suppressedMessages":"31061","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31062","messages":"31063","suppressedMessages":"31064","errorCount":3,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"31065","messages":"31066","suppressedMessages":"31067","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31068","messages":"31069","suppressedMessages":"31070","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31071","messages":"31072","suppressedMessages":"31073","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31074","messages":"31075","suppressedMessages":"31076","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31077","messages":"31078","suppressedMessages":"31079","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31080","messages":"31081","suppressedMessages":"31082","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31083","messages":"31084","suppressedMessages":"31085","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31086","messages":"31087","suppressedMessages":"31088","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31089","messages":"31090","suppressedMessages":"31091","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31092","messages":"31093","suppressedMessages":"31094","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31095","messages":"31096","suppressedMessages":"31097","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31098","messages":"31099","suppressedMessages":"31100","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31101","messages":"31102","suppressedMessages":"31103","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31104","messages":"31105","suppressedMessages":"31106","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31107","messages":"31108","suppressedMessages":"31109","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31110","messages":"31111","suppressedMessages":"31112","errorCount":8,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"31113","messages":"31114","suppressedMessages":"31115","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31116","messages":"31117","suppressedMessages":"31118","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31119","messages":"31120","suppressedMessages":"31121","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31122","messages":"31123","suppressedMessages":"31124","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31125","messages":"31126","suppressedMessages":"31127","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31128","messages":"31129","suppressedMessages":"31130","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31131","messages":"31132","suppressedMessages":"31133","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31134","messages":"31135","suppressedMessages":"31136","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31137","messages":"31138","suppressedMessages":"31139","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31140","messages":"31141","suppressedMessages":"31142","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31143","messages":"31144","suppressedMessages":"31145","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31146","messages":"31147","suppressedMessages":"31148","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31149","messages":"31150","suppressedMessages":"31151","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31152","messages":"31153","suppressedMessages":"31154","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31155","messages":"31156","suppressedMessages":"31157","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31158","messages":"31159","suppressedMessages":"31160","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31161","messages":"31162","suppressedMessages":"31163","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31164","messages":"31165","suppressedMessages":"31166","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31167","messages":"31168","suppressedMessages":"31169","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31170","messages":"31171","suppressedMessages":"31172","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31173","messages":"31174","suppressedMessages":"31175","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31176","messages":"31177","suppressedMessages":"31178","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31179","messages":"31180","suppressedMessages":"31181","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31182","messages":"31183","suppressedMessages":"31184","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31185","messages":"31186","suppressedMessages":"31187","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31188","messages":"31189","suppressedMessages":"31190","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31191","messages":"31192","suppressedMessages":"31193","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31194","messages":"31195","suppressedMessages":"31196","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31197","messages":"31198","suppressedMessages":"31199","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31200","messages":"31201","suppressedMessages":"31202","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31203","messages":"31204","suppressedMessages":"31205","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31206","messages":"31207","suppressedMessages":"31208","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31209","messages":"31210","suppressedMessages":"31211","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31212","messages":"31213","suppressedMessages":"31214","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31215","messages":"31216","suppressedMessages":"31217","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31218","messages":"31219","suppressedMessages":"31220","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31221","messages":"31222","suppressedMessages":"31223","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31224","messages":"31225","suppressedMessages":"31226","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31227","messages":"31228","suppressedMessages":"31229","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31230","messages":"31231","suppressedMessages":"31232","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31233","messages":"31234","suppressedMessages":"31235","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31236","messages":"31237","suppressedMessages":"31238","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31239","messages":"31240","suppressedMessages":"31241","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31242","messages":"31243","suppressedMessages":"31244","errorCount":16,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"31245","messages":"31246","suppressedMessages":"31247","errorCount":15,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"31248","messages":"31249","suppressedMessages":"31250","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31251","messages":"31252","suppressedMessages":"31253","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31254","messages":"31255","suppressedMessages":"31256","errorCount":16,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"31257","messages":"31258","suppressedMessages":"31259","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31260","messages":"31261","suppressedMessages":"31262","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31263","messages":"31264","suppressedMessages":"31265","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31266","messages":"31267","suppressedMessages":"31268","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31269","messages":"31270","suppressedMessages":"31271","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31272","messages":"31273","suppressedMessages":"31274","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31275","messages":"31276","suppressedMessages":"31277","errorCount":17,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"31278","messages":"31279","suppressedMessages":"31280","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31281","messages":"31282","suppressedMessages":"31283","errorCount":18,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"31284","messages":"31285","suppressedMessages":"31286","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31287","messages":"31288","suppressedMessages":"31289","errorCount":16,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"31290","messages":"31291","suppressedMessages":"31292","errorCount":11,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"31293","messages":"31294","suppressedMessages":"31295","errorCount":32,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"31296","messages":"31297","suppressedMessages":"31298","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31299","messages":"31300","suppressedMessages":"31301","errorCount":19,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"31302","messages":"31303","suppressedMessages":"31304","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31305","messages":"31306","suppressedMessages":"31307","errorCount":16,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"31308","messages":"31309","suppressedMessages":"31310","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31311","messages":"31312","suppressedMessages":"31313","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31314","messages":"31315","suppressedMessages":"31316","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31317","messages":"31318","suppressedMessages":"31319","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31320","messages":"31321","suppressedMessages":"31322","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31323","messages":"31324","suppressedMessages":"31325","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31326","messages":"31327","suppressedMessages":"31328","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31329","messages":"31330","suppressedMessages":"31331","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31332","messages":"31333","suppressedMessages":"31334","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31335","messages":"31336","suppressedMessages":"31337","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31338","messages":"31339","suppressedMessages":"31340","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31341","messages":"31342","suppressedMessages":"31343","errorCount":22,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"31344","messages":"31345","suppressedMessages":"31346","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31347","messages":"31348","suppressedMessages":"31349","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"31350","messages":"31351","suppressedMessages":"31352","errorCount":12,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"31353","messages":"31354","suppressedMessages":"31355","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31356","messages":"31357","suppressedMessages":"31358","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31359","messages":"31360","suppressedMessages":"31361","errorCount":2,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"31362","messages":"31363","suppressedMessages":"31364","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31365","messages":"31366","suppressedMessages":"31367","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31368","messages":"31369","suppressedMessages":"31370","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31371","messages":"31372","suppressedMessages":"31373","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31374","messages":"31375","suppressedMessages":"31376","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31377","messages":"31378","suppressedMessages":"31379","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31380","messages":"31381","suppressedMessages":"31382","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31383","messages":"31384","suppressedMessages":"31385","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31386","messages":"31387","suppressedMessages":"31388","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"31389","messages":"31390","suppressedMessages":"31391","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31392","messages":"31393","suppressedMessages":"31394","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31395","messages":"31396","suppressedMessages":"31397","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31398","messages":"31399","suppressedMessages":"31400","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31401","messages":"31402","suppressedMessages":"31403","errorCount":16,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"31404","messages":"31405","suppressedMessages":"31406","errorCount":18,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"31407","messages":"31408","suppressedMessages":"31409","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31410","messages":"31411","suppressedMessages":"31412","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31413","messages":"31414","suppressedMessages":"31415","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31416","messages":"31417","suppressedMessages":"31418","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31419","messages":"31420","suppressedMessages":"31421","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31422","messages":"31423","suppressedMessages":"31424","errorCount":19,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"31425","messages":"31426","suppressedMessages":"31427","errorCount":18,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"31428","messages":"31429","suppressedMessages":"31430","errorCount":22,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"31431","messages":"31432","suppressedMessages":"31433","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31434","messages":"31435","suppressedMessages":"31436","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31437","messages":"31438","suppressedMessages":"31439","errorCount":6,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"31440","messages":"31441","suppressedMessages":"31442","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31443","messages":"31444","suppressedMessages":"31445","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31446","messages":"31447","suppressedMessages":"31448","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31449","messages":"31450","suppressedMessages":"31451","errorCount":20,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"31452","messages":"31453","suppressedMessages":"31454","errorCount":16,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"31455","messages":"31456","suppressedMessages":"31457","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31458","messages":"31459","suppressedMessages":"31460","errorCount":6,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"31461","messages":"31462","suppressedMessages":"31463","errorCount":4,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"31464","messages":"31465","suppressedMessages":"31466","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31467","messages":"31468","suppressedMessages":"31469","errorCount":15,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"31470","messages":"31471","suppressedMessages":"31472","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31473","messages":"31474","suppressedMessages":"31475","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31476","messages":"31477","suppressedMessages":"31478","errorCount":5,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"31479","messages":"31480","suppressedMessages":"31481","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31482","messages":"31483","suppressedMessages":"31484","errorCount":16,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"31485","messages":"31486","suppressedMessages":"31487","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31488","messages":"31489","suppressedMessages":"31490","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"31491","messages":"31492","suppressedMessages":"31493","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31494","messages":"31495","suppressedMessages":"31496","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31497","messages":"31498","suppressedMessages":"31499","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31500","messages":"31501","suppressedMessages":"31502","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31503","messages":"31504","suppressedMessages":"31505","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31506","messages":"31507","suppressedMessages":"31508","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31509","messages":"31510","suppressedMessages":"31511","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31512","messages":"31513","suppressedMessages":"31514","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31515","messages":"31516","suppressedMessages":"31517","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31518","messages":"31519","suppressedMessages":"31520","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31521","messages":"31522","suppressedMessages":"31523","errorCount":12,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"31524","messages":"31525","suppressedMessages":"31526","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31527","messages":"31528","suppressedMessages":"31529","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31530","messages":"31531","suppressedMessages":"31532","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31533","messages":"31534","suppressedMessages":"31535","errorCount":13,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"31536","messages":"31537","suppressedMessages":"31538","errorCount":22,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"31539","messages":"31540","suppressedMessages":"31541","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31542","messages":"31543","suppressedMessages":"31544","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31545","messages":"31546","suppressedMessages":"31547","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31548","messages":"31549","suppressedMessages":"31550","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31551","messages":"31552","suppressedMessages":"31553","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31554","messages":"31555","suppressedMessages":"31556","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31557","messages":"31558","suppressedMessages":"31559","errorCount":13,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"31560","messages":"31561","suppressedMessages":"31562","errorCount":21,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"31563","messages":"31564","suppressedMessages":"31565","errorCount":17,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"31566","messages":"31567","suppressedMessages":"31568","errorCount":6,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"31569","messages":"31570","suppressedMessages":"31571","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31572","messages":"31573","suppressedMessages":"31574","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31575","messages":"31576","suppressedMessages":"31577","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31578","messages":"31579","suppressedMessages":"31580","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31581","messages":"31582","suppressedMessages":"31583","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31584","messages":"31585","suppressedMessages":"31586","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31587","messages":"31588","suppressedMessages":"31589","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31590","messages":"31591","suppressedMessages":"31592","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31593","messages":"31594","suppressedMessages":"31595","errorCount":16,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"31596","messages":"31597","suppressedMessages":"31598","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31599","messages":"31600","suppressedMessages":"31601","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31602","messages":"31603","suppressedMessages":"31604","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31605","messages":"31606","suppressedMessages":"31607","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31608","messages":"31609","suppressedMessages":"31610","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31611","messages":"31612","suppressedMessages":"31613","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31614","messages":"31615","suppressedMessages":"31616","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31617","messages":"31618","suppressedMessages":"31619","errorCount":17,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"31620","messages":"31621","suppressedMessages":"31622","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31623","messages":"31624","suppressedMessages":"31625","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31626","messages":"31627","suppressedMessages":"31628","errorCount":23,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"31629","messages":"31630","suppressedMessages":"31631","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31632","messages":"31633","suppressedMessages":"31634","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31635","messages":"31636","suppressedMessages":"31637","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31638","messages":"31639","suppressedMessages":"31640","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31641","messages":"31642","suppressedMessages":"31643","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31644","messages":"31645","suppressedMessages":"31646","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31647","messages":"31648","suppressedMessages":"31649","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31650","messages":"31651","suppressedMessages":"31652","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31653","messages":"31654","suppressedMessages":"31655","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31656","messages":"31657","suppressedMessages":"31658","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31659","messages":"31660","suppressedMessages":"31661","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31662","messages":"31663","suppressedMessages":"31664","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31665","messages":"31666","suppressedMessages":"31667","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31668","messages":"31669","suppressedMessages":"31670","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31671","messages":"31672","suppressedMessages":"31673","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31674","messages":"31675","suppressedMessages":"31676","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31677","messages":"31678","suppressedMessages":"31679","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31680","messages":"31681","suppressedMessages":"31682","errorCount":2,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"31683","messages":"31684","suppressedMessages":"31685","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31686","messages":"31687","suppressedMessages":"31688","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31689","messages":"31690","suppressedMessages":"31691","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31692","messages":"31693","suppressedMessages":"31694","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31695","messages":"31696","suppressedMessages":"31697","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31698","messages":"31699","suppressedMessages":"31700","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31701","messages":"31702","suppressedMessages":"31703","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31704","messages":"31705","suppressedMessages":"31706","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31707","messages":"31708","suppressedMessages":"31709","errorCount":3,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"31710","messages":"31711","suppressedMessages":"31712","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31713","messages":"31714","suppressedMessages":"31715","errorCount":3,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"31716","messages":"31717","suppressedMessages":"31718","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31719","messages":"31720","suppressedMessages":"31721","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31722","messages":"31723","suppressedMessages":"31724","errorCount":3,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"31725","messages":"31726","suppressedMessages":"31727","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31728","messages":"31729","suppressedMessages":"31730","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31731","messages":"31732","suppressedMessages":"31733","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31734","messages":"31735","suppressedMessages":"31736","errorCount":7,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"31737","messages":"31738","suppressedMessages":"31739","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31740","messages":"31741","suppressedMessages":"31742","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31743","messages":"31744","suppressedMessages":"31745","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31746","messages":"31747","suppressedMessages":"31748","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31749","messages":"31750","suppressedMessages":"31751","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31752","messages":"31753","suppressedMessages":"31754","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31755","messages":"31756","suppressedMessages":"31757","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31758","messages":"31759","suppressedMessages":"31760","errorCount":16,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"31761","messages":"31762","suppressedMessages":"31763","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31764","messages":"31765","suppressedMessages":"31766","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31767","messages":"31768","suppressedMessages":"31769","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31770","messages":"31771","suppressedMessages":"31772","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31773","messages":"31774","suppressedMessages":"31775","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31776","messages":"31777","suppressedMessages":"31778","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31779","messages":"31780","suppressedMessages":"31781","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31782","messages":"31783","suppressedMessages":"31784","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31785","messages":"31786","suppressedMessages":"31787","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31788","messages":"31789","suppressedMessages":"31790","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31791","messages":"31792","suppressedMessages":"31793","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31794","messages":"31795","suppressedMessages":"31796","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31797","messages":"31798","suppressedMessages":"31799","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31800","messages":"31801","suppressedMessages":"31802","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31803","messages":"31804","suppressedMessages":"31805","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31806","messages":"31807","suppressedMessages":"31808","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31809","messages":"31810","suppressedMessages":"31811","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31812","messages":"31813","suppressedMessages":"31814","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31815","messages":"31816","suppressedMessages":"31817","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31818","messages":"31819","suppressedMessages":"31820","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31821","messages":"31822","suppressedMessages":"31823","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31824","messages":"31825","suppressedMessages":"31826","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31827","messages":"31828","suppressedMessages":"31829","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31830","messages":"31831","suppressedMessages":"31832","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31833","messages":"31834","suppressedMessages":"31835","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31836","messages":"31837","suppressedMessages":"31838","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31839","messages":"31840","suppressedMessages":"31841","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31842","messages":"31843","suppressedMessages":"31844","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31845","messages":"31846","suppressedMessages":"31847","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31848","messages":"31849","suppressedMessages":"31850","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31851","messages":"31852","suppressedMessages":"31853","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31854","messages":"31855","suppressedMessages":"31856","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31857","messages":"31858","suppressedMessages":"31859","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31860","messages":"31861","suppressedMessages":"31862","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"31863","messages":"31864","suppressedMessages":"31865","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31866","messages":"31867","suppressedMessages":"31868","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31869","messages":"31870","suppressedMessages":"31871","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31872","messages":"31873","suppressedMessages":"31874","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31875","messages":"31876","suppressedMessages":"31877","errorCount":4,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"31878","messages":"31879","suppressedMessages":"31880","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31881","messages":"31882","suppressedMessages":"31883","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31884","messages":"31885","suppressedMessages":"31886","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31887","messages":"31888","suppressedMessages":"31889","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31890","messages":"31891","suppressedMessages":"31892","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31893","messages":"31894","suppressedMessages":"31895","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31896","messages":"31897","suppressedMessages":"31898","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31899","messages":"31900","suppressedMessages":"31901","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31902","messages":"31903","suppressedMessages":"31904","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31905","messages":"31906","suppressedMessages":"31907","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31908","messages":"31909","suppressedMessages":"31910","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31911","messages":"31912","suppressedMessages":"31913","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31914","messages":"31915","suppressedMessages":"31916","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31917","messages":"31918","suppressedMessages":"31919","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31920","messages":"31921","suppressedMessages":"31922","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31923","messages":"31924","suppressedMessages":"31925","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31926","messages":"31927","suppressedMessages":"31928","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31929","messages":"31930","suppressedMessages":"31931","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31932","messages":"31933","suppressedMessages":"31934","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31935","messages":"31936","suppressedMessages":"31937","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31938","messages":"31939","suppressedMessages":"31940","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31941","messages":"31942","suppressedMessages":"31943","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31944","messages":"31945","suppressedMessages":"31946","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31947","messages":"31948","suppressedMessages":"31949","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31950","messages":"31951","suppressedMessages":"31952","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31953","messages":"31954","suppressedMessages":"31955","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31956","messages":"31957","suppressedMessages":"31958","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31959","messages":"31960","suppressedMessages":"31961","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31962","messages":"31963","suppressedMessages":"31964","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31965","messages":"31966","suppressedMessages":"31967","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31968","messages":"31969","suppressedMessages":"31970","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31971","messages":"31972","suppressedMessages":"31973","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31974","messages":"31975","suppressedMessages":"31976","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31977","messages":"31978","suppressedMessages":"31979","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31980","messages":"31981","suppressedMessages":"31982","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31983","messages":"31984","suppressedMessages":"31985","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31986","messages":"31987","suppressedMessages":"31988","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31989","messages":"31990","suppressedMessages":"31991","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31992","messages":"31993","suppressedMessages":"31994","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31995","messages":"31996","suppressedMessages":"31997","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31998","messages":"31999","suppressedMessages":"32000","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32001","messages":"32002","suppressedMessages":"32003","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32004","messages":"32005","suppressedMessages":"32006","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32007","messages":"32008","suppressedMessages":"32009","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32010","messages":"32011","suppressedMessages":"32012","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32013","messages":"32014","suppressedMessages":"32015","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32016","messages":"32017","suppressedMessages":"32018","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32019","messages":"32020","suppressedMessages":"32021","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32022","messages":"32023","suppressedMessages":"32024","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32025","messages":"32026","suppressedMessages":"32027","errorCount":5,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"32028","messages":"32029","suppressedMessages":"32030","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32031","messages":"32032","suppressedMessages":"32033","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32034","messages":"32035","suppressedMessages":"32036","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32037","messages":"32038","suppressedMessages":"32039","errorCount":2,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"32040","messages":"32041","suppressedMessages":"32042","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32043","messages":"32044","suppressedMessages":"32045","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32046","messages":"32047","suppressedMessages":"32048","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32049","messages":"32050","suppressedMessages":"32051","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32052","messages":"32053","suppressedMessages":"32054","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32055","messages":"32056","suppressedMessages":"32057","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32058","messages":"32059","suppressedMessages":"32060","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32061","messages":"32062","suppressedMessages":"32063","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32064","messages":"32065","suppressedMessages":"32066","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32067","messages":"32068","suppressedMessages":"32069","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32070","messages":"32071","suppressedMessages":"32072","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32073","messages":"32074","suppressedMessages":"32075","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32076","messages":"32077","suppressedMessages":"32078","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32079","messages":"32080","suppressedMessages":"32081","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32082","messages":"32083","suppressedMessages":"32084","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32085","messages":"32086","suppressedMessages":"32087","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32088","messages":"32089","suppressedMessages":"32090","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32091","messages":"32092","suppressedMessages":"32093","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32094","messages":"32095","suppressedMessages":"32096","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32097","messages":"32098","suppressedMessages":"32099","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32100","messages":"32101","suppressedMessages":"32102","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32103","messages":"32104","suppressedMessages":"32105","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32106","messages":"32107","suppressedMessages":"32108","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32109","messages":"32110","suppressedMessages":"32111","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32112","messages":"32113","suppressedMessages":"32114","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32115","messages":"32116","suppressedMessages":"32117","errorCount":3,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"32118","messages":"32119","suppressedMessages":"32120","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32121","messages":"32122","suppressedMessages":"32123","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32124","messages":"32125","suppressedMessages":"32126","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32127","messages":"32128","suppressedMessages":"32129","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32130","messages":"32131","suppressedMessages":"32132","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32133","messages":"32134","suppressedMessages":"32135","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32136","messages":"32137","suppressedMessages":"32138","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32139","messages":"32140","suppressedMessages":"32141","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32142","messages":"32143","suppressedMessages":"32144","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32145","messages":"32146","suppressedMessages":"32147","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32148","messages":"32149","suppressedMessages":"32150","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32151","messages":"32152","suppressedMessages":"32153","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32154","messages":"32155","suppressedMessages":"32156","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32157","messages":"32158","suppressedMessages":"32159","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32160","messages":"32161","suppressedMessages":"32162","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32163","messages":"32164","suppressedMessages":"32165","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32166","messages":"32167","suppressedMessages":"32168","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32169","messages":"32170","suppressedMessages":"32171","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32172","messages":"32173","suppressedMessages":"32174","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32175","messages":"32176","suppressedMessages":"32177","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32178","messages":"32179","suppressedMessages":"32180","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32181","messages":"32182","suppressedMessages":"32183","errorCount":3,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"32184","messages":"32185","suppressedMessages":"32186","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32187","messages":"32188","suppressedMessages":"32189","errorCount":18,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"32190","messages":"32191","suppressedMessages":"32192","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32193","messages":"32194","suppressedMessages":"32195","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32196","messages":"32197","suppressedMessages":"32198","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32199","messages":"32200","suppressedMessages":"32201","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32202","messages":"32203","suppressedMessages":"32204","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32205","messages":"32206","suppressedMessages":"32207","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32208","messages":"32209","suppressedMessages":"32210","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32211","messages":"32212","suppressedMessages":"32213","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32214","messages":"32215","suppressedMessages":"32216","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32217","messages":"32218","suppressedMessages":"32219","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32220","messages":"32221","suppressedMessages":"32222","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32223","messages":"32224","suppressedMessages":"32225","errorCount":10,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"32226","messages":"32227","suppressedMessages":"32228","errorCount":267,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"32229","messages":"32230","suppressedMessages":"32231","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32232","messages":"32233","suppressedMessages":"32234","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32235","messages":"32236","suppressedMessages":"32237","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32238","messages":"32239","suppressedMessages":"32240","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32241","messages":"32242","suppressedMessages":"32243","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"32244","messages":"32245","suppressedMessages":"32246","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32247","messages":"32248","suppressedMessages":"32249","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32250","messages":"32251","suppressedMessages":"32252","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32253","messages":"32254","suppressedMessages":"32255","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32256","messages":"32257","suppressedMessages":"32258","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32259","messages":"32260","suppressedMessages":"32261","errorCount":17,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"32262","messages":"32263","suppressedMessages":"32264","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32265","messages":"32266","suppressedMessages":"32267","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32268","messages":"32269","suppressedMessages":"32270","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32271","messages":"32272","suppressedMessages":"32273","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32274","messages":"32275","suppressedMessages":"32276","errorCount":33,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"32277","messages":"32278","suppressedMessages":"32279","errorCount":17,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"32280","messages":"32281","suppressedMessages":"32282","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32283","messages":"32284","suppressedMessages":"32285","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32286","messages":"32287","suppressedMessages":"32288","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32289","messages":"32290","suppressedMessages":"32291","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32292","messages":"32293","suppressedMessages":"32294","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32295","messages":"32296","suppressedMessages":"32297","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32298","messages":"32299","suppressedMessages":"32300","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32301","messages":"32302","suppressedMessages":"32303","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32304","messages":"32305","suppressedMessages":"32306","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32307","messages":"32308","suppressedMessages":"32309","errorCount":10,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"32310","messages":"32311","suppressedMessages":"32312","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32313","messages":"32314","suppressedMessages":"32315","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32316","messages":"32317","suppressedMessages":"32318","errorCount":4,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"32319","messages":"32320","suppressedMessages":"32321","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32322","messages":"32323","suppressedMessages":"32324","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32325","messages":"32326","suppressedMessages":"32327","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32328","messages":"32329","suppressedMessages":"32330","errorCount":3,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"32331","messages":"32332","suppressedMessages":"32333","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32334","messages":"32335","suppressedMessages":"32336","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32337","messages":"32338","suppressedMessages":"32339","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32340","messages":"32341","suppressedMessages":"32342","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32343","messages":"32344","suppressedMessages":"32345","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32346","messages":"32347","suppressedMessages":"32348","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32349","messages":"32350","suppressedMessages":"32351","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32352","messages":"32353","suppressedMessages":"32354","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32355","messages":"32356","suppressedMessages":"32357","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32358","messages":"32359","suppressedMessages":"32360","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32361","messages":"32362","suppressedMessages":"32363","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"32364","messages":"32365","suppressedMessages":"32366","errorCount":5,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"32367","messages":"32368","suppressedMessages":"32369","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32370","messages":"32371","suppressedMessages":"32372","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32373","messages":"32374","suppressedMessages":"32375","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32376","messages":"32377","suppressedMessages":"32378","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32379","messages":"32380","suppressedMessages":"32381","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32382","messages":"32383","suppressedMessages":"32384","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32385","messages":"32386","suppressedMessages":"32387","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32388","messages":"32389","suppressedMessages":"32390","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32391","messages":"32392","suppressedMessages":"32393","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32394","messages":"32395","suppressedMessages":"32396","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32397","messages":"32398","suppressedMessages":"32399","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32400","messages":"32401","suppressedMessages":"32402","errorCount":3,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"32403","messages":"32404","suppressedMessages":"32405","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32406","messages":"32407","suppressedMessages":"32408","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32409","messages":"32410","suppressedMessages":"32411","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32412","messages":"32413","suppressedMessages":"32414","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32415","messages":"32416","suppressedMessages":"32417","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32418","messages":"32419","suppressedMessages":"32420","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32421","messages":"32422","suppressedMessages":"32423","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32424","messages":"32425","suppressedMessages":"32426","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32427","messages":"32428","suppressedMessages":"32429","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32430","messages":"32431","suppressedMessages":"32432","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32433","messages":"32434","suppressedMessages":"32435","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32436","messages":"32437","suppressedMessages":"32438","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32439","messages":"32440","suppressedMessages":"32441","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32442","messages":"32443","suppressedMessages":"32444","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32445","messages":"32446","suppressedMessages":"32447","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32448","messages":"32449","suppressedMessages":"32450","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32451","messages":"32452","suppressedMessages":"32453","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32454","messages":"32455","suppressedMessages":"32456","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32457","messages":"32458","suppressedMessages":"32459","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32460","messages":"32461","suppressedMessages":"32462","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32463","messages":"32464","suppressedMessages":"32465","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32466","messages":"32467","suppressedMessages":"32468","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32469","messages":"32470","suppressedMessages":"32471","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32472","messages":"32473","suppressedMessages":"32474","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32475","messages":"32476","suppressedMessages":"32477","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32478","messages":"32479","suppressedMessages":"32480","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32481","messages":"32482","suppressedMessages":"32483","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32484","messages":"32485","suppressedMessages":"32486","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32487","messages":"32488","suppressedMessages":"32489","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32490","messages":"32491","suppressedMessages":"32492","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32493","messages":"32494","suppressedMessages":"32495","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32496","messages":"32497","suppressedMessages":"32498","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32499","messages":"32500","suppressedMessages":"32501","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32502","messages":"32503","suppressedMessages":"32504","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32505","messages":"32506","suppressedMessages":"32507","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32508","messages":"32509","suppressedMessages":"32510","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32511","messages":"32512","suppressedMessages":"32513","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32514","messages":"32515","suppressedMessages":"32516","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32517","messages":"32518","suppressedMessages":"32519","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32520","messages":"32521","suppressedMessages":"32522","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32523","messages":"32524","suppressedMessages":"32525","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32526","messages":"32527","suppressedMessages":"32528","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32529","messages":"32530","suppressedMessages":"32531","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32532","messages":"32533","suppressedMessages":"32534","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32535","messages":"32536","suppressedMessages":"32537","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32538","messages":"32539","suppressedMessages":"32540","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32541","messages":"32542","suppressedMessages":"32543","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32544","messages":"32545","suppressedMessages":"32546","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32547","messages":"32548","suppressedMessages":"32549","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32550","messages":"32551","suppressedMessages":"32552","errorCount":16,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"32553","messages":"32554","suppressedMessages":"32555","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32556","messages":"32557","suppressedMessages":"32558","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32559","messages":"32560","suppressedMessages":"32561","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32562","messages":"32563","suppressedMessages":"32564","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32565","messages":"32566","suppressedMessages":"32567","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32568","messages":"32569","suppressedMessages":"32570","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32571","messages":"32572","suppressedMessages":"32573","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32574","messages":"32575","suppressedMessages":"32576","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32577","messages":"32578","suppressedMessages":"32579","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32580","messages":"32581","suppressedMessages":"32582","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32583","messages":"32584","suppressedMessages":"32585","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32586","messages":"32587","suppressedMessages":"32588","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32589","messages":"32590","suppressedMessages":"32591","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32592","messages":"32593","suppressedMessages":"32594","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32595","messages":"32596","suppressedMessages":"32597","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32598","messages":"32599","suppressedMessages":"32600","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"32601","messages":"32602","suppressedMessages":"32603","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32604","messages":"32605","suppressedMessages":"32606","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32607","messages":"32608","suppressedMessages":"32609","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32610","messages":"32611","suppressedMessages":"32612","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32613","messages":"32614","suppressedMessages":"32615","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32616","messages":"32617","suppressedMessages":"32618","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32619","messages":"32620","suppressedMessages":"32621","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32622","messages":"32623","suppressedMessages":"32624","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32625","messages":"32626","suppressedMessages":"32627","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32628","messages":"32629","suppressedMessages":"32630","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32631","messages":"32632","suppressedMessages":"32633","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32634","messages":"32635","suppressedMessages":"32636","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32637","messages":"32638","suppressedMessages":"32639","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32640","messages":"32641","suppressedMessages":"32642","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32643","messages":"32644","suppressedMessages":"32645","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32646","messages":"32647","suppressedMessages":"32648","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32649","messages":"32650","suppressedMessages":"32651","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32652","messages":"32653","suppressedMessages":"32654","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32655","messages":"32656","suppressedMessages":"32657","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32658","messages":"32659","suppressedMessages":"32660","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32661","messages":"32662","suppressedMessages":"32663","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32664","messages":"32665","suppressedMessages":"32666","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32667","messages":"32668","suppressedMessages":"32669","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32670","messages":"32671","suppressedMessages":"32672","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32673","messages":"32674","suppressedMessages":"32675","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32676","messages":"32677","suppressedMessages":"32678","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32679","messages":"32680","suppressedMessages":"32681","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32682","messages":"32683","suppressedMessages":"32684","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32685","messages":"32686","suppressedMessages":"32687","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32688","messages":"32689","suppressedMessages":"32690","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32691","messages":"32692","suppressedMessages":"32693","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32694","messages":"32695","suppressedMessages":"32696","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32697","messages":"32698","suppressedMessages":"32699","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32700","messages":"32701","suppressedMessages":"32702","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32703","messages":"32704","suppressedMessages":"32705","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32706","messages":"32707","suppressedMessages":"32708","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32709","messages":"32710","suppressedMessages":"32711","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32712","messages":"32713","suppressedMessages":"32714","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32715","messages":"32716","suppressedMessages":"32717","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32718","messages":"32719","suppressedMessages":"32720","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32721","messages":"32722","suppressedMessages":"32723","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32724","messages":"32725","suppressedMessages":"32726","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32727","messages":"32728","suppressedMessages":"32729","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32730","messages":"32731","suppressedMessages":"32732","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32733","messages":"32734","suppressedMessages":"32735","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32736","messages":"32737","suppressedMessages":"32738","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32739","messages":"32740","suppressedMessages":"32741","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32742","messages":"32743","suppressedMessages":"32744","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32745","messages":"32746","suppressedMessages":"32747","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32748","messages":"32749","suppressedMessages":"32750","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32751","messages":"32752","suppressedMessages":"32753","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32754","messages":"32755","suppressedMessages":"32756","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32757","messages":"32758","suppressedMessages":"32759","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32760","messages":"32761","suppressedMessages":"32762","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32763","messages":"32764","suppressedMessages":"32765","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32766","messages":"32767","suppressedMessages":"32768","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32769","messages":"32770","suppressedMessages":"32771","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32772","messages":"32773","suppressedMessages":"32774","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32775","messages":"32776","suppressedMessages":"32777","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32778","messages":"32779","suppressedMessages":"32780","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32781","messages":"32782","suppressedMessages":"32783","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32784","messages":"32785","suppressedMessages":"32786","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32787","messages":"32788","suppressedMessages":"32789","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32790","messages":"32791","suppressedMessages":"32792","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32793","messages":"32794","suppressedMessages":"32795","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32796","messages":"32797","suppressedMessages":"32798","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32799","messages":"32800","suppressedMessages":"32801","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32802","messages":"32803","suppressedMessages":"32804","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32805","messages":"32806","suppressedMessages":"32807","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32808","messages":"32809","suppressedMessages":"32810","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32811","messages":"32812","suppressedMessages":"32813","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32814","messages":"32815","suppressedMessages":"32816","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32817","messages":"32818","suppressedMessages":"32819","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32820","messages":"32821","suppressedMessages":"32822","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32823","messages":"32824","suppressedMessages":"32825","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32826","messages":"32827","suppressedMessages":"32828","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32829","messages":"32830","suppressedMessages":"32831","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32832","messages":"32833","suppressedMessages":"32834","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32835","messages":"32836","suppressedMessages":"32837","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32838","messages":"32839","suppressedMessages":"32840","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32841","messages":"32842","suppressedMessages":"32843","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32844","messages":"32845","suppressedMessages":"32846","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32847","messages":"32848","suppressedMessages":"32849","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32850","messages":"32851","suppressedMessages":"32852","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32853","messages":"32854","suppressedMessages":"32855","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32856","messages":"32857","suppressedMessages":"32858","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32859","messages":"32860","suppressedMessages":"32861","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32862","messages":"32863","suppressedMessages":"32864","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32865","messages":"32866","suppressedMessages":"32867","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32868","messages":"32869","suppressedMessages":"32870","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32871","messages":"32872","suppressedMessages":"32873","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32874","messages":"32875","suppressedMessages":"32876","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32877","messages":"32878","suppressedMessages":"32879","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32880","messages":"32881","suppressedMessages":"32882","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32883","messages":"32884","suppressedMessages":"32885","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32886","messages":"32887","suppressedMessages":"32888","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32889","messages":"32890","suppressedMessages":"32891","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32892","messages":"32893","suppressedMessages":"32894","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32895","messages":"32896","suppressedMessages":"32897","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32898","messages":"32899","suppressedMessages":"32900","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32901","messages":"32902","suppressedMessages":"32903","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32904","messages":"32905","suppressedMessages":"32906","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32907","messages":"32908","suppressedMessages":"32909","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32910","messages":"32911","suppressedMessages":"32912","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32913","messages":"32914","suppressedMessages":"32915","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32916","messages":"32917","suppressedMessages":"32918","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32919","messages":"32920","suppressedMessages":"32921","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32922","messages":"32923","suppressedMessages":"32924","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32925","messages":"32926","suppressedMessages":"32927","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32928","messages":"32929","suppressedMessages":"32930","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32931","messages":"32932","suppressedMessages":"32933","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32934","messages":"32935","suppressedMessages":"32936","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32937","messages":"32938","suppressedMessages":"32939","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32940","messages":"32941","suppressedMessages":"32942","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32943","messages":"32944","suppressedMessages":"32945","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32946","messages":"32947","suppressedMessages":"32948","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32949","messages":"32950","suppressedMessages":"32951","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32952","messages":"32953","suppressedMessages":"32954","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32955","messages":"32956","suppressedMessages":"32957","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32958","messages":"32959","suppressedMessages":"32960","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32961","messages":"32962","suppressedMessages":"32963","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32964","messages":"32965","suppressedMessages":"32966","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32967","messages":"32968","suppressedMessages":"32969","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32970","messages":"32971","suppressedMessages":"32972","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32973","messages":"32974","suppressedMessages":"32975","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32976","messages":"32977","suppressedMessages":"32978","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32979","messages":"32980","suppressedMessages":"32981","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32982","messages":"32983","suppressedMessages":"32984","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32985","messages":"32986","suppressedMessages":"32987","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32988","messages":"32989","suppressedMessages":"32990","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32991","messages":"32992","suppressedMessages":"32993","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32994","messages":"32995","suppressedMessages":"32996","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32997","messages":"32998","suppressedMessages":"32999","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33000","messages":"33001","suppressedMessages":"33002","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33003","messages":"33004","suppressedMessages":"33005","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33006","messages":"33007","suppressedMessages":"33008","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33009","messages":"33010","suppressedMessages":"33011","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33012","messages":"33013","suppressedMessages":"33014","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33015","messages":"33016","suppressedMessages":"33017","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33018","messages":"33019","suppressedMessages":"33020","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33021","messages":"33022","suppressedMessages":"33023","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33024","messages":"33025","suppressedMessages":"33026","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33027","messages":"33028","suppressedMessages":"33029","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33030","messages":"33031","suppressedMessages":"33032","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33033","messages":"33034","suppressedMessages":"33035","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33036","messages":"33037","suppressedMessages":"33038","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33039","messages":"33040","suppressedMessages":"33041","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33042","messages":"33043","suppressedMessages":"33044","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33045","messages":"33046","suppressedMessages":"33047","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33048","messages":"33049","suppressedMessages":"33050","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33051","messages":"33052","suppressedMessages":"33053","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33054","messages":"33055","suppressedMessages":"33056","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33057","messages":"33058","suppressedMessages":"33059","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33060","messages":"33061","suppressedMessages":"33062","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33063","messages":"33064","suppressedMessages":"33065","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33066","messages":"33067","suppressedMessages":"33068","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33069","messages":"33070","suppressedMessages":"33071","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33072","messages":"33073","suppressedMessages":"33074","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33075","messages":"33076","suppressedMessages":"33077","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33078","messages":"33079","suppressedMessages":"33080","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33081","messages":"33082","suppressedMessages":"33083","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33084","messages":"33085","suppressedMessages":"33086","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33087","messages":"33088","suppressedMessages":"33089","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33090","messages":"33091","suppressedMessages":"33092","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33093","messages":"33094","suppressedMessages":"33095","errorCount":10,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"33096","messages":"33097","suppressedMessages":"33098","errorCount":5,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"33099","messages":"33100","suppressedMessages":"33101","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33102","messages":"33103","suppressedMessages":"33104","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33105","messages":"33106","suppressedMessages":"33107","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33108","messages":"33109","suppressedMessages":"33110","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33111","messages":"33112","suppressedMessages":"33113","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33114","messages":"33115","suppressedMessages":"33116","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33117","messages":"33118","suppressedMessages":"33119","errorCount":4,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"33120","messages":"33121","suppressedMessages":"33122","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33123","messages":"33124","suppressedMessages":"33125","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33126","messages":"33127","suppressedMessages":"33128","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33129","messages":"33130","suppressedMessages":"33131","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33132","messages":"33133","suppressedMessages":"33134","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33135","messages":"33136","suppressedMessages":"33137","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33138","messages":"33139","suppressedMessages":"33140","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33141","messages":"33142","suppressedMessages":"33143","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33144","messages":"33145","suppressedMessages":"33146","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33147","messages":"33148","suppressedMessages":"33149","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33150","messages":"33151","suppressedMessages":"33152","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33153","messages":"33154","suppressedMessages":"33155","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33156","messages":"33157","suppressedMessages":"33158","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33159","messages":"33160","suppressedMessages":"33161","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33162","messages":"33163","suppressedMessages":"33164","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33165","messages":"33166","suppressedMessages":"33167","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33168","messages":"33169","suppressedMessages":"33170","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33171","messages":"33172","suppressedMessages":"33173","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33174","messages":"33175","suppressedMessages":"33176","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33177","messages":"33178","suppressedMessages":"33179","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33180","messages":"33181","suppressedMessages":"33182","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33183","messages":"33184","suppressedMessages":"33185","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33186","messages":"33187","suppressedMessages":"33188","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33189","messages":"33190","suppressedMessages":"33191","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33192","messages":"33193","suppressedMessages":"33194","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33195","messages":"33196","suppressedMessages":"33197","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33198","messages":"33199","suppressedMessages":"33200","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33201","messages":"33202","suppressedMessages":"33203","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33204","messages":"33205","suppressedMessages":"33206","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33207","messages":"33208","suppressedMessages":"33209","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33210","messages":"33211","suppressedMessages":"33212","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33213","messages":"33214","suppressedMessages":"33215","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33216","messages":"33217","suppressedMessages":"33218","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33219","messages":"33220","suppressedMessages":"33221","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33222","messages":"33223","suppressedMessages":"33224","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33225","messages":"33226","suppressedMessages":"33227","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33228","messages":"33229","suppressedMessages":"33230","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33231","messages":"33232","suppressedMessages":"33233","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33234","messages":"33235","suppressedMessages":"33236","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33237","messages":"33238","suppressedMessages":"33239","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33240","messages":"33241","suppressedMessages":"33242","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33243","messages":"33244","suppressedMessages":"33245","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33246","messages":"33247","suppressedMessages":"33248","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33249","messages":"33250","suppressedMessages":"33251","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33252","messages":"33253","suppressedMessages":"33254","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33255","messages":"33256","suppressedMessages":"33257","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33258","messages":"33259","suppressedMessages":"33260","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"33261","messages":"33262","suppressedMessages":"33263","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33264","messages":"33265","suppressedMessages":"33266","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33267","messages":"33268","suppressedMessages":"33269","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33270","messages":"33271","suppressedMessages":"33272","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33273","messages":"33274","suppressedMessages":"33275","errorCount":6,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"33276","messages":"33277","suppressedMessages":"33278","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33279","messages":"33280","suppressedMessages":"33281","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33282","messages":"33283","suppressedMessages":"33284","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33285","messages":"33286","suppressedMessages":"33287","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33288","messages":"33289","suppressedMessages":"33290","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33291","messages":"33292","suppressedMessages":"33293","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33294","messages":"33295","suppressedMessages":"33296","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33297","messages":"33298","suppressedMessages":"33299","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33300","messages":"33301","suppressedMessages":"33302","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33303","messages":"33304","suppressedMessages":"33305","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33306","messages":"33307","suppressedMessages":"33308","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33309","messages":"33310","suppressedMessages":"33311","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33312","messages":"33313","suppressedMessages":"33314","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33315","messages":"33316","suppressedMessages":"33317","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33318","messages":"33319","suppressedMessages":"33320","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33321","messages":"33322","suppressedMessages":"33323","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33324","messages":"33325","suppressedMessages":"33326","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33327","messages":"33328","suppressedMessages":"33329","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33330","messages":"33331","suppressedMessages":"33332","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33333","messages":"33334","suppressedMessages":"33335","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33336","messages":"33337","suppressedMessages":"33338","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33339","messages":"33340","suppressedMessages":"33341","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33342","messages":"33343","suppressedMessages":"33344","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33345","messages":"33346","suppressedMessages":"33347","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33348","messages":"33349","suppressedMessages":"33350","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33351","messages":"33352","suppressedMessages":"33353","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33354","messages":"33355","suppressedMessages":"33356","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33357","messages":"33358","suppressedMessages":"33359","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33360","messages":"33361","suppressedMessages":"33362","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33363","messages":"33364","suppressedMessages":"33365","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33366","messages":"33367","suppressedMessages":"33368","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33369","messages":"33370","suppressedMessages":"33371","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33372","messages":"33373","suppressedMessages":"33374","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33375","messages":"33376","suppressedMessages":"33377","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33378","messages":"33379","suppressedMessages":"33380","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33381","messages":"33382","suppressedMessages":"33383","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33384","messages":"33385","suppressedMessages":"33386","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33387","messages":"33388","suppressedMessages":"33389","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33390","messages":"33391","suppressedMessages":"33392","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33393","messages":"33394","suppressedMessages":"33395","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33396","messages":"33397","suppressedMessages":"33398","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33399","messages":"33400","suppressedMessages":"33401","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33402","messages":"33403","suppressedMessages":"33404","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33405","messages":"33406","suppressedMessages":"33407","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33408","messages":"33409","suppressedMessages":"33410","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33411","messages":"33412","suppressedMessages":"33413","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33414","messages":"33415","suppressedMessages":"33416","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33417","messages":"33418","suppressedMessages":"33419","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33420","messages":"33421","suppressedMessages":"33422","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33423","messages":"33424","suppressedMessages":"33425","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33426","messages":"33427","suppressedMessages":"33428","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33429","messages":"33430","suppressedMessages":"33431","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33432","messages":"33433","suppressedMessages":"33434","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33435","messages":"33436","suppressedMessages":"33437","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33438","messages":"33439","suppressedMessages":"33440","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33441","messages":"33442","suppressedMessages":"33443","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33444","messages":"33445","suppressedMessages":"33446","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33447","messages":"33448","suppressedMessages":"33449","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33450","messages":"33451","suppressedMessages":"33452","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33453","messages":"33454","suppressedMessages":"33455","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33456","messages":"33457","suppressedMessages":"33458","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33459","messages":"33460","suppressedMessages":"33461","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"33462","messages":"33463","suppressedMessages":"33464","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"33465","messages":"33466","suppressedMessages":"33467","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"33468","messages":"33469","suppressedMessages":"33470","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33471","messages":"33472","suppressedMessages":"33473","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33474","messages":"33475","suppressedMessages":"33476","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33477","messages":"33478","suppressedMessages":"33479","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33480","messages":"33481","suppressedMessages":"33482","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33483","messages":"33484","suppressedMessages":"33485","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33486","messages":"33487","suppressedMessages":"33488","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33489","messages":"33490","suppressedMessages":"33491","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33492","messages":"33493","suppressedMessages":"33494","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33495","messages":"33496","suppressedMessages":"33497","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33498","messages":"33499","suppressedMessages":"33500","errorCount":9,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"33501","messages":"33502","suppressedMessages":"33503","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33504","messages":"33505","suppressedMessages":"33506","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33507","messages":"33508","suppressedMessages":"33509","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33510","messages":"33511","suppressedMessages":"33512","errorCount":5,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"33513","messages":"33514","suppressedMessages":"33515","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33516","messages":"33517","suppressedMessages":"33518","errorCount":7,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"33519","messages":"33520","suppressedMessages":"33521","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33522","messages":"33523","suppressedMessages":"33524","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33525","messages":"33526","suppressedMessages":"33527","errorCount":4,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"33528","messages":"33529","suppressedMessages":"33530","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33531","messages":"33532","suppressedMessages":"33533","errorCount":4,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"33534","messages":"33535","suppressedMessages":"33536","errorCount":5,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"33537","messages":"33538","suppressedMessages":"33539","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33540","messages":"33541","suppressedMessages":"33542","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33543","messages":"33544","suppressedMessages":"33545","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33546","messages":"33547","suppressedMessages":"33548","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"33549","messages":"33550","suppressedMessages":"33551","errorCount":29,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"33552","messages":"33553","suppressedMessages":"33554","errorCount":7,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"33555","messages":"33556","suppressedMessages":"33557","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33558","messages":"33559","suppressedMessages":"33560","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33561","messages":"33562","suppressedMessages":"33563","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33564","messages":"33565","suppressedMessages":"33566","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"33567","messages":"33568","suppressedMessages":"33569","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"33570","messages":"33571","suppressedMessages":"33572","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33573","messages":"33574","suppressedMessages":"33575","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33576","messages":"33577","suppressedMessages":"33578","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33579","messages":"33580","suppressedMessages":"33581","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33582","messages":"33583","suppressedMessages":"33584","errorCount":12,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"33585","messages":"33586","suppressedMessages":"33587","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33588","messages":"33589","suppressedMessages":"33590","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33591","messages":"33592","suppressedMessages":"33593","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"33594","messages":"33595","suppressedMessages":"33596","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33597","messages":"33598","suppressedMessages":"33599","errorCount":2,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"33600","messages":"33601","suppressedMessages":"33602","errorCount":5,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"33603","messages":"33604","suppressedMessages":"33605","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33606","messages":"33607","suppressedMessages":"33608","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"33609","messages":"33610","suppressedMessages":"33611","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33612","messages":"33613","suppressedMessages":"33614","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33615","messages":"33616","suppressedMessages":"33617","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33618","messages":"33619","suppressedMessages":"33620","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"33621","messages":"33622","suppressedMessages":"33623","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33624","messages":"33625","suppressedMessages":"33626","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33627","messages":"33628","suppressedMessages":"33629","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33630","messages":"33631","suppressedMessages":"33632","errorCount":18,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"33633","messages":"33634","suppressedMessages":"33635","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33636","messages":"33637","suppressedMessages":"33638","errorCount":6,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"33639","messages":"33640","suppressedMessages":"33641","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33642","messages":"33643","suppressedMessages":"33644","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33645","messages":"33646","suppressedMessages":"33647","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"33648","messages":"33649","suppressedMessages":"33650","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33651","messages":"33652","suppressedMessages":"33653","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"33654","messages":"33655","suppressedMessages":"33656","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33657","messages":"33658","suppressedMessages":"33659","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"33660","messages":"33661","suppressedMessages":"33662","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33663","messages":"33664","suppressedMessages":"33665","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33666","messages":"33667","suppressedMessages":"33668","errorCount":8,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"33669","messages":"33670","suppressedMessages":"33671","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33672","messages":"33673","suppressedMessages":"33674","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33675","messages":"33676","suppressedMessages":"33677","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"33678","messages":"33679","suppressedMessages":"33680","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33681","messages":"33682","suppressedMessages":"33683","errorCount":20,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"33684","messages":"33685","suppressedMessages":"33686","errorCount":7,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"33687","messages":"33688","suppressedMessages":"33689","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33690","messages":"33691","suppressedMessages":"33692","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33693","messages":"33694","suppressedMessages":"33695","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33696","messages":"33697","suppressedMessages":"33698","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33699","messages":"33700","suppressedMessages":"33701","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33702","messages":"33703","suppressedMessages":"33704","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33705","messages":"33706","suppressedMessages":"33707","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33708","messages":"33709","suppressedMessages":"33710","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33711","messages":"33712","suppressedMessages":"33713","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33714","messages":"33715","suppressedMessages":"33716","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33717","messages":"33718","suppressedMessages":"33719","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33720","messages":"33721","suppressedMessages":"33722","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33723","messages":"33724","suppressedMessages":"33725","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33726","messages":"33727","suppressedMessages":"33728","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33729","messages":"33730","suppressedMessages":"33731","errorCount":8,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"33732","messages":"33733","suppressedMessages":"33734","errorCount":4,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"33735","messages":"33736","suppressedMessages":"33737","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33738","messages":"33739","suppressedMessages":"33740","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33741","messages":"33742","suppressedMessages":"33743","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33744","messages":"33745","suppressedMessages":"33746","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33747","messages":"33748","suppressedMessages":"33749","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33750","messages":"33751","suppressedMessages":"33752","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33753","messages":"33754","suppressedMessages":"33755","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33756","messages":"33757","suppressedMessages":"33758","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33759","messages":"33760","suppressedMessages":"33761","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33762","messages":"33763","suppressedMessages":"33764","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33765","messages":"33766","suppressedMessages":"33767","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33768","messages":"33769","suppressedMessages":"33770","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33771","messages":"33772","suppressedMessages":"33773","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33774","messages":"33775","suppressedMessages":"33776","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33777","messages":"33778","suppressedMessages":"33779","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33780","messages":"33781","suppressedMessages":"33782","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33783","messages":"33784","suppressedMessages":"33785","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33786","messages":"33787","suppressedMessages":"33788","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33789","messages":"33790","suppressedMessages":"33791","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33792","messages":"33793","suppressedMessages":"33794","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33795","messages":"33796","suppressedMessages":"33797","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33798","messages":"33799","suppressedMessages":"33800","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33801","messages":"33802","suppressedMessages":"33803","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33804","messages":"33805","suppressedMessages":"33806","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33807","messages":"33808","suppressedMessages":"33809","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33810","messages":"33811","suppressedMessages":"33812","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33813","messages":"33814","suppressedMessages":"33815","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33816","messages":"33817","suppressedMessages":"33818","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33819","messages":"33820","suppressedMessages":"33821","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33822","messages":"33823","suppressedMessages":"33824","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33825","messages":"33826","suppressedMessages":"33827","errorCount":4,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"33828","messages":"33829","suppressedMessages":"33830","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33831","messages":"33832","suppressedMessages":"33833","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33834","messages":"33835","suppressedMessages":"33836","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33837","messages":"33838","suppressedMessages":"33839","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33840","messages":"33841","suppressedMessages":"33842","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33843","messages":"33844","suppressedMessages":"33845","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33846","messages":"33847","suppressedMessages":"33848","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33849","messages":"33850","suppressedMessages":"33851","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33852","messages":"33853","suppressedMessages":"33854","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33855","messages":"33856","suppressedMessages":"33857","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33858","messages":"33859","suppressedMessages":"33860","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33861","messages":"33862","suppressedMessages":"33863","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"33864","messages":"33865","suppressedMessages":"33866","errorCount":3,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"33867","messages":"33868","suppressedMessages":"33869","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33870","messages":"33871","suppressedMessages":"33872","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"33873","messages":"33874","suppressedMessages":"33875","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"33876","messages":"33877","suppressedMessages":"33878","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33879","messages":"33880","suppressedMessages":"33881","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33882","messages":"33883","suppressedMessages":"33884","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33885","messages":"33886","suppressedMessages":"33887","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33888","messages":"33889","suppressedMessages":"33890","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33891","messages":"33892","suppressedMessages":"33893","errorCount":8,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"33894","messages":"33895","suppressedMessages":"33896","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33897","messages":"33898","suppressedMessages":"33899","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33900","messages":"33901","suppressedMessages":"33902","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33903","messages":"33904","suppressedMessages":"33905","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33906","messages":"33907","suppressedMessages":"33908","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33909","messages":"33910","suppressedMessages":"33911","errorCount":2,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"33912","messages":"33913","suppressedMessages":"33914","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33915","messages":"33916","suppressedMessages":"33917","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33918","messages":"33919","suppressedMessages":"33920","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33921","messages":"33922","suppressedMessages":"33923","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33924","messages":"33925","suppressedMessages":"33926","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33927","messages":"33928","suppressedMessages":"33929","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33930","messages":"33931","suppressedMessages":"33932","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33933","messages":"33934","suppressedMessages":"33935","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33936","messages":"33937","suppressedMessages":"33938","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33939","messages":"33940","suppressedMessages":"33941","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33942","messages":"33943","suppressedMessages":"33944","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33945","messages":"33946","suppressedMessages":"33947","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33948","messages":"33949","suppressedMessages":"33950","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33951","messages":"33952","suppressedMessages":"33953","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33954","messages":"33955","suppressedMessages":"33956","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33957","messages":"33958","suppressedMessages":"33959","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33960","messages":"33961","suppressedMessages":"33962","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33963","messages":"33964","suppressedMessages":"33965","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33966","messages":"33967","suppressedMessages":"33968","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33969","messages":"33970","suppressedMessages":"33971","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33972","messages":"33973","suppressedMessages":"33974","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33975","messages":"33976","suppressedMessages":"33977","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33978","messages":"33979","suppressedMessages":"33980","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"33981","messages":"33982","suppressedMessages":"33983","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33984","messages":"33985","suppressedMessages":"33986","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33987","messages":"33988","suppressedMessages":"33989","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33990","messages":"33991","suppressedMessages":"33992","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33993","messages":"33994","suppressedMessages":"33995","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33996","messages":"33997","suppressedMessages":"33998","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33999","messages":"34000","suppressedMessages":"34001","errorCount":8,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"34002","messages":"34003","suppressedMessages":"34004","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34005","messages":"34006","suppressedMessages":"34007","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34008","messages":"34009","suppressedMessages":"34010","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34011","messages":"34012","suppressedMessages":"34013","errorCount":3,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"34014","messages":"34015","suppressedMessages":"34016","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34017","messages":"34018","suppressedMessages":"34019","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34020","messages":"34021","suppressedMessages":"34022","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34023","messages":"34024","suppressedMessages":"34025","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34026","messages":"34027","suppressedMessages":"34028","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34029","messages":"34030","suppressedMessages":"34031","errorCount":19,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"34032","messages":"34033","suppressedMessages":"34034","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34035","messages":"34036","suppressedMessages":"34037","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34038","messages":"34039","suppressedMessages":"34040","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34041","messages":"34042","suppressedMessages":"34043","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34044","messages":"34045","suppressedMessages":"34046","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34047","messages":"34048","suppressedMessages":"34049","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34050","messages":"34051","suppressedMessages":"34052","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34053","messages":"34054","suppressedMessages":"34055","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34056","messages":"34057","suppressedMessages":"34058","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34059","messages":"34060","suppressedMessages":"34061","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34062","messages":"34063","suppressedMessages":"34064","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34065","messages":"34066","suppressedMessages":"34067","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34068","messages":"34069","suppressedMessages":"34070","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34071","messages":"34072","suppressedMessages":"34073","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"34074","messages":"34075","suppressedMessages":"34076","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34077","messages":"34078","suppressedMessages":"34079","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34080","messages":"34081","suppressedMessages":"34082","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34083","messages":"34084","suppressedMessages":"34085","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34086","messages":"34087","suppressedMessages":"34088","errorCount":5,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"34089","messages":"34090","suppressedMessages":"34091","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34092","messages":"34093","suppressedMessages":"34094","errorCount":3,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"34095","messages":"34096","suppressedMessages":"34097","errorCount":4,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"34098","messages":"34099","suppressedMessages":"34100","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34101","messages":"34102","suppressedMessages":"34103","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34104","messages":"34105","suppressedMessages":"34106","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34107","messages":"34108","suppressedMessages":"34109","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34110","messages":"34111","suppressedMessages":"34112","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34113","messages":"34114","suppressedMessages":"34115","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34116","messages":"34117","suppressedMessages":"34118","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34119","messages":"34120","suppressedMessages":"34121","errorCount":42,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"34122","messages":"34123","suppressedMessages":"34124","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34125","messages":"34126","suppressedMessages":"34127","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34128","messages":"34129","suppressedMessages":"34130","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34131","messages":"34132","suppressedMessages":"34133","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34134","messages":"34135","suppressedMessages":"34136","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34137","messages":"34138","suppressedMessages":"34139","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34140","messages":"34141","suppressedMessages":"34142","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34143","messages":"34144","suppressedMessages":"34145","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34146","messages":"34147","suppressedMessages":"34148","errorCount":7,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"34149","messages":"34150","suppressedMessages":"34151","errorCount":4,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"34152","messages":"34153","suppressedMessages":"34154","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34155","messages":"34156","suppressedMessages":"34157","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34158","messages":"34159","suppressedMessages":"34160","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34161","messages":"34162","suppressedMessages":"34163","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34164","messages":"34165","suppressedMessages":"34166","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34167","messages":"34168","suppressedMessages":"34169","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34170","messages":"34171","suppressedMessages":"34172","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34173","messages":"34174","suppressedMessages":"34175","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34176","messages":"34177","suppressedMessages":"34178","errorCount":2,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"34179","messages":"34180","suppressedMessages":"34181","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34182","messages":"34183","suppressedMessages":"34184","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34185","messages":"34186","suppressedMessages":"34187","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34188","messages":"34189","suppressedMessages":"34190","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34191","messages":"34192","suppressedMessages":"34193","errorCount":4,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"34194","messages":"34195","suppressedMessages":"34196","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34197","messages":"34198","suppressedMessages":"34199","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34200","messages":"34201","suppressedMessages":"34202","errorCount":40,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"34203","messages":"34204","suppressedMessages":"34205","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34206","messages":"34207","suppressedMessages":"34208","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34209","messages":"34210","suppressedMessages":"34211","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34212","messages":"34213","suppressedMessages":"34214","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34215","messages":"34216","suppressedMessages":"34217","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34218","messages":"34219","suppressedMessages":"34220","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34221","messages":"34222","suppressedMessages":"34223","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34224","messages":"34225","suppressedMessages":"34226","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34227","messages":"34228","suppressedMessages":"34229","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34230","messages":"34231","suppressedMessages":"34232","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34233","messages":"34234","suppressedMessages":"34235","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34236","messages":"34237","suppressedMessages":"34238","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34239","messages":"34240","suppressedMessages":"34241","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34242","messages":"34243","suppressedMessages":"34244","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34245","messages":"34246","suppressedMessages":"34247","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34248","messages":"34249","suppressedMessages":"34250","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34251","messages":"34252","suppressedMessages":"34253","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34254","messages":"34255","suppressedMessages":"34256","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34257","messages":"34258","suppressedMessages":"34259","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34260","messages":"34261","suppressedMessages":"34262","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34263","messages":"34264","suppressedMessages":"34265","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34266","messages":"34267","suppressedMessages":"34268","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34269","messages":"34270","suppressedMessages":"34271","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34272","messages":"34273","suppressedMessages":"34274","errorCount":7,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"34275","messages":"34276","suppressedMessages":"34277","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34278","messages":"34279","suppressedMessages":"34280","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34281","messages":"34282","suppressedMessages":"34283","errorCount":2,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"34284","messages":"34285","suppressedMessages":"34286","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34287","messages":"34288","suppressedMessages":"34289","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34290","messages":"34291","suppressedMessages":"34292","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34293","messages":"34294","suppressedMessages":"34295","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34296","messages":"34297","suppressedMessages":"34298","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34299","messages":"34300","suppressedMessages":"34301","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34302","messages":"34303","suppressedMessages":"34304","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34305","messages":"34306","suppressedMessages":"34307","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34308","messages":"34309","suppressedMessages":"34310","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34311","messages":"34312","suppressedMessages":"34313","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34314","messages":"34315","suppressedMessages":"34316","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34317","messages":"34318","suppressedMessages":"34319","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34320","messages":"34321","suppressedMessages":"34322","errorCount":4,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"34323","messages":"34324","suppressedMessages":"34325","errorCount":20,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"34326","messages":"34327","suppressedMessages":"34328","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34329","messages":"34330","suppressedMessages":"34331","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34332","messages":"34333","suppressedMessages":"34334","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34335","messages":"34336","suppressedMessages":"34337","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34338","messages":"34339","suppressedMessages":"34340","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34341","messages":"34342","suppressedMessages":"34343","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34344","messages":"34345","suppressedMessages":"34346","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34347","messages":"34348","suppressedMessages":"34349","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34350","messages":"34351","suppressedMessages":"34352","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34353","messages":"34354","suppressedMessages":"34355","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34356","messages":"34357","suppressedMessages":"34358","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34359","messages":"34360","suppressedMessages":"34361","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34362","messages":"34363","suppressedMessages":"34364","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34365","messages":"34366","suppressedMessages":"34367","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34368","messages":"34369","suppressedMessages":"34370","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34371","messages":"34372","suppressedMessages":"34373","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34374","messages":"34375","suppressedMessages":"34376","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34377","messages":"34378","suppressedMessages":"34379","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34380","messages":"34381","suppressedMessages":"34382","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34383","messages":"34384","suppressedMessages":"34385","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34386","messages":"34387","suppressedMessages":"34388","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34389","messages":"34390","suppressedMessages":"34391","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34392","messages":"34393","suppressedMessages":"34394","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34395","messages":"34396","suppressedMessages":"34397","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34398","messages":"34399","suppressedMessages":"34400","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34401","messages":"34402","suppressedMessages":"34403","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34404","messages":"34405","suppressedMessages":"34406","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34407","messages":"34408","suppressedMessages":"34409","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34410","messages":"34411","suppressedMessages":"34412","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34413","messages":"34414","suppressedMessages":"34415","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34416","messages":"34417","suppressedMessages":"34418","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34419","messages":"34420","suppressedMessages":"34421","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34422","messages":"34423","suppressedMessages":"34424","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34425","messages":"34426","suppressedMessages":"34427","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34428","messages":"34429","suppressedMessages":"34430","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34431","messages":"34432","suppressedMessages":"34433","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34434","messages":"34435","suppressedMessages":"34436","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34437","messages":"34438","suppressedMessages":"34439","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34440","messages":"34441","suppressedMessages":"34442","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34443","messages":"34444","suppressedMessages":"34445","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34446","messages":"34447","suppressedMessages":"34448","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34449","messages":"34450","suppressedMessages":"34451","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34452","messages":"34453","suppressedMessages":"34454","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34455","messages":"34456","suppressedMessages":"34457","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34458","messages":"34459","suppressedMessages":"34460","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"34461","messages":"34462","suppressedMessages":"34463","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34464","messages":"34465","suppressedMessages":"34466","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34467","messages":"34468","suppressedMessages":"34469","errorCount":3,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"34470","messages":"34471","suppressedMessages":"34472","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34473","messages":"34474","suppressedMessages":"34475","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34476","messages":"34477","suppressedMessages":"34478","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34479","messages":"34480","suppressedMessages":"34481","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34482","messages":"34483","suppressedMessages":"34484","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34485","messages":"34486","suppressedMessages":"34487","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34488","messages":"34489","suppressedMessages":"34490","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34491","messages":"34492","suppressedMessages":"34493","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34494","messages":"34495","suppressedMessages":"34496","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34497","messages":"34498","suppressedMessages":"34499","errorCount":3,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"34500","messages":"34501","suppressedMessages":"34502","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34503","messages":"34504","suppressedMessages":"34505","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34506","messages":"34507","suppressedMessages":"34508","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34509","messages":"34510","suppressedMessages":"34511","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34512","messages":"34513","suppressedMessages":"34514","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34515","messages":"34516","suppressedMessages":"34517","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34518","messages":"34519","suppressedMessages":"34520","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34521","messages":"34522","suppressedMessages":"34523","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34524","messages":"34525","suppressedMessages":"34526","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34527","messages":"34528","suppressedMessages":"34529","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34530","messages":"34531","suppressedMessages":"34532","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34533","messages":"34534","suppressedMessages":"34535","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34536","messages":"34537","suppressedMessages":"34538","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34539","messages":"34540","suppressedMessages":"34541","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34542","messages":"34543","suppressedMessages":"34544","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34545","messages":"34546","suppressedMessages":"34547","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34548","messages":"34549","suppressedMessages":"34550","errorCount":2,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"34551","messages":"34552","suppressedMessages":"34553","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34554","messages":"34555","suppressedMessages":"34556","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34557","messages":"34558","suppressedMessages":"34559","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34560","messages":"34561","suppressedMessages":"34562","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34563","messages":"34564","suppressedMessages":"34565","errorCount":8,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"34566","messages":"34567","suppressedMessages":"34568","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34569","messages":"34570","suppressedMessages":"34571","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34572","messages":"34573","suppressedMessages":"34574","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34575","messages":"34576","suppressedMessages":"34577","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34578","messages":"34579","suppressedMessages":"34580","errorCount":9,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"34581","messages":"34582","suppressedMessages":"34583","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34584","messages":"34585","suppressedMessages":"34586","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34587","messages":"34588","suppressedMessages":"34589","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34590","messages":"34591","suppressedMessages":"34592","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34593","messages":"34594","suppressedMessages":"34595","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34596","messages":"34597","suppressedMessages":"34598","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34599","messages":"34600","suppressedMessages":"34601","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34602","messages":"34603","suppressedMessages":"34604","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34605","messages":"34606","suppressedMessages":"34607","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34608","messages":"34609","suppressedMessages":"34610","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34611","messages":"34612","suppressedMessages":"34613","errorCount":6,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"34614","messages":"34615","suppressedMessages":"34616","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34617","messages":"34618","suppressedMessages":"34619","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34620","messages":"34621","suppressedMessages":"34622","errorCount":2,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"34623","messages":"34624","suppressedMessages":"34625","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34626","messages":"34627","suppressedMessages":"34628","errorCount":19,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"34629","messages":"34630","suppressedMessages":"34631","errorCount":3,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"34632","messages":"34633","suppressedMessages":"34634","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34635","messages":"34636","suppressedMessages":"34637","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34638","messages":"34639","suppressedMessages":"34640","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34641","messages":"34642","suppressedMessages":"34643","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34644","messages":"34645","suppressedMessages":"34646","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34647","messages":"34648","suppressedMessages":"34649","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34650","messages":"34651","suppressedMessages":"34652","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34653","messages":"34654","suppressedMessages":"34655","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34656","messages":"34657","suppressedMessages":"34658","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34659","messages":"34660","suppressedMessages":"34661","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34662","messages":"34663","suppressedMessages":"34664","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34665","messages":"34666","suppressedMessages":"34667","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34668","messages":"34669","suppressedMessages":"34670","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34671","messages":"34672","suppressedMessages":"34673","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34674","messages":"34675","suppressedMessages":"34676","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34677","messages":"34678","suppressedMessages":"34679","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34680","messages":"34681","suppressedMessages":"34682","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34683","messages":"34684","suppressedMessages":"34685","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34686","messages":"34687","suppressedMessages":"34688","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34689","messages":"34690","suppressedMessages":"34691","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34692","messages":"34693","suppressedMessages":"34694","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34695","messages":"34696","suppressedMessages":"34697","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34698","messages":"34699","suppressedMessages":"34700","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34701","messages":"34702","suppressedMessages":"34703","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34704","messages":"34705","suppressedMessages":"34706","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34707","messages":"34708","suppressedMessages":"34709","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34710","messages":"34711","suppressedMessages":"34712","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34713","messages":"34714","suppressedMessages":"34715","errorCount":25,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"34716","messages":"34717","suppressedMessages":"34718","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34719","messages":"34720","suppressedMessages":"34721","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34722","messages":"34723","suppressedMessages":"34724","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34725","messages":"34726","suppressedMessages":"34727","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34728","messages":"34729","suppressedMessages":"34730","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34731","messages":"34732","suppressedMessages":"34733","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34734","messages":"34735","suppressedMessages":"34736","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34737","messages":"34738","suppressedMessages":"34739","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34740","messages":"34741","suppressedMessages":"34742","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34743","messages":"34744","suppressedMessages":"34745","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34746","messages":"34747","suppressedMessages":"34748","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34749","messages":"34750","suppressedMessages":"34751","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34752","messages":"34753","suppressedMessages":"34754","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34755","messages":"34756","suppressedMessages":"34757","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34758","messages":"34759","suppressedMessages":"34760","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34761","messages":"34762","suppressedMessages":"34763","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34764","messages":"34765","suppressedMessages":"34766","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34767","messages":"34768","suppressedMessages":"34769","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34770","messages":"34771","suppressedMessages":"34772","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34773","messages":"34774","suppressedMessages":"34775","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34776","messages":"34777","suppressedMessages":"34778","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34779","messages":"34780","suppressedMessages":"34781","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34782","messages":"34783","suppressedMessages":"34784","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34785","messages":"34786","suppressedMessages":"34787","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34788","messages":"34789","suppressedMessages":"34790","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34791","messages":"34792","suppressedMessages":"34793","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34794","messages":"34795","suppressedMessages":"34796","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34797","messages":"34798","suppressedMessages":"34799","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34800","messages":"34801","suppressedMessages":"34802","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34803","messages":"34804","suppressedMessages":"34805","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34806","messages":"34807","suppressedMessages":"34808","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34809","messages":"34810","suppressedMessages":"34811","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34812","messages":"34813","suppressedMessages":"34814","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34815","messages":"34816","suppressedMessages":"34817","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34818","messages":"34819","suppressedMessages":"34820","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34821","messages":"34822","suppressedMessages":"34823","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34824","messages":"34825","suppressedMessages":"34826","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34827","messages":"34828","suppressedMessages":"34829","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34830","messages":"34831","suppressedMessages":"34832","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34833","messages":"34834","suppressedMessages":"34835","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34836","messages":"34837","suppressedMessages":"34838","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34839","messages":"34840","suppressedMessages":"34841","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34842","messages":"34843","suppressedMessages":"34844","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34845","messages":"34846","suppressedMessages":"34847","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34848","messages":"34849","suppressedMessages":"34850","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34851","messages":"34852","suppressedMessages":"34853","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34854","messages":"34855","suppressedMessages":"34856","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34857","messages":"34858","suppressedMessages":"34859","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34860","messages":"34861","suppressedMessages":"34862","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34863","messages":"34864","suppressedMessages":"34865","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34866","messages":"34867","suppressedMessages":"34868","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34869","messages":"34870","suppressedMessages":"34871","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34872","messages":"34873","suppressedMessages":"34874","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34875","messages":"34876","suppressedMessages":"34877","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34878","messages":"34879","suppressedMessages":"34880","errorCount":4,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"34881","messages":"34882","suppressedMessages":"34883","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34884","messages":"34885","suppressedMessages":"34886","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34887","messages":"34888","suppressedMessages":"34889","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34890","messages":"34891","suppressedMessages":"34892","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34893","messages":"34894","suppressedMessages":"34895","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34896","messages":"34897","suppressedMessages":"34898","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34899","messages":"34900","suppressedMessages":"34901","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34902","messages":"34903","suppressedMessages":"34904","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34905","messages":"34906","suppressedMessages":"34907","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34908","messages":"34909","suppressedMessages":"34910","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34911","messages":"34912","suppressedMessages":"34913","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34914","messages":"34915","suppressedMessages":"34916","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34917","messages":"34918","suppressedMessages":"34919","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34920","messages":"34921","suppressedMessages":"34922","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34923","messages":"34924","suppressedMessages":"34925","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34926","messages":"34927","suppressedMessages":"34928","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34929","messages":"34930","suppressedMessages":"34931","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34932","messages":"34933","suppressedMessages":"34934","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34935","messages":"34936","suppressedMessages":"34937","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34938","messages":"34939","suppressedMessages":"34940","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34941","messages":"34942","suppressedMessages":"34943","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34944","messages":"34945","suppressedMessages":"34946","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34947","messages":"34948","suppressedMessages":"34949","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34950","messages":"34951","suppressedMessages":"34952","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34953","messages":"34954","suppressedMessages":"34955","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34956","messages":"34957","suppressedMessages":"34958","errorCount":3,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"34959","messages":"34960","suppressedMessages":"34961","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34962","messages":"34963","suppressedMessages":"34964","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34965","messages":"34966","suppressedMessages":"34967","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34968","messages":"34969","suppressedMessages":"34970","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34971","messages":"34972","suppressedMessages":"34973","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34974","messages":"34975","suppressedMessages":"34976","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34977","messages":"34978","suppressedMessages":"34979","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34980","messages":"34981","suppressedMessages":"34982","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34983","messages":"34984","suppressedMessages":"34985","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34986","messages":"34987","suppressedMessages":"34988","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34989","messages":"34990","suppressedMessages":"34991","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34992","messages":"34993","suppressedMessages":"34994","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34995","messages":"34996","suppressedMessages":"34997","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"34998","messages":"34999","suppressedMessages":"35000","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35001","messages":"35002","suppressedMessages":"35003","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35004","messages":"35005","suppressedMessages":"35006","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35007","messages":"35008","suppressedMessages":"35009","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35010","messages":"35011","suppressedMessages":"35012","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35013","messages":"35014","suppressedMessages":"35015","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35016","messages":"35017","suppressedMessages":"35018","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35019","messages":"35020","suppressedMessages":"35021","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35022","messages":"35023","suppressedMessages":"35024","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35025","messages":"35026","suppressedMessages":"35027","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35028","messages":"35029","suppressedMessages":"35030","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35031","messages":"35032","suppressedMessages":"35033","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35034","messages":"35035","suppressedMessages":"35036","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35037","messages":"35038","suppressedMessages":"35039","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35040","messages":"35041","suppressedMessages":"35042","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35043","messages":"35044","suppressedMessages":"35045","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35046","messages":"35047","suppressedMessages":"35048","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35049","messages":"35050","suppressedMessages":"35051","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35052","messages":"35053","suppressedMessages":"35054","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35055","messages":"35056","suppressedMessages":"35057","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35058","messages":"35059","suppressedMessages":"35060","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35061","messages":"35062","suppressedMessages":"35063","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35064","messages":"35065","suppressedMessages":"35066","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35067","messages":"35068","suppressedMessages":"35069","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35070","messages":"35071","suppressedMessages":"35072","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35073","messages":"35074","suppressedMessages":"35075","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35076","messages":"35077","suppressedMessages":"35078","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35079","messages":"35080","suppressedMessages":"35081","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35082","messages":"35083","suppressedMessages":"35084","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35085","messages":"35086","suppressedMessages":"35087","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35088","messages":"35089","suppressedMessages":"35090","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35091","messages":"35092","suppressedMessages":"35093","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35094","messages":"35095","suppressedMessages":"35096","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35097","messages":"35098","suppressedMessages":"35099","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35100","messages":"35101","suppressedMessages":"35102","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35103","messages":"35104","suppressedMessages":"35105","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35106","messages":"35107","suppressedMessages":"35108","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35109","messages":"35110","suppressedMessages":"35111","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35112","messages":"35113","suppressedMessages":"35114","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35115","messages":"35116","suppressedMessages":"35117","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35118","messages":"35119","suppressedMessages":"35120","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35121","messages":"35122","suppressedMessages":"35123","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35124","messages":"35125","suppressedMessages":"35126","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35127","messages":"35128","suppressedMessages":"35129","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35130","messages":"35131","suppressedMessages":"35132","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35133","messages":"35134","suppressedMessages":"35135","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35136","messages":"35137","suppressedMessages":"35138","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35139","messages":"35140","suppressedMessages":"35141","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35142","messages":"35143","suppressedMessages":"35144","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35145","messages":"35146","suppressedMessages":"35147","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35148","messages":"35149","suppressedMessages":"35150","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35151","messages":"35152","suppressedMessages":"35153","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35154","messages":"35155","suppressedMessages":"35156","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35157","messages":"35158","suppressedMessages":"35159","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35160","messages":"35161","suppressedMessages":"35162","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35163","messages":"35164","suppressedMessages":"35165","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35166","messages":"35167","suppressedMessages":"35168","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35169","messages":"35170","suppressedMessages":"35171","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35172","messages":"35173","suppressedMessages":"35174","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35175","messages":"35176","suppressedMessages":"35177","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35178","messages":"35179","suppressedMessages":"35180","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35181","messages":"35182","suppressedMessages":"35183","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35184","messages":"35185","suppressedMessages":"35186","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35187","messages":"35188","suppressedMessages":"35189","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35190","messages":"35191","suppressedMessages":"35192","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35193","messages":"35194","suppressedMessages":"35195","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35196","messages":"35197","suppressedMessages":"35198","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35199","messages":"35200","suppressedMessages":"35201","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35202","messages":"35203","suppressedMessages":"35204","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35205","messages":"35206","suppressedMessages":"35207","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35208","messages":"35209","suppressedMessages":"35210","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35211","messages":"35212","suppressedMessages":"35213","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35214","messages":"35215","suppressedMessages":"35216","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35217","messages":"35218","suppressedMessages":"35219","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35220","messages":"35221","suppressedMessages":"35222","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35223","messages":"35224","suppressedMessages":"35225","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35226","messages":"35227","suppressedMessages":"35228","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35229","messages":"35230","suppressedMessages":"35231","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35232","messages":"35233","suppressedMessages":"35234","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35235","messages":"35236","suppressedMessages":"35237","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35238","messages":"35239","suppressedMessages":"35240","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35241","messages":"35242","suppressedMessages":"35243","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35244","messages":"35245","suppressedMessages":"35246","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35247","messages":"35248","suppressedMessages":"35249","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"35250","messages":"35251","suppressedMessages":"35252","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35253","messages":"35254","suppressedMessages":"35255","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35256","messages":"35257","suppressedMessages":"35258","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35259","messages":"35260","suppressedMessages":"35261","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35262","messages":"35263","suppressedMessages":"35264","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35265","messages":"35266","suppressedMessages":"35267","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35268","messages":"35269","suppressedMessages":"35270","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35271","messages":"35272","suppressedMessages":"35273","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35274","messages":"35275","suppressedMessages":"35276","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35277","messages":"35278","suppressedMessages":"35279","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35280","messages":"35281","suppressedMessages":"35282","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35283","messages":"35284","suppressedMessages":"35285","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35286","messages":"35287","suppressedMessages":"35288","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35289","messages":"35290","suppressedMessages":"35291","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35292","messages":"35293","suppressedMessages":"35294","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35295","messages":"35296","suppressedMessages":"35297","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35298","messages":"35299","suppressedMessages":"35300","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35301","messages":"35302","suppressedMessages":"35303","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35304","messages":"35305","suppressedMessages":"35306","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35307","messages":"35308","suppressedMessages":"35309","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35310","messages":"35311","suppressedMessages":"35312","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35313","messages":"35314","suppressedMessages":"35315","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35316","messages":"35317","suppressedMessages":"35318","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35319","messages":"35320","suppressedMessages":"35321","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35322","messages":"35323","suppressedMessages":"35324","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35325","messages":"35326","suppressedMessages":"35327","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35328","messages":"35329","suppressedMessages":"35330","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35331","messages":"35332","suppressedMessages":"35333","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35334","messages":"35335","suppressedMessages":"35336","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35337","messages":"35338","suppressedMessages":"35339","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35340","messages":"35341","suppressedMessages":"35342","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35343","messages":"35344","suppressedMessages":"35345","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35346","messages":"35347","suppressedMessages":"35348","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35349","messages":"35350","suppressedMessages":"35351","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35352","messages":"35353","suppressedMessages":"35354","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35355","messages":"35356","suppressedMessages":"35357","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35358","messages":"35359","suppressedMessages":"35360","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35361","messages":"35362","suppressedMessages":"35363","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"35364","messages":"35365","suppressedMessages":"35366","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35367","messages":"35368","suppressedMessages":"35369","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35370","messages":"35371","suppressedMessages":"35372","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35373","messages":"35374","suppressedMessages":"35375","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35376","messages":"35377","suppressedMessages":"35378","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35379","messages":"35380","suppressedMessages":"35381","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35382","messages":"35383","suppressedMessages":"35384","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35385","messages":"35386","suppressedMessages":"35387","errorCount":12,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"35388","messages":"35389","suppressedMessages":"35390","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35391","messages":"35392","suppressedMessages":"35393","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35394","messages":"35395","suppressedMessages":"35396","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35397","messages":"35398","suppressedMessages":"35399","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35400","messages":"35401","suppressedMessages":"35402","errorCount":10,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"35403","messages":"35404","suppressedMessages":"35405","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35406","messages":"35407","suppressedMessages":"35408","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35409","messages":"35410","suppressedMessages":"35411","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35412","messages":"35413","suppressedMessages":"35414","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35415","messages":"35416","suppressedMessages":"35417","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35418","messages":"35419","suppressedMessages":"35420","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35421","messages":"35422","suppressedMessages":"35423","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35424","messages":"35425","suppressedMessages":"35426","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35427","messages":"35428","suppressedMessages":"35429","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35430","messages":"35431","suppressedMessages":"35432","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35433","messages":"35434","suppressedMessages":"35435","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35436","messages":"35437","suppressedMessages":"35438","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35439","messages":"35440","suppressedMessages":"35441","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35442","messages":"35443","suppressedMessages":"35444","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35445","messages":"35446","suppressedMessages":"35447","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35448","messages":"35449","suppressedMessages":"35450","errorCount":4,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"35451","messages":"35452","suppressedMessages":"35453","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35454","messages":"35455","suppressedMessages":"35456","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35457","messages":"35458","suppressedMessages":"35459","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35460","messages":"35461","suppressedMessages":"35462","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35463","messages":"35464","suppressedMessages":"35465","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35466","messages":"35467","suppressedMessages":"35468","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35469","messages":"35470","suppressedMessages":"35471","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35472","messages":"35473","suppressedMessages":"35474","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35475","messages":"35476","suppressedMessages":"35477","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35478","messages":"35479","suppressedMessages":"35480","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35481","messages":"35482","suppressedMessages":"35483","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35484","messages":"35485","suppressedMessages":"35486","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35487","messages":"35488","suppressedMessages":"35489","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35490","messages":"35491","suppressedMessages":"35492","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35493","messages":"35494","suppressedMessages":"35495","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35496","messages":"35497","suppressedMessages":"35498","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35499","messages":"35500","suppressedMessages":"35501","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35502","messages":"35503","suppressedMessages":"35504","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35505","messages":"35506","suppressedMessages":"35507","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35508","messages":"35509","suppressedMessages":"35510","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35511","messages":"35512","suppressedMessages":"35513","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35514","messages":"35515","suppressedMessages":"35516","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35517","messages":"35518","suppressedMessages":"35519","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35520","messages":"35521","suppressedMessages":"35522","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35523","messages":"35524","suppressedMessages":"35525","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35526","messages":"35527","suppressedMessages":"35528","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35529","messages":"35530","suppressedMessages":"35531","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35532","messages":"35533","suppressedMessages":"35534","errorCount":4,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"35535","messages":"35536","suppressedMessages":"35537","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35538","messages":"35539","suppressedMessages":"35540","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35541","messages":"35542","suppressedMessages":"35543","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35544","messages":"35545","suppressedMessages":"35546","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35547","messages":"35548","suppressedMessages":"35549","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35550","messages":"35551","suppressedMessages":"35552","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35553","messages":"35554","suppressedMessages":"35555","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35556","messages":"35557","suppressedMessages":"35558","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35559","messages":"35560","suppressedMessages":"35561","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35562","messages":"35563","suppressedMessages":"35564","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"35565","messages":"35566","suppressedMessages":"35567","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35568","messages":"35569","suppressedMessages":"35570","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35571","messages":"35572","suppressedMessages":"35573","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35574","messages":"35575","suppressedMessages":"35576","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35577","messages":"35578","suppressedMessages":"35579","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35580","messages":"35581","suppressedMessages":"35582","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35583","messages":"35584","suppressedMessages":"35585","errorCount":2,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"35586","messages":"35587","suppressedMessages":"35588","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35589","messages":"35590","suppressedMessages":"35591","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35592","messages":"35593","suppressedMessages":"35594","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35595","messages":"35596","suppressedMessages":"35597","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35598","messages":"35599","suppressedMessages":"35600","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35601","messages":"35602","suppressedMessages":"35603","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35604","messages":"35605","suppressedMessages":"35606","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"35607","messages":"35608","suppressedMessages":"35609","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35610","messages":"35611","suppressedMessages":"35612","errorCount":2,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"35613","messages":"35614","suppressedMessages":"35615","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35616","messages":"35617","suppressedMessages":"35618","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35619","messages":"35620","suppressedMessages":"35621","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35622","messages":"35623","suppressedMessages":"35624","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35625","messages":"35626","suppressedMessages":"35627","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35628","messages":"35629","suppressedMessages":"35630","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35631","messages":"35632","suppressedMessages":"35633","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35634","messages":"35635","suppressedMessages":"35636","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35637","messages":"35638","suppressedMessages":"35639","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35640","messages":"35641","suppressedMessages":"35642","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35643","messages":"35644","suppressedMessages":"35645","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35646","messages":"35647","suppressedMessages":"35648","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35649","messages":"35650","suppressedMessages":"35651","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35652","messages":"35653","suppressedMessages":"35654","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35655","messages":"35656","suppressedMessages":"35657","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35658","messages":"35659","suppressedMessages":"35660","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35661","messages":"35662","suppressedMessages":"35663","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35664","messages":"35665","suppressedMessages":"35666","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35667","messages":"35668","suppressedMessages":"35669","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35670","messages":"35671","suppressedMessages":"35672","errorCount":58,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"35673","messages":"35674","suppressedMessages":"35675","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35676","messages":"35677","suppressedMessages":"35678","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35679","messages":"35680","suppressedMessages":"35681","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35682","messages":"35683","suppressedMessages":"35684","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35685","messages":"35686","suppressedMessages":"35687","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35688","messages":"35689","suppressedMessages":"35690","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35691","messages":"35692","suppressedMessages":"35693","errorCount":6,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"35694","messages":"35695","suppressedMessages":"35696","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35697","messages":"35698","suppressedMessages":"35699","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35700","messages":"35701","suppressedMessages":"35702","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35703","messages":"35704","suppressedMessages":"35705","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35706","messages":"35707","suppressedMessages":"35708","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35709","messages":"35710","suppressedMessages":"35711","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35712","messages":"35713","suppressedMessages":"35714","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35715","messages":"35716","suppressedMessages":"35717","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35718","messages":"35719","suppressedMessages":"35720","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35721","messages":"35722","suppressedMessages":"35723","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35724","messages":"35725","suppressedMessages":"35726","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35727","messages":"35728","suppressedMessages":"35729","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35730","messages":"35731","suppressedMessages":"35732","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35733","messages":"35734","suppressedMessages":"35735","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35736","messages":"35737","suppressedMessages":"35738","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35739","messages":"35740","suppressedMessages":"35741","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35742","messages":"35743","suppressedMessages":"35744","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35745","messages":"35746","suppressedMessages":"35747","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35748","messages":"35749","suppressedMessages":"35750","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35751","messages":"35752","suppressedMessages":"35753","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35754","messages":"35755","suppressedMessages":"35756","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35757","messages":"35758","suppressedMessages":"35759","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35760","messages":"35761","suppressedMessages":"35762","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35763","messages":"35764","suppressedMessages":"35765","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35766","messages":"35767","suppressedMessages":"35768","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35769","messages":"35770","suppressedMessages":"35771","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35772","messages":"35773","suppressedMessages":"35774","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35775","messages":"35776","suppressedMessages":"35777","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35778","messages":"35779","suppressedMessages":"35780","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35781","messages":"35782","suppressedMessages":"35783","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35784","messages":"35785","suppressedMessages":"35786","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35787","messages":"35788","suppressedMessages":"35789","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35790","messages":"35791","suppressedMessages":"35792","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35793","messages":"35794","suppressedMessages":"35795","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35796","messages":"35797","suppressedMessages":"35798","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35799","messages":"35800","suppressedMessages":"35801","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35802","messages":"35803","suppressedMessages":"35804","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35805","messages":"35806","suppressedMessages":"35807","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35808","messages":"35809","suppressedMessages":"35810","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35811","messages":"35812","suppressedMessages":"35813","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35814","messages":"35815","suppressedMessages":"35816","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35817","messages":"35818","suppressedMessages":"35819","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35820","messages":"35821","suppressedMessages":"35822","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35823","messages":"35824","suppressedMessages":"35825","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35826","messages":"35827","suppressedMessages":"35828","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35829","messages":"35830","suppressedMessages":"35831","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35832","messages":"35833","suppressedMessages":"35834","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35835","messages":"35836","suppressedMessages":"35837","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35838","messages":"35839","suppressedMessages":"35840","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35841","messages":"35842","suppressedMessages":"35843","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35844","messages":"35845","suppressedMessages":"35846","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35847","messages":"35848","suppressedMessages":"35849","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35850","messages":"35851","suppressedMessages":"35852","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35853","messages":"35854","suppressedMessages":"35855","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35856","messages":"35857","suppressedMessages":"35858","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35859","messages":"35860","suppressedMessages":"35861","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35862","messages":"35863","suppressedMessages":"35864","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35865","messages":"35866","suppressedMessages":"35867","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35868","messages":"35869","suppressedMessages":"35870","errorCount":6,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"35871","messages":"35872","suppressedMessages":"35873","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35874","messages":"35875","suppressedMessages":"35876","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35877","messages":"35878","suppressedMessages":"35879","errorCount":4,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"35880","messages":"35881","suppressedMessages":"35882","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35883","messages":"35884","suppressedMessages":"35885","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35886","messages":"35887","suppressedMessages":"35888","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35889","messages":"35890","suppressedMessages":"35891","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35892","messages":"35893","suppressedMessages":"35894","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35895","messages":"35896","suppressedMessages":"35897","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35898","messages":"35899","suppressedMessages":"35900","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35901","messages":"35902","suppressedMessages":"35903","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35904","messages":"35905","suppressedMessages":"35906","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35907","messages":"35908","suppressedMessages":"35909","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35910","messages":"35911","suppressedMessages":"35912","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35913","messages":"35914","suppressedMessages":"35915","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35916","messages":"35917","suppressedMessages":"35918","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35919","messages":"35920","suppressedMessages":"35921","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35922","messages":"35923","suppressedMessages":"35924","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35925","messages":"35926","suppressedMessages":"35927","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35928","messages":"35929","suppressedMessages":"35930","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35931","messages":"35932","suppressedMessages":"35933","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35934","messages":"35935","suppressedMessages":"35936","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35937","messages":"35938","suppressedMessages":"35939","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35940","messages":"35941","suppressedMessages":"35942","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35943","messages":"35944","suppressedMessages":"35945","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35946","messages":"35947","suppressedMessages":"35948","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35949","messages":"35950","suppressedMessages":"35951","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35952","messages":"35953","suppressedMessages":"35954","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35955","messages":"35956","suppressedMessages":"35957","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35958","messages":"35959","suppressedMessages":"35960","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35961","messages":"35962","suppressedMessages":"35963","errorCount":4,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"35964","messages":"35965","suppressedMessages":"35966","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35967","messages":"35968","suppressedMessages":"35969","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35970","messages":"35971","suppressedMessages":"35972","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35973","messages":"35974","suppressedMessages":"35975","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35976","messages":"35977","suppressedMessages":"35978","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35979","messages":"35980","suppressedMessages":"35981","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35982","messages":"35983","suppressedMessages":"35984","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35985","messages":"35986","suppressedMessages":"35987","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35988","messages":"35989","suppressedMessages":"35990","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35991","messages":"35992","suppressedMessages":"35993","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35994","messages":"35995","suppressedMessages":"35996","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35997","messages":"35998","suppressedMessages":"35999","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36000","messages":"36001","suppressedMessages":"36002","errorCount":16,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"36003","messages":"36004","suppressedMessages":"36005","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"36006","messages":"36007","suppressedMessages":"36008","errorCount":3,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"36009","messages":"36010","suppressedMessages":"36011","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36012","messages":"36013","suppressedMessages":"36014","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36015","messages":"36016","suppressedMessages":"36017","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36018","messages":"36019","suppressedMessages":"36020","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36021","messages":"36022","suppressedMessages":"36023","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36024","messages":"36025","suppressedMessages":"36026","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36027","messages":"36028","suppressedMessages":"36029","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36030","messages":"36031","suppressedMessages":"36032","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36033","messages":"36034","suppressedMessages":"36035","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36036","messages":"36037","suppressedMessages":"36038","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36039","messages":"36040","suppressedMessages":"36041","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36042","messages":"36043","suppressedMessages":"36044","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36045","messages":"36046","suppressedMessages":"36047","errorCount":79,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"36048","messages":"36049","suppressedMessages":"36050","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36051","messages":"36052","suppressedMessages":"36053","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36054","messages":"36055","suppressedMessages":"36056","errorCount":2,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"36057","messages":"36058","suppressedMessages":"36059","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36060","messages":"36061","suppressedMessages":"36062","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36063","messages":"36064","suppressedMessages":"36065","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36066","messages":"36067","suppressedMessages":"36068","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36069","messages":"36070","suppressedMessages":"36071","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36072","messages":"36073","suppressedMessages":"36074","errorCount":7,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"36075","messages":"36076","suppressedMessages":"36077","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36078","messages":"36079","suppressedMessages":"36080","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36081","messages":"36082","suppressedMessages":"36083","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36084","messages":"36085","suppressedMessages":"36086","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36087","messages":"36088","suppressedMessages":"36089","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36090","messages":"36091","suppressedMessages":"36092","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36093","messages":"36094","suppressedMessages":"36095","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36096","messages":"36097","suppressedMessages":"36098","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36099","messages":"36100","suppressedMessages":"36101","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36102","messages":"36103","suppressedMessages":"36104","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36105","messages":"36106","suppressedMessages":"36107","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36108","messages":"36109","suppressedMessages":"36110","errorCount":2,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"36111","messages":"36112","suppressedMessages":"36113","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36114","messages":"36115","suppressedMessages":"36116","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36117","messages":"36118","suppressedMessages":"36119","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36120","messages":"36121","suppressedMessages":"36122","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36123","messages":"36124","suppressedMessages":"36125","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36126","messages":"36127","suppressedMessages":"36128","errorCount":3,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"36129","messages":"36130","suppressedMessages":"36131","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36132","messages":"36133","suppressedMessages":"36134","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36135","messages":"36136","suppressedMessages":"36137","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36138","messages":"36139","suppressedMessages":"36140","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36141","messages":"36142","suppressedMessages":"36143","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36144","messages":"36145","suppressedMessages":"36146","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36147","messages":"36148","suppressedMessages":"36149","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36150","messages":"36151","suppressedMessages":"36152","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36153","messages":"36154","suppressedMessages":"36155","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36156","messages":"36157","suppressedMessages":"36158","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36159","messages":"36160","suppressedMessages":"36161","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36162","messages":"36163","suppressedMessages":"36164","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36165","messages":"36166","suppressedMessages":"36167","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36168","messages":"36169","suppressedMessages":"36170","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36171","messages":"36172","suppressedMessages":"36173","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36174","messages":"36175","suppressedMessages":"36176","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36177","messages":"36178","suppressedMessages":"36179","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36180","messages":"36181","suppressedMessages":"36182","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36183","messages":"36184","suppressedMessages":"36185","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36186","messages":"36187","suppressedMessages":"36188","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36189","messages":"36190","suppressedMessages":"36191","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36192","messages":"36193","suppressedMessages":"36194","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36195","messages":"36196","suppressedMessages":"36197","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36198","messages":"36199","suppressedMessages":"36200","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36201","messages":"36202","suppressedMessages":"36203","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36204","messages":"36205","suppressedMessages":"36206","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36207","messages":"36208","suppressedMessages":"36209","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36210","messages":"36211","suppressedMessages":"36212","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36213","messages":"36214","suppressedMessages":"36215","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36216","messages":"36217","suppressedMessages":"36218","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36219","messages":"36220","suppressedMessages":"36221","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36222","messages":"36223","suppressedMessages":"36224","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36225","messages":"36226","suppressedMessages":"36227","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36228","messages":"36229","suppressedMessages":"36230","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36231","messages":"36232","suppressedMessages":"36233","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36234","messages":"36235","suppressedMessages":"36236","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36237","messages":"36238","suppressedMessages":"36239","errorCount":2,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"36240","messages":"36241","suppressedMessages":"36242","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36243","messages":"36244","suppressedMessages":"36245","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36246","messages":"36247","suppressedMessages":"36248","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36249","messages":"36250","suppressedMessages":"36251","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36252","messages":"36253","suppressedMessages":"36254","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36255","messages":"36256","suppressedMessages":"36257","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36258","messages":"36259","suppressedMessages":"36260","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36261","messages":"36262","suppressedMessages":"36263","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36264","messages":"36265","suppressedMessages":"36266","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36267","messages":"36268","suppressedMessages":"36269","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36270","messages":"36271","suppressedMessages":"36272","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36273","messages":"36274","suppressedMessages":"36275","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36276","messages":"36277","suppressedMessages":"36278","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36279","messages":"36280","suppressedMessages":"36281","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36282","messages":"36283","suppressedMessages":"36284","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36285","messages":"36286","suppressedMessages":"36287","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36288","messages":"36289","suppressedMessages":"36290","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36291","messages":"36292","suppressedMessages":"36293","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36294","messages":"36295","suppressedMessages":"36296","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36297","messages":"36298","suppressedMessages":"36299","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36300","messages":"36301","suppressedMessages":"36302","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36303","messages":"36304","suppressedMessages":"36305","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36306","messages":"36307","suppressedMessages":"36308","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36309","messages":"36310","suppressedMessages":"36311","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36312","messages":"36313","suppressedMessages":"36314","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36315","messages":"36316","suppressedMessages":"36317","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36318","messages":"36319","suppressedMessages":"36320","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36321","messages":"36322","suppressedMessages":"36323","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36324","messages":"36325","suppressedMessages":"36326","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36327","messages":"36328","suppressedMessages":"36329","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36330","messages":"36331","suppressedMessages":"36332","errorCount":2,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"36333","messages":"36334","suppressedMessages":"36335","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36336","messages":"36337","suppressedMessages":"36338","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36339","messages":"36340","suppressedMessages":"36341","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36342","messages":"36343","suppressedMessages":"36344","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36345","messages":"36346","suppressedMessages":"36347","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36348","messages":"36349","suppressedMessages":"36350","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36351","messages":"36352","suppressedMessages":"36353","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"36354","messages":"36355","suppressedMessages":"36356","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36357","messages":"36358","suppressedMessages":"36359","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36360","messages":"36361","suppressedMessages":"36362","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36363","messages":"36364","suppressedMessages":"36365","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36366","messages":"36367","suppressedMessages":"36368","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36369","messages":"36370","suppressedMessages":"36371","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36372","messages":"36373","suppressedMessages":"36374","errorCount":8,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"36375","messages":"36376","suppressedMessages":"36377","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36378","messages":"36379","suppressedMessages":"36380","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36381","messages":"36382","suppressedMessages":"36383","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36384","messages":"36385","suppressedMessages":"36386","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36387","messages":"36388","suppressedMessages":"36389","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36390","messages":"36391","suppressedMessages":"36392","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36393","messages":"36394","suppressedMessages":"36395","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36396","messages":"36397","suppressedMessages":"36398","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36399","messages":"36400","suppressedMessages":"36401","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36402","messages":"36403","suppressedMessages":"36404","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36405","messages":"36406","suppressedMessages":"36407","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36408","messages":"36409","suppressedMessages":"36410","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36411","messages":"36412","suppressedMessages":"36413","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36414","messages":"36415","suppressedMessages":"36416","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36417","messages":"36418","suppressedMessages":"36419","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36420","messages":"36421","suppressedMessages":"36422","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36423","messages":"36424","suppressedMessages":"36425","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36426","messages":"36427","suppressedMessages":"36428","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36429","messages":"36430","suppressedMessages":"36431","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36432","messages":"36433","suppressedMessages":"36434","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36435","messages":"36436","suppressedMessages":"36437","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36438","messages":"36439","suppressedMessages":"36440","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36441","messages":"36442","suppressedMessages":"36443","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36444","messages":"36445","suppressedMessages":"36446","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36447","messages":"36448","suppressedMessages":"36449","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36450","messages":"36451","suppressedMessages":"36452","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36453","messages":"36454","suppressedMessages":"36455","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36456","messages":"36457","suppressedMessages":"36458","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36459","messages":"36460","suppressedMessages":"36461","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36462","messages":"36463","suppressedMessages":"36464","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36465","messages":"36466","suppressedMessages":"36467","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36468","messages":"36469","suppressedMessages":"36470","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36471","messages":"36472","suppressedMessages":"36473","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36474","messages":"36475","suppressedMessages":"36476","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36477","messages":"36478","suppressedMessages":"36479","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36480","messages":"36481","suppressedMessages":"36482","errorCount":4,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"36483","messages":"36484","suppressedMessages":"36485","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"36486","messages":"36487","suppressedMessages":"36488","errorCount":8,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"36489","messages":"36490","suppressedMessages":"36491","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36492","messages":"36493","suppressedMessages":"36494","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"36495","messages":"36496","suppressedMessages":"36497","errorCount":6,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"36498","messages":"36499","suppressedMessages":"36500","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36501","messages":"36502","suppressedMessages":"36503","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36504","messages":"36505","suppressedMessages":"36506","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36507","messages":"36508","suppressedMessages":"36509","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"36510","messages":"36511","suppressedMessages":"36512","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36513","messages":"36514","suppressedMessages":"36515","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36516","messages":"36517","suppressedMessages":"36518","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36519","messages":"36520","suppressedMessages":"36521","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36522","messages":"36523","suppressedMessages":"36524","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36525","messages":"36526","suppressedMessages":"36527","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36528","messages":"36529","suppressedMessages":"36530","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36531","messages":"36532","suppressedMessages":"36533","errorCount":6,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"36534","messages":"36535","suppressedMessages":"36536","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"36537","messages":"36538","suppressedMessages":"36539","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36540","messages":"36541","suppressedMessages":"36542","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36543","messages":"36544","suppressedMessages":"36545","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36546","messages":"36547","suppressedMessages":"36548","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36549","messages":"36550","suppressedMessages":"36551","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36552","messages":"36553","suppressedMessages":"36554","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36555","messages":"36556","suppressedMessages":"36557","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36558","messages":"36559","suppressedMessages":"36560","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36561","messages":"36562","suppressedMessages":"36563","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36564","messages":"36565","suppressedMessages":"36566","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36567","messages":"36568","suppressedMessages":"36569","errorCount":4,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"36570","messages":"36571","suppressedMessages":"36572","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36573","messages":"36574","suppressedMessages":"36575","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36576","messages":"36577","suppressedMessages":"36578","errorCount":4,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"36579","messages":"36580","suppressedMessages":"36581","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36582","messages":"36583","suppressedMessages":"36584","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36585","messages":"36586","suppressedMessages":"36587","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36588","messages":"36589","suppressedMessages":"36590","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36591","messages":"36592","suppressedMessages":"36593","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36594","messages":"36595","suppressedMessages":"36596","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36597","messages":"36598","suppressedMessages":"36599","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36600","messages":"36601","suppressedMessages":"36602","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36603","messages":"36604","suppressedMessages":"36605","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36606","messages":"36607","suppressedMessages":"36608","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36609","messages":"36610","suppressedMessages":"36611","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36612","messages":"36613","suppressedMessages":"36614","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36615","messages":"36616","suppressedMessages":"36617","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36618","messages":"36619","suppressedMessages":"36620","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36621","messages":"36622","suppressedMessages":"36623","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36624","messages":"36625","suppressedMessages":"36626","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36627","messages":"36628","suppressedMessages":"36629","errorCount":7,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"36630","messages":"36631","suppressedMessages":"36632","errorCount":2,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"36633","messages":"36634","suppressedMessages":"36635","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36636","messages":"36637","suppressedMessages":"36638","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36639","messages":"36640","suppressedMessages":"36641","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36642","messages":"36643","suppressedMessages":"36644","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36645","messages":"36646","suppressedMessages":"36647","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36648","messages":"36649","suppressedMessages":"36650","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36651","messages":"36652","suppressedMessages":"36653","errorCount":2,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"36654","messages":"36655","suppressedMessages":"36656","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36657","messages":"36658","suppressedMessages":"36659","errorCount":7,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"36660","messages":"36661","suppressedMessages":"36662","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36663","messages":"36664","suppressedMessages":"36665","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36666","messages":"36667","suppressedMessages":"36668","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36669","messages":"36670","suppressedMessages":"36671","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36672","messages":"36673","suppressedMessages":"36674","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36675","messages":"36676","suppressedMessages":"36677","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36678","messages":"36679","suppressedMessages":"36680","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36681","messages":"36682","suppressedMessages":"36683","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36684","messages":"36685","suppressedMessages":"36686","errorCount":20,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"36687","messages":"36688","suppressedMessages":"36689","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36690","messages":"36691","suppressedMessages":"36692","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36693","messages":"36694","suppressedMessages":"36695","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36696","messages":"36697","suppressedMessages":"36698","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36699","messages":"36700","suppressedMessages":"36701","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36702","messages":"36703","suppressedMessages":"36704","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36705","messages":"36706","suppressedMessages":"36707","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36708","messages":"36709","suppressedMessages":"36710","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36711","messages":"36712","suppressedMessages":"36713","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36714","messages":"36715","suppressedMessages":"36716","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36717","messages":"36718","suppressedMessages":"36719","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36720","messages":"36721","suppressedMessages":"36722","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"36723","messages":"36724","suppressedMessages":"36725","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36726","messages":"36727","suppressedMessages":"36728","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36729","messages":"36730","suppressedMessages":"36731","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36732","messages":"36733","suppressedMessages":"36734","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36735","messages":"36736","suppressedMessages":"36737","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36738","messages":"36739","suppressedMessages":"36740","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36741","messages":"36742","suppressedMessages":"36743","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36744","messages":"36745","suppressedMessages":"36746","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36747","messages":"36748","suppressedMessages":"36749","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36750","messages":"36751","suppressedMessages":"36752","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36753","messages":"36754","suppressedMessages":"36755","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36756","messages":"36757","suppressedMessages":"36758","errorCount":9,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"36759","messages":"36760","suppressedMessages":"36761","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36762","messages":"36763","suppressedMessages":"36764","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36765","messages":"36766","suppressedMessages":"36767","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36768","messages":"36769","suppressedMessages":"36770","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36771","messages":"36772","suppressedMessages":"36773","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36774","messages":"36775","suppressedMessages":"36776","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36777","messages":"36778","suppressedMessages":"36779","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36780","messages":"36781","suppressedMessages":"36782","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36783","messages":"36784","suppressedMessages":"36785","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36786","messages":"36787","suppressedMessages":"36788","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36789","messages":"36790","suppressedMessages":"36791","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36792","messages":"36793","suppressedMessages":"36794","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36795","messages":"36796","suppressedMessages":"36797","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36798","messages":"36799","suppressedMessages":"36800","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36801","messages":"36802","suppressedMessages":"36803","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36804","messages":"36805","suppressedMessages":"36806","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36807","messages":"36808","suppressedMessages":"36809","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"36810","messages":"36811","suppressedMessages":"36812","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36813","messages":"36814","suppressedMessages":"36815","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36816","messages":"36817","suppressedMessages":"36818","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36819","messages":"36820","suppressedMessages":"36821","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36822","messages":"36823","suppressedMessages":"36824","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36825","messages":"36826","suppressedMessages":"36827","errorCount":3,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"36828","messages":"36829","suppressedMessages":"36830","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36831","messages":"36832","suppressedMessages":"36833","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36834","messages":"36835","suppressedMessages":"36836","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36837","messages":"36838","suppressedMessages":"36839","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36840","messages":"36841","suppressedMessages":"36842","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36843","messages":"36844","suppressedMessages":"36845","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36846","messages":"36847","suppressedMessages":"36848","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36849","messages":"36850","suppressedMessages":"36851","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36852","messages":"36853","suppressedMessages":"36854","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36855","messages":"36856","suppressedMessages":"36857","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36858","messages":"36859","suppressedMessages":"36860","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36861","messages":"36862","suppressedMessages":"36863","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36864","messages":"36865","suppressedMessages":"36866","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36867","messages":"36868","suppressedMessages":"36869","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36870","messages":"36871","suppressedMessages":"36872","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36873","messages":"36874","suppressedMessages":"36875","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36876","messages":"36877","suppressedMessages":"36878","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36879","messages":"36880","suppressedMessages":"36881","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36882","messages":"36883","suppressedMessages":"36884","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36885","messages":"36886","suppressedMessages":"36887","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36888","messages":"36889","suppressedMessages":"36890","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36891","messages":"36892","suppressedMessages":"36893","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36894","messages":"36895","suppressedMessages":"36896","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36897","messages":"36898","suppressedMessages":"36899","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36900","messages":"36901","suppressedMessages":"36902","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36903","messages":"36904","suppressedMessages":"36905","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36906","messages":"36907","suppressedMessages":"36908","errorCount":3,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"36909","messages":"36910","suppressedMessages":"36911","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36912","messages":"36913","suppressedMessages":"36914","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36915","messages":"36916","suppressedMessages":"36917","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36918","messages":"36919","suppressedMessages":"36920","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36921","messages":"36922","suppressedMessages":"36923","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36924","messages":"36925","suppressedMessages":"36926","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36927","messages":"36928","suppressedMessages":"36929","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36930","messages":"36931","suppressedMessages":"36932","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"36933","messages":"36934","suppressedMessages":"36935","errorCount":6,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"36936","messages":"36937","suppressedMessages":"36938","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36939","messages":"36940","suppressedMessages":"36941","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36942","messages":"36943","suppressedMessages":"36944","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36945","messages":"36946","suppressedMessages":"36947","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"36948","messages":"36949","suppressedMessages":"36950","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36951","messages":"36952","suppressedMessages":"36953","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36954","messages":"36955","suppressedMessages":"36956","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36957","messages":"36958","suppressedMessages":"36959","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36960","messages":"36961","suppressedMessages":"36962","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36963","messages":"36964","suppressedMessages":"36965","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36966","messages":"36967","suppressedMessages":"36968","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36969","messages":"36970","suppressedMessages":"36971","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36972","messages":"36973","suppressedMessages":"36974","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36975","messages":"36976","suppressedMessages":"36977","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36978","messages":"36979","suppressedMessages":"36980","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36981","messages":"36982","suppressedMessages":"36983","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36984","messages":"36985","suppressedMessages":"36986","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36987","messages":"36988","suppressedMessages":"36989","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36990","messages":"36991","suppressedMessages":"36992","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36993","messages":"36994","suppressedMessages":"36995","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36996","messages":"36997","suppressedMessages":"36998","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"36999","messages":"37000","suppressedMessages":"37001","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37002","messages":"37003","suppressedMessages":"37004","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37005","messages":"37006","suppressedMessages":"37007","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37008","messages":"37009","suppressedMessages":"37010","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37011","messages":"37012","suppressedMessages":"37013","errorCount":3,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"37014","messages":"37015","suppressedMessages":"37016","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37017","messages":"37018","suppressedMessages":"37019","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37020","messages":"37021","suppressedMessages":"37022","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37023","messages":"37024","suppressedMessages":"37025","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37026","messages":"37027","suppressedMessages":"37028","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37029","messages":"37030","suppressedMessages":"37031","errorCount":3,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"37032","messages":"37033","suppressedMessages":"37034","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37035","messages":"37036","suppressedMessages":"37037","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37038","messages":"37039","suppressedMessages":"37040","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37041","messages":"37042","suppressedMessages":"37043","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37044","messages":"37045","suppressedMessages":"37046","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37047","messages":"37048","suppressedMessages":"37049","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37050","messages":"37051","suppressedMessages":"37052","errorCount":4,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"37053","messages":"37054","suppressedMessages":"37055","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37056","messages":"37057","suppressedMessages":"37058","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37059","messages":"37060","suppressedMessages":"37061","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37062","messages":"37063","suppressedMessages":"37064","errorCount":54,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"37065","messages":"37066","suppressedMessages":"37067","errorCount":2,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"37068","messages":"37069","suppressedMessages":"37070","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"37071","messages":"37072","suppressedMessages":"37073","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37074","messages":"37075","suppressedMessages":"37076","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37077","messages":"37078","suppressedMessages":"37079","errorCount":6,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"37080","messages":"37081","suppressedMessages":"37082","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37083","messages":"37084","suppressedMessages":"37085","errorCount":13,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"37086","messages":"37087","suppressedMessages":"37088","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37089","messages":"37090","suppressedMessages":"37091","errorCount":8,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"37092","messages":"37093","suppressedMessages":"37094","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37095","messages":"37096","suppressedMessages":"37097","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37098","messages":"37099","suppressedMessages":"37100","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37101","messages":"37102","suppressedMessages":"37103","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37104","messages":"37105","suppressedMessages":"37106","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37107","messages":"37108","suppressedMessages":"37109","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37110","messages":"37111","suppressedMessages":"37112","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37113","messages":"37114","suppressedMessages":"37115","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37116","messages":"37117","suppressedMessages":"37118","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37119","messages":"37120","suppressedMessages":"37121","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37122","messages":"37123","suppressedMessages":"37124","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37125","messages":"37126","suppressedMessages":"37127","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37128","messages":"37129","suppressedMessages":"37130","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37131","messages":"37132","suppressedMessages":"37133","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37134","messages":"37135","suppressedMessages":"37136","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37137","messages":"37138","suppressedMessages":"37139","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37140","messages":"37141","suppressedMessages":"37142","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37143","messages":"37144","suppressedMessages":"37145","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37146","messages":"37147","suppressedMessages":"37148","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37149","messages":"37150","suppressedMessages":"37151","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37152","messages":"37153","suppressedMessages":"37154","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37155","messages":"37156","suppressedMessages":"37157","errorCount":6,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"37158","messages":"37159","suppressedMessages":"37160","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37161","messages":"37162","suppressedMessages":"37163","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37164","messages":"37165","suppressedMessages":"37166","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37167","messages":"37168","suppressedMessages":"37169","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37170","messages":"37171","suppressedMessages":"37172","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37173","messages":"37174","suppressedMessages":"37175","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37176","messages":"37177","suppressedMessages":"37178","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37179","messages":"37180","suppressedMessages":"37181","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37182","messages":"37183","suppressedMessages":"37184","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37185","messages":"37186","suppressedMessages":"37187","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37188","messages":"37189","suppressedMessages":"37190","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37191","messages":"37192","suppressedMessages":"37193","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37194","messages":"37195","suppressedMessages":"37196","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37197","messages":"37198","suppressedMessages":"37199","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37200","messages":"37201","suppressedMessages":"37202","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37203","messages":"37204","suppressedMessages":"37205","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37206","messages":"37207","suppressedMessages":"37208","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37209","messages":"37210","suppressedMessages":"37211","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37212","messages":"37213","suppressedMessages":"37214","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37215","messages":"37216","suppressedMessages":"37217","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37218","messages":"37219","suppressedMessages":"37220","errorCount":6,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"37221","messages":"37222","suppressedMessages":"37223","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37224","messages":"37225","suppressedMessages":"37226","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"37227","messages":"37228","suppressedMessages":"37229","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37230","messages":"37231","suppressedMessages":"37232","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37233","messages":"37234","suppressedMessages":"37235","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37236","messages":"37237","suppressedMessages":"37238","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37239","messages":"37240","suppressedMessages":"37241","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37242","messages":"37243","suppressedMessages":"37244","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37245","messages":"37246","suppressedMessages":"37247","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37248","messages":"37249","suppressedMessages":"37250","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37251","messages":"37252","suppressedMessages":"37253","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37254","messages":"37255","suppressedMessages":"37256","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37257","messages":"37258","suppressedMessages":"37259","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37260","messages":"37261","suppressedMessages":"37262","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37263","messages":"37264","suppressedMessages":"37265","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37266","messages":"37267","suppressedMessages":"37268","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37269","messages":"37270","suppressedMessages":"37271","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37272","messages":"37273","suppressedMessages":"37274","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37275","messages":"37276","suppressedMessages":"37277","errorCount":4,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"37278","messages":"37279","suppressedMessages":"37280","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37281","messages":"37282","suppressedMessages":"37283","errorCount":4,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"37284","messages":"37285","suppressedMessages":"37286","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37287","messages":"37288","suppressedMessages":"37289","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37290","messages":"37291","suppressedMessages":"37292","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37293","messages":"37294","suppressedMessages":"37295","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37296","messages":"37297","suppressedMessages":"37298","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37299","messages":"37300","suppressedMessages":"37301","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37302","messages":"37303","suppressedMessages":"37304","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37305","messages":"37306","suppressedMessages":"37307","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37308","messages":"37309","suppressedMessages":"37310","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37311","messages":"37312","suppressedMessages":"37313","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37314","messages":"37315","suppressedMessages":"37316","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37317","messages":"37318","suppressedMessages":"37319","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37320","messages":"37321","suppressedMessages":"37322","errorCount":10,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"37323","messages":"37324","suppressedMessages":"37325","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37326","messages":"37327","suppressedMessages":"37328","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37329","messages":"37330","suppressedMessages":"37331","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37332","messages":"37333","suppressedMessages":"37334","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37335","messages":"37336","suppressedMessages":"37337","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37338","messages":"37339","suppressedMessages":"37340","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37341","messages":"37342","suppressedMessages":"37343","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37344","messages":"37345","suppressedMessages":"37346","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"37347","messages":"37348","suppressedMessages":"37349","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37350","messages":"37351","suppressedMessages":"37352","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37353","messages":"37354","suppressedMessages":"37355","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37356","messages":"37357","suppressedMessages":"37358","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37359","messages":"37360","suppressedMessages":"37361","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37362","messages":"37363","suppressedMessages":"37364","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37365","messages":"37366","suppressedMessages":"37367","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37368","messages":"37369","suppressedMessages":"37370","errorCount":22,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"37371","messages":"37372","suppressedMessages":"37373","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37374","messages":"37375","suppressedMessages":"37376","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37377","messages":"37378","suppressedMessages":"37379","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37380","messages":"37381","suppressedMessages":"37382","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37383","messages":"37384","suppressedMessages":"37385","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37386","messages":"37387","suppressedMessages":"37388","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37389","messages":"37390","suppressedMessages":"37391","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"37392","messages":"37393","suppressedMessages":"37394","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37395","messages":"37396","suppressedMessages":"37397","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37398","messages":"37399","suppressedMessages":"37400","errorCount":54,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"37401","messages":"37402","suppressedMessages":"37403","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37404","messages":"37405","suppressedMessages":"37406","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37407","messages":"37408","suppressedMessages":"37409","errorCount":3,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"37410","messages":"37411","suppressedMessages":"37412","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37413","messages":"37414","suppressedMessages":"37415","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37416","messages":"37417","suppressedMessages":"37418","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37419","messages":"37420","suppressedMessages":"37421","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37422","messages":"37423","suppressedMessages":"37424","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37425","messages":"37426","suppressedMessages":"37427","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37428","messages":"37429","suppressedMessages":"37430","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37431","messages":"37432","suppressedMessages":"37433","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37434","messages":"37435","suppressedMessages":"37436","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37437","messages":"37438","suppressedMessages":"37439","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37440","messages":"37441","suppressedMessages":"37442","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37443","messages":"37444","suppressedMessages":"37445","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37446","messages":"37447","suppressedMessages":"37448","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37449","messages":"37450","suppressedMessages":"37451","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37452","messages":"37453","suppressedMessages":"37454","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37455","messages":"37456","suppressedMessages":"37457","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37458","messages":"37459","suppressedMessages":"37460","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37461","messages":"37462","suppressedMessages":"37463","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37464","messages":"37465","suppressedMessages":"37466","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37467","messages":"37468","suppressedMessages":"37469","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37470","messages":"37471","suppressedMessages":"37472","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37473","messages":"37474","suppressedMessages":"37475","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37476","messages":"37477","suppressedMessages":"37478","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37479","messages":"37480","suppressedMessages":"37481","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37482","messages":"37483","suppressedMessages":"37484","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37485","messages":"37486","suppressedMessages":"37487","errorCount":3,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"37488","messages":"37489","suppressedMessages":"37490","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37491","messages":"37492","suppressedMessages":"37493","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37494","messages":"37495","suppressedMessages":"37496","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37497","messages":"37498","suppressedMessages":"37499","errorCount":3,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"37500","messages":"37501","suppressedMessages":"37502","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37503","messages":"37504","suppressedMessages":"37505","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37506","messages":"37507","suppressedMessages":"37508","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37509","messages":"37510","suppressedMessages":"37511","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37512","messages":"37513","suppressedMessages":"37514","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37515","messages":"37516","suppressedMessages":"37517","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37518","messages":"37519","suppressedMessages":"37520","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37521","messages":"37522","suppressedMessages":"37523","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37524","messages":"37525","suppressedMessages":"37526","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37527","messages":"37528","suppressedMessages":"37529","errorCount":6,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"37530","messages":"37531","suppressedMessages":"37532","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37533","messages":"37534","suppressedMessages":"37535","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37536","messages":"37537","suppressedMessages":"37538","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37539","messages":"37540","suppressedMessages":"37541","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37542","messages":"37543","suppressedMessages":"37544","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37545","messages":"37546","suppressedMessages":"37547","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37548","messages":"37549","suppressedMessages":"37550","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37551","messages":"37552","suppressedMessages":"37553","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37554","messages":"37555","suppressedMessages":"37556","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37557","messages":"37558","suppressedMessages":"37559","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37560","messages":"37561","suppressedMessages":"37562","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37563","messages":"37564","suppressedMessages":"37565","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37566","messages":"37567","suppressedMessages":"37568","errorCount":2,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"37569","messages":"37570","suppressedMessages":"37571","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37572","messages":"37573","suppressedMessages":"37574","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37575","messages":"37576","suppressedMessages":"37577","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37578","messages":"37579","suppressedMessages":"37580","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37581","messages":"37582","suppressedMessages":"37583","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37584","messages":"37585","suppressedMessages":"37586","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37587","messages":"37588","suppressedMessages":"37589","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37590","messages":"37591","suppressedMessages":"37592","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37593","messages":"37594","suppressedMessages":"37595","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37596","messages":"37597","suppressedMessages":"37598","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37599","messages":"37600","suppressedMessages":"37601","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37602","messages":"37603","suppressedMessages":"37604","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37605","messages":"37606","suppressedMessages":"37607","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37608","messages":"37609","suppressedMessages":"37610","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37611","messages":"37612","suppressedMessages":"37613","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37614","messages":"37615","suppressedMessages":"37616","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37617","messages":"37618","suppressedMessages":"37619","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37620","messages":"37621","suppressedMessages":"37622","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37623","messages":"37624","suppressedMessages":"37625","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37626","messages":"37627","suppressedMessages":"37628","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37629","messages":"37630","suppressedMessages":"37631","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"37632","messages":"37633","suppressedMessages":"37634","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"37635","messages":"37636","suppressedMessages":"37637","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37638","messages":"37639","suppressedMessages":"37640","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37641","messages":"37642","suppressedMessages":"37643","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"37644","messages":"37645","suppressedMessages":"37646","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37647","messages":"37648","suppressedMessages":"37649","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37650","messages":"37651","suppressedMessages":"37652","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37653","messages":"37654","suppressedMessages":"37655","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37656","messages":"37657","suppressedMessages":"37658","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37659","messages":"37660","suppressedMessages":"37661","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37662","messages":"37663","suppressedMessages":"37664","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37665","messages":"37666","suppressedMessages":"37667","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37668","messages":"37669","suppressedMessages":"37670","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37671","messages":"37672","suppressedMessages":"37673","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37674","messages":"37675","suppressedMessages":"37676","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37677","messages":"37678","suppressedMessages":"37679","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37680","messages":"37681","suppressedMessages":"37682","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"37683","messages":"37684","suppressedMessages":"37685","errorCount":2,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"37686","messages":"37687","suppressedMessages":"37688","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37689","messages":"37690","suppressedMessages":"37691","errorCount":9,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"37692","messages":"37693","suppressedMessages":"37694","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37695","messages":"37696","suppressedMessages":"37697","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37698","messages":"37699","suppressedMessages":"37700","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37701","messages":"37702","suppressedMessages":"37703","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37704","messages":"37705","suppressedMessages":"37706","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37707","messages":"37708","suppressedMessages":"37709","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37710","messages":"37711","suppressedMessages":"37712","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37713","messages":"37714","suppressedMessages":"37715","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37716","messages":"37717","suppressedMessages":"37718","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37719","messages":"37720","suppressedMessages":"37721","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37722","messages":"37723","suppressedMessages":"37724","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37725","messages":"37726","suppressedMessages":"37727","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37728","messages":"37729","suppressedMessages":"37730","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37731","messages":"37732","suppressedMessages":"37733","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37734","messages":"37735","suppressedMessages":"37736","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37737","messages":"37738","suppressedMessages":"37739","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37740","messages":"37741","suppressedMessages":"37742","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37743","messages":"37744","suppressedMessages":"37745","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37746","messages":"37747","suppressedMessages":"37748","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37749","messages":"37750","suppressedMessages":"37751","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37752","messages":"37753","suppressedMessages":"37754","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37755","messages":"37756","suppressedMessages":"37757","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37758","messages":"37759","suppressedMessages":"37760","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37761","messages":"37762","suppressedMessages":"37763","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37764","messages":"37765","suppressedMessages":"37766","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37767","messages":"37768","suppressedMessages":"37769","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37770","messages":"37771","suppressedMessages":"37772","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37773","messages":"37774","suppressedMessages":"37775","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37776","messages":"37777","suppressedMessages":"37778","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37779","messages":"37780","suppressedMessages":"37781","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"37782","messages":"37783","suppressedMessages":"37784","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37785","messages":"37786","suppressedMessages":"37787","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37788","messages":"37789","suppressedMessages":"37790","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37791","messages":"37792","suppressedMessages":"37793","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37794","messages":"37795","suppressedMessages":"37796","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37797","messages":"37798","suppressedMessages":"37799","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37800","messages":"37801","suppressedMessages":"37802","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37803","messages":"37804","suppressedMessages":"37805","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37806","messages":"37807","suppressedMessages":"37808","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37809","messages":"37810","suppressedMessages":"37811","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37812","messages":"37813","suppressedMessages":"37814","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37815","messages":"37816","suppressedMessages":"37817","errorCount":4,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"37818","messages":"37819","suppressedMessages":"37820","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37821","messages":"37822","suppressedMessages":"37823","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37824","messages":"37825","suppressedMessages":"37826","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37827","messages":"37828","suppressedMessages":"37829","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37830","messages":"37831","suppressedMessages":"37832","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37833","messages":"37834","suppressedMessages":"37835","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37836","messages":"37837","suppressedMessages":"37838","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37839","messages":"37840","suppressedMessages":"37841","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37842","messages":"37843","suppressedMessages":"37844","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37845","messages":"37846","suppressedMessages":"37847","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37848","messages":"37849","suppressedMessages":"37850","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37851","messages":"37852","suppressedMessages":"37853","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37854","messages":"37855","suppressedMessages":"37856","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37857","messages":"37858","suppressedMessages":"37859","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37860","messages":"37861","suppressedMessages":"37862","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37863","messages":"37864","suppressedMessages":"37865","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37866","messages":"37867","suppressedMessages":"37868","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37869","messages":"37870","suppressedMessages":"37871","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37872","messages":"37873","suppressedMessages":"37874","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37875","messages":"37876","suppressedMessages":"37877","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37878","messages":"37879","suppressedMessages":"37880","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37881","messages":"37882","suppressedMessages":"37883","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37884","messages":"37885","suppressedMessages":"37886","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37887","messages":"37888","suppressedMessages":"37889","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37890","messages":"37891","suppressedMessages":"37892","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37893","messages":"37894","suppressedMessages":"37895","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37896","messages":"37897","suppressedMessages":"37898","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37899","messages":"37900","suppressedMessages":"37901","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37902","messages":"37903","suppressedMessages":"37904","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37905","messages":"37906","suppressedMessages":"37907","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37908","messages":"37909","suppressedMessages":"37910","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37911","messages":"37912","suppressedMessages":"37913","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37914","messages":"37915","suppressedMessages":"37916","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37917","messages":"37918","suppressedMessages":"37919","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37920","messages":"37921","suppressedMessages":"37922","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37923","messages":"37924","suppressedMessages":"37925","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37926","messages":"37927","suppressedMessages":"37928","errorCount":2,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"37929","messages":"37930","suppressedMessages":"37931","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37932","messages":"37933","suppressedMessages":"37934","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37935","messages":"37936","suppressedMessages":"37937","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37938","messages":"37939","suppressedMessages":"37940","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37941","messages":"37942","suppressedMessages":"37943","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37944","messages":"37945","suppressedMessages":"37946","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37947","messages":"37948","suppressedMessages":"37949","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37950","messages":"37951","suppressedMessages":"37952","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37953","messages":"37954","suppressedMessages":"37955","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37956","messages":"37957","suppressedMessages":"37958","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37959","messages":"37960","suppressedMessages":"37961","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37962","messages":"37963","suppressedMessages":"37964","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37965","messages":"37966","suppressedMessages":"37967","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37968","messages":"37969","suppressedMessages":"37970","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37971","messages":"37972","suppressedMessages":"37973","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"37974","messages":"37975","suppressedMessages":"37976","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37977","messages":"37978","suppressedMessages":"37979","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37980","messages":"37981","suppressedMessages":"37982","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37983","messages":"37984","suppressedMessages":"37985","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37986","messages":"37987","suppressedMessages":"37988","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37989","messages":"37990","suppressedMessages":"37991","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37992","messages":"37993","suppressedMessages":"37994","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37995","messages":"37996","suppressedMessages":"37997","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37998","messages":"37999","suppressedMessages":"38000","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38001","messages":"38002","suppressedMessages":"38003","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38004","messages":"38005","suppressedMessages":"38006","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38007","messages":"38008","suppressedMessages":"38009","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38010","messages":"38011","suppressedMessages":"38012","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38013","messages":"38014","suppressedMessages":"38015","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38016","messages":"38017","suppressedMessages":"38018","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38019","messages":"38020","suppressedMessages":"38021","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38022","messages":"38023","suppressedMessages":"38024","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38025","messages":"38026","suppressedMessages":"38027","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38028","messages":"38029","suppressedMessages":"38030","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38031","messages":"38032","suppressedMessages":"38033","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38034","messages":"38035","suppressedMessages":"38036","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38037","messages":"38038","suppressedMessages":"38039","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38040","messages":"38041","suppressedMessages":"38042","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38043","messages":"38044","suppressedMessages":"38045","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38046","messages":"38047","suppressedMessages":"38048","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38049","messages":"38050","suppressedMessages":"38051","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38052","messages":"38053","suppressedMessages":"38054","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38055","messages":"38056","suppressedMessages":"38057","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38058","messages":"38059","suppressedMessages":"38060","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38061","messages":"38062","suppressedMessages":"38063","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38064","messages":"38065","suppressedMessages":"38066","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38067","messages":"38068","suppressedMessages":"38069","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38070","messages":"38071","suppressedMessages":"38072","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38073","messages":"38074","suppressedMessages":"38075","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38076","messages":"38077","suppressedMessages":"38078","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38079","messages":"38080","suppressedMessages":"38081","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38082","messages":"38083","suppressedMessages":"38084","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38085","messages":"38086","suppressedMessages":"38087","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38088","messages":"38089","suppressedMessages":"38090","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38091","messages":"38092","suppressedMessages":"38093","errorCount":4,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"38094","messages":"38095","suppressedMessages":"38096","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38097","messages":"38098","suppressedMessages":"38099","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38100","messages":"38101","suppressedMessages":"38102","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38103","messages":"38104","suppressedMessages":"38105","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38106","messages":"38107","suppressedMessages":"38108","errorCount":8,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"38109","messages":"38110","suppressedMessages":"38111","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38112","messages":"38113","suppressedMessages":"38114","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38115","messages":"38116","suppressedMessages":"38117","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38118","messages":"38119","suppressedMessages":"38120","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38121","messages":"38122","suppressedMessages":"38123","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38124","messages":"38125","suppressedMessages":"38126","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38127","messages":"38128","suppressedMessages":"38129","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38130","messages":"38131","suppressedMessages":"38132","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38133","messages":"38134","suppressedMessages":"38135","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38136","messages":"38137","suppressedMessages":"38138","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38139","messages":"38140","suppressedMessages":"38141","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38142","messages":"38143","suppressedMessages":"38144","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38145","messages":"38146","suppressedMessages":"38147","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38148","messages":"38149","suppressedMessages":"38150","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38151","messages":"38152","suppressedMessages":"38153","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38154","messages":"38155","suppressedMessages":"38156","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38157","messages":"38158","suppressedMessages":"38159","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38160","messages":"38161","suppressedMessages":"38162","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38163","messages":"38164","suppressedMessages":"38165","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38166","messages":"38167","suppressedMessages":"38168","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38169","messages":"38170","suppressedMessages":"38171","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38172","messages":"38173","suppressedMessages":"38174","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38175","messages":"38176","suppressedMessages":"38177","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38178","messages":"38179","suppressedMessages":"38180","errorCount":10,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"38181","messages":"38182","suppressedMessages":"38183","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38184","messages":"38185","suppressedMessages":"38186","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38187","messages":"38188","suppressedMessages":"38189","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38190","messages":"38191","suppressedMessages":"38192","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38193","messages":"38194","suppressedMessages":"38195","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38196","messages":"38197","suppressedMessages":"38198","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38199","messages":"38200","suppressedMessages":"38201","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38202","messages":"38203","suppressedMessages":"38204","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38205","messages":"38206","suppressedMessages":"38207","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38208","messages":"38209","suppressedMessages":"38210","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38211","messages":"38212","suppressedMessages":"38213","errorCount":83,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"38214","messages":"38215","suppressedMessages":"38216","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38217","messages":"38218","suppressedMessages":"38219","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38220","messages":"38221","suppressedMessages":"38222","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38223","messages":"38224","suppressedMessages":"38225","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38226","messages":"38227","suppressedMessages":"38228","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38229","messages":"38230","suppressedMessages":"38231","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38232","messages":"38233","suppressedMessages":"38234","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38235","messages":"38236","suppressedMessages":"38237","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38238","messages":"38239","suppressedMessages":"38240","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38241","messages":"38242","suppressedMessages":"38243","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38244","messages":"38245","suppressedMessages":"38246","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38247","messages":"38248","suppressedMessages":"38249","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38250","messages":"38251","suppressedMessages":"38252","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38253","messages":"38254","suppressedMessages":"38255","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38256","messages":"38257","suppressedMessages":"38258","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38259","messages":"38260","suppressedMessages":"38261","errorCount":6,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"38262","messages":"38263","suppressedMessages":"38264","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38265","messages":"38266","suppressedMessages":"38267","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38268","messages":"38269","suppressedMessages":"38270","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38271","messages":"38272","suppressedMessages":"38273","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38274","messages":"38275","suppressedMessages":"38276","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38277","messages":"38278","suppressedMessages":"38279","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38280","messages":"38281","suppressedMessages":"38282","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38283","messages":"38284","suppressedMessages":"38285","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38286","messages":"38287","suppressedMessages":"38288","errorCount":35,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"38289","messages":"38290","suppressedMessages":"38291","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38292","messages":"38293","suppressedMessages":"38294","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38295","messages":"38296","suppressedMessages":"38297","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38298","messages":"38299","suppressedMessages":"38300","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38301","messages":"38302","suppressedMessages":"38303","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38304","messages":"38305","suppressedMessages":"38306","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38307","messages":"38308","suppressedMessages":"38309","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38310","messages":"38311","suppressedMessages":"38312","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38313","messages":"38314","suppressedMessages":"38315","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38316","messages":"38317","suppressedMessages":"38318","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38319","messages":"38320","suppressedMessages":"38321","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38322","messages":"38323","suppressedMessages":"38324","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38325","messages":"38326","suppressedMessages":"38327","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38328","messages":"38329","suppressedMessages":"38330","errorCount":57,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"38331","messages":"38332","suppressedMessages":"38333","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38334","messages":"38335","suppressedMessages":"38336","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38337","messages":"38338","suppressedMessages":"38339","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38340","messages":"38341","suppressedMessages":"38342","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38343","messages":"38344","suppressedMessages":"38345","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38346","messages":"38347","suppressedMessages":"38348","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38349","messages":"38350","suppressedMessages":"38351","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38352","messages":"38353","suppressedMessages":"38354","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38355","messages":"38356","suppressedMessages":"38357","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38358","messages":"38359","suppressedMessages":"38360","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38361","messages":"38362","suppressedMessages":"38363","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38364","messages":"38365","suppressedMessages":"38366","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38367","messages":"38368","suppressedMessages":"38369","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38370","messages":"38371","suppressedMessages":"38372","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38373","messages":"38374","suppressedMessages":"38375","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38376","messages":"38377","suppressedMessages":"38378","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38379","messages":"38380","suppressedMessages":"38381","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38382","messages":"38383","suppressedMessages":"38384","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38385","messages":"38386","suppressedMessages":"38387","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38388","messages":"38389","suppressedMessages":"38390","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38391","messages":"38392","suppressedMessages":"38393","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38394","messages":"38395","suppressedMessages":"38396","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38397","messages":"38398","suppressedMessages":"38399","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38400","messages":"38401","suppressedMessages":"38402","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38403","messages":"38404","suppressedMessages":"38405","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38406","messages":"38407","suppressedMessages":"38408","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38409","messages":"38410","suppressedMessages":"38411","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38412","messages":"38413","suppressedMessages":"38414","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38415","messages":"38416","suppressedMessages":"38417","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38418","messages":"38419","suppressedMessages":"38420","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38421","messages":"38422","suppressedMessages":"38423","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38424","messages":"38425","suppressedMessages":"38426","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38427","messages":"38428","suppressedMessages":"38429","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38430","messages":"38431","suppressedMessages":"38432","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38433","messages":"38434","suppressedMessages":"38435","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38436","messages":"38437","suppressedMessages":"38438","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38439","messages":"38440","suppressedMessages":"38441","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38442","messages":"38443","suppressedMessages":"38444","errorCount":9,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"38445","messages":"38446","suppressedMessages":"38447","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38448","messages":"38449","suppressedMessages":"38450","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38451","messages":"38452","suppressedMessages":"38453","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38454","messages":"38455","suppressedMessages":"38456","errorCount":12,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"38457","messages":"38458","suppressedMessages":"38459","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38460","messages":"38461","suppressedMessages":"38462","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38463","messages":"38464","suppressedMessages":"38465","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38466","messages":"38467","suppressedMessages":"38468","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38469","messages":"38470","suppressedMessages":"38471","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38472","messages":"38473","suppressedMessages":"38474","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38475","messages":"38476","suppressedMessages":"38477","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38478","messages":"38479","suppressedMessages":"38480","errorCount":7,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"38481","messages":"38482","suppressedMessages":"38483","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38484","messages":"38485","suppressedMessages":"38486","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38487","messages":"38488","suppressedMessages":"38489","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38490","messages":"38491","suppressedMessages":"38492","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38493","messages":"38494","suppressedMessages":"38495","errorCount":5,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"38496","messages":"38497","suppressedMessages":"38498","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38499","messages":"38500","suppressedMessages":"38501","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38502","messages":"38503","suppressedMessages":"38504","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38505","messages":"38506","suppressedMessages":"38507","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38508","messages":"38509","suppressedMessages":"38510","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38511","messages":"38512","suppressedMessages":"38513","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38514","messages":"38515","suppressedMessages":"38516","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38517","messages":"38518","suppressedMessages":"38519","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38520","messages":"38521","suppressedMessages":"38522","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38523","messages":"38524","suppressedMessages":"38525","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38526","messages":"38527","suppressedMessages":"38528","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38529","messages":"38530","suppressedMessages":"38531","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38532","messages":"38533","suppressedMessages":"38534","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38535","messages":"38536","suppressedMessages":"38537","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38538","messages":"38539","suppressedMessages":"38540","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38541","messages":"38542","suppressedMessages":"38543","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38544","messages":"38545","suppressedMessages":"38546","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38547","messages":"38548","suppressedMessages":"38549","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38550","messages":"38551","suppressedMessages":"38552","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38553","messages":"38554","suppressedMessages":"38555","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38556","messages":"38557","suppressedMessages":"38558","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38559","messages":"38560","suppressedMessages":"38561","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38562","messages":"38563","suppressedMessages":"38564","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38565","messages":"38566","suppressedMessages":"38567","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38568","messages":"38569","suppressedMessages":"38570","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38571","messages":"38572","suppressedMessages":"38573","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38574","messages":"38575","suppressedMessages":"38576","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"38577","messages":"38578","suppressedMessages":"38579","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"38580","messages":"38581","suppressedMessages":"38582","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38583","messages":"38584","suppressedMessages":"38585","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38586","messages":"38587","suppressedMessages":"38588","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38589","messages":"38590","suppressedMessages":"38591","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38592","messages":"38593","suppressedMessages":"38594","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38595","messages":"38596","suppressedMessages":"38597","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38598","messages":"38599","suppressedMessages":"38600","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38601","messages":"38602","suppressedMessages":"38603","errorCount":3,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"38604","messages":"38605","suppressedMessages":"38606","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38607","messages":"38608","suppressedMessages":"38609","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38610","messages":"38611","suppressedMessages":"38612","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38613","messages":"38614","suppressedMessages":"38615","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38616","messages":"38617","suppressedMessages":"38618","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38619","messages":"38620","suppressedMessages":"38621","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38622","messages":"38623","suppressedMessages":"38624","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38625","messages":"38626","suppressedMessages":"38627","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38628","messages":"38629","suppressedMessages":"38630","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38631","messages":"38632","suppressedMessages":"38633","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38634","messages":"38635","suppressedMessages":"38636","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38637","messages":"38638","suppressedMessages":"38639","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38640","messages":"38641","suppressedMessages":"38642","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38643","messages":"38644","suppressedMessages":"38645","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38646","messages":"38647","suppressedMessages":"38648","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38649","messages":"38650","suppressedMessages":"38651","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38652","messages":"38653","suppressedMessages":"38654","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38655","messages":"38656","suppressedMessages":"38657","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38658","messages":"38659","suppressedMessages":"38660","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38661","messages":"38662","suppressedMessages":"38663","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38664","messages":"38665","suppressedMessages":"38666","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38667","messages":"38668","suppressedMessages":"38669","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38670","messages":"38671","suppressedMessages":"38672","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38673","messages":"38674","suppressedMessages":"38675","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38676","messages":"38677","suppressedMessages":"38678","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38679","messages":"38680","suppressedMessages":"38681","errorCount":7,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"38682","messages":"38683","suppressedMessages":"38684","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38685","messages":"38686","suppressedMessages":"38687","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38688","messages":"38689","suppressedMessages":"38690","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38691","messages":"38692","suppressedMessages":"38693","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"38694","messages":"38695","suppressedMessages":"38696","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38697","messages":"38698","suppressedMessages":"38699","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38700","messages":"38701","suppressedMessages":"38702","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38703","messages":"38704","suppressedMessages":"38705","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38706","messages":"38707","suppressedMessages":"38708","errorCount":3,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"38709","messages":"38710","suppressedMessages":"38711","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38712","messages":"38713","suppressedMessages":"38714","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38715","messages":"38716","suppressedMessages":"38717","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38718","messages":"38719","suppressedMessages":"38720","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38721","messages":"38722","suppressedMessages":"38723","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38724","messages":"38725","suppressedMessages":"38726","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38727","messages":"38728","suppressedMessages":"38729","errorCount":3,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"38730","messages":"38731","suppressedMessages":"38732","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38733","messages":"38734","suppressedMessages":"38735","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38736","messages":"38737","suppressedMessages":"38738","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38739","messages":"38740","suppressedMessages":"38741","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38742","messages":"38743","suppressedMessages":"38744","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38745","messages":"38746","suppressedMessages":"38747","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38748","messages":"38749","suppressedMessages":"38750","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38751","messages":"38752","suppressedMessages":"38753","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38754","messages":"38755","suppressedMessages":"38756","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38757","messages":"38758","suppressedMessages":"38759","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38760","messages":"38761","suppressedMessages":"38762","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38763","messages":"38764","suppressedMessages":"38765","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38766","messages":"38767","suppressedMessages":"38768","errorCount":8,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"38769","messages":"38770","suppressedMessages":"38771","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38772","messages":"38773","suppressedMessages":"38774","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38775","messages":"38776","suppressedMessages":"38777","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38778","messages":"38779","suppressedMessages":"38780","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38781","messages":"38782","suppressedMessages":"38783","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38784","messages":"38785","suppressedMessages":"38786","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38787","messages":"38788","suppressedMessages":"38789","errorCount":11,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"38790","messages":"38791","suppressedMessages":"38792","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38793","messages":"38794","suppressedMessages":"38795","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38796","messages":"38797","suppressedMessages":"38798","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38799","messages":"38800","suppressedMessages":"38801","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38802","messages":"38803","suppressedMessages":"38804","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38805","messages":"38806","suppressedMessages":"38807","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38808","messages":"38809","suppressedMessages":"38810","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38811","messages":"38812","suppressedMessages":"38813","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"38814","messages":"38815","suppressedMessages":"38816","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38817","messages":"38818","suppressedMessages":"38819","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"38820","messages":"38821","suppressedMessages":"38822","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38823","messages":"38824","suppressedMessages":"38825","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38826","messages":"38827","suppressedMessages":"38828","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38829","messages":"38830","suppressedMessages":"38831","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38832","messages":"38833","suppressedMessages":"38834","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38835","messages":"38836","suppressedMessages":"38837","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38838","messages":"38839","suppressedMessages":"38840","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38841","messages":"38842","suppressedMessages":"38843","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38844","messages":"38845","suppressedMessages":"38846","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38847","messages":"38848","suppressedMessages":"38849","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38850","messages":"38851","suppressedMessages":"38852","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38853","messages":"38854","suppressedMessages":"38855","errorCount":9,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"38856","messages":"38857","suppressedMessages":"38858","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38859","messages":"38860","suppressedMessages":"38861","errorCount":7,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"38862","messages":"38863","suppressedMessages":"38864","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38865","messages":"38866","suppressedMessages":"38867","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38868","messages":"38869","suppressedMessages":"38870","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38871","messages":"38872","suppressedMessages":"38873","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38874","messages":"38875","suppressedMessages":"38876","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38877","messages":"38878","suppressedMessages":"38879","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38880","messages":"38881","suppressedMessages":"38882","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38883","messages":"38884","suppressedMessages":"38885","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38886","messages":"38887","suppressedMessages":"38888","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38889","messages":"38890","suppressedMessages":"38891","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38892","messages":"38893","suppressedMessages":"38894","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38895","messages":"38896","suppressedMessages":"38897","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38898","messages":"38899","suppressedMessages":"38900","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"38901","messages":"38902","suppressedMessages":"38903","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38904","messages":"38905","suppressedMessages":"38906","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38907","messages":"38908","suppressedMessages":"38909","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38910","messages":"38911","suppressedMessages":"38912","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38913","messages":"38914","suppressedMessages":"38915","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38916","messages":"38917","suppressedMessages":"38918","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38919","messages":"38920","suppressedMessages":"38921","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38922","messages":"38923","suppressedMessages":"38924","errorCount":13,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"38925","messages":"38926","suppressedMessages":"38927","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38928","messages":"38929","suppressedMessages":"38930","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38931","messages":"38932","suppressedMessages":"38933","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38934","messages":"38935","suppressedMessages":"38936","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38937","messages":"38938","suppressedMessages":"38939","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38940","messages":"38941","suppressedMessages":"38942","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38943","messages":"38944","suppressedMessages":"38945","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38946","messages":"38947","suppressedMessages":"38948","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38949","messages":"38950","suppressedMessages":"38951","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38952","messages":"38953","suppressedMessages":"38954","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38955","messages":"38956","suppressedMessages":"38957","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38958","messages":"38959","suppressedMessages":"38960","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38961","messages":"38962","suppressedMessages":"38963","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"38964","messages":"38965","suppressedMessages":"38966","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38967","messages":"38968","suppressedMessages":"38969","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38970","messages":"38971","suppressedMessages":"38972","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38973","messages":"38974","suppressedMessages":"38975","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38976","messages":"38977","suppressedMessages":"38978","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38979","messages":"38980","suppressedMessages":"38981","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38982","messages":"38983","suppressedMessages":"38984","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38985","messages":"38986","suppressedMessages":"38987","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38988","messages":"38989","suppressedMessages":"38990","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38991","messages":"38992","suppressedMessages":"38993","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38994","messages":"38995","suppressedMessages":"38996","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"38997","messages":"38998","suppressedMessages":"38999","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39000","messages":"39001","suppressedMessages":"39002","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39003","messages":"39004","suppressedMessages":"39005","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39006","messages":"39007","suppressedMessages":"39008","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39009","messages":"39010","suppressedMessages":"39011","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39012","messages":"39013","suppressedMessages":"39014","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39015","messages":"39016","suppressedMessages":"39017","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39018","messages":"39019","suppressedMessages":"39020","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39021","messages":"39022","suppressedMessages":"39023","errorCount":2,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"39024","messages":"39025","suppressedMessages":"39026","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39027","messages":"39028","suppressedMessages":"39029","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39030","messages":"39031","suppressedMessages":"39032","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39033","messages":"39034","suppressedMessages":"39035","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39036","messages":"39037","suppressedMessages":"39038","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39039","messages":"39040","suppressedMessages":"39041","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39042","messages":"39043","suppressedMessages":"39044","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39045","messages":"39046","suppressedMessages":"39047","errorCount":14,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"39048","messages":"39049","suppressedMessages":"39050","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39051","messages":"39052","suppressedMessages":"39053","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39054","messages":"39055","suppressedMessages":"39056","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39057","messages":"39058","suppressedMessages":"39059","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39060","messages":"39061","suppressedMessages":"39062","errorCount":18,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"39063","messages":"39064","suppressedMessages":"39065","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39066","messages":"39067","suppressedMessages":"39068","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39069","messages":"39070","suppressedMessages":"39071","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39072","messages":"39073","suppressedMessages":"39074","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39075","messages":"39076","suppressedMessages":"39077","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39078","messages":"39079","suppressedMessages":"39080","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39081","messages":"39082","suppressedMessages":"39083","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39084","messages":"39085","suppressedMessages":"39086","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39087","messages":"39088","suppressedMessages":"39089","errorCount":2,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"39090","messages":"39091","suppressedMessages":"39092","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39093","messages":"39094","suppressedMessages":"39095","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39096","messages":"39097","suppressedMessages":"39098","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39099","messages":"39100","suppressedMessages":"39101","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39102","messages":"39103","suppressedMessages":"39104","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39105","messages":"39106","suppressedMessages":"39107","errorCount":5,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"39108","messages":"39109","suppressedMessages":"39110","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39111","messages":"39112","suppressedMessages":"39113","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39114","messages":"39115","suppressedMessages":"39116","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39117","messages":"39118","suppressedMessages":"39119","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39120","messages":"39121","suppressedMessages":"39122","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39123","messages":"39124","suppressedMessages":"39125","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39126","messages":"39127","suppressedMessages":"39128","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39129","messages":"39130","suppressedMessages":"39131","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39132","messages":"39133","suppressedMessages":"39134","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39135","messages":"39136","suppressedMessages":"39137","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39138","messages":"39139","suppressedMessages":"39140","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39141","messages":"39142","suppressedMessages":"39143","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39144","messages":"39145","suppressedMessages":"39146","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39147","messages":"39148","suppressedMessages":"39149","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39150","messages":"39151","suppressedMessages":"39152","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39153","messages":"39154","suppressedMessages":"39155","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39156","messages":"39157","suppressedMessages":"39158","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39159","messages":"39160","suppressedMessages":"39161","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39162","messages":"39163","suppressedMessages":"39164","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39165","messages":"39166","suppressedMessages":"39167","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39168","messages":"39169","suppressedMessages":"39170","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39171","messages":"39172","suppressedMessages":"39173","errorCount":4,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"39174","messages":"39175","suppressedMessages":"39176","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"39177","messages":"39178","suppressedMessages":"39179","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39180","messages":"39181","suppressedMessages":"39182","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39183","messages":"39184","suppressedMessages":"39185","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39186","messages":"39187","suppressedMessages":"39188","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39189","messages":"39190","suppressedMessages":"39191","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39192","messages":"39193","suppressedMessages":"39194","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39195","messages":"39196","suppressedMessages":"39197","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39198","messages":"39199","suppressedMessages":"39200","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39201","messages":"39202","suppressedMessages":"39203","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39204","messages":"39205","suppressedMessages":"39206","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"39207","messages":"39208","suppressedMessages":"39209","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39210","messages":"39211","suppressedMessages":"39212","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39213","messages":"39214","suppressedMessages":"39215","errorCount":4,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"39216","messages":"39217","suppressedMessages":"39218","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39219","messages":"39220","suppressedMessages":"39221","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"39222","messages":"39223","suppressedMessages":"39224","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39225","messages":"39226","suppressedMessages":"39227","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39228","messages":"39229","suppressedMessages":"39230","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39231","messages":"39232","suppressedMessages":"39233","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39234","messages":"39235","suppressedMessages":"39236","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39237","messages":"39238","suppressedMessages":"39239","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39240","messages":"39241","suppressedMessages":"39242","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"39243","messages":"39244","suppressedMessages":"39245","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39246","messages":"39247","suppressedMessages":"39248","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39249","messages":"39250","suppressedMessages":"39251","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39252","messages":"39253","suppressedMessages":"39254","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39255","messages":"39256","suppressedMessages":"39257","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39258","messages":"39259","suppressedMessages":"39260","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39261","messages":"39262","suppressedMessages":"39263","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39264","messages":"39265","suppressedMessages":"39266","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39267","messages":"39268","suppressedMessages":"39269","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39270","messages":"39271","suppressedMessages":"39272","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39273","messages":"39274","suppressedMessages":"39275","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39276","messages":"39277","suppressedMessages":"39278","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39279","messages":"39280","suppressedMessages":"39281","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39282","messages":"39283","suppressedMessages":"39284","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39285","messages":"39286","suppressedMessages":"39287","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39288","messages":"39289","suppressedMessages":"39290","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39291","messages":"39292","suppressedMessages":"39293","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39294","messages":"39295","suppressedMessages":"39296","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39297","messages":"39298","suppressedMessages":"39299","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39300","messages":"39301","suppressedMessages":"39302","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39303","messages":"39304","suppressedMessages":"39305","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39306","messages":"39307","suppressedMessages":"39308","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39309","messages":"39310","suppressedMessages":"39311","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39312","messages":"39313","suppressedMessages":"39314","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39315","messages":"39316","suppressedMessages":"39317","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39318","messages":"39319","suppressedMessages":"39320","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39321","messages":"39322","suppressedMessages":"39323","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39324","messages":"39325","suppressedMessages":"39326","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39327","messages":"39328","suppressedMessages":"39329","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39330","messages":"39331","suppressedMessages":"39332","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39333","messages":"39334","suppressedMessages":"39335","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39336","messages":"39337","suppressedMessages":"39338","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39339","messages":"39340","suppressedMessages":"39341","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39342","messages":"39343","suppressedMessages":"39344","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39345","messages":"39346","suppressedMessages":"39347","errorCount":3,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"39348","messages":"39349","suppressedMessages":"39350","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39351","messages":"39352","suppressedMessages":"39353","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39354","messages":"39355","suppressedMessages":"39356","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39357","messages":"39358","suppressedMessages":"39359","errorCount":10,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"39360","messages":"39361","suppressedMessages":"39362","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39363","messages":"39364","suppressedMessages":"39365","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"39366","messages":"39367","suppressedMessages":"39368","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39369","messages":"39370","suppressedMessages":"39371","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39372","messages":"39373","suppressedMessages":"39374","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39375","messages":"39376","suppressedMessages":"39377","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39378","messages":"39379","suppressedMessages":"39380","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39381","messages":"39382","suppressedMessages":"39383","errorCount":10,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"39384","messages":"39385","suppressedMessages":"39386","errorCount":17,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"39387","messages":"39388","suppressedMessages":"39389","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39390","messages":"39391","suppressedMessages":"39392","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39393","messages":"39394","suppressedMessages":"39395","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39396","messages":"39397","suppressedMessages":"39398","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39399","messages":"39400","suppressedMessages":"39401","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39402","messages":"39403","suppressedMessages":"39404","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39405","messages":"39406","suppressedMessages":"39407","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39408","messages":"39409","suppressedMessages":"39410","errorCount":12,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"39411","messages":"39412","suppressedMessages":"39413","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39414","messages":"39415","suppressedMessages":"39416","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39417","messages":"39418","suppressedMessages":"39419","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39420","messages":"39421","suppressedMessages":"39422","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39423","messages":"39424","suppressedMessages":"39425","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39426","messages":"39427","suppressedMessages":"39428","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39429","messages":"39430","suppressedMessages":"39431","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39432","messages":"39433","suppressedMessages":"39434","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39435","messages":"39436","suppressedMessages":"39437","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39438","messages":"39439","suppressedMessages":"39440","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39441","messages":"39442","suppressedMessages":"39443","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39444","messages":"39445","suppressedMessages":"39446","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39447","messages":"39448","suppressedMessages":"39449","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39450","messages":"39451","suppressedMessages":"39452","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39453","messages":"39454","suppressedMessages":"39455","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39456","messages":"39457","suppressedMessages":"39458","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39459","messages":"39460","suppressedMessages":"39461","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39462","messages":"39463","suppressedMessages":"39464","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39465","messages":"39466","suppressedMessages":"39467","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39468","messages":"39469","suppressedMessages":"39470","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39471","messages":"39472","suppressedMessages":"39473","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39474","messages":"39475","suppressedMessages":"39476","errorCount":7,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"39477","messages":"39478","suppressedMessages":"39479","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39480","messages":"39481","suppressedMessages":"39482","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39483","messages":"39484","suppressedMessages":"39485","errorCount":5,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"39486","messages":"39487","suppressedMessages":"39488","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39489","messages":"39490","suppressedMessages":"39491","errorCount":4,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"39492","messages":"39493","suppressedMessages":"39494","errorCount":21,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"39495","messages":"39496","suppressedMessages":"39497","errorCount":15,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"39498","messages":"39499","suppressedMessages":"39500","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39501","messages":"39502","suppressedMessages":"39503","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39504","messages":"39505","suppressedMessages":"39506","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"39507","messages":"39508","suppressedMessages":"39509","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39510","messages":"39511","suppressedMessages":"39512","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39513","messages":"39514","suppressedMessages":"39515","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39516","messages":"39517","suppressedMessages":"39518","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39519","messages":"39520","suppressedMessages":"39521","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39522","messages":"39523","suppressedMessages":"39524","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39525","messages":"39526","suppressedMessages":"39527","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39528","messages":"39529","suppressedMessages":"39530","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39531","messages":"39532","suppressedMessages":"39533","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39534","messages":"39535","suppressedMessages":"39536","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39537","messages":"39538","suppressedMessages":"39539","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39540","messages":"39541","suppressedMessages":"39542","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39543","messages":"39544","suppressedMessages":"39545","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39546","messages":"39547","suppressedMessages":"39548","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39549","messages":"39550","suppressedMessages":"39551","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39552","messages":"39553","suppressedMessages":"39554","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39555","messages":"39556","suppressedMessages":"39557","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39558","messages":"39559","suppressedMessages":"39560","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39561","messages":"39562","suppressedMessages":"39563","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39564","messages":"39565","suppressedMessages":"39566","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39567","messages":"39568","suppressedMessages":"39569","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39570","messages":"39571","suppressedMessages":"39572","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39573","messages":"39574","suppressedMessages":"39575","errorCount":25,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"39576","messages":"39577","suppressedMessages":"39578","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39579","messages":"39580","suppressedMessages":"39581","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39582","messages":"39583","suppressedMessages":"39584","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39585","messages":"39586","suppressedMessages":"39587","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39588","messages":"39589","suppressedMessages":"39590","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39591","messages":"39592","suppressedMessages":"39593","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39594","messages":"39595","suppressedMessages":"39596","errorCount":76,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"39597","messages":"39598","suppressedMessages":"39599","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39600","messages":"39601","suppressedMessages":"39602","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39603","messages":"39604","suppressedMessages":"39605","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39606","messages":"39607","suppressedMessages":"39608","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39609","messages":"39610","suppressedMessages":"39611","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39612","messages":"39613","suppressedMessages":"39614","errorCount":74,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"39615","messages":"39616","suppressedMessages":"39617","errorCount":17,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"39618","messages":"39619","suppressedMessages":"39620","errorCount":6,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"39621","messages":"39622","suppressedMessages":"39623","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39624","messages":"39625","suppressedMessages":"39626","errorCount":6,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"39627","messages":"39628","suppressedMessages":"39629","errorCount":17,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"39630","messages":"39631","suppressedMessages":"39632","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39633","messages":"39634","suppressedMessages":"39635","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39636","messages":"39637","suppressedMessages":"39638","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39639","messages":"39640","suppressedMessages":"39641","errorCount":75,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"39642","messages":"39643","suppressedMessages":"39644","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39645","messages":"39646","suppressedMessages":"39647","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39648","messages":"39649","suppressedMessages":"39650","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39651","messages":"39652","suppressedMessages":"39653","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39654","messages":"39655","suppressedMessages":"39656","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39657","messages":"39658","suppressedMessages":"39659","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39660","messages":"39661","suppressedMessages":"39662","errorCount":14,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"39663","messages":"39664","suppressedMessages":"39665","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39666","messages":"39667","suppressedMessages":"39668","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39669","messages":"39670","suppressedMessages":"39671","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39672","messages":"39673","suppressedMessages":"39674","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39675","messages":"39676","suppressedMessages":"39677","errorCount":12,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"39678","messages":"39679","suppressedMessages":"39680","errorCount":4,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"39681","messages":"39682","suppressedMessages":"39683","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39684","messages":"39685","suppressedMessages":"39686","errorCount":9,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"39687","messages":"39688","suppressedMessages":"39689","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39690","messages":"39691","suppressedMessages":"39692","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39693","messages":"39694","suppressedMessages":"39695","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39696","messages":"39697","suppressedMessages":"39698","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39699","messages":"39700","suppressedMessages":"39701","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39702","messages":"39703","suppressedMessages":"39704","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39705","messages":"39706","suppressedMessages":"39707","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39708","messages":"39709","suppressedMessages":"39710","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39711","messages":"39712","suppressedMessages":"39713","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39714","messages":"39715","suppressedMessages":"39716","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39717","messages":"39718","suppressedMessages":"39719","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39720","messages":"39721","suppressedMessages":"39722","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39723","messages":"39724","suppressedMessages":"39725","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39726","messages":"39727","suppressedMessages":"39728","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39729","messages":"39730","suppressedMessages":"39731","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39732","messages":"39733","suppressedMessages":"39734","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39735","messages":"39736","suppressedMessages":"39737","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39738","messages":"39739","suppressedMessages":"39740","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39741","messages":"39742","suppressedMessages":"39743","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39744","messages":"39745","suppressedMessages":"39746","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39747","messages":"39748","suppressedMessages":"39749","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39750","messages":"39751","suppressedMessages":"39752","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39753","messages":"39754","suppressedMessages":"39755","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39756","messages":"39757","suppressedMessages":"39758","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39759","messages":"39760","suppressedMessages":"39761","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39762","messages":"39763","suppressedMessages":"39764","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39765","messages":"39766","suppressedMessages":"39767","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39768","messages":"39769","suppressedMessages":"39770","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39771","messages":"39772","suppressedMessages":"39773","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39774","messages":"39775","suppressedMessages":"39776","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39777","messages":"39778","suppressedMessages":"39779","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39780","messages":"39781","suppressedMessages":"39782","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39783","messages":"39784","suppressedMessages":"39785","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39786","messages":"39787","suppressedMessages":"39788","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39789","messages":"39790","suppressedMessages":"39791","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39792","messages":"39793","suppressedMessages":"39794","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39795","messages":"39796","suppressedMessages":"39797","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39798","messages":"39799","suppressedMessages":"39800","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39801","messages":"39802","suppressedMessages":"39803","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39804","messages":"39805","suppressedMessages":"39806","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39807","messages":"39808","suppressedMessages":"39809","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39810","messages":"39811","suppressedMessages":"39812","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39813","messages":"39814","suppressedMessages":"39815","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39816","messages":"39817","suppressedMessages":"39818","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39819","messages":"39820","suppressedMessages":"39821","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39822","messages":"39823","suppressedMessages":"39824","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39825","messages":"39826","suppressedMessages":"39827","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39828","messages":"39829","suppressedMessages":"39830","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39831","messages":"39832","suppressedMessages":"39833","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39834","messages":"39835","suppressedMessages":"39836","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39837","messages":"39838","suppressedMessages":"39839","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39840","messages":"39841","suppressedMessages":"39842","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39843","messages":"39844","suppressedMessages":"39845","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39846","messages":"39847","suppressedMessages":"39848","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39849","messages":"39850","suppressedMessages":"39851","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39852","messages":"39853","suppressedMessages":"39854","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39855","messages":"39856","suppressedMessages":"39857","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39858","messages":"39859","suppressedMessages":"39860","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39861","messages":"39862","suppressedMessages":"39863","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39864","messages":"39865","suppressedMessages":"39866","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39867","messages":"39868","suppressedMessages":"39869","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39870","messages":"39871","suppressedMessages":"39872","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39873","messages":"39874","suppressedMessages":"39875","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39876","messages":"39877","suppressedMessages":"39878","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39879","messages":"39880","suppressedMessages":"39881","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39882","messages":"39883","suppressedMessages":"39884","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39885","messages":"39886","suppressedMessages":"39887","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39888","messages":"39889","suppressedMessages":"39890","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39891","messages":"39892","suppressedMessages":"39893","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39894","messages":"39895","suppressedMessages":"39896","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39897","messages":"39898","suppressedMessages":"39899","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39900","messages":"39901","suppressedMessages":"39902","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39903","messages":"39904","suppressedMessages":"39905","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39906","messages":"39907","suppressedMessages":"39908","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39909","messages":"39910","suppressedMessages":"39911","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39912","messages":"39913","suppressedMessages":"39914","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39915","messages":"39916","suppressedMessages":"39917","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39918","messages":"39919","suppressedMessages":"39920","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39921","messages":"39922","suppressedMessages":"39923","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39924","messages":"39925","suppressedMessages":"39926","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39927","messages":"39928","suppressedMessages":"39929","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39930","messages":"39931","suppressedMessages":"39932","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39933","messages":"39934","suppressedMessages":"39935","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39936","messages":"39937","suppressedMessages":"39938","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39939","messages":"39940","suppressedMessages":"39941","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39942","messages":"39943","suppressedMessages":"39944","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39945","messages":"39946","suppressedMessages":"39947","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39948","messages":"39949","suppressedMessages":"39950","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39951","messages":"39952","suppressedMessages":"39953","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39954","messages":"39955","suppressedMessages":"39956","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39957","messages":"39958","suppressedMessages":"39959","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39960","messages":"39961","suppressedMessages":"39962","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39963","messages":"39964","suppressedMessages":"39965","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39966","messages":"39967","suppressedMessages":"39968","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39969","messages":"39970","suppressedMessages":"39971","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39972","messages":"39973","suppressedMessages":"39974","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39975","messages":"39976","suppressedMessages":"39977","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39978","messages":"39979","suppressedMessages":"39980","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39981","messages":"39982","suppressedMessages":"39983","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39984","messages":"39985","suppressedMessages":"39986","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39987","messages":"39988","suppressedMessages":"39989","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39990","messages":"39991","suppressedMessages":"39992","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39993","messages":"39994","suppressedMessages":"39995","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39996","messages":"39997","suppressedMessages":"39998","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39999","messages":"40000","suppressedMessages":"40001","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40002","messages":"40003","suppressedMessages":"40004","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40005","messages":"40006","suppressedMessages":"40007","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40008","messages":"40009","suppressedMessages":"40010","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40011","messages":"40012","suppressedMessages":"40013","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40014","messages":"40015","suppressedMessages":"40016","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40017","messages":"40018","suppressedMessages":"40019","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40020","messages":"40021","suppressedMessages":"40022","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40023","messages":"40024","suppressedMessages":"40025","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40026","messages":"40027","suppressedMessages":"40028","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40029","messages":"40030","suppressedMessages":"40031","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40032","messages":"40033","suppressedMessages":"40034","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40035","messages":"40036","suppressedMessages":"40037","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40038","messages":"40039","suppressedMessages":"40040","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40041","messages":"40042","suppressedMessages":"40043","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40044","messages":"40045","suppressedMessages":"40046","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40047","messages":"40048","suppressedMessages":"40049","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40050","messages":"40051","suppressedMessages":"40052","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40053","messages":"40054","suppressedMessages":"40055","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40056","messages":"40057","suppressedMessages":"40058","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40059","messages":"40060","suppressedMessages":"40061","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40062","messages":"40063","suppressedMessages":"40064","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40065","messages":"40066","suppressedMessages":"40067","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40068","messages":"40069","suppressedMessages":"40070","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40071","messages":"40072","suppressedMessages":"40073","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40074","messages":"40075","suppressedMessages":"40076","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40077","messages":"40078","suppressedMessages":"40079","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40080","messages":"40081","suppressedMessages":"40082","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40083","messages":"40084","suppressedMessages":"40085","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40086","messages":"40087","suppressedMessages":"40088","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40089","messages":"40090","suppressedMessages":"40091","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40092","messages":"40093","suppressedMessages":"40094","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40095","messages":"40096","suppressedMessages":"40097","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40098","messages":"40099","suppressedMessages":"40100","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40101","messages":"40102","suppressedMessages":"40103","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40104","messages":"40105","suppressedMessages":"40106","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40107","messages":"40108","suppressedMessages":"40109","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40110","messages":"40111","suppressedMessages":"40112","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40113","messages":"40114","suppressedMessages":"40115","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40116","messages":"40117","suppressedMessages":"40118","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40119","messages":"40120","suppressedMessages":"40121","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40122","messages":"40123","suppressedMessages":"40124","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40125","messages":"40126","suppressedMessages":"40127","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40128","messages":"40129","suppressedMessages":"40130","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40131","messages":"40132","suppressedMessages":"40133","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40134","messages":"40135","suppressedMessages":"40136","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40137","messages":"40138","suppressedMessages":"40139","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40140","messages":"40141","suppressedMessages":"40142","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40143","messages":"40144","suppressedMessages":"40145","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40146","messages":"40147","suppressedMessages":"40148","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40149","messages":"40150","suppressedMessages":"40151","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40152","messages":"40153","suppressedMessages":"40154","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40155","messages":"40156","suppressedMessages":"40157","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40158","messages":"40159","suppressedMessages":"40160","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40161","messages":"40162","suppressedMessages":"40163","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40164","messages":"40165","suppressedMessages":"40166","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40167","messages":"40168","suppressedMessages":"40169","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40170","messages":"40171","suppressedMessages":"40172","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40173","messages":"40174","suppressedMessages":"40175","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40176","messages":"40177","suppressedMessages":"40178","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40179","messages":"40180","suppressedMessages":"40181","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40182","messages":"40183","suppressedMessages":"40184","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40185","messages":"40186","suppressedMessages":"40187","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40188","messages":"40189","suppressedMessages":"40190","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40191","messages":"40192","suppressedMessages":"40193","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40194","messages":"40195","suppressedMessages":"40196","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40197","messages":"40198","suppressedMessages":"40199","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40200","messages":"40201","suppressedMessages":"40202","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40203","messages":"40204","suppressedMessages":"40205","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40206","messages":"40207","suppressedMessages":"40208","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40209","messages":"40210","suppressedMessages":"40211","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40212","messages":"40213","suppressedMessages":"40214","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40215","messages":"40216","suppressedMessages":"40217","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40218","messages":"40219","suppressedMessages":"40220","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40221","messages":"40222","suppressedMessages":"40223","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40224","messages":"40225","suppressedMessages":"40226","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40227","messages":"40228","suppressedMessages":"40229","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40230","messages":"40231","suppressedMessages":"40232","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40233","messages":"40234","suppressedMessages":"40235","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40236","messages":"40237","suppressedMessages":"40238","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40239","messages":"40240","suppressedMessages":"40241","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40242","messages":"40243","suppressedMessages":"40244","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40245","messages":"40246","suppressedMessages":"40247","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40248","messages":"40249","suppressedMessages":"40250","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40251","messages":"40252","suppressedMessages":"40253","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40254","messages":"40255","suppressedMessages":"40256","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40257","messages":"40258","suppressedMessages":"40259","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40260","messages":"40261","suppressedMessages":"40262","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40263","messages":"40264","suppressedMessages":"40265","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40266","messages":"40267","suppressedMessages":"40268","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40269","messages":"40270","suppressedMessages":"40271","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40272","messages":"40273","suppressedMessages":"40274","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40275","messages":"40276","suppressedMessages":"40277","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40278","messages":"40279","suppressedMessages":"40280","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40281","messages":"40282","suppressedMessages":"40283","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40284","messages":"40285","suppressedMessages":"40286","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40287","messages":"40288","suppressedMessages":"40289","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40290","messages":"40291","suppressedMessages":"40292","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40293","messages":"40294","suppressedMessages":"40295","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40296","messages":"40297","suppressedMessages":"40298","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40299","messages":"40300","suppressedMessages":"40301","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40302","messages":"40303","suppressedMessages":"40304","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40305","messages":"40306","suppressedMessages":"40307","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40308","messages":"40309","suppressedMessages":"40310","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40311","messages":"40312","suppressedMessages":"40313","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40314","messages":"40315","suppressedMessages":"40316","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40317","messages":"40318","suppressedMessages":"40319","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40320","messages":"40321","suppressedMessages":"40322","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40323","messages":"40324","suppressedMessages":"40325","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40326","messages":"40327","suppressedMessages":"40328","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40329","messages":"40330","suppressedMessages":"40331","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40332","messages":"40333","suppressedMessages":"40334","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40335","messages":"40336","suppressedMessages":"40337","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40338","messages":"40339","suppressedMessages":"40340","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40341","messages":"40342","suppressedMessages":"40343","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40344","messages":"40345","suppressedMessages":"40346","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40347","messages":"40348","suppressedMessages":"40349","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40350","messages":"40351","suppressedMessages":"40352","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40353","messages":"40354","suppressedMessages":"40355","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40356","messages":"40357","suppressedMessages":"40358","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40359","messages":"40360","suppressedMessages":"40361","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40362","messages":"40363","suppressedMessages":"40364","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40365","messages":"40366","suppressedMessages":"40367","errorCount":16,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"40368","messages":"40369","suppressedMessages":"40370","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40371","messages":"40372","suppressedMessages":"40373","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40374","messages":"40375","suppressedMessages":"40376","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40377","messages":"40378","suppressedMessages":"40379","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40380","messages":"40381","suppressedMessages":"40382","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40383","messages":"40384","suppressedMessages":"40385","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40386","messages":"40387","suppressedMessages":"40388","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40389","messages":"40390","suppressedMessages":"40391","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40392","messages":"40393","suppressedMessages":"40394","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40395","messages":"40396","suppressedMessages":"40397","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40398","messages":"40399","suppressedMessages":"40400","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40401","messages":"40402","suppressedMessages":"40403","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40404","messages":"40405","suppressedMessages":"40406","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40407","messages":"40408","suppressedMessages":"40409","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40410","messages":"40411","suppressedMessages":"40412","errorCount":5,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"40413","messages":"40414","suppressedMessages":"40415","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40416","messages":"40417","suppressedMessages":"40418","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40419","messages":"40420","suppressedMessages":"40421","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40422","messages":"40423","suppressedMessages":"40424","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40425","messages":"40426","suppressedMessages":"40427","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40428","messages":"40429","suppressedMessages":"40430","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40431","messages":"40432","suppressedMessages":"40433","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40434","messages":"40435","suppressedMessages":"40436","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40437","messages":"40438","suppressedMessages":"40439","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40440","messages":"40441","suppressedMessages":"40442","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40443","messages":"40444","suppressedMessages":"40445","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40446","messages":"40447","suppressedMessages":"40448","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40449","messages":"40450","suppressedMessages":"40451","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40452","messages":"40453","suppressedMessages":"40454","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40455","messages":"40456","suppressedMessages":"40457","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40458","messages":"40459","suppressedMessages":"40460","errorCount":17,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"40461","messages":"40462","suppressedMessages":"40463","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40464","messages":"40465","suppressedMessages":"40466","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40467","messages":"40468","suppressedMessages":"40469","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40470","messages":"40471","suppressedMessages":"40472","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40473","messages":"40474","suppressedMessages":"40475","errorCount":3,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"40476","messages":"40477","suppressedMessages":"40478","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40479","messages":"40480","suppressedMessages":"40481","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40482","messages":"40483","suppressedMessages":"40484","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40485","messages":"40486","suppressedMessages":"40487","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40488","messages":"40489","suppressedMessages":"40490","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40491","messages":"40492","suppressedMessages":"40493","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40494","messages":"40495","suppressedMessages":"40496","errorCount":56,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"40497","messages":"40498","suppressedMessages":"40499","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40500","messages":"40501","suppressedMessages":"40502","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40503","messages":"40504","suppressedMessages":"40505","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40506","messages":"40507","suppressedMessages":"40508","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40509","messages":"40510","suppressedMessages":"40511","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40512","messages":"40513","suppressedMessages":"40514","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40515","messages":"40516","suppressedMessages":"40517","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40518","messages":"40519","suppressedMessages":"40520","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40521","messages":"40522","suppressedMessages":"40523","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40524","messages":"40525","suppressedMessages":"40526","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40527","messages":"40528","suppressedMessages":"40529","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40530","messages":"40531","suppressedMessages":"40532","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40533","messages":"40534","suppressedMessages":"40535","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40536","messages":"40537","suppressedMessages":"40538","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40539","messages":"40540","suppressedMessages":"40541","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40542","messages":"40543","suppressedMessages":"40544","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40545","messages":"40546","suppressedMessages":"40547","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40548","messages":"40549","suppressedMessages":"40550","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40551","messages":"40552","suppressedMessages":"40553","errorCount":2,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"40554","messages":"40555","suppressedMessages":"40556","errorCount":4,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"40557","messages":"40558","suppressedMessages":"40559","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40560","messages":"40561","suppressedMessages":"40562","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40563","messages":"40564","suppressedMessages":"40565","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40566","messages":"40567","suppressedMessages":"40568","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40569","messages":"40570","suppressedMessages":"40571","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40572","messages":"40573","suppressedMessages":"40574","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40575","messages":"40576","suppressedMessages":"40577","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40578","messages":"40579","suppressedMessages":"40580","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40581","messages":"40582","suppressedMessages":"40583","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40584","messages":"40585","suppressedMessages":"40586","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40587","messages":"40588","suppressedMessages":"40589","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40590","messages":"40591","suppressedMessages":"40592","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40593","messages":"40594","suppressedMessages":"40595","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40596","messages":"40597","suppressedMessages":"40598","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40599","messages":"40600","suppressedMessages":"40601","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40602","messages":"40603","suppressedMessages":"40604","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40605","messages":"40606","suppressedMessages":"40607","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40608","messages":"40609","suppressedMessages":"40610","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40611","messages":"40612","suppressedMessages":"40613","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40614","messages":"40615","suppressedMessages":"40616","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40617","messages":"40618","suppressedMessages":"40619","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40620","messages":"40621","suppressedMessages":"40622","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40623","messages":"40624","suppressedMessages":"40625","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40626","messages":"40627","suppressedMessages":"40628","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40629","messages":"40630","suppressedMessages":"40631","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40632","messages":"40633","suppressedMessages":"40634","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40635","messages":"40636","suppressedMessages":"40637","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40638","messages":"40639","suppressedMessages":"40640","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40641","messages":"40642","suppressedMessages":"40643","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40644","messages":"40645","suppressedMessages":"40646","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"40647","messages":"40648","suppressedMessages":"40649","errorCount":2,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"40650","messages":"40651","suppressedMessages":"40652","errorCount":2,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"40653","messages":"40654","suppressedMessages":"40655","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40656","messages":"40657","suppressedMessages":"40658","errorCount":3,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"40659","messages":"40660","suppressedMessages":"40661","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40662","messages":"40663","suppressedMessages":"40664","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40665","messages":"40666","suppressedMessages":"40667","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40668","messages":"40669","suppressedMessages":"40670","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40671","messages":"40672","suppressedMessages":"40673","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40674","messages":"40675","suppressedMessages":"40676","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40677","messages":"40678","suppressedMessages":"40679","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40680","messages":"40681","suppressedMessages":"40682","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40683","messages":"40684","suppressedMessages":"40685","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40686","messages":"40687","suppressedMessages":"40688","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40689","messages":"40690","suppressedMessages":"40691","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40692","messages":"40693","suppressedMessages":"40694","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40695","messages":"40696","suppressedMessages":"40697","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40698","messages":"40699","suppressedMessages":"40700","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40701","messages":"40702","suppressedMessages":"40703","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40704","messages":"40705","suppressedMessages":"40706","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40707","messages":"40708","suppressedMessages":"40709","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40710","messages":"40711","suppressedMessages":"40712","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40713","messages":"40714","suppressedMessages":"40715","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40716","messages":"40717","suppressedMessages":"40718","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40719","messages":"40720","suppressedMessages":"40721","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40722","messages":"40723","suppressedMessages":"40724","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40725","messages":"40726","suppressedMessages":"40727","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40728","messages":"40729","suppressedMessages":"40730","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40731","messages":"40732","suppressedMessages":"40733","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40734","messages":"40735","suppressedMessages":"40736","errorCount":65,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"40737","messages":"40738","suppressedMessages":"40739","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40740","messages":"40741","suppressedMessages":"40742","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40743","messages":"40744","suppressedMessages":"40745","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40746","messages":"40747","suppressedMessages":"40748","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40749","messages":"40750","suppressedMessages":"40751","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40752","messages":"40753","suppressedMessages":"40754","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40755","messages":"40756","suppressedMessages":"40757","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40758","messages":"40759","suppressedMessages":"40760","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40761","messages":"40762","suppressedMessages":"40763","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40764","messages":"40765","suppressedMessages":"40766","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40767","messages":"40768","suppressedMessages":"40769","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40770","messages":"40771","suppressedMessages":"40772","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40773","messages":"40774","suppressedMessages":"40775","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"40776","messages":"40777","suppressedMessages":"40778","errorCount":1,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"40779","messages":"40780","suppressedMessages":"40781","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40782","messages":"40783","suppressedMessages":"40784","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40785","messages":"40786","suppressedMessages":"40787","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40788","messages":"40789","suppressedMessages":"40790","errorCount":2,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"40791","messages":"40792","suppressedMessages":"40793","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40794","messages":"40795","suppressedMessages":"40796","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40797","messages":"40798","suppressedMessages":"40799","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40800","messages":"40801","suppressedMessages":"40802","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40803","messages":"40804","suppressedMessages":"40805","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40806","messages":"40807","suppressedMessages":"40808","errorCount":5,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"40809","messages":"40810","suppressedMessages":"40811","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40812","messages":"40813","suppressedMessages":"40814","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40815","messages":"40816","suppressedMessages":"40817","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40818","messages":"40819","suppressedMessages":"40820","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40821","messages":"40822","suppressedMessages":"40823","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40824","messages":"40825","suppressedMessages":"40826","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40827","messages":"40828","suppressedMessages":"40829","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40830","messages":"40831","suppressedMessages":"40832","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40833","messages":"40834","suppressedMessages":"40835","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40836","messages":"40837","suppressedMessages":"40838","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40839","messages":"40840","suppressedMessages":"40841","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40842","messages":"40843","suppressedMessages":"40844","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40845","messages":"40846","suppressedMessages":"40847","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40848","messages":"40849","suppressedMessages":"40850","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40851","messages":"40852","suppressedMessages":"40853","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40854","messages":"40855","suppressedMessages":"40856","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40857","messages":"40858","suppressedMessages":"40859","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40860","messages":"40861","suppressedMessages":"40862","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40863","messages":"40864","suppressedMessages":"40865","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40866","messages":"40867","suppressedMessages":"40868","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40869","messages":"40870","suppressedMessages":"40871","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40872","messages":"40873","suppressedMessages":"40874","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40875","messages":"40876","suppressedMessages":"40877","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40878","messages":"40879","suppressedMessages":"40880","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40881","messages":"40882","suppressedMessages":"40883","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40884","messages":"40885","suppressedMessages":"40886","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40887","messages":"40888","suppressedMessages":"40889","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40890","messages":"40891","suppressedMessages":"40892","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40893","messages":"40894","suppressedMessages":"40895","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40896","messages":"40897","suppressedMessages":"40898","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40899","messages":"40900","suppressedMessages":"40901","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40902","messages":"40903","suppressedMessages":"40904","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40905","messages":"40906","suppressedMessages":"40907","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40908","messages":"40909","suppressedMessages":"40910","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40911","messages":"40912","suppressedMessages":"40913","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40914","messages":"40915","suppressedMessages":"40916","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40917","messages":"40918","suppressedMessages":"40919","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40920","messages":"40921","suppressedMessages":"40922","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40923","messages":"40924","suppressedMessages":"40925","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40926","messages":"40927","suppressedMessages":"40928","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40929","messages":"40930","suppressedMessages":"40931","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40932","messages":"40933","suppressedMessages":"40934","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40935","messages":"40936","suppressedMessages":"40937","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40938","messages":"40939","suppressedMessages":"40940","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40941","messages":"40942","suppressedMessages":"40943","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"40944","messages":"40945","suppressedMessages":"40946","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/@omniroute/opencode-plugin/src/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/@omniroute/opencode-plugin/src/logger.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/@omniroute/opencode-plugin/src/naming.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/@omniroute/opencode-plugin/tests/auth.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/@omniroute/opencode-plugin/tests/auto-combo-context.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/@omniroute/opencode-plugin/tests/auto-sync.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/@omniroute/opencode-plugin/tests/combos.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/@omniroute/opencode-plugin/tests/config-shim.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/@omniroute/opencode-plugin/tests/disk-snapshot-perms.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/@omniroute/opencode-plugin/tests/feature-defaults.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/@omniroute/opencode-plugin/tests/features.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/@omniroute/opencode-plugin/tests/fetch-interceptor.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/@omniroute/opencode-plugin/tests/fork-features.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/@omniroute/opencode-plugin/tests/gemini-sanitize.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/@omniroute/opencode-plugin/tests/management-read-token.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/@omniroute/opencode-plugin/tests/model-allowlist.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/@omniroute/opencode-plugin/tests/multi-instance.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/@omniroute/opencode-plugin/tests/options-schema.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/@omniroute/opencode-plugin/tests/provider-id-routing.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/@omniroute/opencode-plugin/tests/provider.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/@omniroute/opencode-plugin/tests/scaffold.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/@omniroute/opencode-plugin/tests/usable-combo.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/@omniroute/opencode-plugin/tsup.config.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/@omniroute/opencode-provider/src/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/@omniroute/opencode-provider/tests/index.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/@omniroute/opencode-provider/tsup.config.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/docker/devin-bridge/mock-devin.mjs",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/docker/devin-bridge/network-guard/policy.mjs",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/docker/devin-bridge/network-guard/proxy.mjs",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/docker/devin-bridge/run-contract.mjs",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/eslint.complexity-ratchets.config.mjs",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/eslint.complexity.config.mjs",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/eslint.config.mjs",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/eslint.sonarjs.config.mjs",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/examples/omniroute-cmd-hello/index.mjs",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/examples/plugins/langfuse/index.mjs",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/examples/plugins/request-logger/index.mjs",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/examples/plugins/theme-manager/index.mjs",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/examples/plugins/welcome-banner/index.mjs",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/next.config.mjs",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/agyModels.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/anthropicHeaders.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/antigravityModelAliases.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/antigravityUpstream.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/audioRegistry.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/azureAi.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/bedrock.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/claudeCodeCompatibleIdentity.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/claudeWebFingerprint.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/cliFingerprints.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/codexClient.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/codexIdentity.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/codexInstructions.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/codexQuotaScopes.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/constants.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/contextEditing.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/credentialLoader.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/datarobot.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/defaultThinkingSignature.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/embeddingRegistry.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/errorConfig.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/freeModelCatalog.data.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/freeModelCatalog.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/freeTierCatalog.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/glmProvider.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/grokBuild.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/imageRegistry.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/maritalk.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/mediaServiceKinds.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/moderationRegistry.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/musicRegistry.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/oci.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/ocrRegistry.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/ollamaModels.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providerErrorRules.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providerFieldStrips.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providerHeaderProfiles.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providerModels.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providerPluginManifest.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providerPluginManifestRegistry.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providerPluginManifestUrl.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providerRegistry.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/alternateFormats.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/adapta-web/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/agentrouter/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/agnes/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/agy/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/ai21/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/aihorde/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/aimlapi/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/ainative/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/aion/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/alibaba/cn/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/alibaba/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/ant-ling/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/anthropic/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/antigravity/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/anyapi/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/api-airforce/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/auggie/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/bai/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/baichuan/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/baidu/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/bailian-coding-plan/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/baseten/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/bazaarlink/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/bedrock/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/blackbox/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/blackbox/web/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/bluesminds/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/byteplus/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/bytez/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/cerebras/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/charm-hyper/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/chatgpt-web/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/cheaperinference/imageModels.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/cheaperinference/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/chenzk/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/chipotle/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/chutes/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/claude/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/claude/web/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/cline/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/clinepass/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/cloudflare-ai/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/clova-studio/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/codebuddy-cn/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/codestral/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/codex/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/cohere/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/command-code/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/copilot-m365-web/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/copilot-web/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/coze/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/crof/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/cursor/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/dahl/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/databricks/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/deepinfra/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/deepseek/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/deepseek/web/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/devin/catalog.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/devin-cli/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/devin-cli-agentic/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/dgrid/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/dify/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/digitalocean/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/dit/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/doubao/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/doubao/web/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/duckduckgo-web/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/electronhub/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/factory/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/fastrouter/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/featherless-ai/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/felo-web/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/fireworks/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/freeaiapikey/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/freemodel-dev/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/freepik/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/freetheai/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/friendliai/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/g4f-gemini/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/g4f-groq/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/g4f-nvidia/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/g4f-ollama/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/g4f-pollinations/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/galadriel/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/gemini/imageModels.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/gemini/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/gemini/web/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/ghe-copilot/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/gigachat/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/github/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/github/models/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/github/retiredModels.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/gitlab-duo/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/gitlawb/gmi/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/gitlawb/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/glm/cn/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/glm/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/glm/t/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/grok-cli/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/grok-web/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/groq/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/hackclub/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/haiper/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/hcnsec/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/heroku/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/huggingchat/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/huggingface/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/hyperagent/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/hyperbolic/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/ideogram/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/iflytek/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/inception/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/inference-net/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/inner-ai/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/internlm/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/kenari/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/kie/imageModels.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/kie/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/kie/models.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/kilo-gateway/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/kilocode/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/kimi/coding/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/kimi/coding/runtime.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/kimi/coding-apikey/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/kimi/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/kimi/web/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/kimi/web/runtime.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/kiro/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/lambda-ai/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/leonardo/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/liquid/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/llamagate/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/llm-kiwi/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/llm7/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/llmgateway/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/lmarena/directModels.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/lmarena/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/longcat/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/maritalk/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/meta-llama/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/mimocode/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/minimax/cn/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/minimax/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/minimax/web/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/mistral/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/modal/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/modelscope/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/monsterapi/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/moonshot/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/morph/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/muse-spark-web/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/nanogpt/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/nara/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/navy/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/nebius/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/nlpcloud/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/notion-web/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/nous-research/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/novita/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/nscale/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/nube/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/nvidia/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/ollama-cloud/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/openadapter/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/openai/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/opencode/go/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/opencode/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/opencode/zen/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/openrouter/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/openvecta/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/orcarouter/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/ovhcloud/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/perplexity/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/perplexity/web/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/pioneer/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/plamo/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/poe/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/pollinations/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/predibase/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/promptql/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/publicai/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/puter/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/qianfan/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/qiniu/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/qoder/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/qwen/web/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/qwen-cloud/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/qwen-cloud-token-plan/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/raycast/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/regolo/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/reka/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/requesty/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/routeway/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/sambanova/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/sarvam/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/scaleway/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/sealion/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/segmind/imageModels.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/segmind/videoModels.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/sensenova/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/siliconflow/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/snowflake/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/sparkdesk/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/stability-ai/imageModels.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/stepfun/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/sumopod/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/suno/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/synthetic/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/t3-web/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/tencent/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/theoldllm/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/together/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/tokenrouter/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/trae/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/typhoon/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/udio/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/uncloseai/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/unorouter/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/upstage/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/v0-vercel/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/venice/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/veoaifree-web/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/vercel-ai-gateway/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/vertex/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/vertex/partner/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/volcengine/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/wafer/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/wandb/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/windsurf/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/writer/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/x5lab/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/xai/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/xai-oauth/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/xiaomi-mimo/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/xiaomi-mimo-token-plan/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/yi/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/yuanbao-web/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/zai/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/zai-web/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/zed-hosted/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/zenmux/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/registry/zenmux-free/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/providers/shared.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/registryUtils.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/rerankRegistry.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/runway.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/sap.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/searchRegistry.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/toolCloaking.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/upscaleRegistry.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/videoRegistry.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/config/watsonx.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/adapta-web.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/adobe-firefly.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/antigravity/executeAttempt.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/antigravity/proFallbackChain.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/antigravity/sseCollect.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/antigravity/streamingPassthrough.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/antigravity.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/antigravityUpstreamError.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/auggie.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/awsPollyTts.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/azure-openai.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/base/headers.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/base/reasoningEffort.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/base.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/bedrock.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/blackbox-web.ts",["40947"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/chatgpt-web/citations.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/chatgpt-web/handoff.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/chatgpt-web/models.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/chatgpt-web.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/chatgptWebErrors.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/chatgptWebTools.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/cheaperinference.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/chipotle.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/claude-web/browserTransport.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/claude-web/payload.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/claude-web/session.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/claude-web/stream.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/claude-web/transport.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/claude-web.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/claudeIdentity.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/cliproxyapi.ts",["40948"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/cloudflare-ai.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/codebuddy-cn.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/codex/bodyTimeout.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/codex/quota.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/codex/reasoningSuffix.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/codex/tools.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/codex.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/commandCode.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/copilot-m365-connection.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/copilot-m365-frames.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/copilot-m365-web.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/copilot-web.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/cursor/builtinToolBridge.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/cursor/composer.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/cursor/prompt.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/cursor.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/dario.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/deepseek-web/stream-format.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/deepseek-web-done-terminator.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/deepseek-web-with-auto-refresh.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/deepseek-web.ts",["40949","40950","40951","40952","40953","40954","40955","40956","40957","40958","40959","40960"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/default/nvidiaConcurrencyGate.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/default/urlNormalizers.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/default/zaiFormatOverride.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/default.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/devin-agentic/anthropicResponse.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/devin-agentic/serializer.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/devin-agentic/toolParser.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/devin-agentic/types.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/devin-cli-agentic.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/devin-cli.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/doubao-web.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/duckduckgo-web/challenge.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/duckduckgo-web.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/edgeTts.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/felo-web.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/firecrawl-fetch.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/forceResponsesUpstream.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/gemini-business.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/gemini-web.ts",["40961","40962"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/ghe-copilot.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/github.ts",["40963","40964","40965","40966","40967","40968","40969","40970","40971","40972","40973","40974","40975","40976"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/gitlab.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/gitlabResponses.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/glm.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/grok-cli.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/grok-web/native-tools.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/grok-web/text-cleanup.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/grok-web/tool-bridge.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/grok-web/types.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/grok-web.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/gtts.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/hailuo-web.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/huggingchat/jsonlStream.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/huggingchat.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/hyperagent.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/inner-ai.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/jina-reader-fetch.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/kie.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/kimi-web.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/kimi.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/kimiToolNames.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/kiro/eventstream.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/kiro.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/kiroThinking.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/kiroToolCallValidation.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/lmarena/cookie.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/lmarena/models.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/lmarena/response.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/lmarena/stream.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/lmarena.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/microsoft-designer-web.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/mimocode.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/moonshot.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/muse-spark-web/response-parser.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/muse-spark-web.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/ninerouter.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/nlpcloud.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/notion-web.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/opencode.ts",["40977","40978"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/perplexity-web/protocol.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/perplexity-web.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/poe-web.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/pollinations.ts",["40979","40980","40981","40982","40983","40984","40985"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/promptql/eventTree.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/promptql/messageText.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/promptql/threadSticky.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/promptql.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/puter.ts",["40986","40987","40988","40989"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/qoder.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/qwen-web.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/raycast.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/t3-chat-web.ts",["40990","40991","40992","40993","40994","40995","40996","40997","40998","40999","41000"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/tavily-fetch.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/theoldllm.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/tinyfish-fetch.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/trae.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/v0-vercel-web.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/venice-web.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/veoaifree-web.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/vertex.ts",["41001","41002","41003"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/vertexMedia.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/windsurf.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/xai.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/yuanbao-web.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/zai-web.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/zed-hosted.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/executors/zenmux-free.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/audioSpeech.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/audioTranscription.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/audioTranslation.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/autoComboCandidates.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/agentRouterProtocol.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/attemptLogging.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/backgroundRedirect.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/cacheUsageMeta.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/cavemanOutputAnalytics.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/ccDiscoveryAliasStrip.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/claudeClassifierCompat.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/claudeEffortVariant.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/claudeMessageTypes.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/claudeSystemRole.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/claudeToolDefaults.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/claudeUpstreamMessages.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/clientUsageBuffer.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/clineResponseEnvelope.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/cliproxyModelMapping.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/cliproxyapiCredentials.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/codexFailover.ts",["41004"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/codexQuota.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/comboContextCache.ts",["41005"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/compressionAnalyticsWrite.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/compressionCacheStats.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/compressionComboPredicates.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/compressionSettings.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/compressionUsageReceipt.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/contextEditingTelemetry.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/contextEstimation.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/cooldownClassification.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/executionCredentials.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/executorClientHeaders.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/executorHelpers.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/executorProxy.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/failureUsage.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/gamificationEvent.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/headers.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/idempotency.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/jsonBodyToSse.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/keyHealth.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/logTruncation.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/memoryExtraction.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/memorySkillsInjection.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/nonStreamingJsonResponse.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/nonStreamingResponseBody.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/nonStreamingResponseHeaders.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/nonStreamingResponseParse.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/nonStreamingSse.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/nonStreamingUsageStats.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/outputStyleTelemetry.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/outputTokenBudget.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/passthroughHelpers.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/passthroughToolNames.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/pluginOnRequest.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/pluginOnResponse.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/postCallGuardrailContext.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/quotaShareConsumption.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/requestFormat.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/requestSetup.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/responseHeaders.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/sanitization.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/semanticCache.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/semanticCacheStore.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/serviceTier.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/skillsFormat.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/stageTrace.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/streamErrorResult.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/streamFinalize.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/streamingCost.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/streamingPipeline.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/streamingQuotaShare.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/streamingResponseHeaders.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/streamingSemanticCacheStore.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/streamingUsageStats.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/targetFormat.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/telemetryHelpers.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/thinkingSignatureRecovery.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/toolCallingRequiredCheck.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/unsupportedParamsStrip.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/upstreamBody.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/upstreamExecuteHeaders.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore/upstreamTimeouts.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/chatCore.ts",["41006"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/embeddingStructuredInput.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/embeddings.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/imageGeneration/pollinationsAnonAuth.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/imageGeneration/providers/adobeFirefly.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/imageGeneration/providers/alibabaImage.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/imageGeneration/providers/chatgptWeb.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/imageGeneration/providers/comfyUI.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/imageGeneration/providers/designerWeb.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/imageGeneration/providers/freepik.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/imageGeneration/providers/googleImagen.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/imageGeneration/providers/haiper.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/imageGeneration/providers/huggingface.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/imageGeneration/providers/hyperbolic.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/imageGeneration/providers/ideogram.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/imageGeneration/providers/imagen3.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/imageGeneration/providers/leonardo.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/imageGeneration/providers/minimax.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/imageGeneration/providers/nvidiaNim.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/imageGeneration/providers/sdWebUI.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/imageGeneration/providers/segmind.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/imageGeneration.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/imageUpscale/adobeFirefly.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/imageUpscale/shared.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/imageUpscale/stability.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/imageUpscale/topaz.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/imageUpscale.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/moderations.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/musicGeneration.ts",["41007"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/ocr.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/openrouterTranscription.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/rerank.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/responseSanitizer/reasoning.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/responseSanitizer.ts",["41008"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/responseTranslator.ts",["41009"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/responsesHandler.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/search/firecrawlSearch.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/search/perplexitySearch.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/search.ts",["41010","41011","41012","41013","41014","41015","41016","41017","41018","41019","41020","41021","41022","41023","41024","41025","41026","41027","41028","41029","41030","41031","41032","41033","41034","41035","41036","41037","41038","41039","41040","41041","41042","41043"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/sseParser/geminiResponse.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/sseParser.ts",["41044"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/usageExtractor.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/videoGeneration/adobeFireflyHandler.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/videoGeneration/dashscopeHandler.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/videoGeneration/deepinfraHandler.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/videoGeneration/googleFlow.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/videoGeneration/googleFlowHandler.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/videoGeneration/leonardoHandler.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/videoGeneration/novita.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/videoGeneration/novitaHandler.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/videoGeneration/providers/segmind.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/videoGeneration/xaiGrokImagineHandler.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/videoGeneration.ts",["41045"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/handlers/webFetch.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/lib/deepseek-pow-solver.cjs",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/lib/deepseek-pow.ts",["41046","41047","41048","41049","41050"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/__tests__/a2aLifecycle.test.ts",["41051"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/__tests__/advancedTools.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/__tests__/audit.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/__tests__/cacheTools.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/__tests__/createComboTool.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/__tests__/dbHealthTool.test.ts",["41052"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/__tests__/essentialTools.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/__tests__/glmCodingProviderConfig.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/__tests__/httpAuthContext.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/__tests__/pricingSync.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/__tests__/routingStrategyTool.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/__tests__/toolSearch.catalog.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/__tests__/toolSearch.search.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/__tests__/toolSearch.signature.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/__tests__/toolSearch.tool.test.ts",["41053","41054"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/audit.ts",["41055"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/catalog.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/descriptionCompressor.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/httpAuthContext.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/httpTransport.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/mcpCallerIdentity.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/runtimeHeartbeat.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/schemas/a2a.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/schemas/audit.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/schemas/ccrTools.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/schemas/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/schemas/pickFastestModel.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/schemas/toolDefinition.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/schemas/toolSearch.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/schemas/tools.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/scopeEnforcement.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/server.ts",["41056","41057","41058","41059"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/toolCardinality.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/toolCount.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/toolSearch/catalog.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/toolSearch/handler.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/toolSearch/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/toolSearch/register.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/toolSearch/search.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/toolSearch/signature.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/tools/advancedTools.ts",["41060"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/tools/agentSkillTools.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/tools/compressionTools.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/tools/gamificationTools.ts",["41061","41062"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/tools/githubSkillTools.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/tools/localCorpusTools.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/tools/memoryTools.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/tools/notionTools.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/tools/obsidianTools.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/tools/pickFastestModel.ts",["41063"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/tools/pluginTools.ts",["41064"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/tools/poolTools.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/mcp-server/tools/skillTools.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/__tests__/antigravity-quota-family.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/__tests__/chatgptTlsClient.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/__tests__/claudeTlsClient.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/__tests__/fail-fast-concurrency-gate.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/__tests__/grokTlsClient.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/__tests__/manifestAdapter.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/__tests__/specificityDetector.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/__tests__/tierResolver.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/__tests__/volumeDetector.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/accountFallback/cooldownCap.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/accountFallback/exactModelLock.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/accountFallback/lockoutEviction.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/accountFallback/nonRetryableUpstream.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/accountFallback.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/accountSelector.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/accountSemaphore.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/admission/adaptation.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/admission/config.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/admission/controller.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/admission/cost.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/admission/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/admission/queue.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/admission/requestFeatures.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/admission/runtime.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/admission/types.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/adobeFireflyBrowserLogin.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/adobeFireflyClient.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/adobeFireflyModels.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/adobeFireflyUpscale.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/agentrouterQuotaFetcher.ts",["41065"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/antigravity429Engine.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/antigravityClientProfile.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/antigravityCredits.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/antigravityHeaderScrub.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/antigravityHeaders.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/antigravityIdentity.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/antigravityProjectBootstrap.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/antigravityProjectPersist.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/antigravityQuotaFamily.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/antigravityVersion.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/apiKeyRotator.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/autoCombo/__tests__/autoCombo.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/autoCombo/__tests__/chaosEngine.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/autoCombo/__tests__/chaosVirtualCombo.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/autoCombo/__tests__/providerDiversity.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/autoCombo/__tests__/speedRanking.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/autoCombo/__tests__/taskFitness-pattern-order-8603.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/autoCombo/autoPrefix.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/autoCombo/builtinCatalog.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/autoCombo/candidateOverrides.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/autoCombo/chaosEngine.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/autoCombo/complexityRouter.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/autoCombo/engine.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/autoCombo/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/autoCombo/modePacks.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/autoCombo/modelFamily.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/autoCombo/paidModelFilter.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/autoCombo/persistence.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/autoCombo/pipelineRouter.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/autoCombo/providerDiversity.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/autoCombo/providerRegistryAccessor.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/autoCombo/requestControls.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/autoCombo/resilienceCandidateFilter.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/autoCombo/routerStrategy.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/autoCombo/scoring.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/autoCombo/selfHealing.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/autoCombo/speedRanking.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/autoCombo/suffixComposition.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/autoCombo/taskFitness.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/autoCombo/virtualFactory.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/autoRefreshDaemon.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/backgroundTaskDetector.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/bailianQuotaFetcher.ts",["41066"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/batchProcessor.ts",["41067","41068","41069","41070","41071","41072","41073","41074","41075","41076","41077","41078","41079","41080","41081","41082","41083","41084","41085","41086"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/bedrock.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/browserBackedChat.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/browserPool.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/ccBridgeTransforms.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/ccOpenAiMediaBlocks.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/ccWireImageBuiltins.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/chatgptImageCache.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/chatgptTlsClient.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/claudeAdaptiveThinking.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/claudeCodeCCH.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/claudeCodeCompatible.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/claudeCodeCompatibleBeta.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/claudeCodeCompatibleThinkingDisplay.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/claudeCodeConstraints.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/claudeCodeExtraRemap.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/claudeCodeFingerprint.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/claudeCodeObfuscation.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/claudeCodeToolRemapper.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/claudeHaikuConstraints.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/claudeTlsClient.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/claudeTurnstileSolver.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/claudeUsageCooldown.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/claudeWebAutoRefresh.ts",["41087","41088","41089"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/clinepassModels.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/cloudCodeHeaders.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/cloudCodeThinking.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/codeAssistSubscription.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/codexQuotaFetcher.ts",["41090"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/codexUsageQuotas.ts",["41091"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/codexVerbosity.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/combo/applyStrategyOrdering.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/combo/autoConfig.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/combo/autoStrategy.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/combo/comboCompatFallback.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/combo/comboCooldownRetry.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/combo/comboData.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/combo/comboPredicates.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/combo/comboSetup.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/combo/comboStructure.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/combo/comboVisibility.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/combo/concurrencyCaps.ts",["41092"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/combo/context.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/combo/contextOverrideGate.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/combo/contextRequirements.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/combo/dispatchPrelude.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/combo/failureTracker.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/combo/fingerprintExpansion.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/combo/fusionPanel.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/combo/headroomRanking.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/combo/knownContextOverflow.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/combo/pinRecovery.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/combo/promptCacheAffinity.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/combo/providerWildcard.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/combo/quotaExhaustionCutoff.ts",["41093"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/combo/quotaScoring.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/combo/quotaShareConcurrency.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/combo/quotaShareInflight.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/combo/quotaShareStrategy.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/combo/quotaStrategies.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/combo/resolveAutoStrategy.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/combo/responseValidation.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/combo/rrState.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/combo/runtimeUnitCapacity.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/combo/runtimeUnits.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/combo/sessionStickiness.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/combo/shadowRouting.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/combo/strategyDispatch.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/combo/targetExhaustion.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/combo/targetResolution.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/combo/targetSorters.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/combo/targetTimeoutRunner.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/combo/types.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/combo/unavailableRetryGate.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/combo/validateQuality.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/combo.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/comboAgentMiddleware.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/comboConfig.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/comboManifestMetrics.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/comboMetrics.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/adaptiveCompression/computeTarget.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/adaptiveCompression/ladder.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/adaptiveCompression/resolveAdaptivePlan.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/adaptiveCompression/types.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/aggressive.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/bodyAdapter.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/cacheAwareConfig.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/cachingAware.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/caveman.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/cavemanRules.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/deriveDefaultPlan.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/diffHelper.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engineBreakdown.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engineCatalog.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/cavemanAdapter.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/ccr/ccrQuery.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/ccr/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/ccr/protocolInstruction.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/codexResponses/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/headroom/encoderComparison.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/headroom/gcf/decode_generic.ts",["41094","41095","41096","41097","41098","41099","41100","41101","41102","41103","41104","41105","41106","41107","41108","41109","41110","41111","41112","41113","41114","41115"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/headroom/gcf/generic.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/headroom/gcf/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/headroom/gcf/scalar.ts",["41116"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/headroom/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/headroom/smartcrusher.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/headroom/tabular.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/headroom/toon.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/ionizer/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/ionizer/sample.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/llm/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/llmlingua/constants.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/llmlingua/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/llmlingua/modelStore.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/llmlingua/onnxWorker.ts",[],["41117","41118","41119","41120"],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/llmlingua/ultraEntry.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/llmlingua/worker.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/mcpAccessibility/collapseRepeated.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/mcpAccessibility/constants.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/mcpAccessibility/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/omniglyphAdapter.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/omniglyphSingleMode.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/readLifecycle/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/registry.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/relevance/configSchema.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/relevance/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/relevance/scorer.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/rtk/codeStripper.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/rtk/commandDetector.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/rtk/configSchema.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/rtk/deduplicator.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/rtk/discover.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/rtk/filterLoader.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/rtk/filterSchema.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/rtk/grouper.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/rtk/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/rtk/learn.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/rtk/lineFilter.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/rtk/rawOutput.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/rtk/renderers/gitDiff.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/rtk/renderers/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/rtk/renderers/structuredTable.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/rtk/renderers/terraformPlan.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/rtk/renderers/testGreen.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/rtk/renderers/types.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/rtk/smartTruncate.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/rtk/splitCompositeCommand.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/rtk/tomlCompatibility.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/rtk/verify.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/session-dedup/fuzzy.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/session-dedup/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/engines/types.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/entrypointWrap.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/eval/aggregate.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/eval/corpus.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/eval/costMeter.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/eval/executorModelClient.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/eval/fidelityCheck.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/eval/grader.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/eval/judge.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/eval/report.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/eval/runner.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/eval/savings.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/eval/seedCorpus.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/eval/types.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/exclusions.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/fidelityGate.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/fidelityGateStep.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/hardBudget.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/harness/benchmark.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/harness/budgetGate.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/harness/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/harness/measure.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/harness/replay.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/harness/runner.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/languageDetector.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/lite.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/liveZone.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/messageContent.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/outputMode.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/outputStyles/apply.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/outputStyles/backCompat.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/outputStyles/catalog.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/outputStyles/telemetry.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/pipelineEngineBreaker.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/pipelineGuards.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/planResolution.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/prefixFreeze.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/preservation.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/preserveSystemPromptMode.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/progressiveAging.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/quantumLock/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/quantumLock/quantumLock.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/quantumLock/quantumLockStep.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/quantumLock/quantumPatterns.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/quantumLock/strategyWrap.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/resolveCompressionPlan.ts",["41121","41122"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/resultMemo.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/riskGate/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/riskGate/riskGate.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/riskGate/riskGateStep.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/riskGate/riskPatterns.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/riskGate/strategyWrap.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/ruleLoader.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/stackedStepCore.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/stats.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/stepDetailConfig.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/strategySelector.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/summarizer.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/toolResultCompressor.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/types.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/ultra.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/ultraHeuristic.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/compression/validation.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/contextHandoff.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/contextManager.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/credentialGate.ts",["41123"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/crofUsageFetcher.ts",["41124"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/cursorSessionManager.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/deepseekQuotaFetcher.ts",["41125"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/defaultReasoningEffort.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/deviceTracker.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/emergencyFallback.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/errorClassifier.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/evalRouting.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/firecrawlQuotaFetcher.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/freeModelQuotaFetcher.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/freeWebSearch.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/fusion.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/geminiRateLimitTracker.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/geminiThoughtSignatureStore.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/genericQuotaFetcher.ts",["41126"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/gigachatAuth.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/githubCopilotModels.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/gpt5SamplingGuard.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/grokClearance.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/grokCliQuotaFetcher.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/grokCliQuotaFrame.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/grokQuotaFetcher.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/grokTlsClient.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/hfModelSuggestions.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/httpBackedChatFingerprint.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/hyperagentModels.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/inAppLoginService.ts",["41127","41128"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/intentClassifier.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/ipFilter.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/keyGroupAuth.ts",["41129"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/kiroExternalIdp.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/kiroModels.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/kiroRegion.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/learnedThinkingCaps.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/lmarenaTlsClient.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/manifestAdapter.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/mimoThinking.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/model.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/modelCapabilities.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/modelDeprecation.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/modelFamilyFallback.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/modelStrip.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/modelscopePolicy.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/newApiAggregatorQuotaFetcher.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/notionStreamParser.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/notionThreadSessions.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/notionTlsClient.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/notionTranscriptBuilder.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/notionWebFallbackModels.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/notionWebModels.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/opencodeOllamaUsage.ts",["41130"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/opencodeQuotaFetcher.ts",["41131"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/opencodeReasoningSanitizer.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/openrouterFreeWindow.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/openrouterQuotaFetcher.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/payloadRules.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/perplexityTlsClient.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/pipeline.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/promptql/jwt.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/promptqlModels.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/provider.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/providerCooldownTracker.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/providerCostData.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/providerDefaultRateLimit.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/providerRequestDefaults.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/proxyAutoSelector.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/qoderCli.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/qoderCliResolve.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/quotaFetchThrottle.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/quotaMonitor.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/quotaPreflight.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/quotaResetParsing.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/quotaTextCooldowns.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/quotaTrackersBatch.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/qwenThinking.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/rateLimitManager/admission.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/rateLimitManager/headers.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/rateLimitManager.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/rateLimitSemaphore.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/raycast.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/reasoningCache.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/reasoningTokenBuffer.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/refreshSerializer.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/requestDedup.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/responseModelEcho.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/responsesInputSanitizer.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/retryAfterJson.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/roleNormalizer.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/rollingRpmGate.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/rotationConfig.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/searchCache.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/sessionManager.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/sessionPool/fingerprintRotator.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/sessionPool/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/sessionPool/poolRegistry.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/sessionPool/session.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/sessionPool/sessionFactory.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/sessionPool/sessionPool.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/sessionPool/types.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/sessionPool/webExecutorWrapper.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/signatureCache.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/slidingWindowLimiter.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/specificityDetector.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/specificityRules.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/specificityTypes.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/streamRecovery.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/systemPrompt.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/systemTransforms.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/targetRequestSanitizer.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/taskAwareRouter.ts",["41132","41133","41134","41135"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/taskAwareRouting.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/thinkingBudget.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/tierConfig.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/tierResolver.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/tierTypes.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/tlsClientDownloadDir.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/tlsClientProxy.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/tokenExtractionConfig.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/tokenLimitCounter.ts",["41136"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/tokenRefresh/casGuard.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/tokenRefresh/circuitBreaker.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/tokenRefresh/providers/claudeOAuth.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/tokenRefresh/providers/cline.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/tokenRefresh/providers/codebuddyCn.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/tokenRefresh/providers/codex.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/tokenRefresh/providers/copilot.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/tokenRefresh/providers/github.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/tokenRefresh/providers/gitlabDuo.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/tokenRefresh/providers/google.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/tokenRefresh/providers/kimiCoding.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/tokenRefresh/providers/kiro.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/tokenRefresh/providers/qoder.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/tokenRefresh/providers/windsurf.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/tokenRefresh/rotationMap.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/tokenRefresh/shared.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/tokenRefresh.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/toolLatencyTracker.ts",["41137"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/toolLimitDetector.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/toolSchemaSanitizer.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/usage/adobeFirefly.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/usage/antigravity.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/usage/antigravityWeeklyQuota.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/usage/bailian.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/usage/claude.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/usage/codebuddy-cn.ts",["41138","41139"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/usage/codex.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/usage/crof.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/usage/cursor.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/usage/deepseek.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/usage/firecrawl.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/usage/github.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/usage/glm.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/usage/grokCli.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/usage/hyperagent.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/usage/kimi.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/usage/kiro.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/usage/minimax.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/usage/nanogpt.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/usage/opencode.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/usage/openrouter.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/usage/promptql.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/usage/qoder.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/usage/quota.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/usage/scalars.ts",["41140"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/usage/vertex.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/usage/xai.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/usage/xaiOauth.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/usage/xiaomi-mimo.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/usage.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/v0QuotaFetcher.ts",["41141"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/volumeDetector.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/wafRateLimit.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/webFetchInterception.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/webSearchFallback.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/webSearchRouting.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/webSessionPoolHealth.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/wildcardRouter.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/workflowFSM.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/services/xaiOauthQuotaFetcher.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/shared/zedAuth.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/transformer/responsesTransformer.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/bootstrap.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/deepseekWebTools.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/formats.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/helpers/__tests__/maxTokensHelper.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/helpers/__tests__/schemaCoercion.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/helpers/claudeHelper.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/helpers/geminiHelper.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/helpers/geminiToolsSanitizer.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/helpers/jsonUtil.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/helpers/maxTokensHelper.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/helpers/openaiHelper.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/helpers/responsesApiHelper.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/helpers/schemaCoercion.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/helpers/strictSystemHoist.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/helpers/toolCallHelper.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/helpers/toolCallShim.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/image/sizeMapper.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/paramSupport.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/registry.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/request/antigravity-to-openai.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/request/claude-to-gemini.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/request/claude-to-openai.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/request/gemini-to-openai.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/request/openai-responses/additionalTools.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/request/openai-responses/helpers.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/request/openai-responses/namespaceFlatten.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/request/openai-responses/toResponses.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/request/openai-responses.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/request/openai-to-claude/sanitizeToolResultId.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/request/openai-to-claude/thinkingBudget.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/request/openai-to-claude/toolResultAdjacency.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/request/openai-to-claude.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/request/openai-to-cursor.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/request/openai-to-gemini/helpers.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/request/openai-to-gemini.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/request/openai-to-kiro/adaptiveThinking.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/request/openai-to-kiro/messageHelpers.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/request/openai-to-kiro.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/response/claude-to-openai.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/response/cursor-to-openai.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/response/gemini-to-claude.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/response/gemini-to-openai.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/response/kiro-to-openai.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/response/openai-responses/eventEmitter.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/response/openai-responses/pureHelpers.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/response/openai-responses/requestToolIdentity.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/response/openai-responses/synthesizeCompletedToolCalls.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/response/openai-responses/toolSchemas.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/response/openai-responses.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/response/openai-to-antigravity.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/response/openai-to-claude.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/response/openai-to-gemini-sse.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/response/openai-to-gemini.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/response/responsesToolItem.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/translator/webTools.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/types.d.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/agentGoalPolicy.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/aiSdkCompat.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/anthropicHost.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/audioResponse.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/awsSigV4.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/bypassHandler.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/bypassResponse.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/cacheControlPolicy.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/ccDiscoveryAliases.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/claudeCodeMetaRequests.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/claudeEffortVariants.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/clinepassEnvelope.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/comfyuiClient.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/composerToolCalls.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/cors.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/cursorAgentCliVersion.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/cursorAgentProtobuf/nativeTodoWrite.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/cursorAgentProtobuf/wire.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/cursorAgentProtobuf.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/cursorChecksum.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/cursorImages.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/cursorVersionDetector.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/diagnostics.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/earlyStreamKeepalive.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/error.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/estimateSize.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/finishReason.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/flattenToolHistory.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/functionalGatewayMirrors.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/headers.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/heapPressure.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/jsonSize.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/jsonToSse.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/keepaliveThreshold.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/kieTask.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/kimiDevice.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/kiroSanitizer.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/logger.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/networkProxy.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/nextAuthCookie.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/noThinkingAlias.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/number.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/ollamaTransform.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/openAIStreamChunk.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/opencodeHeaders.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/passthroughTailProcessor.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/progressTracker.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/providerRequestLogging.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/proxyDispatcher.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/proxyDispatcherCache.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/proxyFallback.ts",["41142"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/proxyFamily.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/proxyFamilyResolve.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/proxyFetch.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/publicCreds.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/reasoningContentInjector.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/reasoningFields.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/reasoningPlaceholder.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/registeredEffortVariants.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/requestLogger.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/resourcePressure.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/resourcePressurePolicy.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/resourcePressureSampler.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/responsesCommentaryDrop.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/responsesEndpoint.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/responsesInputNormalization.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/responsesStatePolicy.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/responsesStreamHelpers.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/segmindClient.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/setupPolyfill.ts",["41143","41144","41145","41146","41147"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/sha3-512.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/sleep.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/socksConnectorWithFamily.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/sseHeartbeat.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/stream.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/streamErrorFormat.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/streamFailureFinalization.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/streamHandler.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/streamHelpers.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/streamPayloadCollector.ts",["41148"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/streamReadiness.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/streamReadinessPolicy.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/syncedEffortVariants.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/textualToolCall.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/thinkCloseMarker.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/thinkTagParser.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/tlsClient.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/toolCallArguments.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/toolSources.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/upstreamErrorPassthrough.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/upstreamResponseHeaders.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/urlSanitize.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/open-sse/utils/usageTracking.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/playwright.config.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/postcss.config.mjs",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/prettier.config.mjs",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/public/sw.js",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/source.config.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/BootstrapBanner.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/HomePageClient.tsx",["41149"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/HomeProviderTopologySection.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/KimiSponsorBanner.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/TierCoverageWidget.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/a2a/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/acp-agents/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/activity/ActivityFeedClient.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/activity/components/ActivityFeed.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/activity/components/ActivityItem.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/activity/components/DayHeader.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/activity/components/EventTypeFilter.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/activity/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/agent-skills/AgentSkillsPageClient.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/agent-skills/components/CoverageBar.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/agent-skills/components/McpA2aLinksBar.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/agent-skills/components/SkillCard.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/agent-skills/components/SkillPreviewPane.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/agent-skills/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/analytics/AutoRoutingAnalyticsTab.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/analytics/CacheHealthTab.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/analytics/ComboHealthTab.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/analytics/CompressionAnalyticsTab.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/analytics/ProviderUtilizationTab.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/analytics/RouteExplainabilityTab.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/analytics/SearchAnalyticsTab.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/analytics/combo-health/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/analytics/components/DiversityScoreCard.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/analytics/components/ProviderCharts.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/analytics/compression/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/analytics/evals/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/analytics/loading.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/analytics/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/analytics/search/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/analytics/utilization/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/api-endpoints/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/api-manager/ApiManagerPageClient.tsx",[],["41150"],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/api-manager/apiManagerPageStorage.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/api-manager/apiManagerPageUtils.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/api-manager/apiManagerScopes.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/api-manager/components/ApiKeyFilterBar.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/api-manager/components/ApiKeyFilterChip.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/api-manager/components/BypassProviderQuotaToggle.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/api-manager/components/ChaosModeAccessToggle.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/api-manager/components/UsageLimitSettings.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/api-manager/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/audit/A2aAuditTab.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/audit/ComplianceTab.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/audit/McpAuditTab.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/audit/a2a/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/audit/mcp/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/audit/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/auto-combo/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/batch/BatchDetailModal.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/batch/BatchListTab.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/batch/FileDetailModal.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/batch/FilesListTab.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/batch/batch-utils.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/batch/components/BatchConceptCard.tsx",[],["41151"],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/batch/components/ExpirationBadge.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/batch/components/FilesConceptCard.tsx",[],["41152"],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/batch/components/NewBatchWizard.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/batch/components/ProgressBarBicolor.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/batch/components/UploadFileModal.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/batch/components/useBatchActions.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/batch/components/wizard/CostEstimateStep.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/batch/components/wizard/CsvMappingStep.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/batch/components/wizard/DestinationStep.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/batch/components/wizard/InputStep.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/batch/components/wizard/JsonlValidationStep.tsx",[],["41153"],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/batch/files/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/batch/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/cache/__tests__/CachePage.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/cache/__tests__/CachePerformance.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/cache/__tests__/CacheTrends.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/cache/__tests__/IdempotencyLayer.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/cache/__tests__/MemoryCards.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/cache/components/CacheEntriesTab.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/cache/components/CachePerformance.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/cache/components/CacheTrends.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/cache/components/IdempotencyLayer.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/cache/components/MemoryCards.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/cache/components/ReasoningCacheTab.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/cache/media/MediaPageClient.tsx",[],["41154","41155","41156","41157","41158","41159","41160"],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/cache/media/mediaProviderModels.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/cache/media/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/cache/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/changelog/components/ChangelogViewer.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/changelog/components/NewsViewer.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/changelog/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/chaos/ChaosConfigPageClient.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/chaos/chaosPageTypes.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/chaos/components/ChaosBasicSettingsFields.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/chaos/components/ChaosConfigActionsBar.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/chaos/components/ChaosModeSelector.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/chaos/components/ChaosProviderOverridesPanel.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/chaos/components/ChaosStatusMessage.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/chaos/components/ChaosTestResultsPanel.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/chaos/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/chaos/useChaosConfigData.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/chaos/useChaosConfigPage.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/chaos/useChaosConfigPersistence.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/chaos/useChaosTestRun.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/cli-agents/CliAgentsPageClient.tsx",["41161","41162","41163","41164"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/cli-agents/[id]/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/cli-agents/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/cli-code/CliCodePageClient.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/cli-code/[id]/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/cli-code/components/AntigravityToolCard.tsx",["41165"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/cli-code/components/ClaudeCcDiscoveryInfoButton.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/cli-code/components/ClaudeClassifierCompatToggle.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/cli-code/components/ClaudeGatewayOnboardingBlock.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/cli-code/components/ClaudeToolCard.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/cli-code/components/CliProfileAutoSyncToggles.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/cli-code/components/CliStatusBadge.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/cli-code/components/ClineToolCard.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/cli-code/components/CliproxyapiToolCard.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/cli-code/components/CodexToolCard.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/cli-code/components/CopilotToolCard.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/cli-code/components/CustomCliCard.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/cli-code/components/DefaultToolCard.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/cli-code/components/DroidToolCard.tsx",[],["41166"],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/cli-code/components/HermesAgentToolCard.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/cli-code/components/KiloToolCard.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/cli-code/components/OpenClawToolCard.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/cli-code/components/ToolDetailClient.tsx",[],["41167"],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/cli-code/components/codexButtonState.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/cli-code/components/codexToolOptions.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/cli-code/components/customCliConfig.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/cli-code/components/index.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/cli-code/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/cloud-agents/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/combos/AutoComboCatalog.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/combos/BuilderIntelligentStep.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/combos/ComboControlCenterClient.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/combos/FieldLabelWithHelp.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/combos/IntelligentComboPanel.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/combos/KimiComboPresetCard.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/combos/ReasoningTokenBufferToggle.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/combos/ResponseValidationEditor.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/combos/WeightTotalBar.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/combos/[id]/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/combos/error.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/combos/kimiComboPreset.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/combos/live/ComboLiveStudio.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/combos/live/comboFlowModel.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/combos/live/fleetAggregation.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/combos/live/nodes/ProviderCascadeNode.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/combos/live/nodes/RequestNode.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/combos/live/nodes/ResponseNode.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/combos/live/nodes/StrategyNode.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/combos/live/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/combos/loading.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/combos/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/combos/parts.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/combos/playground/ComboPlaygroundClient.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/combos/playground/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/combos/useComboProxyAssignments.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/components/BadgeToast.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/compression/exclusions/ExclusionsPanel.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/compression/exclusions/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/compression/live/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/compression/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/compression/studio/CompareView.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/compression/studio/CompressionAnnotation.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/compression/studio/CompressionCockpit.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/compression/studio/DiffPane.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/compression/studio/EncoderComparisonTable.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/compression/studio/PlayView.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/compression/studio/PlaygroundInput.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/compression/studio/QuantumLockBadge.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/compression/studio/RiskGateBadge.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/compression/studio/SaliencyHeatmap.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/compression/studio/WaterfallInspector.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/compression/studio/compressionFlowModel.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/compression/studio/nodes/EngineNode.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/compression/studio/nodes/IoNode.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/compression/studio/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/compression/studio/useCompressionReplay.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/context/CompressionStylesTile.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/context/aggressive/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/context/caveman/CavemanContextPageClient.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/context/caveman/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/context/ccr/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/context/combos/CompressionCombosPageClient.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/context/combos/CompressionHub.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/context/combos/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/context/headroom/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/context/lite/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/context/llmlingua/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/context/omniglyph/OmniglyphContextPageClient.tsx",[],["41168"],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/context/omniglyph/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/context/omniglyph/sampleData.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/context/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/context/rtk/RtkContextPageClient.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/context/rtk/RtkLearnDiscoverCard.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/context/rtk/RtkTomlImportCard.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/context/rtk/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/context/session-dedup/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/context/settings/CompressionPanel.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/context/settings/EngineGuidanceDetail.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/context/settings/adaptiveTargetLabel.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/context/settings/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/context/ultra/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/costs/CostOverviewTab.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/costs/budget/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/costs/components/ApiKeyUsageLimitCard.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/costs/components/CostCharts.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/costs/components/MetricCard.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/costs/components/TopListCard.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/costs/costExplorerParams.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/costs/costExplorerUtils.ts",["41169"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/costs/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/costs/pricing/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/costs/quota-share/QuotaSharePageClient.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/costs/quota-share/components/AccountQuotaRow.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/costs/quota-share/components/AllocationTable.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/costs/quota-share/components/BurnRateChart.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/costs/quota-share/components/BurnRateChartInner.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/costs/quota-share/components/CreatePoolModal.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/costs/quota-share/components/DimensionBar.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/costs/quota-share/components/PoolCard.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/costs/quota-share/components/PoolWizard.tsx",[],["41170","41171","41172"],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/costs/quota-share/components/QuotaConceptCard.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/costs/quota-share/components/QuotaEndpointsCard.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/costs/quota-share/components/StackedAllocationBar.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/costs/quota-share/components/UsageLogCard.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/costs/quota-share/hooks/useLocalStoragePoolMigration.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/costs/quota-share/hooks/usePoolUsage.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/costs/quota-share/hooks/usePools.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/costs/quota-share/hooks/usePoolsUsageAggregate.ts",[],["41173","41174"],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/costs/quota-share/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/costs/useApiKeyUsageLimits.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/discovery/DiscoveryPageClient.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/discovery/__tests__/DiscoveryPageClient.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/discovery/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/endpoint/ApiEndpointsTab.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/endpoint/EndpointPageClient.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/endpoint/VscodeTokenAliasCard.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/endpoint/__tests__/ApiEndpointsTab.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/endpoint/__tests__/EndpointPageClient.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/endpoint/components/A2ADashboard.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/endpoint/components/MCPDashboard.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/endpoint/components/NotionSourceCard.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/endpoint/components/ObsidianSourceCard.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/endpoint/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/free-provider-rankings/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/free-tiers/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/gamification/admin/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/health/ProviderHealthAutopilotCard.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/health/ProviderHealthMatrixCard.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/health/TelemetryCard.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/health/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/homeAppearance.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/kimiSponsorBannerGate.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/leaderboard/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/limits/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/logs/CompressionLogTab.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/logs/activity/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/logs/console/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/logs/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/logs/proxy/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/logs/timeline/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/mcp/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/media-providers/[kind]/[id]/MediaProviderPageClient.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/media-providers/[kind]/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/media-providers/components/EmbeddingExampleCard.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/media-providers/components/ImageExampleCard.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/media-providers/components/LlmChatCard.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/media-providers/components/MediaProviderHeader.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/media-providers/components/MediaProviderKindNav.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/media-providers/components/MusicExampleCard.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/media-providers/components/OcrExampleCard.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/media-providers/components/PlaygroundCard.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/media-providers/components/ServiceKindTabs.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/media-providers/components/SttExampleCard.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/media-providers/components/TtsExampleCard.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/media-providers/components/VideoExampleCard.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/media-providers/components/WebFetchExampleCard.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/media-providers/components/WebSearchExampleCard.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/media-providers/components/mediaKinds.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/media-providers/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/memory/components/EditMemoryModal.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/memory/components/EmbeddingSourceSelector.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/memory/components/MemoryConceptCard.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/memory/components/MemoryEngineStatus.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/memory/components/QdrantConfigCard.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/memory/components/RerankConfigCard.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/memory/components/RetrievePreview.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/memory/components/tabs/EngineTab.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/memory/components/tabs/MemoriesTab.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/memory/components/tabs/PlaygroundTab.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/memory/hooks/useEngineStatus.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/memory/hooks/useMemorySettings.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/memory/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/omni-skills/OmniSkillsPageClient.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/omni-skills/components/OmniExecutionsTab.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/omni-skills/components/OmniMarketplaceTab.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/omni-skills/components/OmniSandboxTab.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/omni-skills/components/OmniSkillCard.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/omni-skills/components/OmniSkillsList.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/omni-skills/components/SkillInspectorPane.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/omni-skills/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/onboarding/components/TierFlowDiagram.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/onboarding/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/onboarding/steps/TierTour.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/playground/PlaygroundStudio.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/playground/components/CompareColumn.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/playground/components/ExportCodeModal.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/playground/components/ImprovePromptButton.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/playground/components/MarkdownMessage.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/playground/components/ParamSliders.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/playground/components/PresetPicker.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/playground/components/ProviderMetrics.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/playground/components/ReasoningControls.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/playground/components/StructuredOutputEditor.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/playground/components/StudioConfigPane.tsx",[],["41175","41176","41177"],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/playground/components/StudioTopBar.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/playground/components/TokenCostCounter.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/playground/components/ToolsBuilder.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/playground/components/modelSelection.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/playground/components/reasoningControlUtils.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/playground/components/tabs/ApiTab.tsx",["41178"],["41179","41180"],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/playground/components/tabs/BuildTab.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/playground/components/tabs/ChatTab.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/playground/components/tabs/CompareTab.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/playground/components/tabs/build/BuildWizard.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/playground/hooks/useImprovePrompt.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/playground/hooks/usePresets.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/playground/hooks/useStreamMetrics.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/playground/hooks/useStructuredOutput.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/playground/hooks/useToolsBuilder.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/playground/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/plugins/[name]/config/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/plugins/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/profile/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/provider-stats/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/ProviderDetailPageClient.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/__tests__/ProviderDetailPageClient.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/__tests__/connectionRowAutoSyncToggle.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/__tests__/modelVisibilityToolbarActiveCount.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/__tests__/passthroughModelRowDisplayName.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/__tests__/passthroughTestHelpers.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/__tests__/phase1e.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/__tests__/phase1f.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/__tests__/providerModelsSectionVisibilityKey.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/__tests__/useConnectionAutoSync.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/__tests__/useModelImportHandlers.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/__tests__/useModelVisibilityHandlers.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/codexPlanLabel.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/AdaptaTutorialModal.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/BatchTestResultsModal.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/CompatibleModelsSection.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/CompatibleNodeCard.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/ConnectionRow.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/ConnectionsHeaderToolbar.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/ConnectionsListPanel.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/CoolingConnectionsPanel.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/CustomModelsSection.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/EmptyConnectionsPlaceholder.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/ExternalLinkModal.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/ImportProgressModal.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/KimiCodeAuthMethodModal.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/ModelCompatPopover.tsx",[],["41181"],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/ModelRow.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/NoAuthProviderControls.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/OpenRouterPresetInput.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/PassthroughModelRow.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/PassthroughModelsSection.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/ProviderCcAliasSection.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/ProviderExtraPanels.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/ProviderInterceptionSection.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/ProviderModalsPanel.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/ProviderModelsSection.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/ProviderPageHeader.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/ProviderParamFilterSection.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/ProviderPlaygroundPanel.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/ProviderQuotaVisibilityToggle.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/SearchProviderCard.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/SiliconFlowEndpointModal.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/UpstreamProxyCard.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/WebSessionCredentialGuide.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/ZedImportCard.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/__tests__/phase1d.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/connectionRowHelpers.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/modals/AddApiKeyModal.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/modals/AgentrouterConsoleFields.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/modals/AlibabaProviderRegionField.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/modals/CcCompatibleRequestDefaultsFields.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/modals/EditCompatibleNodeModal.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/modals/EditConnectionModal.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/modals/GlmTeamQuotaFields.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/modals/ImportClaudeAuthModal.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/modals/ImportCodexAuthModal.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/modals/ImportGrokCliAuthModal.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/modals/NewApiAggregatorFields.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/modals/ProviderTierField.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/modals/QuotaScrapingFields.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/modals/__tests__/authImportModals.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/modals/__tests__/connModals.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/modals/__tests__/editCompatibleNodeModal.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/modals/ccCompatibleRequestDefaults.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/modals/commandCodeAuthPhase.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/modals/computeConnectionDefaultName.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/modals/connectionProviderSpecificData.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/modals/glmTeamQuotaProviderData.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/modals/m365Tier.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/modals/providerTierFieldApi.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/components/passthroughAlias.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/connectionsSearchFilter.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/hooks/modelImportWarning.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/hooks/useApiKeySave.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/hooks/useAuthFileHandlers.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/hooks/useCommandCodeAuth.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/hooks/useConnectionAutoSync.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/hooks/useConnectionDeleteConfirm.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/hooks/useConnectionGate.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/hooks/useExternalLinkFlow.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/hooks/useModelCompatState.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/hooks/useModelImportHandlers.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/hooks/useModelVisibilityHandlers.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/hooks/useProviderConnections.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/hooks/useProviderModels.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/hooks/useProviderNodeActions.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/hooks/useProviderQuotaVisibility.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/hooks/useProviderSettings.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/hooks/useReorderByAvailability.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/providerCredentialText.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/providerDetailConstants.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/providerInputParsers.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/providerPageHelpers.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/[id]/webSessionCredentials.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/components/AddCompatibleProviderModal.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/components/CategoryDot.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/components/CodexCliGuideModal.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/components/HighlightableProviderCard.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/components/ImportProvidersFromFileModal.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/components/NoAuthProvidersSection.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/components/ProviderCard.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/components/ProviderCountBadge.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/components/ProviderDisplayModeControl.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/components/ProviderSummaryCard.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/components/RiskNoticeModal.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/components/__tests__/providerCardAudioBadge.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/components/onboarding/ProviderOnboardingWizard.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/components/onboarding/providerOnboardingApi.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/components/onboarding/providerOnboardingCatalog.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/components/onboarding/providerOnboardingHref.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/components/parseProviderImportFile.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/components/useImportProvidersFromFile.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/context/openRouterProviderStatsContext.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/error.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/featuredProviders.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/hooks/useApiKey.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/hooks/useProviderModels.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/hooks/useProviderUrlFilters.ts",[],["41182","41183"],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/hooks/useRiskAcknowledged.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/hooks/useSyncedModelsByProvider.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/loading.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/new/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/providerCompactMode.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/providerPageHighlightUtils.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/providerPageStorage.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/providerPageUtils.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/services/[name]/embed/[[...path]]/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/services/components/ApiKeyField.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/services/components/AutoRestartAdoptedToggle.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/services/components/AutoStartToggle.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/services/components/CliproxyConnectionPanel.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/services/components/CliproxyModelMappingEditor.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/services/components/CliproxyProviderExposureCard.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/services/components/DarioAccountPanel.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/services/components/NinerouterEmbedFrame.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/services/components/NinerouterInstallWizard.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/services/components/NinerouterModelList.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/services/components/NinerouterProviderExposureCard.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/services/components/ServiceLifecycleButtons.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/services/components/ServiceLogsPanel.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/services/components/ServiceStatusCard.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/services/hooks/useServiceLogs.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/services/hooks/useServiceStatus.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/services/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/services/tabs/BifrostServiceTab.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/services/tabs/CliproxyServiceTab.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/services/tabs/DarioServiceTab.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/services/tabs/MuxServiceTab.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/services/tabs/NinerouterServiceTab.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/providers/utils/buildCurl.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/quota/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/radar/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/radar/setup/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/relay/RelayProxyClient.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/relay/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/runtime/RuntimePageClient.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/runtime/components/ModelCooldownsCard.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/runtime/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/search-tools/SearchToolsClient.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/search-tools/components/ProviderCatalog.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/search-tools/components/ProviderComparison.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/search-tools/components/RerankPanel.tsx",[],["41184"],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/search-tools/components/ResultsPanel.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/search-tools/components/ScrapeResult.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/search-tools/components/SearchConceptCard.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/search-tools/components/SearchForm.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/search-tools/components/SearchHistory.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/search-tools/components/SearchToolsConfigPane.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/search-tools/components/SearchToolsTopBar.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/search-tools/components/tabs/CompareTab.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/search-tools/components/tabs/ScrapeTab.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/search-tools/components/tabs/SearchTab.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/search-tools/hooks/useScrapeFetch.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/search-tools/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/access-tokens/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/advanced/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/ai/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/appearance/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/cache/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/AccessTokensTab.tsx",[],["41185"],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/AccountEmailVisibilitySetting.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/AppearanceTab.tsx",["41186","41187","41188","41189"],["41190"],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/AuthzSection.tsx",["41191"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/AutoDisableCard.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/BackgroundDegradationTab.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/CacheSettingsTab.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/CacheStatsCard.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/ClaudeFastModeTab.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/CliproxyapiSettingsTab.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/CodexAutoPingTab.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/CodexFastTierTab.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/ComboDefaultsTab.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/ComplianceTab.tsx",[],["41192"],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/CompressionSettingsTab.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/CompressionTokenSaverCard.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/DatabaseBackupRetentionCard.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/DebugModeCard.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/FallbackChainsEditor.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/FeatureFlagCard.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/FeatureFlagsGrid.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/FusionDefaultsFields.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/IPFilterSection.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/LogToolSourcesCard.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/MemorySkillsTab.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/MitmProxyTab.tsx",["41193"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/ModelAliasesTab.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/ModelAliasesUnified.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/ModelCapabilityOverridesTab.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/ModelLockoutCard.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/ModelsDevSyncTab.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/OneproxyTab.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/PayloadRulesTab.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/PoliciesPanel.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/PricingTab.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/ProviderAccountRoutingCard.tsx",["41194"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/ProxyBatchActions.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/ProxyBulkImportModal.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/ProxyCheckboxCell.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/ProxyHealthCell.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/ProxyRegistryManager.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/ProxyStatusBadge.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/ProxyTab.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/RedisLauncherPanel.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/RequestLimitsTab.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/ResilienceFields.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/ResilienceTab.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/ResponsesStatePolicyTab.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/RoutingStrategyCard.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/RoutingTab.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/SecurityTab.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/SessionInfoCard.tsx",["41195"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/SidebarTab.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/SystemPromptTab.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/SystemStorageTab.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/ThinkingBudgetTab.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/UsageTokenBufferTab.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/VisionBridgeSettingsTab.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/parseBulkProxyImport.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/proxy/CloudflareRelayModal.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/proxy/DenoRelayModal.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/proxy/DocumentationTab.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/proxy/FreePoolTab.tsx",[],["41196","41197"],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/proxy/FreeProxyRow.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/proxy/GlobalConfigTab.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/proxy/ProxyPoolTab.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/proxy/SourceToggleBar.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/proxy/SubscriptionTab.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/proxy/VercelRelayModal.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/proxyRegistryTypes.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/proxyStrategyOptions.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/systemTransformsHermesDefaults.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/useProxyBatchOperations.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/useProxyBulkImport.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/useProxyPoolModal.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/error.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/feature-flags/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/general/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/loading.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/pricing/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/resilience/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/routing/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/security/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/sidebar/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/system/1proxy/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/system/mitm-proxy/error.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/system/mitm-proxy/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/system/proxy/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tokens/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/agent-bridge/AgentBridgePageClient.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/agent-bridge/components/AgentBridgeMaintenanceCard.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/agent-bridge/components/AgentBridgeServerCard.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/agent-bridge/components/AgentCard.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/agent-bridge/components/AgentList.tsx",["41198","41199","41200"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/agent-bridge/components/BypassListEditor.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/agent-bridge/components/EmptyStateNoProviders.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/agent-bridge/components/ModelMappingTable.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/agent-bridge/components/ModelSelectorModal.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/agent-bridge/components/RiskNoticeBanner.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/agent-bridge/components/SetupWizard.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/agent-bridge/components/UpstreamCaField.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/agent-bridge/components/shared/AgentIcon.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/agent-bridge/components/shared/CertStatusIcon.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/agent-bridge/components/shared/DnsStatusBadge.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/agent-bridge/hooks/useAgentBridgeState.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/agent-bridge/hooks/useMitmSudoPrompt.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/agent-bridge/normalizeState.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/agent-bridge/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/traffic-inspector/TrafficInspectorPageClient.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/traffic-inspector/components/CaptureModesToolbar.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/traffic-inspector/components/CustomHostsManager.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/traffic-inspector/components/DetailsPanel.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/traffic-inspector/components/HttpProxySnippetCard.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/traffic-inspector/components/RequestRow.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/traffic-inspector/components/RequestStreamingList.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/traffic-inspector/components/TopBarControls.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/traffic-inspector/components/chat/ChatBubble.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/traffic-inspector/components/chat/MessageContent.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/traffic-inspector/components/chat/ToolCallBlock.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/traffic-inspector/components/chat/ToolResultBlock.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/traffic-inspector/components/session/HistoricSessionBanner.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/traffic-inspector/components/session/SessionPicker.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/traffic-inspector/components/session/SessionRecorderBar.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/traffic-inspector/components/shared/AgentEmoji.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/traffic-inspector/components/shared/AnnotationField.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/traffic-inspector/components/shared/ContextColorBar.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/traffic-inspector/components/shared/HeaderTable.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/traffic-inspector/components/shared/JsonViewer.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/traffic-inspector/components/shared/SecretMaskToggle.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/traffic-inspector/components/shared/SseEventList.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/traffic-inspector/components/shared/TimingWaterfall.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/traffic-inspector/components/shared/TokenBadge.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/traffic-inspector/components/tabs/ConversationTab.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/traffic-inspector/components/tabs/HeadersTab.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/traffic-inspector/components/tabs/LlmDetailsTab.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/traffic-inspector/components/tabs/RequestBodyTab.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/traffic-inspector/components/tabs/ResponseBodyTab.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/traffic-inspector/components/tabs/StatsCharts.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/traffic-inspector/components/tabs/StatsTab.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/traffic-inspector/components/tabs/TimingTab.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/traffic-inspector/hooks/useAnnotations.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/traffic-inspector/hooks/useReplay.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/traffic-inspector/hooks/useResizablePanels.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/traffic-inspector/hooks/useSessionRecorder.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/traffic-inspector/hooks/useSystemProxyExitGuard.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/traffic-inspector/hooks/useTrafficFilters.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/traffic-inspector/hooks/useTrafficStream.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/traffic-inspector/hooks/useVirtualList.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/tools/traffic-inspector/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/translator/TranslatorPageClient.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/translator/components/MonitorTab.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/translator/components/ResultNarrated.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/translator/components/SimpleControls.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/translator/components/TranslateFlowDiagram.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/translator/components/TranslateTab.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/translator/components/TranslatorConceptCard.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/translator/components/advanced/AdvancedSection.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/translator/components/advanced/CompressionPreviewAccordion.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/translator/components/advanced/PipelineView.tsx",[],["41201"],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/translator/components/advanced/RawJsonPanel.tsx",[],["41202"],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/translator/components/advanced/StreamTransformerAccordion.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/translator/components/advanced/TestBenchAccordion.tsx",[],["41203"],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/translator/exampleTemplates.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/translator/hooks/useAvailableModels.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/translator/hooks/useProviderOptions.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/translator/hooks/useTranslateDeepLink.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/translator/hooks/useTranslateSession.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/translator/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/translator/types.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/usage/components/BudgetTab.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/usage/components/BudgetTelemetryCards.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/usage/components/EvalsTab.tsx",[],["41204"],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/usage/components/FreeBudgetCard.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/CodexResetCreditsModal.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/ProviderLimitCard.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/ProviderUsdCostModal.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/QuotaCard.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/QuotaCardGrid.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/QuotaCutoffModal.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/QuotaMiniBar.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/QuotaProgressBar.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/QuotaTable.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/constants.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/formatters.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/i18nFallback.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/index.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/parts/QuotaCardBody.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/parts/QuotaCardExpanded.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/parts/QuotaCardHeader.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/parts/QuotaEnvGroup.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/providerColumns.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/quotaParsing.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/useCodexResetCreditRedemption.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/useQuotaVisibility.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/useVisibleQuotaData.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/utils.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/usage/components/RateLimitStatus.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/usage/components/SessionsTab.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/usage/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/webhooks/WebhooksPageClient.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/webhooks/__tests__/webhook-wizard.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/webhooks/components/AddWebhookWizard.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/webhooks/components/HowItWorksSidebar.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/webhooks/components/WebhookCard.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/webhooks/components/WebhookDeliveriesPanel.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/webhooks/components/WebhooksList.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/webhooks/components/shared/DeliveryStatusBadge.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/webhooks/components/shared/EventChecklist.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/webhooks/components/shared/HmacRecipeBlock.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/webhooks/components/shared/IntegrationCard.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/webhooks/components/shared/PayloadPreview.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/webhooks/components/steps/Step1ChooseIntegration.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/webhooks/components/steps/Step2ConfigureIntegration.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/webhooks/components/steps/Step3EventsAndTest.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/webhooks/components/steps/integrations/CustomConfigForm.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/webhooks/components/steps/integrations/DiscordConfigForm.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/webhooks/components/steps/integrations/SlackConfigForm.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/webhooks/components/steps/integrations/TelegramConfigForm.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/webhooks/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/home/ProviderQuotaWidget.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/home/ProviderTopology.tsx",[],["41205"],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/home/page.tsx",["41206"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/home/topologyLabel.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/home/topologyUtils.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/layout.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/.well-known/agent.json/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/400/layout.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/400/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/401/layout.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/401/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/403/layout.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/403/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/408/layout.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/408/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/429/layout.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/429/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/500/layout.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/500/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/502/layout.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/502/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/503/layout.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/503/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/a2a/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/[...omnirouteApiCatchAll]/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/a2a/status/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/a2a/tasks/[id]/cancel/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/a2a/tasks/[id]/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/a2a/tasks/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/acp/agents/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/admin/concurrency/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/agent-skills/[id]/raw/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/agent-skills/[id]/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/agent-skills/coverage/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/agent-skills/generate/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/agent-skills/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/analytics/auto-routing/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/analytics/compression/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/analytics/diversity/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/assess/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/auth/csrf/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/auth/login/route.ts",["41207"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/auth/logout/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/auth/oidc/callback/route.ts",["41208"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/auth/oidc/login/route.ts",["41209"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/auth/status/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/batches/[id]/route.ts",["41210"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/batches/route.ts",["41211"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/cache/entries/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/cache/reasoning/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/cache/route.ts",["41212"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/cache/stats/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/chaos/config/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/chaos/run/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/cli/connect/route.ts",["41213"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/cli/tokens/[id]/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/cli/tokens/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/cli/whoami/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/cli-tools/_lib/jsoncConfig.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/cli-tools/all-statuses/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/cli-tools/antigravity-mitm/alias/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/cli-tools/antigravity-mitm/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/cli-tools/apply/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/cli-tools/backups/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/cli-tools/claude-settings/route.ts",["41214"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/cli-tools/cline-settings/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/cli-tools/codewhale-settings/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/cli-tools/codex-profiles/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/cli-tools/codex-settings/route.ts",["41215"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/cli-tools/config/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/cli-tools/crush-settings/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/cli-tools/deepseek-tui-settings/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/cli-tools/detect/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/cli-tools/droid-settings/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/cli-tools/forge-settings/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/cli-tools/grok-build-settings/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/cli-tools/guide-settings/[toolId]/route.ts",[],["41216"],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/cli-tools/hermes-agent-settings/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/cli-tools/jcode-settings/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/cli-tools/keys/route.ts",["41217"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/cli-tools/kilo-settings/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/cli-tools/letta-settings/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/cli-tools/logs/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/cli-tools/omp-settings/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/cli-tools/openclaw/auto-order/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/cli-tools/openclaw-settings/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/cli-tools/pi-settings/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/cli-tools/qwen-settings/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/cli-tools/runtime/[toolId]/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/cli-tools/smelt-settings/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/cli-tools/status/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/cloud/auth/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/cloud/credentials/update/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/cloud/model/resolve/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/cloud/models/alias/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/codex/connect/[token]/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/combos/[id]/route.ts",["41218"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/combos/auto/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/combos/builder/options/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/combos/metrics/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/combos/reorder/route.ts",["41219"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/combos/route.ts",["41220"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/combos/test/route.ts",["41221"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/compliance/audit-log/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/compression/compare/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/compression/compare/verify/route.ts",["41222"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/compression/engines/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/compression/language-packs/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/compression/preview/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/compression/retrieve/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/compression/rules/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/context/analytics/engine/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/context/analytics/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/context/caveman/config/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/context/combos/[id]/assignments/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/context/combos/[id]/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/context/combos/default/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/context/combos/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/context/rtk/config/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/context/rtk/discover/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/context/rtk/filters/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/context/rtk/import/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/context/rtk/learn/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/context/rtk/raw-output/[id]/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/context/rtk/test/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/copilot/chat/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/dahl/tokens/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/db/health/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/db-backups/export/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/db-backups/exportAll/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/db-backups/import/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/db-backups/route.ts",["41223"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/discovery/results/[id]/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/discovery/results/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/discovery/scan/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/discovery/verify/[id]/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/docs/codex-cli/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/docs/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/evals/[suiteId]/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/evals/route.ts",["41224"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/evals/suites/[suiteId]/route.ts",["41225"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/evals/suites/route.ts",["41226"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/fallback/chains/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/files/[id]/content/route.ts",["41227"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/files/route.ts",["41228"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/free-models/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/free-provider-rankings/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/free-tier/summary/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/gamification/anomalies/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/gamification/badges/earned/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/gamification/badges/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/gamification/federation/leaderboard/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/gamification/federation/score/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/gamification/invite/redeem/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/gamification/invite/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/gamification/leaderboard/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/gamification/level/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/gamification/notifications/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/gamification/rotate/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/gamification/servers/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/gamification/stream/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/gamification/transfer/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/github-skills/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/guardrails/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/guardrails/test/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/headroom/start/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/headroom/status/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/headroom/stop/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/health/degradation/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/health/ping/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/init/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/intelligence/sync/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/internal/codex-responses-ws/compression.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/internal/codex-responses-ws/history.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/internal/codex-responses-ws/modelResolution.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/internal/codex-responses-ws/route.ts",["41229"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/issue-agent/runs/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/keys/[id]/devices/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/keys/[id]/regenerate/route.ts",["41230"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/keys/[id]/reveal/route.ts",["41231"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/keys/[id]/route.ts",["41232"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/keys/[id]/usage-limits/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/keys/groups/[id]/keys/route.ts",["41233"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/keys/groups/[id]/permissions/route.ts",["41234"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/keys/groups/[id]/route.ts",["41235"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/keys/groups/route.ts",["41236"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/keys/route.ts",["41237"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/local/redis/redisRuntime.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/local/redis/start/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/local/redis/status/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/local/redis/stop/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/logs/[id]/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/logs/console/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/logs/detail/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/logs/export/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/mcp/audit/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/mcp/audit/stats/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/mcp/sse/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/mcp/status/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/mcp/stream/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/mcp/tools/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/memory/[id]/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/memory/embedding-providers/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/memory/engine-status/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/memory/health/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/memory/reindex/route.ts",["41238"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/memory/retrieve-preview/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/memory/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/memory/summarize/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/middleware/hooks/[name]/route.ts",["41239"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/middleware/hooks/route.ts",["41240"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/model-capability-overrides/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/model-combo-mappings/[id]/route.ts",["41241"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/model-combo-mappings/route.ts",["41242"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/models/alias/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/models/catalog/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/models/openrouter-catalog/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/models/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/models/test/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/models/test-all/route.ts",["41243"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/monitoring/health/route.ts",["41244"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/network/info/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/oauth/[provider]/[action]/keychainImportOnly.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/oauth/[provider]/[action]/remoteOAuthHint.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/oauth/[provider]/[action]/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/oauth/[provider]/paste-credentials/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/oauth/cliproxy-import/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/oauth/codex/import/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/oauth/codex/import-token/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/oauth/cursor/auto-import/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/oauth/cursor/import/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/oauth/kiro/api-key/helpers.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/oauth/kiro/api-key/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/oauth/kiro/auto-import/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/oauth/kiro/import/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/oauth/kiro/social-authorize/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/oauth/kiro/social-exchange/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/oauth/raycast/auto-import/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/oauth/raycast/import/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/oauth/trae/import/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/openapi/spec/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/openapi/try/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/playground/improve-prompt/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/playground/presets/[id]/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/playground/presets/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/playground/simulate-route/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/plugins/[name]/activate/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/plugins/[name]/config/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/plugins/[name]/deactivate/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/plugins/[name]/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/plugins/marketplace/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/plugins/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/plugins/scan/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/policies/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/pricing/defaults/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/pricing/models/route.ts",["41245"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/pricing/route.ts",["41246"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/pricing/sync/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/provider-metrics/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/provider-models/route.ts",["41247"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/provider-nodes/[id]/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/provider-nodes/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/provider-nodes/urlGuard.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/provider-nodes/validate/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/provider-stats/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/[id]/cc-alias/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/[id]/claude-auth/apply-local/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/[id]/claude-auth/export/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/[id]/codex-auth/apply-local/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/[id]/codex-auth/export/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/[id]/interception-rules/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/[id]/login/route.ts",["41248"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/[id]/models/discovery/codex.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/[id]/models/discovery/helpers.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/[id]/models/discovery/normalizers.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/[id]/models/discovery/providerModelsConfig.ts",["41249"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/[id]/models/discovery/providerSets.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/[id]/models/discoveryClientVersion.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/[id]/models/discoveryConfig.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/[id]/models/route.ts",["41250"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/[id]/models/staleEncryptionGuard.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/[id]/param-filters/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/[id]/refresh/route.ts",["41251"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/[id]/route.ts",["41252"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/[id]/sync-models/degradedLocalCatalog.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/[id]/sync-models/route.ts",["41253"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/[id]/test/cliRuntimeProviderMap.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/[id]/test/mistralAmbiguousAuth.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/[id]/test/oauthTestConfig.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/[id]/test/route.ts",["41254"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/agy-auth/apply-local/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/agy-auth/import/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/agy-auth/import-bulk/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/agy-auth/zip-extract/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/bulk/route.ts",["41255"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/bulk-web-session/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/claude-auth/import/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/claude-auth/import-bulk/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/claude-auth/zip-extract/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/client/route.ts",["41256"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/codex-auth/import/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/codex-auth/import-bulk/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/codex-auth/zip-extract/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/command-code/auth/apply/route.ts",["41257"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/command-code/auth/callback/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/command-code/auth/shared.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/command-code/auth/start/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/command-code/auth/status/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/expiration/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/health-autopilot/actions/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/health-autopilot/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/health-matrix/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/import/route.ts",["41258"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/openrouter-stats/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/quota-windows/route.ts",["41259"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/test-batch/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/validate/route.ts",["41260"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/zed/discover/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/zed/import/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/providers/zed/manual-import/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/proxy-fallback/test/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/quota/groups/[id]/route.ts",["41261"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/quota/groups/route.ts",["41262"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/quota/keys/[id]/models/route.ts",["41263"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/quota/plans/[connectionId]/route.ts",["41264"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/quota/plans/route.ts",["41265"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/quota/pools/[id]/log/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/quota/pools/[id]/route.ts",["41266"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/quota/pools/[id]/usage/route.ts",["41267"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/quota/pools/route.ts",["41268"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/quota/preview/route.ts",["41269"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/radar/catalog/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/radar/settings/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/radar/sync/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/rate-limit/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/rate-limits/route.ts",["41270"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/relay/tokens/[id]/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/relay/tokens/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/resilience/model-cooldowns/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/resilience/reset/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/resilience/route.ts",["41271"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/restart/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/routing/decisions/[requestId]/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/search/providers/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/search/stats/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/9router/_lib.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/9router/auto-restart-adopted/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/9router/auto-start/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/9router/install/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/9router/models/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/9router/provider-expose/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/9router/restart/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/9router/rotate-key/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/9router/start/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/9router/status/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/9router/stop/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/9router/update/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/[name]/logs/route.ts",["41272"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/_shared/installRoute.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/bifrost/_lib.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/bifrost/auto-restart-adopted/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/bifrost/auto-start/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/bifrost/install/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/bifrost/restart/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/bifrost/start/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/bifrost/status/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/bifrost/stop/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/bifrost/update/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/cliproxy/_lib.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/cliproxy/auto-restart-adopted/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/cliproxy/auto-start/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/cliproxy/install/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/cliproxy/provider-expose/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/cliproxy/restart/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/cliproxy/start/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/cliproxy/status/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/cliproxy/stop/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/cliproxy/update/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/dario/_lib.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/dario/admin/_lib.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/dario/admin/accounts/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/dario/admin/import-from-omniroute/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/dario/admin/login-complete/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/dario/admin/login-start/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/dario/auto-restart-adopted/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/dario/auto-start/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/dario/install/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/dario/restart/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/dario/start/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/dario/status/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/dario/stop/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/dario/update/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/mux/_lib.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/mux/auto-restart-adopted/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/mux/auto-start/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/mux/install/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/mux/restart/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/mux/start/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/mux/status/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/mux/stop/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/services/mux/update/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/session-pools/[provider]/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/session-pools/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/sessions/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/__tests__/memory.test.ts",["41273"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/__tests__/settings.test.ts",["41274"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/authz-inventory/route.ts",["41275"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/auto-disable-accounts/route.ts",["41276"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/background-degradation/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/cache-config/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/cache-metrics/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/cc-discovery-metrics/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/combo-defaults/route.ts",["41277"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/compression/mcp-accessibility/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/compression/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/compression/rules/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/compression/run-telemetry/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/database/refresh-stats/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/database/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/database/vacuum/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/export-json/route.ts",["41278"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/favicon/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/feature-flags/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/free-proxies/[id]/add-to-pool/route.ts",["41279"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/free-proxies/bulk-add-to-pool/route.ts",["41280"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/free-proxies/route.ts",["41281"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/free-proxies/stats/route.ts",["41282"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/free-proxies/sync/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/import-json/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/ip-filter/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/lkgp-cache/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/local-corpus/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/memory/route.ts",["41283"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/mitm/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/model-aliases/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/models-dev/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/notion/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/obsidian/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/obsidian/webdav/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/oneproxy/rotate/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/oneproxy/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/payload-rules/route.ts",["41284"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/proxies/[id]/repair-relay/route.ts",["41285"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/proxies/assignments/route.ts",["41286"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/proxies/auto-test/route.ts",["41287"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/proxies/batch-activate/route.ts",["41288"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/proxies/batch-delete/route.ts",["41289"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/proxies/bulk-assign/route.ts",["41290"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/proxies/bulk-import/route.ts",["41291"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/proxies/egress/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/proxies/health/route.ts",["41292"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/proxies/migrate/route.ts",["41293"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/proxies/pool/route.ts",["41294"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/proxies/route.ts",["41295"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/proxy/cloudflare-deploy/route.ts",["41296"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/proxy/deno-deploy/route.ts",["41297"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/proxy/route.ts",["41298"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/proxy/test/relayTestResult.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/proxy/test/route.ts",["41299"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/proxy/vercel-deploy/route.ts",["41300"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/purge-call-logs/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/purge-detailed-logs/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/purge-logs/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/purge-quota-snapshots/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/purge-request-history/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/purge-usage-history/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/qdrant/cleanup/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/qdrant/embedding-models/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/qdrant/health/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/qdrant/route.ts",["41301"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/qdrant/search/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/quota-store/route.ts",["41302"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/reasoning-routing-rules/[id]/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/reasoning-routing-rules/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/reasoning-routing-rules/simulate/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/require-login/route.ts",["41303"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/route.ts",["41304","41305"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/system-prompt/route.ts",["41306"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/task-routing/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/thinking-budget/route.ts",["41307"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/settings/tier-config/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/shutdown/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/skills/[id]/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/skills/collect/chaos/route.ts",["41308"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/skills/collect/detect/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/skills/collect/install/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/skills/executions/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/skills/install/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/skills/marketplace/install/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/skills/marketplace/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/skills/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/skills/skillssh/install/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/skills/skillssh/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/storage/health/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/sync/bundle/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/sync/cloud/route.ts",["41309"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/sync/initialize/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/sync/tokens/[id]/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/sync/tokens/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/synced-available-models/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/system/env/repair/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/system/version/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/tags/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/telemetry/summary/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/token-health/route.ts",["41310"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/tools/agent-bridge/agents/[id]/detect/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/tools/agent-bridge/agents/[id]/detected-models/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/tools/agent-bridge/agents/[id]/dns/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/tools/agent-bridge/agents/[id]/mappings/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/tools/agent-bridge/agents/[id]/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/tools/agent-bridge/agents/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/tools/agent-bridge/bypass/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/tools/agent-bridge/cert/download/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/tools/agent-bridge/cert/regenerate/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/tools/agent-bridge/cert/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/tools/agent-bridge/config/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/tools/agent-bridge/diagnose/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/tools/agent-bridge/repair/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/tools/agent-bridge/server/route.ts",["41311"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/tools/agent-bridge/state/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/tools/agent-bridge/tproxy/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/tools/agent-bridge/upstream-ca/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/tools/agent-bridge/upstream-ca/test/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/tools/traffic-inspector/capture-modes/http-proxy/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/tools/traffic-inspector/capture-modes/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/tools/traffic-inspector/capture-modes/system-proxy/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/tools/traffic-inspector/capture-modes/tls-intercept/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/tools/traffic-inspector/export.har/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/tools/traffic-inspector/hosts/[host]/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/tools/traffic-inspector/hosts/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/tools/traffic-inspector/internal/ingest/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/tools/traffic-inspector/requests/[id]/annotation/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/tools/traffic-inspector/requests/[id]/replay/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/tools/traffic-inspector/requests/[id]/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/tools/traffic-inspector/requests/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/tools/traffic-inspector/sessions/[id]/export.har/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/tools/traffic-inspector/sessions/[id]/requests/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/tools/traffic-inspector/sessions/[id]/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/tools/traffic-inspector/sessions/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/tools/traffic-inspector/ws/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/translator/detect/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/translator/history/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/translator/send/route.ts",["41312"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/translator/transform-stream/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/translator/translate/route.ts",["41313"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/tunnels/cloudflared/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/tunnels/ngrok/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/tunnels/tailscale/check/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/tunnels/tailscale/disable/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/tunnels/tailscale/enable/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/tunnels/tailscale/install/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/tunnels/tailscale/login/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/tunnels/tailscale/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/tunnels/tailscale/routeUtils.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/tunnels/tailscale/start-daemon/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/upstream-proxy/[providerId]/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/usage/[connectionId]/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/usage/analytics/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/usage/budget/bulk/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/usage/budget/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/usage/cache-health/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/usage/call-logs/[id]/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/usage/call-logs/route.ts",["41314"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/usage/codex-reset-credit/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/usage/combo-forecast/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/usage/combo-health/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/usage/combo-health-autopilot/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/usage/combo-health-dashboard/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/usage/combo-scoring-inspector/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/usage/history/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/usage/logs/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/usage/model-latency-stats/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/usage/om-usage/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/usage/provider-limits/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/usage/provider-window-costs/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/usage/proxy-logs/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/usage/quota/route.ts",["41315"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/usage/request-logs/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/usage/requests-by-provider-date/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/usage/route-explain/[id]/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/usage/token-limits/route.ts",["41316"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/usage/utilization/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/[...omnirouteCatchAll]/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/_helpers/apiKeyScope.ts",["41317"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/_shared/audioProviderNodes.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/_shared/mediaGenerationRoute.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/_shared/rateLimit.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/_shared/specialtyCatalog.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/accounts/[id]/limits/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/agents/credentials/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/agents/health/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/agents/tasks/[id]/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/agents/tasks/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/antigravity/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/api/chat/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/audio/speech/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/audio/transcriptions/route.ts",["41318"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/audio/translations/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/auto-combo/[channel]/candidates/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/batches/[id]/cancel/route.ts",["41319"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/batches/[id]/route.ts",["41320"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/batches/delete-completed/route.ts",["41321"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/batches/formatBatchResponse.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/batches/parseListLimit.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/batches/route.ts",["41322"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/chat/completions/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/chatgpt-web/image/[id]/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/combos/projectCombo.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/combos/route.ts",["41323"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/completions/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/completions/textCompletionTransform.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/embeddings/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/files/[id]/content/route.ts",["41324"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/files/[id]/route.ts",["41325"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/files/route.ts",["41326"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/images/edits/route.ts",["41327","41328"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/images/generations/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/images/upscale/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/issues/report/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/management/proxies/assignments/route.ts",["41329"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/management/proxies/bulk-assign/route.ts",["41330"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/management/proxies/health/route.ts",["41331"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/management/proxies/route.ts",["41332"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/management/proxy-subscriptions/[id]/nodes/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/management/proxy-subscriptions/[id]/refresh/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/management/proxy-subscriptions/[id]/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/management/proxy-subscriptions/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/me/status/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/messages/count_tokens/route.ts",["41333"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/messages/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/models/[...model]/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/models/aliasBackedModels.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/models/catalog.ts",["41334"],["41335"],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/models/catalogCache.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/models/catalogDedupe.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/models/catalogHelpers.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/models/catalogOpenrouter.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/models/catalogOrder.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/models/catalogProviderMaps.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/models/catalogRequest.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/models/catalogResponse.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/models/catalogSyncedCoverage.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/models/catalogVision.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/models/ccAliasPredicate.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/models/functionalGatewayPredicate.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/models/modelById.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/models/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/models/syncedCapabilities.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/moderations/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/music/generations/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/ocr/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/provider-plugin-manifest/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/providers/[provider]/chat/completions/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/providers/[provider]/embeddings/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/providers/[provider]/images/generations/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/providers/[provider]/limits/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/providers/[provider]/models/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/providers/suggested-models/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/quotas/check/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/registered-keys/[id]/revoke/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/registered-keys/[id]/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/registered-keys/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/relay/chat/completions/bifrost/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/relay/chat/completions/bifrostCooldown.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/relay/chat/completions/relaySecurity.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/relay/chat/completions/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/relay/chat/completions/routingBackend.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/relay/chat/completions/streamFinalizer.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/rerank/route.ts",["41336"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/responses/[...path]/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/responses/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/search/analytics/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/search/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/videos/generations/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/vscode/[token]/api/chat/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/vscode/[token]/api/show/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/vscode/[token]/api/tags/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/vscode/[token]/api/version/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/vscode/[token]/chat/completions/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/vscode/[token]/combos/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/vscode/[token]/familyFirstModelIds.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/vscode/[token]/modelPresentation.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/vscode/[token]/models/route.ts",["41337"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/vscode/[token]/reasoningMetadata.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/vscode/[token]/responses/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/vscode/[token]/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/vscode/[token]/serviceTierVariants.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/vscode/[token]/tokenizedRequest.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/vscode/[token]/usableChatModel.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/vscode/[token]/v1/chat/completions/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/vscode/[token]/v1/models/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/vscode/combos/[token]/[[...slug]]/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/vscode/contextSanitizer.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/vscode/raw/[token]/api/chat/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/vscode/raw/[token]/api/show/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/vscode/raw/[token]/api/tags/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/vscode/raw/[token]/api/version/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/vscode/raw/[token]/chat/completions/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/vscode/raw/[token]/combos/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/vscode/raw/[token]/familyFirstModelIds.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/vscode/raw/[token]/modelPresentation.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/vscode/raw/[token]/models/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/vscode/raw/[token]/reasoningMetadata.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/vscode/raw/[token]/responses/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/vscode/raw/[token]/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/vscode/raw/[token]/serviceTierVariants.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/vscode/raw/[token]/tokenizedRequest.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/vscode/raw/[token]/v1/chat/completions/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/vscode/raw/[token]/v1/models/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/web/fetch/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1/ws/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1beta/models/[...path]/convertGeminiToInternal.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1beta/models/[...path]/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/v1beta/models/route.ts",["41338"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/version-manager/check-update/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/version-manager/install/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/version-manager/request.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/version-manager/restart/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/version-manager/start/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/version-manager/status/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/version-manager/stop/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/vnc-session/[...params]/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/vnc-session/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/webhooks/[id]/deliveries/route.ts",["41339"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/webhooks/[id]/route.ts",["41340"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/webhooks/[id]/test/route.ts",["41341","41342"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/webhooks/route.ts",["41343"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/api/webhooks/validate-url/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/auth/callback/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/authorize/parseCallback.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/authorize/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/callback/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/connect/codex/[token]/CodexConnectClient.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/connect/codex/[token]/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/docs/[...slug]/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/docs/api/search/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/docs/api-explorer/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/docs/components/ApiExplorerClient.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/docs/components/DocsPageAnalytics.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/docs/components/FeedbackWidget.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/docs/layout.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/docs/lib/openapi.generated.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/docs/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/error.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/forbidden/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/forgot-password/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/global-error.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/healthz/route.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/landing/components/AnimatedBackground.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/landing/components/Features.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/landing/components/FlowAnimation.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/landing/components/Footer.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/landing/components/GetStarted.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/landing/components/HeroSection.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/landing/components/HowItWorks.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/landing/components/Navigation.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/landing/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/layout.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/loading.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/login/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/maintenance/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/manifest.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/not-found.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/offline/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/privacy/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/status/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/terms/page.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/domain/assessment/assessor.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/domain/assessment/categorizer.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/domain/assessment/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/domain/assessment/migration.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/domain/assessment/selfHealer.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/domain/assessment/types.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/domain/comboResolver.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/domain/configAudit.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/domain/connectionModelRules.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/domain/costRules.ts",["41344"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/domain/degradation.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/domain/fallbackPolicy.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/domain/lockoutPolicy.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/domain/modelAvailability.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/domain/omnirouteResponseMeta.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/domain/persistence/comboRepositories.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/domain/pipeline.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/domain/policyEngine.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/domain/prompts.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/domain/providerExpiration.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/domain/quotaCache.ts",["41345"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/domain/responses.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/domain/tagRouter.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/domain/types.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/hooks/useLiveCompression.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/hooks/useLiveDashboard.ts",["41346","41347"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/hooks/usePreviewCompression.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/hooks/useProviderBreakerHealth.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/i18n/config.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/i18n/detectBrowserLocale.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/i18n/request.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/instrumentation-node.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/instrumentation.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/a2a/routingLogger.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/a2a/skills/costAnalysis.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/a2a/skills/healthReport.ts",["41348"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/a2a/skills/listCapabilities.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/a2a/skills/providerDiscovery.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/a2a/skills/quotaManagement.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/a2a/skills/smartRouting.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/a2a/streaming.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/a2a/taskExecution.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/a2a/taskManager.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/accessTokens/scopes.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/acp/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/acp/manager.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/acp/registry.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/agentSkills/catalog.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/agentSkills/cliRegistryParser.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/agentSkills/generator.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/agentSkills/openapiParser.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/agentSkills/schemas.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/agentSkills/types.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/api/comboErrorResponse.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/api/errorResponse.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/api/internalServiceAuth.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/api/modelTestRunner.ts",["41349"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/api/proxyRegistryRouteHandlers.ts",["41350"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/api/requireCliToolsAuth.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/api/requireManagementAuth.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/api/serverErrorMessage.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/apiBridgeServer.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/apiKeyExposure.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/arenaEloSync.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/audit/activityIcons.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/audit/highLevelActions.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/audit/timeline.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/auth/managementPassword.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/batches/costEstimator.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/batches/csvToJsonl.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/batches/dispatch.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/batches/retryFailed.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/batches/schemas.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/batches/types.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/batches/validateJsonl.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/benchmarks.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/build-profile/featureDisabled.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/cacheControlSettings.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/cacheLayer.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/catalog/openrouterCatalog.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/catalog/openrouterProviderStats.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/ccDiscoveryAliasResolve.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/chaos/chaosConfig.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/chaos/chaosExecutor.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/cli-helper/claudeProfileAutoSync.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/cli-helper/codexProfileAutoSync.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/cli-helper/config-generator/claude.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/cli-helper/config-generator/cline.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/cli-helper/config-generator/codex.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/cli-helper/config-generator/continue.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/cli-helper/config-generator/hermes-agent.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/cli-helper/config-generator/hermes.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/cli-helper/config-generator/hermesHome.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/cli-helper/config-generator/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/cli-helper/config-generator/kilocode.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/cli-helper/config-generator/opencode.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/cli-helper/doctor/checks.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/cli-helper/log-streamer.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/cli-helper/tool-detector.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/cliTools/batchStatusCache.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/cliTools/checkToolConfigStatus.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/cloudAgent/agents/codex.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/cloudAgent/agents/cursor.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/cloudAgent/agents/devin.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/cloudAgent/agents/jules.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/cloudAgent/api.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/cloudAgent/baseAgent.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/cloudAgent/credentials.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/cloudAgent/db.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/cloudAgent/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/cloudAgent/julesApi.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/cloudAgent/registry.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/cloudAgent/types.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/cloudSync.stub.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/cloudSync.ts",["41351"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/cloudflaredTunnel.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/combos/autoPromote.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/combos/builderDraft.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/combos/builderOptions.ts",["41352"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/combos/comboContext.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/combos/compositeTiers.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/combos/controlCenter.ts",["41353"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/combos/intelligentRouting.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/combos/invariants.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/combos/modelNameCollision.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/combos/steps.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/combos/testHealth.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/compliance/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/compliance/noLog.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/compliance/providerAudit.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/compression/judgeModelClient.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/config/hotReload.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/config/runtimeSettings.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/consoleInterceptor.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/container.ts",["41354"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/contextWindowResolver.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/copilot/codegraphKnowledge.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/copilot/commandClassification.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/copilot/engine.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/copilot/systemPrompt.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/copilot/tools.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/credentialHealth/cache.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/credentialHealth/scheduler.ts",["41355"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/dataPaths.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/__tests__/quotaSnapshots.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/_rowTypes.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/accessTokens.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/adapters/betterSqliteAdapter.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/adapters/bunSqliteAdapter.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/adapters/driverFactory.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/adapters/nodeSqliteAdapter.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/adapters/nodeSqliteShared.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/adapters/sqljsAdapter.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/adapters/types.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/agentBridgeBypass.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/agentBridgeMappings.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/agentBridgeState.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/apiKeyColumnFallbacks.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/apiKeyContextSources.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/apiKeyGroups.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/apiKeyUsageLimitFields.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/apiKeys/modelPermissions.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/apiKeys/rowParsers.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/apiKeys/types.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/apiKeys.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/autoCandidateOverrides.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/backup.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/batches.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/callLogStats.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/caseMapping.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/ccDiscoveryAliases.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/ccDiscoveryMetrics.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/ccrBlocks.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/cleanup/usagePurge.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/cleanup.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/cliToolState.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/comboForecast.ts",["41356"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/combos.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/commandCodeAuth.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/compression.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/compressionAnalytics.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/compressionCacheStats.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/compressionCombos.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/compressionContextBudget.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/compressionDetailNormalizers.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/compressionRunTelemetry.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/contextHandoffs.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/core.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/creditBalance.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/databaseSettings.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/detailedLogs.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/discovery.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/discoveryResults.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/domainState.ts",["41357"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/encryption.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/evals.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/featureFlags.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/files.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/freeProxies.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/functionalGatewayMirrors.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/gamification.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/healthCheck.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/inspectorCustomHosts.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/inspectorSessions.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/interceptionRules.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/jsonMigration.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/localCorpus.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/memoryVec.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/middleware.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/migrationRunner/constants.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/migrationRunner/extraDirs.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/migrationRunner.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/modelCapabilityOverrides.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/modelComboMappings.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/modelContextOverrides.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/modelIntelligence.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/models/activeSyncedCatalog.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/models/aliases.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/models/compat.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/models/mitmAlias.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/models/shared.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/models/synced.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/models.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/notion.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/obsidian.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/omp.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/oneproxy.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/optimizationSettings.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/paramFilters.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/playgroundPresets.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/pluginMetrics.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/plugins.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/probeUtils.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/prompts.ts",["41358"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/providerLimits.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/providerNodeSelect.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/providerPlans.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/providerStats.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/providers/columns.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/providers/deletion.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/providers/lazyConnectionView.ts",["41359"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/providers/migrations.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/providers/nodes.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/providers/rateLimit.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/providers/usageIdentityReconciliation.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/providers.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/proxies/guards.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/proxies/mappers.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/proxies/registryGeneration.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/proxies/rotation.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/proxies/types.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/proxies.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/proxyLatency.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/proxyLogs.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/proxySubscriptions.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/quotaConsumption.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/quotaGroups.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/quotaModelCaps.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/quotaPools.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/quotaResetEvents.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/quotaSnapshots.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/radar.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/readCache.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/reasoningCache.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/reasoningRoutingRules.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/recovery.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/registeredKeys.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/relayProbeStats.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/relayProxies.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/repositories/routingConfigRepositories.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/repositories/sqliteComboRepository.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/repositories/sqliteModelComboMappingRepository.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/schemaColumns.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/secrets.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/semanticCache.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/serviceModels.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/sessionAccountAffinity.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/settings/cacheMetrics.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/settings/lkgp.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/settings/noAuthProxyFallback.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/settings/pricing.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/settings/shared.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/settings.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/skills.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/stateReset.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/stats.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/syncTokens.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/tierConfig.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/tokenLimits.ts",["41360"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/upstreamProxy.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/usageAnalytics/sources.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/usageAnalytics.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/usageLogs.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/usageSummary.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/vacuumScheduler.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/versionManager.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/webSessionDedup.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/webhookDeliveries.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/db/webhooks.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/discovery/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/display/names.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/display/useProviderNodeMap.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/docsI18nPath.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/docsSanitizer.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/embeddings/familyGuard.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/embeddings/service.ts",["41361"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/env/runtimeEnv.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/evals/evalRunner/builtinSuites.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/evals/evalRunner.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/evals/runtime.ts",["41362"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/events/eventBus.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/events/types.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/freeProviderRankings.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/freeProviderRankingsAuthType.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/freeProxyProviders/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/freeProxyProviders/iplocate.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/freeProxyProviders/oneproxy.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/freeProxyProviders/proxifly.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/freeProxyProviders/scheduler.ts",["41363"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/freeProxyProviders/syncCycle.ts",["41364"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/freeProxyProviders/types.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/freeProxyProviders/webshare.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/gamification/antiCheat.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/gamification/badges.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/gamification/events.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/gamification/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/gamification/invites.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/gamification/leaderboard.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/gamification/notifications.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/gamification/servers.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/gamification/sharing.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/gamification/streaks.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/gamification/xp.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/gracefulShutdown.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/guardrails/base.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/guardrails/credentialMasker.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/guardrails/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/guardrails/piiMasker.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/guardrails/promptInjection.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/guardrails/registry.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/guardrails/visionBridge.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/guardrails/visionBridgeCredentials.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/guardrails/visionBridgeHelpers.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/guardrails/visionBridgeRouter.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/headroom/detect.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/headroom/process.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/idempotencyLayer.ts",["41365"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/images/imageRouteModel.ts",["41366"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/initCloudSync.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/inspector/agentBridgeMaintenanceApi.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/inspector/captureState.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/inspector/configPortability.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/inspector/harExport.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/inspector/matchesTrafficFilter.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/inspector/secretMask.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/inspector/tproxyCaptureApi.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/ipUtils.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/issueAgent/audit.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/issueAgent/execution.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/issueAgent/githubExport.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/issueAgent/recordedTriage.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/jobs/backupScheduleJob.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/jobs/budgetResetJob.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/jobs/cronMatch.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/jobs/reasoningCacheCleanupJob.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/localCorpus/configured.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/localCorpus/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/localDb.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/localHealthCheck.ts",["41367"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/logEnv.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/logPayloads.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/logRotation.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/machineToken.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/memory/__tests__/generic-backend.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/memory/__tests__/injection.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/memory/__tests__/qdrant-wiring.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/memory/__tests__/retrieval.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/memory/__tests__/schemas.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/memory/backend.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/memory/cache.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/memory/embedding/cache.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/memory/embedding/index.ts",["41368"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/memory/embedding/remote.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/memory/embedding/staticPotion.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/memory/embedding/transformersLocal.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/memory/embedding/types.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/memory/extraction.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/memory/genericBackend.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/memory/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/memory/injection.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/memory/manager.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/memory/obsidianBackend.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/memory/qdrant.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/memory/reindex.ts",["41369"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/memory/retrieval/scoring.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/memory/retrieval.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/memory/schemas.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/memory/settings.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/memory/sqliteBackend.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/memory/store.ts",["41370"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/memory/summarization.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/memory/typedDecay.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/memory/types.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/memory/vectorStore.ts",["41371"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/memory/verify.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/middleware/cliTokenAuth.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/middleware/registry.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/middleware/types.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/modelAliasResolver.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/modelAliasSeed.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/modelCapabilities.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/modelMetadataRegistry.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/modelsDevSync/transform.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/modelsDevSync.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/monitoring/comboHealthAutopilot.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/monitoring/observability.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/monitoring/providerHealthAutopilot.ts",["41372","41373"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/monitoring/providerHealthMatrix.ts",["41374"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/ngrokTunnel.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/notion/api.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/codexDeviceFlow.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/config/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/connectionPersistence.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/constants/oauth.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/credentialBlob.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/deviceFlowTickets.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/gitlab.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/kiroConnectionIdentity.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/kiroSocialPoll.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/pasteCredentials.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/providers/agy.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/providers/antigravity.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/providers/claude.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/providers/cline.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/providers/codebuddy-cn.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/providers/codex.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/providers/cursor.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/providers/ghe-copilot.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/providers/github.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/providers/gitlab-duo.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/providers/grok-cli-oauth.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/providers/grok-cli.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/providers/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/providers/kilocode.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/providers/kimi-coding.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/providers/kiro.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/providers/qoder.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/providers/raycast.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/providers/trae.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/providers/windsurf.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/providers/xai-oauth.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/providers/zed-hosted.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/providers/zed.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/providers.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/services/codexImport.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/services/cursor.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/services/kiro.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/services/raycast.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/services/raycastLocal.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/utils/agyAuthImport.ts",["41375"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/utils/banner.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/utils/claudeAuthFile.ts",["41376"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/utils/claudeAuthImport.ts",["41377"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/utils/claudeAuthZipExtract.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/utils/cliProxyAuthImport.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/utils/codexAuthFile.ts",["41378"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/utils/codexAuthImport.ts",["41379"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/utils/codexAuthZipExtract.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/utils/codexConnectionSelection.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/utils/codexSessionImport.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/utils/googleLoopbackHint.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/utils/grokCliAuthJson.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/utils/jsonZipExtract.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/utils/loopbackTunnel.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/utils/pkce.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/utils/pkceLoopbackWarning.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/utils/server.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oauth/utils/ui.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/obsidian/api.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/obsidianSync.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oneproxyRotator.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/oneproxySync.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/piiSanitizer.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/playground/codeExport.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/playground/promptImprover.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/playground/streamMetrics.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/playground/types.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/plugins/devMode.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/plugins/doctor.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/plugins/errors.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/plugins/hooks.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/plugins/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/plugins/loader.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/plugins/logger.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/plugins/manager.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/plugins/manifest.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/plugins/marketplace.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/plugins/scanner.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/plugins/sdk.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/plugins/testRunner.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/plugins/watcher.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/pricingSync.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/promptCache/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/promptCache/prefixAnalyzer.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/providerModels/cursorAgent.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/providerModels/geminiModelsParser.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/providerModels/managedAvailableModels.ts",["41380"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/providerModels/managedModelImport.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/providerModels/modelDiscovery.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/providers/catalog.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/providers/claudeExtraUsage.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/providers/claudeFastMode.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/providers/codexConnectionDefaults.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/providers/codexFastTier.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/providers/imageValidation.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/providers/managedAvailableModels.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/providers/modelListingCapability.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/providers/nvidiaValidationModel.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/providers/requestDefaults.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/providers/serviceKindIndex.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/providers/staticModels.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/providers/validation/anthropicFormat.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/providers/validation/audioMiscProviders.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/providers/validation/cloudProviders.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/providers/validation/cozeError.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/providers/validation/directChatProbe.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/providers/validation/embeddingProviders.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/providers/validation/headers.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/providers/validation/kiro.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/providers/validation/metaAi.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/providers/validation/openaiFormat.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/providers/validation/searchProviders.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/providers/validation/specialtyInline.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/providers/validation/transport.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/providers/validation/urlHelpers.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/providers/validation/webCookie.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/providers/validation/webProvidersA.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/providers/validation/webProvidersB.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/providers/validation.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/providers/webCookieAuth.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/providers/xai/thinking.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/providers/xai/translators/claude.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/providers/xai/translators/gemini.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/providers/xai/translators/openai-chat.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/providers/xai/translators/openai-responses.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/proxyEgress.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/proxyHealth/decision.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/proxyHealth/scheduler.ts",["41381"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/proxyHealth/statusPolicy.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/proxyHealth.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/proxyLogger.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/proxyRelay/cloudflareWorkerScript.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/proxySubscription/coreEndpoint.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/proxySubscription/due.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/proxySubscription/fetchGuard.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/proxySubscription/fetchRetry.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/proxySubscription/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/proxySubscription/needsCore.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/proxySubscription/parse.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/proxySubscription/schema.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/proxySubscription/scopes.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/proxySubscription/subscriptionService.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/proxySubscription/url.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/quota/QuotaStore.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/quota/accountBuckets.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/quota/burnRate.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/quota/connectionProvider.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/quota/connectionRecovery.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/quota/dimensions.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/quota/enforce.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/quota/fairShare.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/quota/planRegistry.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/quota/planResolver.ts",["41382"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/quota/quotaCombos.ts",["41383"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/quota/quotaKey.ts",["41384"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/quota/quotaModelNaming.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/quota/redisQuotaStore.ts",["41385"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/quota/saturationSignals.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/quota/spendRecorder.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/quota/sqliteQuotaStore.ts",["41386"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/quota/storeFactory.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/quota/types.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/radar/applyFeed.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/radar/feedSchema.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/radar/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/radar/pinnedKeys.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/radar/sync.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/radar/verify.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/reasoningRouting/input.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/reasoningRouting/policy.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/resilience/modelLockoutSettings.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/resilience/settings/normalize.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/resilience/settings/types.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/resilience/settings.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/routerEval/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/runtime/ports.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/search/executeWebSearch.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/security/localEndpoints.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/semanticCache.ts",["41387"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/serverLifecycle.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/services/ServiceSupervisor.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/services/apiKey.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/services/bootstrap.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/services/embedPath.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/services/embedWsProxy.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/services/healthCheck.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/services/htmlRewriter.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/services/installers/bifrost.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/services/installers/cliproxy.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/services/installers/dario.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/services/installers/mux.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/services/installers/ninerouter.stub.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/services/installers/ninerouter.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/services/installers/utils.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/services/modelSync.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/services/portProbe.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/services/providerPlugins/registry.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/services/providerPlugins/types.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/services/quotaAutoPing.ts",["41388"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/services/registry.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/services/reverseProxy.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/services/ringBuffer.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/services/serviceBackends.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/services/types.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/skills/__tests__/integration.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/skills/a2a.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/skills/builtin/browser.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/skills/builtins.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/skills/containerProvider.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/skills/custom.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/skills/executor.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/skills/githubCollector.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/skills/hybrid.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/skills/injection.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/skills/interception.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/skills/providerSettings.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/skills/registry.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/skills/sandbox.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/skills/schemas.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/skills/skillssh.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/skills/types.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/skills/webFetchExecution.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/source.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/spend/batchWriter.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/sseTextTransform.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/streamingPiiTransform.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/sync/bundle.ts",["41389"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/sync/tokens.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/system/autoUpdate.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/system/globalPackagePath.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/system/versionCheck.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/system/versionCompare.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/tailscaleTunnel.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/tokenHealthCheck.ts",["41390"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/tokenHealthCheckCopilot.ts",["41391"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/toolPolicy.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/translator/streamTransform.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/translatorEvents.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/usage/accountIdentity.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/usage/aggregateHistory.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/usage/apiKeySelfService.ts",["41392"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/usage/apiKeyUsageLimits.ts",["41393"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/usage/cacheHealth.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/usage/callLogApiKeyContext.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/usage/callLogArtifacts.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/usage/callLogs/format.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/usage/callLogs.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/usage/callLogsBoundedQueries.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/usage/codexResetCredits.ts",["41394"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/usage/comboForecast.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/usage/comboHealth.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/usage/comboHealthDashboard.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/usage/comboScoringInspector.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/usage/completedRequestDetails.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/usage/costCalculator.ts",["41395"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/usage/fetcher.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/usage/flatRateProviders.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/usage/internalUsageCommand.ts",["41396"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/usage/migrations.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/usage/pendingRequestScope.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/usage/providerDisplayNames.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/usage/providerLimits/chunkedSpacingSync.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/usage/providerLimits/quotaNormalize.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/usage/providerLimits.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/usage/providerLimitsCache.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/usage/providerWindowCosts.ts",["41397"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/usage/resilienceExplain.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/usage/routeExplain.ts",["41398"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/usage/tokenAccounting.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/usage/usageEvents.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/usage/usageHistory/helpers.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/usage/usageHistory.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/usage/usageStats.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/usageAnalytics.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/usageDb.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/versionManager/binaryManager.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/versionManager/healthMonitor.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/versionManager/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/versionManager/processManager.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/versionManager/releaseChecker.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/vncSession/harvest.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/vncSession/manifest.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/vncSession/service.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/vscode/familyFirstModelIds.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/vscode/modelPresentation.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/vscode/reasoningMetadata.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/vscode/serviceTierVariants.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/vscode/tokenizedRequest.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/webhookDispatcher.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/webhooks/eventDescriptions.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/webhooks/integrations/discord.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/webhooks/integrations/slack.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/webhooks/integrations/telegram.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/ws/handshake.ts",["41399"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/zed-oauth/confirmedAccounts.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/zed-oauth/credentialFingerprint.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/zed-oauth/dockerDetect.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/zed-oauth/importUtils.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/zed-oauth/keychain-reader.stub.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/lib/zed-oauth/keychain-reader.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/middleware/promptInjectionGuard.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/_internal/aliasConfig.cjs",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/_internal/bypass.cjs",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/_internal/forwardTarget.cjs",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/_internal/ingest.cjs",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/_internal/rootCaShim.cjs",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/_internal/standaloneRouting.cjs",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/aliasConfig.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/cert/generate.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/cert/install.stub.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/cert/install.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/cert/migration.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/cert/rootCa.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/dataDir.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/detection/antigravity.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/detection/claudeCode.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/detection/codex.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/detection/copilot.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/detection/cursor.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/detection/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/detection/kiro.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/detection/openCode.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/detection/zed.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/dns/dnsConfig.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/dns/provision.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/handlers/antigravity.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/handlers/base.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/handlers/claudeCode.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/handlers/codex.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/handlers/copilot.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/handlers/cursor.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/handlers/kiro.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/handlers/openCode.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/handlers/trae.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/handlers/zed.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/inspector/agentBridgeHook.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/inspector/buffer.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/inspector/contextKey.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/inspector/conversationNormalizer.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/inspector/diagnostics.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/inspector/httpProxyServer.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/inspector/kindDetector.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/inspector/llmMetadataExtractor.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/inspector/pricing.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/inspector/processAttribution.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/inspector/sseMerger.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/inspector/systemProxyConfig.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/inspector/types.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/manager.runtime.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/manager.stub.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/manager.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/maskSecrets.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/passthrough.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/privilegedMitmStep.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/repair.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/sanitizeHeaders.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/server.cjs",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/socketTimeouts.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/stopDnsTeardown.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/sudoGate.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/systemCommands.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/targets/antigravity.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/targets/claudeCode.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/targets/codex.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/targets/copilot.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/targets/cursor.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/targets/ghe-copilot.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/targets/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/targets/kiro.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/targets/openCode.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/targets/trae.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/targets/zed.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/tproxy/caTrust.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/tproxy/captureManager.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/tproxy/captureMode.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/tproxy/commands.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/tproxy/dynamicCert.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/tproxy/setup.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/tproxy/tlsCapture.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/tproxy/transparentSocket.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/types.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/mitm/upstreamTrust.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/models/index.ts",["41400"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/proxy.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/scripts/backfillAggregation.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/server/auth/loginGuard.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/server/authz/accessScopes.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/server/authz/accessTokenAuth.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/server/authz/assertAuth.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/server/authz/classify.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/server/authz/context.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/server/authz/csrf.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/server/authz/headers.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/server/authz/peerStamp.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/server/authz/pipeline.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/server/authz/policies/clientApi.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/server/authz/policies/management.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/server/authz/policies/public.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/server/authz/routeGuard.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/server/authz/types.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/server/cors/origins.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/server/origin/publicOrigin.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/server/ws/liveServer.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/server/ws/liveServerAllowList.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/server/ws/types.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/server-init.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/Avatar.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/Badge.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/BasePathNetworkProvider.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/Breadcrumbs.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/Button.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/Card.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/Checkbox.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/CloudSyncStatus.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/Collapsible.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/CollapsibleSection.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/ColumnToggle.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/CommandPalette.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/ConsoleLogViewer.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/CursorAuthModal.tsx",["41401"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/DataTable.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/DegradationBadge.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/DistributeProxiesButton.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/DistributeProxiesButton.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/EmptyState.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/ErrorPageScaffold.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/FilterBar.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/Footer.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/Header.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/InfoTooltip.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/Input.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/KiroAuthModal.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/KiroOAuthWrapper.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/KiroSocialOAuthModal.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/LanguageSelector.tsx",["41402"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/LinkifiedText.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/Loading.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/LocaleAutoDetect.tsx",[],["41403"],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/MaintenanceBanner.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/ManualConfigModal.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/Modal.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/ModelRoutingSection.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/ModelSelectField.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/ModelSelectModal.tsx",[],["41404"],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/MonacoEditor.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/NavigationProgress.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/NoAuthAccountCard.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/NoAuthProviderCard.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/NoAuthProviderToggle.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/NotificationToast.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/OAuthModal.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/OAuthModalPanels.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/OmniRouteLogo.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/PresetSlider.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/PricingModal.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/ProviderCooldownCard.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/ProviderIcon.tsx",[],["41405","41406"],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/ProviderTestSlideOver.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/ProxyConfigModal.tsx",["41407"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/ProxyLogDetail.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/ProxyLogger.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/PwaRegister.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/RaycastAuthModal.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/ReasoningRoutingRules.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/RequestLoggerDetail.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/RequestLoggerV2.tsx",["41408","41409","41410","41411","41412","41413"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/RequestTimeline.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/RiskNoticeModal.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/SegmentedControl.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/Select.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/Sidebar.search.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/Sidebar.tsx",["41414"],["41415"],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/SkillsConceptCard.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/SystemMonitor.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/Textarea.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/ThemeProvider.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/ThemeToggle.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/Toggle.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/TokenHealthBadge.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/Tooltip.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/TraeAuthModal.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/UsageAnalytics.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/UsageStats.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/analytics/ApiKeyFilterDropdown.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/analytics/CustomRangePicker.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/analytics/ModelTable.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/analytics/RequestCountByProviderDateTable.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/analytics/RequestCountDateFilter.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/analytics/RequestCountTable.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/analytics/TimeRangeSelector.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/analytics/chartColors.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/analytics/charts.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/analytics/index.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/analytics/modelBreakdownSort.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/analytics/rechartsCore.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/analytics/rechartsDonuts.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/analytics/rechartsUsageCharts.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/analytics/requestCountSort.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/analytics/useProviderDailyUsage.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/cli/CliComparisonCard.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/cli/CliConceptCard.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/cli/CliToolCard.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/cli/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/compression/ComboCompressionModeSelect.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/compression/CompressionPipelineEditor.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/compression/EngineConfigForm.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/compression/EngineConfigPage.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/compression/compressionPipelineModel.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/docs/APIReference.stories.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/docs/APIReference.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/docs/Callout.stories.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/docs/Callout.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/docs/CodeBlock.stories.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/docs/CodeBlock.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/docs/DocsBreadcrumbs.stories.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/docs/DocsBreadcrumbs.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/docs/DocsSidebar.stories.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/docs/DocsSidebar.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/docs/DocsThemeProvider.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/docs/Tabs.stories.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/docs/Tabs.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/docs/tokens.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/flow/FlowCanvas.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/flow/StatusDot.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/flow/edgeStyles.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/index.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/layouts/AuthLayout.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/layouts/DashboardLayout.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/layouts/index.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/lobeProviderIcons.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/logTableStyles.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/modelSelectModalHelpers.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/oauthBlobSubmit.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/oauthModal/GheConfigStep.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/oauthModal/GitlabDuoSetupStep.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/oauthModal/OAuthErrorStep.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/oauthModal/OAuthWaitingStep.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/proxyAssignment.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/proxyAssignment.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/requestLoggerPreferences.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/components/requestLoggerSignature.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/agentSkills.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/alibabaProviderRegions.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/antigravityClientProfile.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/apiKeyPolicyScopes.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/appConfig.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/batch.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/batchEndpoints.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/bodySize.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/claudeCodeClient.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/cliCompatProviders.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/cliTools.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/cliToolsGrokBuild.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/clientIdentityProfiles.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/codexClient.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/colors.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/comboConfigMode.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/config.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/dashboardCsrf.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/endpointCategories.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/errorCodes.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/featureFlagDefinitions.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/gitlabDuoSetupMessage.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/headers.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/homeWidgets.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/managementScopes.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/mcpScopes.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/mitmToolHosts.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/modal.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/modelCompat.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/modelSpecs.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/models.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/openRouterPreset.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/pricing/default-pricing.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/pricing/frontier-labs.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/pricing/inference-hosts.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/pricing/oauth-subscriptions.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/pricing/regional.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/pricing/shared-tiers.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/pricing.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/providers/apikey/enterprise-cloud.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/providers/apikey/frontier-labs.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/providers/apikey/gateways.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/providers/apikey/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/providers/apikey/inference-hosts.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/providers/apikey/regional.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/providers/apikey/specialty-media.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/providers/audio.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/providers/cloud-agent.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/providers/local.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/providers/noauth.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/providers/oauth.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/providers/search.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/providers/system.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/providers/upstream-proxy.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/providers/web-cookie.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/providers.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/publicApiRoutes.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/quotaAutoPing.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/responsesPreviousResponseId.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/routingStrategies.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/selfServiceScopes.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/serviceKinds.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/sidebarGroupVisibility.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/sidebarVisibility/sections.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/sidebarVisibility/types.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/sidebarVisibility.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/spawnCapablePrefixes.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/statusColors.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/upstreamHeaders.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/visionBridgeDefaults.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/constants/visionModels.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/contracts/quota.ts",["41416"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/hooks/__tests__/useDisplayBaseUrl.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/hooks/cli/useToolBatchStatuses.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/hooks/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/hooks/useCopyToClipboard.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/hooks/useDisplayBaseUrl.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/hooks/useElectron.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/hooks/useTheme.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/http/apiErrorMessage.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/lib/persistLocale.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/middleware/bodySizeGuard.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/middleware/chatBodyAdmission.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/middleware/correlationId.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/middleware/requireJsonContentType.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/network/outboundUrlGuard.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/network/outboundUrlGuardPolicy.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/network/remoteImageFetch.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/network/safeOutboundFetch.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/platform/windowsProcess.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/providers/webSessionCredentials.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/reasoning/effortStandardization.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/resilience/peerRouting.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/schemas/agentBridge.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/schemas/cliCatalog.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/schemas/inspector.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/schemas/memory.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/schemas/playground.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/schemas/qdrant.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/schemas/quota.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/schemas/searchTools.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/schemas/validation.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/services/apiKeyResolver.ts",["41417"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/services/backupService.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/services/claudeCliConfig.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/services/cliInstallFallback.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/services/cliRuntime.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/services/cliRuntimeGrokBuild.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/services/cliRuntimeHealthcheckPath.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/services/cliRuntimeKnownPath.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/services/cloudSyncScheduler.ts",["41418"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/services/codexCatalogRevalidation.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/services/codexDiscoveryPolicy.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/services/droidCustomModels.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/services/initializeCloudSync.ts",["41419"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/services/loginShellPath.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/services/modelSyncScheduler.ts",["41420"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/services/opencodeConfig.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/services/providerLimitsSyncScheduler.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/services/qwenCodeConfig.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/types/cliBatchStatus.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/types/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/types/pagination.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/types/utilization.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/a11yAudit.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/api.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/apiAuth.ts",["41421"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/apiKey.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/apiKeyPolicy.ts",["41422"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/apiResponse.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/basePath.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/basePathFetch.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/bulkApiKeyParser.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/circuitBreaker.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/classify429.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/cliCompat.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/clientApiRouteAuth.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/clineAuth.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/clipboard.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/cloud.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/cn.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/codexBaseUrl.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/codexConfig.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/compatibleProviderId.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/compressionHeaderEcho.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/connectionStatus.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/cors.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/costEstimator.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/dashboardCsrf.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/envBoolean.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/featureFlags.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/fetchError.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/fetchTimeout.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/formatting.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/freeModels.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/globPattern.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/grokBilling.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/injectionSeverity.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/inputSanitizer.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/linkify.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/logRedaction.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/logger.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/machine.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/machineId.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/maskEmail.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/modelCatalogSearch.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/noAuthProviders.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/nodeRuntimeSupport.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/numeric.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/parseApiKeys.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/providerConnectionStatus.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/providerCredentialRequirement.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/providerDisplayLabel.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/providerFallbackColor.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/providerHints.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/providerModelAliases.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/providerQuotaVisibility.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/rateLimiter.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/releaseNotes.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/requestId.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/requestTelemetry.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/requestTimeout.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/resolveOmniRouteBaseUrl.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/runtimeTimeouts.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/secretsValidator.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/secureRandom.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/serviceTierLabels.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/shuffleDeck.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/sidebarExpansionState.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/sidebarRouteMatch.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/sidebarSearch.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/streamTracker.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/structuredLogger.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/testProcess.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/tiktokenCounter.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/turkishText.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/upstreamError.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/utils/wsPath.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/validation/compressionConfigSchemas.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/validation/freeProxySchemas.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/validation/helpers.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/validation/oneproxySchemas.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/validation/providerSchema.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/validation/providerSpecificData.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/validation/schemas/apiV1.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/validation/schemas/auth.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/validation/schemas/cli.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/validation/schemas/cloud.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/validation/schemas/combo.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/validation/schemas/evals.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/validation/schemas/gemini.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/validation/schemas/keys.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/validation/schemas/misc.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/validation/schemas/payloadRules.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/validation/schemas/pricing.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/validation/schemas/provider.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/validation/schemas/proxy.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/validation/schemas/reasoningRouting.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/validation/schemas/routing.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/validation/schemas/settings.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/validation/schemas/translator.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/validation/schemas.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/shared/validation/settingsSchemas.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/sse/handlers/autoRouting.ts",["41423"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/sse/handlers/chat/clientRawRequest.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/sse/handlers/chat.ts",["41424"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/sse/handlers/chatAdmission.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/sse/handlers/chatHelpers.ts",["41425"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/sse/handlers/chatPredicates.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/sse/handlers/comboFailureLogging.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/sse/handlers/reasoningRouting.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/sse/handlers/rejectedRequestUsage.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/sse/handlers/requestBody.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/sse/handlers/resolveRoutingModel.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/sse/services/auth.ts",["41426","41427"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/sse/services/cooldownAwareRetry.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/sse/services/googApiKeyAuth.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/sse/services/headerReader.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/sse/services/imageCredentialRetry.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/sse/services/model.ts",["41428","41429"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/sse/services/noAuthProviderSettings.ts",["41430"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/sse/services/noAuthProviderSiblings.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/sse/services/noAuthProxyResolution.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/sse/services/requestResourceHealth.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/sse/services/sessionAffinityPin.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/sse/services/streamState.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/sse/services/tokenRefresh.ts",["41431"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/sse/utils/backpressure.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/sse/utils/logger.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/store/emailPrivacyStore.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/store/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/store/notificationStore.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/store/themeStore.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/types/databaseSettings.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/types/global.d.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/types/index.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/types/provider.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/types/sqljs.d.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/_cp_mock_hook.mts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/_cp_mock_module.mts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/_helpers/readSrc.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/_setup/isolateDataDir.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/_setup/vitestUiPolyfills.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/benchmarks/pipeline-accuracy.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/boundary/gemini-double-escaping.live.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/boundary/gemini-midstream-503-e2e.live.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/boundary/gemma4-multiturn.live.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/boundary/gemma4-newline-investigation.live.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/boundary/openclaw-omniroute-tool-boundary.live.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/e2e/a11y-resilience.spec.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/e2e/a11y.spec.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/e2e/agent-bridge-traffic-cross.spec.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/e2e/agent-bridge.spec.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/e2e/agent-skills-page.spec.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/e2e/analytics-tabs.spec.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/e2e/api-keys-flow.spec.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/e2e/api.spec.ts",["41432","41433","41434"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/e2e/combo-live-studio.spec.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/e2e/combo-unification.spec.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/e2e/combos-flow.spec.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/e2e/compression-studio.spec.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/e2e/ecosystem.test.ts",["41435","41436","41437","41438","41439","41440","41441","41442","41443","41444","41445","41446","41447","41448","41449","41450","41451"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/e2e/error-pages.spec.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/e2e/group-b-activity-feed.spec.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/e2e/group-b-quota-plans-config.spec.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/e2e/group-b-quota-share-pools.spec.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/e2e/group-b-redirect-logs-activity.spec.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/e2e/helpers/dashboardAuth.ts",["41452","41453"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/e2e/helpers/mockUpstreamServer.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/e2e/memory-engine.spec.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/e2e/memory-qdrant-routes.spec.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/e2e/memory-settings.spec.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/e2e/navigation.spec.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/e2e/playground-compare.spec.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/e2e/playground-studio.spec.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/e2e/protocol-clients.test.ts",["41454","41455","41456","41457","41458","41459"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/e2e/protocol-visibility.spec.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/e2e/providers-bailian-coding-plan.spec.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/e2e/providers-management.spec.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/e2e/proxy-registry.smoke.spec.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/e2e/resilience-plan-alignment.spec.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/e2e/responsive.spec.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/e2e/responsiveSpecs.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/e2e/search-tools-studio.spec.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/e2e/settings-toggles.spec.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/e2e/skills-marketplace.spec.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/e2e/smoke.spec.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/e2e/system-failover.test.ts",["41460","41461"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/e2e/traffic-inspector.spec.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/e2e/translator-friendly.spec.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/e2e/visual-resilience-smoke.spec.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/fixtures/compression/session-dedup-memory-7849.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/fixtures/devin-bridge/e2e-workspace/.claude/hooks/log-tool.mjs",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/fixtures/devin-bridge/e2e-workspace/math.js",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/fixtures/devin-bridge/e2e-workspace/math.test.js",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/fixtures/sanitizerFixtures.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/fixtures/welcome-banner-plugin/index.mjs",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/golden-set/compression-caveman-v2.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/golden-set/compression-quality.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/golden-set/compression-savings.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/golden-set/compression-upstream-parity.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/helpers/fakeUpstreamStream.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/helpers/faultyUpstream.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/helpers/goldenSnapshot.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/helpers/managementSession.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/helpers/persistence/comboRepositoryConformance.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/helpers/propertyConfig.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/helpers/translationFixtures.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/homolog/ui/api-key-flow.spec.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/homolog/ui/auth.setup.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/homolog/ui/playwright.config.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/homolog/ui/routes.spec.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/_chatPipelineCallLogs.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/_chatPipelineHarness.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/_comboRoutingHarness.ts",["41462","41463","41464"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/active-request-completion.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/agent-bridge-bypass-flow.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/agent-bridge-cert-flow.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/agent-bridge-mappings.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/agent-bridge-routes.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/agent-skills-content.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/agent-skills-discovery.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/aihorde-load-test.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/all-statuses-route.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/antigravity-projectid-discovery-persist-8491.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/api-keys.test.ts",["41465","41466","41467","41468","41469","41470","41471","41472","41473","41474","41475","41476","41477","41478","41479","41480","41481","41482","41483","41484","41485","41486","41487"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/api-routes-critical.test.ts",["41488","41489","41490","41491","41492","41493","41494","41495","41496","41497","41498","41499","41500","41501","41502","41503","41504","41505","41506","41507","41508","41509","41510","41511","41512","41513","41514","41515","41516","41517","41518","41519","41520","41521","41522","41523","41524","41525","41526"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/audit-log-level-filter.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/batch-e2e-rate-limit.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/batch-processor-escaping.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/chat-pipeline.test.ts",["41527","41528","41529","41530","41531","41532","41533","41534","41535","41536","41537","41538","41539","41540","41541","41542","41543","41544","41545","41546"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/chatcore-compression-integration.test.ts",["41547","41548","41549","41550","41551","41552","41553","41554","41555"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/chatcore-context-window-boundary.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/cli-settings-codewhale.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/cli-settings-deepseek-tui.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/cli-settings-forge.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/cli-settings-grok-build.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/cli-settings-jcode.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/cli-settings-letta.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/cli-settings-omp.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/cli-settings-pi.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/cli-settings-smelt.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/codex-chat-reasoning-http-e2e.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/combo-failover-e2e.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/combo-live/_liveHarness.ts",["41556","41557","41558","41559","41560","41561","41562","41563","41564","41565"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/combo-live/auto.live.test.ts",["41566","41567","41568","41569","41570","41571","41572","41573","41574","41575","41576","41577","41578","41579","41580","41581","41582","41583","41584","41585","41586","41587"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/combo-live/cost-and-fusion.live.test.ts",["41588","41589","41590","41591","41592","41593","41594","41595","41596","41597","41598","41599","41600","41601","41602","41603","41604","41605","41606","41607","41608","41609","41610","41611","41612","41613","41614","41615","41616"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/combo-live/ordered.live.test.ts",["41617","41618","41619","41620"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/combo-matrix/auto.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/combo-matrix/context-relay-codex.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/combo-matrix/context-relay-handoff.test.ts",["41621","41622"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/combo-matrix/cost-and-context.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/combo-matrix/fusion.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/combo-matrix/ordered.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/combo-matrix/quota-aware.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/combo-matrix/quota-share.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/combo-matrix/weighted.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/combo-provider-exhaustion.test.ts",["41623","41624","41625","41626","41627","41628","41629","41630","41631","41632","41633","41634","41635","41636","41637","41638","41639","41640","41641"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/combo-routing-e2e.test.ts",["41642","41643","41644","41645","41646","41647","41648"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/compression-pipeline.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/cursor-e2e.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/files-api.test.ts",["41649"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/fingerprint-expansion.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/free-models-benchmark.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/free-models-tpm-stress.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/freeModelBenchmarkShared.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/gemini-combo-cooldown-wait.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/gemini-large-context-tpm.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/gemini-live-429-classification.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/gemini-malformed-function-call-stream.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/gemini-rate-limit-classification.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/gemini-tool-call-escaping.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/heap-growth.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/historical-tool-call-leak.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/integration-wiring.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/live-gemini-agentic-loop.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/live-gemini-nonstream.test.ts",["41650"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/live-gemini-workload.test.ts",["41651"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/live-gemini.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/live-ws-startup.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/liveGeminiShared.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/llama-cpp-provider.test.ts",["41652","41653","41654","41655"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/manifest-routing.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/memory-embedding-providers.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/memory-engine-status.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/memory-pipeline.test.ts",["41656"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/memory-reindex.test.ts",["41657"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/memory-retrieve-preview.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/memory-route-put.test.ts",["41658"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/memory-summarize.test.ts",["41659"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/mimocode-proxy.integration.test.ts",["41660","41661","41662","41663","41664","41665","41666","41667","41668","41669","41670","41671","41672"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/modelsDevSync.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/monitoring-health-cache.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/newly-enabled-providers.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/obsidian-plugin-e2e.test.ts",["41673","41674","41675","41676","41677","41678","41679","41680","41681","41682","41683","41684"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/performance-regression.test.ts",["41685"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/pipeline-combo.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/playground-improve-prompt.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/playground-presets-crud.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/playground-presets-zod.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/plugins-lifecycle.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/presets-dashboard-auth.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/provider-journey.contract.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/proxy-context-passthrough.test.ts",["41686","41687","41688","41689","41690","41691","41692","41693","41694"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/proxy-pipeline.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/proxy-registry-flow.test.ts",["41695","41696","41697","41698","41699","41700","41701","41702","41703"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/qdrant-routes.test.ts",["41704","41705","41706","41707","41708","41709","41710","41711","41712","41713","41714","41715","41716","41717","41718","41719","41720","41721","41722"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/quota-plans-crud.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/quota-pool-usage-provider-resolution.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/quota-pools-crud.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/quota-pools-usage.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/quota-preview.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/quota-routes-error-sanitization.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/quota-store-settings.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/reasoning-routing-pipeline.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/resilience-chaos.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/resilience-http-e2e.test.ts",["41723","41724","41725"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/search-providers-catalog.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/security-hardening.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/services/cliproxy-coexistence.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/services/full-lifecycle.int.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/services/route-guard-services.int.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/skills-pipeline.test.ts",["41726","41727","41728","41729","41730","41731","41732","41733","41734","41735","41736","41737","41738","41739"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/sse-correctness.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/stream-recovery-wiring.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/test-model-compression-off-6240.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/traffic-inspector-capture-modes.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/traffic-inspector-error-sanitization.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/traffic-inspector-hosts.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/traffic-inspector-internal-ingest.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/traffic-inspector-localonly.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/traffic-inspector-requests.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/traffic-inspector-session-requests.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/traffic-inspector-sessions.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/traffic-inspector-ws.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/integration/v1-contracts-behavior.test.ts",["41740","41741","41742","41743","41744","41745","41746","41747","41748","41749"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/live/deepseek-web-live.test.ts",["41750","41751"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/load/k6-soak.js",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/load/proxy-load.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/scratch_test.mjs",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/theoldllm-stress.test.ts",["41752","41753","41754","41755","41756","41757","41758","41759","41760","41761"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/translator/testFromFile.ts",["41762","41763","41764"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/7993-noauth-proxy-routing.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/8134-github-t5-fallback-filter.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/8169-lite-word-boundary-truncation.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/8189-classifier-compat-auto-narrow.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/8200-perplexity-web-401-cooldown.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/8200-perplexity-web-cookie-rotation.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/8231-gemini-civic-integrity-default.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/8247-accountfallback-model-unhealthy.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/8248-accountfallback-nvidia-degraded.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/8295-namespace-leaf-collision.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/8326-compatible-id-regex.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/8327-models-owned-by-prefix.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/8328-topology-custom-providers.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/8331-usage-buffer-inflation.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/8332-combo-vision-fallback.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/8336-audit-loopback-login.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/8350-hermes-oauth-usage-400.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/8368-image-token-context.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/8370-priority-affinity-reorder.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/8374-plugins-status-optional.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/8376-econnrefused-breaker.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/8385-perkey-proxy-global-toggle.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/8388-compression-detail-persist.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/8395-plugin-hooks-fire.test.ts",[],["41765"],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/8396-cooldown-429-cap.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/8431-multiwindow-quota-eviction.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/8488-capability-filter-fail-closed.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/8510-adobe-firefly-edits-route.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/8560-responses-image-compaction.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/8594-compress-image-token-stringify.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/8676-monsterapi-deprecation.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/8958-alias-backed-node-prefix.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/8989-perplexity-catalog-mode-repro.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/9232-purge-proxy-assignments-on-delete.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/9474-claude-code-oauth-mismap.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/9536-usage-misreporting-openai-to-claude.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/9545-gpt56-reasoning-tools.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/9551-proxyfetch-no-proxy-context-bypass.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/9560-turbopack-nft-lazy-module-fs.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/9568-gemini-tool-casing-mismatch.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/AutoComboCatalog.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/SkillsConceptCard.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/_fixtures/tsx-runtime-modern-syntax.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/_mitmHandlerHarness.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/_mocks/settings.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/a2a-auth-timing-safe.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/a2a-cost-analysis-numeric-fallback.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/a2a-enabled-route.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/a2a-routing-logger.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/access-scopes-infer.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/access-token-scopes.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/access-tokens-db.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/account-concurrency-cap.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/account-fallback-anthropic-quota.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/account-fallback-cf1010-no-retry-8775.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/account-fallback-lockout-eviction.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/account-fallback-retry-after-json.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/account-fallback-route-restriction-403.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/account-fallback-service.test.ts",["41766"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/account-selector.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/accountSemaphore.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/accountfallback-ratelimit-400-4976.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/acp-agents-route.test.ts",["41767","41768"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/acp-registry.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/active-request-stream-chunks-lifecycle.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/adaptive-admission-controller.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/adaptive-admission-cost.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/adaptive-admission-domain.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/adaptive-admission-features.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/adaptive-admission-lifecycle.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/adaptive-admission-queue.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/adaptive-admission-route-matrix.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/adaptive-admission-runtime.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/admin-audit-events.test.ts",["41769","41770","41771","41772","41773","41774","41775","41776","41777","41778","41779"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/adobe-firefly-browser-login.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/adobe-firefly-jwt-redos-guard.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/adobe-firefly.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/advanced-fase07-09.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/adversarialPii.test.ts",["41780","41781"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/agent-bridge-cert-install-fallback-4546.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/agent-bridge-cert-route-validation.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/agent-bridge-cert-trust-sudo-gate.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/agent-bridge-config-portability.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/agent-bridge-detected-models-8656.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/agent-bridge-dns-params-7271.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/agent-bridge-dns-per-agent-8466.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/agent-bridge-dns-route-validation.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/agent-bridge-dns-sudo-gate.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/agent-bridge-dns-toggle-method-7157.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/agent-bridge-maintenance-api.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/agent-bridge-mappings-sync-8656.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/agent-bridge-repair-route-validation.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/agent-bridge-repair-sudo-gate.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/agent-bridge-server-route-dynamic-import.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/agent-bridge-state-full-payload-8656.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/agent-bridge-state-normalize-3318.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/agent-bridge-targets-serializable.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/agent-card-route.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/agent-goal-policy.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/agent-skills-page.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/agentSkillTools-mcp.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/agentSkills-catalog.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/agentSkills-cliRegistryParser.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/agentSkills-generator.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/agentSkills-openapiParser.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/agentSkills-routes.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/agentSkills-schemas.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/agentbridge-antigravity-cert-hosts-6494.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/agentbridge-mitm-router-key-6403.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/agentrouter-cc-wire-image.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/agentrouter-chatcore-protocols.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/agentrouter-executor-protocols.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/agentrouter-live-catalog.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/agentrouter-models-discovery-7016.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/agentrouter-quota-fetcher.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/agnes-provider.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/agy-auth-import.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/agy-gemini-3696-tier-passthrough.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/agy-gemini-400-3229.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/agy-pro-fallback-chain-3786.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/agy-projectid-ui.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/agy-provider.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/agy-usage-quota.test.ts",["41782","41783","41784","41785"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/aihorde-tools-unsupported-provider-fallback.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/airforce-v1-double-prefix-5899.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/alibaba-image-media.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/alibaba-provider-regions.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/alibaba-video-media.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/alternate-formats.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/anthropic-cache-fingerprint.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/anthropic-compat-validation-v1-messages.test.ts",["41786","41787","41788"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/anthropic-header-dedupe-1475.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/anthropic-official-baseurl-host.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/anthropic-stream-thinking-close-marker.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/anthropic-thinking-signature-recovery.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/anthropic-toolcall-args-6459.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/antigravity-429-quota-cooldown.test.ts",["41789","41790"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/antigravity-429-quota-tdd.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/antigravity-claude-prefill-strip.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/antigravity-client-identity-paths.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/antigravity-client-profile.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/antigravity-credits.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/antigravity-discovery-bootstrap.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/antigravity-executor-split.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/antigravity-finish-reason-normalization.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/antigravity-format-detection.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/antigravity-headers.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/antigravity-image-catalog-separation.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/antigravity-local-usage-fallback-3821.test.ts",["41791","41792","41793","41794"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/antigravity-missing-project-chat.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/antigravity-mitm-model-resolution.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/antigravity-model-aliases.test.ts",["41795","41796","41797"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/antigravity-native-toolcall-collect.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/antigravity-oauth-client-profile.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/antigravity-oauth-no-pkce-no-openid.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/antigravity-oauth-postexchange-nonblocking.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/antigravity-orphan-toolresult-6026.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/antigravity-orphan-tooluse-7752.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/antigravity-prefer-stored-project.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/antigravity-projectid.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/antigravity-quota-skipping.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/antigravity-refresh-empty-token-3850.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/antigravity-retired-public-models.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/antigravity-retry-hook.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/antigravity-safetysettings-5003.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/antigravity-server-side-tools-6914.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/antigravity-sse-collect-socket-release-4309.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/antigravity-streaming-error-body-sanitized-2461.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/antigravity-streaming-passthrough.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/antigravity-strip-builtin-tools-funcdecls-1095.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/antigravity-strip-output-config-1944.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/antigravity-strip-thinking-fields-1926.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/antigravity-tool-cloak-server-side-invocations.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/antigravity-tool-cloaking.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/antigravity-usage-fetcher.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/antigravity-usage-service.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/antigravity-version.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/antigravity-weekly-quota-4017.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api/api-catchall-json-404.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api/authz-inventory.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api/auto-combo-candidates-route-7819.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api/cli-tools/detect.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api/combo-002-first-field.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api/combo-error-response.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api/compression/compression-api.test.ts",[],["41798"],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api/compression/rtk-learn-discover-routes.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api/compression/rtk-toml-import-route.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api/compression-engines-route.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api/compression-preview-caveman-and-stacked-6425.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api/compression-preview-engine.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api/context-analytics-engine-route.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api/context-combos-default-route.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api/discovery-routes.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api/free-proxies-list-route.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api/free-proxies-route.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api/providers-import-route-6836.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api/proxies-repair-relay.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api/root-catchall-json-404.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api/server-error-message.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api/services/9router-models.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api/services/9router-provider-expose.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api/services/9router-status-reveal.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api/services/cliproxy-provider-expose.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api/settings-audit.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api/sync-models-readiness.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api/v1/bifrost-cooldown.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api/v1/bifrost-sidecar.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api/v1/provider-plugin-manifest-route.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api/v1/relay-routing-backend.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api/v1/relay-stream-finalizer.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api/v1-catchall-json-404.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api/v1-me-status-route.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api/validated-json-body.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api/webhooks/webhook-url-ssrf-guard.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api-auth.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api-docs-route.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api-error-message-5340.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api-key-lifecycle.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api-key-mask-fix.test.mjs",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api-key-policy.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api-key-provider-quota-bypass-scope.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api-key-regeneration.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api-key-reveal-route.test.ts",["41799","41800","41801","41802","41803","41804","41805","41806"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api-key-rotator-health.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api-key-scope-validation.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api-key-self-service.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api-key-usage-limits.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api-key-utils-public-surface.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api-keys-create-no-hang-6570.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api-malformed-json-400.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api-manager-filters.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api-manager-key-visibility.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api-manager-mask-key-passthrough.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api-manager-page-static.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api-manager-quota-keys-section.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api-manager-scope-preservation.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api-manager-usage-command.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api-models-hide-paid-6328.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api-parse-response.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/api-routes-lib.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/apikey-connection-health-check.test.ts",["41807"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/apikey-policy-default-rate-limits.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/apikeypolicy-disable-non-public.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/apikeypolicy-quota-only.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/apikeys-allowed-quotas.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/apikeys-disable-non-public.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/apikeys-model-permissions-split.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/apikeys-row-parsers-split.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/apikeys-usage-command.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/appearance-widget-settings-schema.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/apply-executor-proxy-info-5217.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/approvalGate.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/arena-cookie-validation-redirect-7542.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/arena-elo-sync.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/audio-provider-nodes-selection.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/audio-speech-fishaudio.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/audio-speech-handler.test.ts",["41808","41809","41810","41811","41812","41813","41814","41815","41816"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/audio-transcription-handler.test.ts",["41817","41818","41819","41820","41821","41822","41823","41824","41825"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/audio-transcription-openrouter.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/audio-transcriptions-combo-resolution.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/audio-translations-route.test.ts",["41826","41827","41828","41829","41830","41831"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/audit-activity-icons.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/audit-allowlist-real-actions.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/audit-eventtype-i18n.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/audit-high-level-actions.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/audit-timeline.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/auggie-executor.test.ts",["41832","41833","41834","41835","41836","41837","41838","41839","41840"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/auggie-win32-spawn-6304.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/auth/loginGuard.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/auth-antigravity-account-retry-v2.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/auth-clear-account-error.test.ts",["41841","41842","41843","41844","41845"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/auth-clear-provider-routes.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/auth-disable-cooling-2997.test.ts",["41846","41847","41848","41849","41850","41851","41852","41853","41854","41855","41856"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/auth-extract-api-key.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/auth-login-route.test.ts",["41857"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/auth-noauth-fallback-loop-3061.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/auth-ollama-cloud-per-model-403-3027.test.ts",["41858","41859","41860","41861","41862","41863","41864","41865","41866","41867","41868"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/auth-opencode-zen-noauth-fallback.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/auth-policy-embeddings-webfetch-7785.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/auth-redirect-login.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/auth-terminal-status.test.ts",["41869","41870","41871","41872","41873","41874","41875","41876","41877","41878","41879","41880","41881","41882","41883"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/authz/classify.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/authz/client-api-policy-fallback.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/authz/client-api-policy.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/authz/csrf.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/authz/discovery-routes-local-only.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/authz/ip-filter-enforcement-6131.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/authz/management-policy.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/authz/pipeline.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/authz/probe-9033-repro.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/authz/proxy-contract.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/authz/public-origin.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/authz/public-policy.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/authz/route-guard-local-prefix.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/authz/route-guard-skills-collect.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/authz/route-guard-version-get-exemption.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/authz/route-guard-vnc-session-local-only.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/authz/routeGuard.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/authz/spawn-capable-prefixes-client-safe.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/auto-candidate-overrides-7819.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/auto-candidate-overrides-regression-7819.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/auto-candidate-pool-filter-7819.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/auto-combo-budget-fallback-3470.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/auto-combo-codex-responses-3509.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/auto-combo-context-advertising.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/auto-combo-credentialed-model-pool.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/auto-combo-engine.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/auto-combo-hidden-models-4558.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/auto-combo-request-controls-6024.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/auto-combo-scoring-clamp.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/auto-combos-enhanced-4235.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/auto-combos-free-models-routes.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/auto-combos-suffixes-4235.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/auto-custom-provider-5873.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/auto-empty-pool-fastfail-6458.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/auto-family-classification-8866.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/auto-routing-settings-resolve.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/auto-update-mode-detection.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/auto-update-runtime.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/auto-update.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/autoCombo/free-alias-intelligence-8601.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/autoCombo/paid-model-filter-6512.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/autoCombo/paid-tier-auto-id-6328.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/autoCombo/provider-family-combos.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/autoCombo/static-table-longest-match-8603.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/autoCombo/suffixComposition-4517.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/autoCombo/tieredRotation.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/autoPrefix.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/autocombo-unification.test.ts",["41884"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/autostart-cli-shorthand-3331.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/autoupdate-npm-win32-5542.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/azure-openai-executor.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/azureAiMultiModelTest.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/background-task-detector.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/backpressure.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/bai-provider.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/baidu-qianfan-website-urls-6271.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/bailian-coding-plan-media.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/bailian-coding-plan-provider.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/bailian-quota-fetcher.test.ts",["41885","41886","41887","41888","41889","41890","41891","41892","41893","41894","41895","41896","41897","41898","41899","41900","41901","41902","41903","41904","41905"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/bailian-schema-validation.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/bailian-usage.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/balance-e2e-shards.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/bare-model-autopick.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/base-executor-buildheaders-extra-keys-8493.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/base-executor-sanitize-effort.test.ts",["41906","41907","41908","41909","41910","41911","41912","41913","41914","41915","41916","41917","41918","41919","41920","41921","41922","41923","41924","41925","41926","41927","41928","41929","41930","41931","41932","41933","41934","41935","41936","41937","41938","41939","41940","41941","41942","41943","41944","41945","41946","41947","41948","41949","41950","41951","41952","41953"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/base-executor-waf-retry.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/base-headers-split.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/base-reasoning-effort-split.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/base-thinking-budget-config-5312.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/batch-a-domain.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/batch-b-final.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/batch-deletion-route-logic.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/batch-deletion.test.ts",["41954"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/batch-file-download.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/batch-list-limit-validation.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/batch-maybe-throttle.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/batch-processor-expiration.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/batch-processor.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/batch-status-cache.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/batch-status-logic.test.mjs",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/batch_api.test.ts",["41955","41956","41957","41958","41959","41960","41961"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/batch_results.test.ts",["41962","41963"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/batches-f9-helpers.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/bazaarlink-provider-integrity.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/bedrock-image-log-redaction-7297.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/bin-omniroute-mcp.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/binary-manager-extract-zip-5590.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/binaryManager.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/blackbox-web-validated-token.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/blackbox-web.test.ts",["41964","41965","41966","41967","41968","41969","41970","41971","41972","41973"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/blackbox.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/body-read-timeout.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/body-size-guard.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/body-timeout-integration.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/bootstrap-env.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/browser-pool-optional-import.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/browserBackedChat-matcher.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/browserPool-proxy.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/budget-route-auth.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/budget-schema-empty-limits-3537.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/bug-7940-gemini-retrydelay.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/bug-8020-codex-peek-body-timeout.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/bug-8029-promptql-issuer-substring.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/build/allowlist-helper.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/build/assemble-standalone.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/build/backend-only-smoke-workflows.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/build/check-bundle-size.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/build/check-circular-deps.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/build/check-codeql-ratchet.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/build/check-cognitive-complexity.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/build/check-complexity-rule-count.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/build/check-complexity.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/build/check-dashboard-typecheck.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/build/check-dead-code.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/build/check-licenses.test.ts",["41974","41975","41976","41977","41978"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/build/check-lockfile.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/build/check-mutation-ratchet.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/build/check-mutation-test-coverage.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/build/check-openapi-breaking.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/build/check-pr-evidence.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/build/check-secrets.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/build/check-test-runner-api.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/build/check-tracked-artifacts.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/build/check-type-coverage.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/build/check-vuln-ratchet.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/build/check-workflows.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/build/docker-next-channel-8576.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/build/electron-release-latest-yml.repro.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/build/mcp-bundle-no-eager-ioredis.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/build/mitm-server-bundle-contents.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/build/mutation-radiography.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/build/opencode-plugin-esm-only.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/build/optional-transformers-dependency.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/build/resolve-npm-entry.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/build/should-promote-latest-5301.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/build/sync-changelog-i18n.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/build-bundler-default-turbopack.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/build-next-isolated-windows-home-2402.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/build-next-isolated.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/buildCurl.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/bulk-add-keys-no-overwrite-2587.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/bulk-api-key-parser-cloudflare.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/bulk-paste-api-keys.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/bulk-web-session-import.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/bulkApiKeyParser.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/bypass-handler.test.ts",["41979","41980"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/bypass-response-claude-merge.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/bytez-validation-5422.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cache-config-route-8219.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cache-control-claude-providers.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cache-control-policy.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cache-metrics.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cache-sweeps.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/call-log-cap.test.ts",["41981","41982","41983","41984","41985","41986","41987","41988","41989","41990","41991","41992","41993","41994","41995","41996","41997","41998","41999","42000","42001","42002","42003","42004","42005","42006","42007","42008","42009","42010","42011","42012","42013","42014","42015","42016","42017","42018","42019","42020","42021","42022","42023"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/call-log-detailed-tokens.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/call-log-file-rotation.test.ts",["42024","42025","42026","42027","42028"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/call-log-oom-unbounded-5618.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/call-log-provider-display.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/call-log-startup.test.ts",["42029"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/call-log-stream-debug.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/call-log-trim-sql-vars-5217.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/call-logs-correlation-sort.test.ts",["42030","42031","42032"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/call-logs-correlation-substring.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/call-logs-pagination.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/call-logs-requested-model.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/call-logs-session-tag.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/calllogs-format-split.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cap-thinking-budget-gemini-fallback.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/capture-critical-db-state.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/card-hover-visible.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/case-collision-6584.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/catalog-helpers-extraction.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/catalog-hide-auto-no-think.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/catalog-order-contract.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/catalog-order-helper.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/catalog-pricing-lookup-index-8697.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/catalog-pricing-surface-8018.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/catalog-synced-static-preservation.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/catalog-updates-v3829-kimi-qwen.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/catalog-updates-v3x.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/caveman-packs-de-fr-ja.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/caveman-packs-zh-wenyan.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cc-bridge-openai-image-7777.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cc-bridge-tool-pair-guard.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cc-bridge-transforms.test.ts",["42033","42034","42035","42036","42037","42038","42039","42040","42041","42042","42043","42044","42045","42046","42047","42048","42049","42050","42051","42052","42053","42054","42055","42056","42057","42058","42059","42060","42061","42062","42063"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cc-compatible-model-catalog.test.ts",["42064","42065"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cc-compatible-provider.test.ts",["42066","42067","42068","42069","42070","42071","42072","42073","42074","42075","42076","42077","42078","42079","42080","42081","42082","42083","42084","42085","42086","42087","42088","42089","42090","42091","42092","42093","42094","42095","42096","42097","42098","42099","42100","42101","42102"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cc-discovery-alias-api.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cc-discovery-alias-resolve.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cc-discovery-alias-strip.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cc-discovery-aliases-append.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cc-discovery-aliases-catalog.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cc-discovery-aliases-gate.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cc-discovery-metrics.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ccr-durable-store-9061.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ccr-protocol-instruction.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/changelog-fragments.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chaos-api-routes.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chaos-config.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chaos-executor.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/charm-hyper-provider.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chat-adaptive-admission-binding.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chat-admission-wrapper.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chat-auth-log-redaction.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chat-body-admission.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chat-build-client-raw-request.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chat-combo-live-test.test.ts",["42103","42104","42105","42106","42107","42108"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chat-completions-parse-once-7847.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chat-completions-route-shape-gate.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chat-content-type-6414.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chat-context-relay.test.ts",["42109","42110","42111","42112","42113","42114","42115","42116","42117","42118"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chat-cooldown-aware-retry.test.ts",["42119","42120","42121","42122","42123","42124","42125","42126","42127","42128"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chat-core-intercept-fetch.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chat-early-schema-validation-6412.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chat-helpers.test.ts",["42129","42130","42131","42132","42133","42134","42135","42136","42137","42138","42139","42140","42141"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chat-messages-validation-6402.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chat-non-string-model-6407.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chat-openai-compat-providers.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chat-rate-limit-body-lock.test.ts",["42142","42143"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chat-rejects-image-only-model.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chat-request-body-parse-once-4380.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chat-route-coverage.test.ts",["42144","42145","42146","42147","42148","42149","42150","42151","42152","42153","42154","42155","42156","42157","42158"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chat-route-edge-cases.test.ts",["42159","42160","42161","42162"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chat-safetynet-reqid-6097.test.ts",["42163","42164"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-attempt-logging.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-background-redirect.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-cache-usage-meta.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-caveman-output-analytics.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-claude-effort-variant.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-claude-upstream-messages.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-client-usage-buffer.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-codex-quota.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-combo-context-limit-8378.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-combo-context-override-rescue.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-compression-analytics-write.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-compression-cache-stats.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-compression-combo-predicates.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-compression-integration.test.ts",["42165","42166","42167","42168"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-compression-settings.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-compression-usage-receipt.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-context-editing-telemetry.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-context-estimation.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-execution-credentials.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-executor-client-headers.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-executor-helpers.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-executor-proxy.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-extracted-modules-3821.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-failure-usage.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-gamification-event.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-headers.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-imports-cleanly.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-json-body-to-sse.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-key-health.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-log-truncation.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-memory-extraction.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-memory-pressure.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-memory-skills-injection.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-model-output-cap-wiring.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-non-streaming-response-body.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-non-streaming-response-parse.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-non-streaming-sse.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-non-streaming-usage-stats.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-nonstreaming-json-response.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-nonstreaming-response-headers.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-output-style-telemetry.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-passthrough-tool-names.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-plugin-onrequest.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-plugin-onresponse.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-postcall-guardrail-context.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-quota-share-consumption.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-request-format.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-request-setup.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-sanitization.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-semantic-cache-store.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-semantic-cache.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-service-tier.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-skills-format.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-stage-trace.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-stream-error-result.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-stream-finalize.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-streaming-cache-store.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-streaming-cost.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-streaming-pipeline.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-streaming-quota-share.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-streaming-response-headers.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-streaming-usage-stats.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-strip-stale-headers.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-target-format.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-telemetry-helpers.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-tool-calling-required-check.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-translation-paths.test.ts",["42169","42170","42171","42172","42173","42174","42175","42176","42177","42178","42179","42180","42181","42182","42183","42184","42185","42186","42187","42188","42189","42190","42191","42192","42193","42194","42195","42196","42197","42198","42199","42200","42201","42202"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-unsupported-params-strip.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-upstream-body.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-upstream-execute-headers.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatcore-upstream-timeouts.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatgpt-image-cache.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatgpt-web-async-image-ws-shapes-7357.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatgpt-web-citations-escape.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatgpt-web-citations.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatgpt-web-handoff-resume.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatgpt-web-image-silentdrop.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatgpt-web-models-split.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatgpt-web-sha3-boringssl-5531.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatgpt-web-tools-5240.test.ts",["42203","42204","42205","42206","42207","42208"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chatgpt-web.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cheaperinference-executor.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cheaperinference-image-models.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cheaperinference-provider-registration.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/check-changelog-integrity.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/check-cognitive-complexity.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/check-complexity.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/check-db-rules-classification.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/check-db-rules.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/check-dead-code.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/check-deps.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/check-docs-counts-sync.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/check-docs-symbols.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/check-duplication.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/check-env-doc-sync.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/check-error-helper.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/check-fabricated-docs.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/check-fetch-targets.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/check-file-size.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/check-install-upgrade-convergence.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/check-known-symbols.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/check-migration-numbering.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/check-openapi-breaking-ratchet.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/check-openapi-routes.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/check-pack-boot.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/check-pr-evidence.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/check-provider-consistency.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/check-public-creds.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/check-route-guard-membership.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/check-rtl-ratchet.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/check-test-discovery.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/check-test-masking-selfref-6634.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/check-test-masking.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/check-tool-config-status.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/check-type-coverage.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chenzk-provider-2437.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chipotle-executor.test.ts",["42209","42210","42211"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/chutes-registry-baseurl-7621.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/circuit-breaker-abort-provider-trip-7907.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/circuit-breaker-client-abort.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/circuit-breaker-failure-kind.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/circuit-breaker-registry-cap.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/circuit-breaker-stream-controller-4602.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/classify-pr-changes.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/classify429.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-adaptive-sampling-params.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-adaptive-thinking-normalize.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-atu-effort-leak-9505.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-beta-client-header-3415.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-beta-flags-2454.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-cache-control-passthrough.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-classifier-compat.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-cli-config.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-cli-defaults.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-code-compatible-helpers.test.ts",["42212","42213"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-code-compatible-request.test.ts",["42214","42215","42216","42217","42218","42219","42220","42221","42222","42223","42224","42225","42226","42227","42228","42229","42230","42231","42232","42233","42234","42235","42236","42237","42238","42239","42240"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-code-meta-requests.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-code-obfuscation.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-code-parity.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-code-rendering-fixes.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-code-tool-remapper-flag-leak.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-codex-identity-version-sync.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-context-1m-client-beta-forward.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-context-1m-supported-models.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-effort-suffix-strip.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-effort-variants.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-empty-stream-error-3685.test.ts",["42241","42242","42243","42244"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-extra-usage.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-fast-mode.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-gemini-thought-signature-8979.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-haiku-no-adaptive-thinking.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-helper-minimax-output-config.test.ts",["42245","42246","42247"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-identity-version-sync.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-import-route.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-native-passthrough-tools.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-oauth-provider.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-oauth-tool-cloak.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-oauth-usage-429-backoff.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-oauth-vps-endpoints.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-passthrough-stream-boolean.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-passthrough-thinking-2454.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-prepare-request-preserve-fallback.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-profile-auto-sync-gate.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-server-tool-name-preserve.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-stream-reconstructed-body.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-thinking-tool-choice-guard.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-to-gemini-budget-tokens-zero-6813.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-to-openai-image-toolresult.test.ts",["42248","42249","42250","42251","42252","42253","42254","42255"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-to-openai-system-role-6954.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-to-openai-think-close-5123.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-tool-result-pairing.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-tool-search-beta-3974.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-tool-type-default-2195.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-web-auto-refresh.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-web-browser-transport.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-web-executor-split.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-web-live-alignment.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-web-payload-runtime.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-web-session.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-web-slow-first-byte.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-web-sonnet5-registry-6209.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-web-stream.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-web-transport.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-web-turnstile-ua-mismatch-7548.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claude-web.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claudeAuthFile.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/claudeAuthImport.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cleanup-column-fix.test.mjs",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli/alias-resolver-7791.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli/autostart-linux.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli/autostart-macos-launchctl.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli/autostart-windows.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli/autostart.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli/launch-claude-exe-windows-9454.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli/launch-codex-windows-spawn-args.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli/launch-codex.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli/launch-command.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli/launch-windows-spawn-args.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli/setup-aider.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli/setup-claude.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli/setup-cline.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli/setup-codex.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli/setup-continue.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli/setup-crush.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli/setup-cursor.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli/setup-goose.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli/setup-kilo.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli/setup-opencode.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli/setup-qwen.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli/setup-roo.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli/tray.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-a2a-invoke-commands.test.ts",["42256","42257","42258","42259","42260","42261","42262","42263","42264","42265","42266","42267","42268","42269","42270","42271"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-audit-commands.test.ts",["42272","42273","42274","42275","42276","42277","42278","42279","42280","42281","42282","42283","42284","42285","42286"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-auth-export-command.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-backup-command.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-batches-commands.test.ts",["42287","42288","42289","42290","42291","42292","42293","42294","42295","42296","42297","42298","42299","42300","42301","42302"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-catalog-acpspawnable.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-catalog-counts.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-catalog-display-contract.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-catalog-newentries.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-catalog-removed.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-catalog-schema.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-chat.test.ts",["42303","42304","42305","42306","42307","42308","42309","42310","42311","42312","42313","42314","42315","42316","42317","42318","42319"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-clipboard.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-cloud-commands.test.ts",["42320","42321","42322","42323","42324","42325","42326","42327","42328","42329","42330","42331","42332","42333","42334","42335","42336","42337"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-combo-command.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-combo-suggest-commands.test.ts",["42338","42339","42340","42341","42342","42343","42344","42345","42346","42347","42348","42349","42350","42351","42352","42353"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-completion-dynamic.test.ts",["42354","42355","42356","42357","42358","42359","42360","42361","42362","42363","42364"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-compression-commands.test.ts",["42365","42366","42367","42368","42369","42370","42371","42372","42373","42374","42375","42376","42377","42378","42379","42380","42381","42382","42383","42384","42385","42386","42387","42388","42389","42390","42391","42392","42393","42394","42395","42396"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-connect-helpers.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-context-eng-commands.test.ts",["42397","42398","42399","42400","42401","42402","42403","42404","42405","42406","42407","42408","42409","42410","42411","42412","42413","42414","42415"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-contexts.test.ts",[],["42416","42417"],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-cost.test.ts",["42418","42419","42420","42421","42422","42423","42424","42425","42426","42427","42428","42429","42430","42431","42432","42433"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-dashboard-open-fallback.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-dashboard-port.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-data-dir-env-loading.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-data-dir-env.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-doctor-command.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-doctor-liveness-fallback-6162.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-doctor-rooturl-windows-5844.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-electron-to-cli-migration-server-env-7302.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-entrypoint.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-environment-helpers.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-environment.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-eval-commands.test.ts",["42434","42435","42436","42437","42438","42439","42440","42441","42442","42443","42444","42445","42446","42447","42448","42449","42450","42451","42452","42453","42454","42455"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-exit-codes.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-expanded-commands.test.ts",["42456"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-files-commands.test.ts",["42457","42458","42459","42460","42461","42462","42463","42464","42465","42466","42467","42468"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-fingerprints.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-health-monitoring-route.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-helper/config-generator.test.ts",["42469","42470"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-helper/hermes-home-env.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-helper/tool-detector-win32-7279.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-helper/tool-detector.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-helper-tool-detector-paths-6162.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-i18n-catalog.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-io.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-ipv4-first-dns-2699.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-keys-command.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-lang-commands.test.ts",["42471"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-login-antigravity.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-login-push-remote.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-logs-route.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-machine-token.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-mcp-call-commands.test.ts",["42472","42473","42474","42475","42476","42477","42478","42479","42480","42481","42482","42483","42484","42485","42486","42487"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-memory-commands.test.ts",["42488","42489","42490","42491","42492","42493","42494","42495","42496","42497","42498","42499","42500","42501","42502","42503","42504","42505"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-memory-types.test.mjs",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-memory.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-mitm-schema.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-model-config-schema.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-models-command.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-nodes-commands.test.ts",["42506","42507","42508","42509","42510","42511","42512","42513","42514","42515","42516","42517","42518","42519","42520","42521","42522","42523","42524"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-oauth-commands.test.ts",["42525","42526","42527","42528","42529","42530","42531","42532","42533","42534","42535","42536","42537","42538","42539","42540","42541","42542"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-oneproxy-commands.test.ts",["42543","42544","42545","42546","42547","42548","42549","42550","42551","42552","42553","42554","42555","42556","42557","42558","42559","42560","42561","42562","42563","42564"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-open-command.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-openapi-codegen.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-openapi-commands.test.ts",["42565","42566","42567","42568","42569","42570"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-output-render-table.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-output.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-plugin-system.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-policy-commands.test.ts",["42571","42572","42573","42574","42575","42576","42577","42578","42579","42580","42581","42582","42583","42584","42585","42586","42587","42588","42589","42590"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-pricing-commands.test.ts",["42591","42592","42593","42594","42595","42596","42597","42598","42599","42600","42601","42602","42603","42604","42605","42606"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-process-supervisor-spawn-error-8091.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-process-supervisor.test.ts",["42607","42608","42609","42610","42611","42612"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-program.test.ts",["42613","42614","42615","42616"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-providers-command.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-providers-metrics.test.ts",["42617","42618","42619","42620","42621","42622","42623","42624","42625","42626","42627","42628","42629","42630","42631"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-providers-rotate.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-redis-command.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-remote-mode.test.ts",["42632","42633","42634","42635","42636"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-repl.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-resilience-commands.test.ts",["42637","42638","42639","42640","42641","42642","42643","42644","42645","42646","42647","42648","42649","42650","42651","42652"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-runtime-detection.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-runtime-extended.test.ts",["42653"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-runtime-imports-packaged-5227.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-runtime-known-path-shortcircuit-7774.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-runtime.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-serve-hostname.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-serve-port.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-serve-readiness-timeout-6321.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-serve-startup-time.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-serve-stop-command.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-serve-version-banner.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-server-commands.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-sessions-commands.test.ts",["42654","42655","42656","42657","42658","42659","42660","42661","42662","42663","42664","42665"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-setup-command.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-setup-opencode-nested-alias-7682.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-setup-opencode.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-simulate.test.ts",["42666","42667","42668","42669","42670","42671","42672","42673","42674","42675","42676","42677","42678"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-skills-commands.test.ts",["42679","42680","42681","42682","42683","42684","42685","42686","42687","42688","42689","42690","42691","42692","42693","42694","42695","42696","42697","42698","42699","42700"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-spinner.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-sqlite-bindings-not-found-7868.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-sqlite-no-fallback-7586.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-stop-supervisor-respawn-9455.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-storage-key-bootstrap.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-storage-key-provision.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-stream.test.ts",["42701","42702","42703","42704","42705","42706","42707","42708","42709","42710","42711","42712","42713"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-sync-commands.test.ts",["42714","42715","42716","42717","42718","42719","42720","42721","42722","42723","42724","42725","42726","42727","42728","42729","42730","42731","42732","42733","42734"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-tags-commands.test.ts",["42735","42736","42737","42738","42739","42740","42741","42742","42743","42744","42745","42746","42747","42748","42749","42750","42751"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-telemetry-commands.test.ts",["42752","42753","42754","42755","42756","42757"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-tool-detector-imports.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-tools-auth-hardening.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-tools-crush.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-tools-i18n.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-tools-keys-route.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-tools-schema.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-tools-settings-jsonc.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-tools.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-translator-commands.test.ts",["42758","42759","42760","42761","42762","42763","42764","42765","42766","42767","42768","42769","42770","42771","42772","42773"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-tray-systray2.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-tray.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-tui.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-update-global-paths-3295.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-update-notifier.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-update-prefer-online-4376.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-update-shadow-install-9475.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-usage.test.ts",["42774","42775","42776","42777","42778","42779","42780","42781","42782","42783","42784","42785","42786","42787","42788","42789","42790"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-version-fastpath.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-waitForServer.test.mjs",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cli-webhooks-commands.test.ts",["42791","42792","42793","42794","42795","42796","42797","42798","42799","42800","42801","42802","42803","42804","42805","42806","42807","42808","42809","42810","42811","42812","42813"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cliRuntime-codex-shebang-8036.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cliRuntime-symlink-escape-7753.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/client-identity-profiles.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cline-catalog-models-3321.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cline-force-stream.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cline-response-envelope.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cline-workos-auth-token-shape.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/clinepass-provider.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/clinepass-thinking-budget.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cliproxy-auth-import-1934.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cliproxyapi-dedicated-credential-7645.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cliproxyapi-executor.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cliproxyapi-fallback-wiring.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cliproxyapi-model-mapping-dispatch.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cloud-agent-cors-failclosed.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cloud-agent-credentials-api.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cloud-agent-credentials.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cloud-agent-cursor-4227.test.ts",["42814","42815"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cloud-agent-health-api.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cloud-agent-tasks-route-auth.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cloud-sync.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cloud-write-auth.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cloudAgent-types.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cloudflare-ai-catalog-8717.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cloudflare-ai-image-parts-6390.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cloudflare-ai-neuron-exhaustion-6980.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cloudflare-models-uuid-4259.test.ts",["42816","42817","42818"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cloudflare-worker-upload-content-type-6416.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cloudflaredTunnel-extended.test.ts",["42819","42820","42821"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cloudflaredTunnel.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/code-assist-subscription.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codebuddy-cn-provider.test.ts",["42822","42823","42824"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codebuddy-reasoning-optin.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-auth-import-expiry.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-auth-import-userid-dedup-6301.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-banked-reset-credits-5199.test.ts",["42825","42826","42827","42828","42829","42830","42831"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-base-url.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-cache-key.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-capacity-limit-merge.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-catalog-revalidation-runtime.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-catalog-revalidation.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-compact-strip-include-6805.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-config-hooks-migration.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-connection-defaults.test.ts",["42832","42833","42834","42835","42836","42837","42838","42839","42840","42841","42842","42843","42844","42845","42846","42847"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-connection-edit-6562.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-custom-tool-image-output-7698.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-device-flow-tickets.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-device-flow.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-drop-nonstandard-events.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-effort-alias-priority.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-effort-model-echo-3697.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-executor-split.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-failover.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-fast-tier.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-finalize-tokens.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-free-plan-image-generation.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-gpt55-effort-routing.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-gpt55-routing-5887.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-gpt56-catalog.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-import-refresh-validation-7522.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-import-route.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-import-token-route.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-manual-refresh-rotating-guard.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-models-catalog-refresh.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-oauth-refresh-persist-6352.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-oauth-remote-host-hint-7523.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-orphaned-tool-outputs-2928.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-peek-nonsse-body-untouched-7536.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-plan-label-2570.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-profile-auto-sync-gate.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-quota-fetcher.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-quota-selection-hydration.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-quota-sync-no-proactive-refresh.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-reset-credits.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-responses-passthrough-strip-3317.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-responses-ws-memory.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-responses-ws-model-resolution.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-session-affinity-reset-aware-5903.test.ts",["42848"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-session-json-import-6636.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-spark-image-generation.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-sse-capacity-fallback.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-sse-peek-body-double-read.test.ts",[],["42849"],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-stream-false.test.ts",["42850","42851","42852","42853"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-synced-bare-model-routing.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-system-message-image-8089.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-tool-card-button-state.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-tools-regex-lookaround.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-tools-split.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-usage-quotas-latent-window.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-usage-quotas-review-window.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-usage-windows.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-verbosity.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-ws-http-fallback.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codex-ws-policy-enforcement-6564.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codexAuthFile.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codexAuthImport.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codexAuthImportBulk.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codexAuthZipExtract.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/codexBulkImport.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/collect-metrics-module-coverage.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/colocate-optionals.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo/auto-quota-cutoff.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo/auto-status-penalty-4540.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo/combo-context.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo/combo-exhausted-skip.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo/combo-failure-tracker-session-isolation.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo/combo-failure-tracker.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo/combo-target-exhaustion.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo/combo-target-timeout-standards.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo/context-requirements-integration.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo/effective-max-concurrency.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo/pin-recovery.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo/quota-share-concurrency.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo/recovery-hint.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo/strict-context-failopen-8786.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-499-abort.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-account-allowlist-3266.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-antigravity-missing-project-reset-8486.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-apply-strategy-ordering-split.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-attempt-body-isolation-7847.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-auto-candidate-expansion.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-auto-config-split.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-auto-promote.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-body-specific-400-stop-4279.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-bracket-names.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-breaker-429.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-builder-draft.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-builder-effort-variants-8072.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-builder-eligible-connection-2057.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-builder-fingerprint-expansion.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-builder-model-source-5477.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-builder-opencode-prefix.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-builder-options-route.test.ts",["42854","42855","42856","42857","42858"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-cache-invalidation.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-cleanup-stale-connection.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-config.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-context-length.test.ts",["42859","42860"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-context-prefix-resolution.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-context-relay.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-context-requirements.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-context-window-filter.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-control-center.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-cooldown-retry.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-cost-blending.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-custom-provider-resolution.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-description-5005.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-diagnostics-trace.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-disable-session-stickiness.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-dispatch-prelude.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-empty-content-failover-5085.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-failure-log-message.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-fallback-token-estimate-7847.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-fingerprint-expansion.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-fingerprint-pin-6696.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-flatten-anthropic-tool-messages.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-forecast.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-fusion-config-warn-6455.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-fusion-strategy-comboref-6764.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-fusion-strategy.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-headroom-ranking.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-headroom-strategy.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-health-dashboard.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-health-route.test.ts",["42861","42862","42863"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-hedging.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-hidden-leaf-routing.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-id-resolution-4446.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-input-bound-failure-8375.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-input-bound-heterogeneous-8375.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-least-used-account.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-lockout-quota-reset-6863.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-max-depth-config.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-model-lockout-honors-reset-1308.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-model-name-collision-8530.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-model-scoped-400-advance.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-name-codex-responses-rewrite.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-omnimodel-tag-stripping.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-param-validation-fallback-4519.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-pin-health-gate.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-pipeline-strategy.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-pipeline.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-prescreen.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-priority-quota-exhaustion-cutoff-5923.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-projection-capabilities-3979.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-provider-cooldown-sibling.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-provider-cooldown.test.ts",["42864","42865","42866"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-provider-diversity-wiring.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-provider-wildcard.test.ts",["42867","42868","42869","42870","42871","42872","42873","42874","42875","42876","42877","42878","42879","42880","42881","42882","42883","42884"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-proxy-assignments-parse-7149.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-quality-validator-reasoning.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-quota-share-cooldown-wait.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-quota-soft-penalty.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-resolve-auto-strategy-split.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-resource-404-health.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-response-validation-failover.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-response-validation.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-responses-sse-failure-fallback.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-round-robin-streaming-lock-3811.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-roundrobin-compat-fallback-6238.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-routes-composite-tiers.test.ts",["42885","42886","42887","42888","42889","42890","42891","42892","42893","42894"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-routing-engine.test.ts",["42895","42896","42897","42898","42899","42900","42901","42902","42903","42904","42905","42906","42907","42908","42909","42910","42911","42912","42913","42914","42915","42916","42917","42918","42919","42920","42921","42922","42923","42924","42925","42926","42927","42928","42929","42930","42931","42932","42933","42934","42935","42936","42937","42938","42939","42940","42941","42942","42943","42944","42945","42946","42947","42948","42949","42950","42951","42952","42953","42954","42955","42956","42957","42958","42959","42960","42961","42962","42963","42964","42965","42966","42967","42968","42969","42970","42971","42972","42973","42974","42975","42976","42977","42978","42979","42980","42981","42982","42983","42984","42985","42986","42987","42988","42989","42990","42991","42992","42993","42994","42995","42996","42997","42998","42999","43000","43001","43002","43003","43004","43005","43006","43007","43008","43009","43010","43011","43012","43013","43014","43015","43016","43017","43018","43019","43020","43021","43022","43023","43024","43025","43026","43027","43028","43029","43030","43031","43032","43033","43034","43035","43036","43037","43038","43039","43040","43041","43042","43043","43044","43045","43046","43047","43048","43049","43050","43051","43052","43053","43054","43055","43056","43057","43058","43059","43060","43061","43062","43063","43064","43065","43066","43067","43068","43069","43070","43071","43072","43073","43074","43075","43076","43077","43078","43079","43080","43081","43082","43083","43084","43085","43086","43087","43088","43089","43090","43091","43092","43093","43094","43095","43096","43097","43098","43099","43100","43101","43102","43103","43104","43105","43106","43107","43108","43109","43110","43111","43112","43113","43114","43115","43116","43117","43118","43119","43120","43121","43122","43123","43124","43125","43126","43127","43128","43129","43130","43131","43132","43133","43134","43135","43136","43137","43138","43139","43140","43141","43142","43143","43144","43145","43146","43147","43148","43149","43150","43151","43152","43153","43154","43155","43156","43157","43158","43159","43160","43161"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-rr-fallback-advance-948.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-rr-session-stickiness-3825.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-rr-sticky-9router.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-runtime-unit-concurrency.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-same-provider-cascade.test.ts",["43162"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-scope-proxy-dead-7149.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-scoring-inspector.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-select-all-batch-8526.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-selected-connection-success.test.ts",[],["43163","43164","43165","43166","43167","43168","43169","43170","43171","43172","43173","43174"],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-session-stickiness.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-sessionless-pin-3825.test.ts",["43175","43176","43177","43178","43179","43180","43181","43182","43183","43184","43185","43186","43187","43188","43189","43190","43191"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-skip-conn-disable-plugin-block-7806.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-speed-telemetry-6875.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-stickiness-responses-input-7270.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-strategies.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-strategy-fallbacks.test.ts",["43192","43193","43194","43195","43196","43197","43198","43199","43200","43201","43202","43203","43204","43205","43206","43207","43208","43209","43210","43211","43212","43213","43214","43215","43216","43217","43218","43219","43220","43221","43222","43223","43224"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-stream-readiness-fallback.test.ts",["43225","43226","43227","43228","43229","43230","43231","43232","43233","43234","43235","43236","43237","43238","43239","43240","43241"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-streaming-empty-content-failover.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-streaming-openai-no-finish-reason-7285.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-strict-random-distribution-3959.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-target-defensive-modelstr.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-target-resolution-split.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-target-timeout-runner.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-target-token-limit-8716.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-task-aware.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-test-health.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-test-route.test.ts",["43242","43243","43244","43245","43246","43247","43248","43249","43250","43251"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-thinking-disabled-fable5-3554.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combo-vision-aware-routing.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/combos-quota-protected.test.ts",["43252","43253","43254","43255"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/comfyui-baseurl-override-6928.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/command-code-auth-assist.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/command-code-executor.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/command-code-maxtokens-negative-5166.test.ts",["43256","43257","43258"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/command-code-mimo-v2-5-safety.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/command-code-registry-vision.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/command-code-user-array-5166.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/command-code-vision.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/commandClassification.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/completions-body-model-echo.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/completions-provider-removed.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/completions-text-format-3571.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/complexity-aware-scoring-wiring.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/complexity-router.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compliance-audit-route.test.ts",["43259"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compliance-index.test.ts",["43260","43261","43262","43263","43264"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compliance-noLog-cycle.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compose-redis-loopback-bind.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/composer-tool-calls.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/composite-tiers-validation.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/active-combo-dispatch.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/active-combo-integration.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/adaptive-chatcore-source-guard.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/adaptive-compute-target.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/adaptive-context-budget-config.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/adaptive-panel-target.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/adaptive-resolve-plan.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/adaptive-select-plan-wiring.test.ts",["43265","43266","43267"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/aggressive-fidelity.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/aggressive.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/applycompression-bailout-optin.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/bailout.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/benchmark.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/body-adapter.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/cache-aware-preserve-mode.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/cachingAware.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/caveman-db.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/caveman-dedup.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/caveman-engine.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/caveman-hedging.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/caveman-preservation.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/caveman-rules.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/caveman-structural.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/caveman-v379.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/cavemanSharedBoundaries.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/ccr-cross-tenant.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/ccr-eviction-scope-9146.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/ccr-marker-retrieve.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/ccr-mcp-integration.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/ccr-mcp-principal-5649.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/ccr-non-mcp-full-prompt-loss-7746.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/ccr-retrieval-ramp.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/ccr-skip-tool-outputs.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/ccrQuery.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/ccrRanged.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/codestripper-lazy-ts-7096.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/codex-responses.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/combos-engine-ui-schema-parity-4955.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/compareRoute.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/compression-aggressive.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/compression-benchmark-cli.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/compression-budget-gate.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/compression-combos-db.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/compression-engines-map-migration.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/compression-header-dispatch.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/compression-preview-api.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/compression-preview-auth.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/compression-registry-clear.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/compression-step-streaming.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/compression-tool-cardinality-env.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/compressionAnalytics.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/compressionAnnotation.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/compressionChannel.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/compressionMcpTools.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/context-compression-api.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/context-editing-telemetry.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/context-editing.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/db.test.ts",["43268","43269","43270","43271","43272","43273","43274","43275","43276","43277","43278","43279","43280","43281","43282","43283"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/derive-default-plan.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/derived-pipeline-integration.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/diffHelper.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/encoderComparison.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/engine-breakdown-synthesis.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/engine-catalog.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/engine-enabled-toggle.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/engine-guidance-7530.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/engine-registry.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/eval-aggregate.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/eval-corpus.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/eval-cost-meter.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/eval-grader.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/eval-judge.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/eval-report.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/eval-runner.test.ts",["43284"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/eval-savings.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/eval-seed-corpus.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/eval-selftest.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/fidelityCheck.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/fidelityGate.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/fidelityGateStacked.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/fidelityGateTypes.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/fuzzyDedup.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/gcf-benchmark.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/gcf-inline-array-quote.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/golden-eval.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/hard-budget.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/harness.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/headroom-developer-role-2132.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/headroom-minrows-persist-8056.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/headroom-smartcrusher.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/heatmap-build.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/image-aware-tokens.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/ionizerEngine.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/ionizerGateSkip.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/ionizerSample.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/language-detect-select.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/language-packs.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/lite.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/live-zone.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/llm-compressor-engine.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/llmlingua-failopen.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/llmlingua-model-store.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/llmlingua-ultra-entry.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/llmlingua-worker-resolution.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/llmlingua-worker.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/mcp-accessibility-config.test.ts",[],["43285","43286","43287"],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/mcp-description-compressor.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/mcpAccessibility-anchors.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/mcpAccessibility-clamp.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/mcpAccessibility-config-bounds.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/mcpAccessibility.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/mode-and-pipeline.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/omniglyph-adapter.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/omniglyph-chatcore-plumbing.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/omniglyph-import.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/omniglyph-plumbing.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/omniglyph-registries.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/omniglyph-registry.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/omniglyph-single-mode.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/output-styles-apply.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/output-styles-backcompat.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/output-styles-catalog.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/output-styles-config.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/output-styles-wiring.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/outputMode.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/pipeline-circuit-breaker.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/pipeline-integration.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/ponytail-catalog.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/prefix-freeze.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/preservation-redos-4795.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/preserve-system-prompt-mode-db.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/preserve-system-prompt-mode.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/preview-fallback-reasons-6461.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/preview-outer-engine-token-reconcile-6488.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/previewRouteBreakdown.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/previewRouteFidelity.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/previewRouteFuzzy.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/previewRouteIonizer.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/previewRoutePipeline.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/previewRouteTokens.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/previewRouteToon.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/progressiveAging.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/quantumLockDetect.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/quantumLockIntegration.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/quantumLockStep.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/read-lifecycle.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/relevance-engine.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/relevance-scorer.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/repro-6479-6491-null-stats-silent-drop.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/repro-6480-noop-guard-misfire.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/resolve-compression-plan.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/responses-orphan-tool-call.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/result-memo.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/retrieveRoute.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/retrieveRouteRanged.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/riskGateDetect.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/riskGateIntegration.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/riskGateStep.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/rtk-anthropic-tool-result.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/rtk-cache-control-preserve.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/rtk-code-stripper.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/rtk-command-detector.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/rtk-command-samples.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/rtk-comments.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/rtk-custom-filters.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/rtk-deduplicator.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/rtk-discover-redos.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/rtk-dsl-pipeline.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/rtk-engine.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/rtk-file-read-no-truncate-4559.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/rtk-filter-catalog.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/rtk-filter-deduplicate.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/rtk-filter-loader-resilience.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/rtk-filter-redos-guard.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/rtk-grouping-config.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/rtk-grouping.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/rtk-intensity.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/rtk-learn.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/rtk-line-filter.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/rtk-loader-dir-resolution-5089.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/rtk-mcp-tools.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/rtk-raw-output-route.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/rtk-raw-output.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/rtk-render-gitdiff.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/rtk-render-table.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/rtk-render-terraform.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/rtk-render-testgreen.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/rtk-renderers-integration.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/rtk-smart-truncate.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/rtk-strip-comments.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/rtk-toml-compatibility.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/rtk-truncate-preserve.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/rtk-verify.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/rule-loader.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/session-dedup-intra-message-6467.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/session-dedup-memory-7849.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/session-dedup.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/sessionDedupFuzzy.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/smartcrusherToon.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/splitCompositeCommand.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/stacked-async.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/stacked-pipeline-engines-fallback-6463.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/stats.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/strategySelector-cache-aware.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/strategySelector.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/summarizer.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/toolResultCompressor.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/toon.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/types.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/ultra-code-preservation.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/ultra-slm-tier.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/ultra.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression/validation.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression-cache-guard-3955.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression-cli-rest-fallback-6571.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression-exclusions.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression-header-echo-6422.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression-noop-guard.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression-pipeline-inflation-guard.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression-pipeline-model.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression-run-telemetry-auth.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression-settings-cache.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression-tokens.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compression-unknown-engine-validation-6485.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/compute-connection-default-name-6499.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/config-hot-reload.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/connection-cache-override-6880.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/connection-level-upstream-headers.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/connection-model-rules.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/connection-reorder-by-availability.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/connection-row-last-error-visibility.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/connection-row-rtl-margin.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/connection-status-filter-active-2526.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/console-log-levels.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/context-editing-executor-injection.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/context-editing-relays.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/context-editing-streaming-telemetry.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/context-handoff.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/context-manager.test.ts",["43288","43289","43290","43291","43292","43293","43294","43295","43296","43297"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/context-pinning-tool-calls.test.ts",["43298","43299","43300","43301","43302"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/context-window-reconcile-persisted-overrides.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/context-window-reconcile.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cooldown-aware-retry-budget.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cooldown-epoch-string-3954.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/copilot-agent-antigravity-parity.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/copilot-codegraph-knowledge.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/copilot-free-quota-not-inverted.test.ts",["43303","43304","43305","43306"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/copilot-gemini-claude-route-no-responses.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/copilot-m365-edu-writeatcursor-6210.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/copilot-m365-enterprise-6334.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/copilot-m365-enterprise-invocation-7870.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/copilot-m365-web-executor.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/copilot-m365-web-logging-6210.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/copilot-m365-web-silent-empty-7858.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/copilot-runOmniRouteCli.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/copilot-usage.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/copilot-web-executor.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/correctness/combo.property.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/correctness/fakeUpstreamStream.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/correctness/fixtures.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/correctness/goldenSnapshot.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/correctness/sanitizers.property.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/correctness/sse-parser.property.test.ts",[],["43307","43308"],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/correctness/translation.golden.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/correctness/translators.property.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cors/origins.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cost-explorer-params.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cost-explorer-utils.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/coze-validation-error-5426.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/credential-health-active-connections-9180.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/credential-health-boot-wiring.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/credential-hint-copy-3180-3091.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/credential-masker-guardrail.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/crof-provider.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/crof-usage-fetcher.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/crof-usage.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/crypto-randomuuid-polyfill.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/csp-lan-ws-5083.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cursor-agent-cli-version.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cursor-agent-exec-router.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cursor-agent-models.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cursor-agent-protobuf.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cursor-agent-session.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cursor-agent-system-prompt.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cursor-agent-tool-calls.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cursor-builtin-tool-bridge.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cursor-composer-thinking.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cursor-executor-split.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cursor-image-input.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cursor-model-effort-suffix-7289.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cursor-protobuf-wire-split.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cursor-registry-claude-families.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cursor-streaming.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cursor-usage-fetcher.test.ts",["43309"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/cursor-version-detector.test.mjs",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/custom-cli-config.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/custom-endpoint-paths.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/custom-endpoint-system-prompt.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/custom-headers-provider-nodes.test.ts",["43310","43311","43312","43313","43314","43315"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/custom-model-target-format.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/custom-provider-combo-models.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/dahl-manual-api-key.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/dahl-provider-config.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/dahl-registry.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/dahl-tokens-route.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/dashboard/agentrouter-connection-modal-fields.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/dashboard/batch/components/BatchDetailModal.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/dashboard/batch/components/ExpirationBadge.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/dashboard/batch/components/NewBatchWizard.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/dashboard/batch/components/ProgressBarBicolor.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/dashboard/batch/components/UploadFileModal.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/dashboard/batch/components/useBatchActions.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/dashboard/batch/concept-cards.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/dashboard/batch/list-regression.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/dashboard/batch/sanitization.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/dashboard/context-parent-redirect-5298.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/dashboard/crypto-randomuuid-polyfill.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/dashboard/hydration-extension-attrs.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/dashboard/material-icons-self-hosted.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/dashboard/providerPageStorage.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/dashboard/providers/services/api-key-field.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/dashboard/providers/services/auto-start-toggle.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/dashboard/providers/services/cliproxy-model-mapping.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/dashboard/providers/services/cliproxy-tab.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/dashboard/providers/services/mux-tab.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/dashboard/providers/services/ninerouter-tab.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/dashboard/providers/services/page.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/dashboard-localization-contract.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/dashboard-shell-tabs.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/dashboard-sidebar-desktop-visible.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/dashscope-cache-control-openai-2069.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/dashscope-text-models-discovery.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/dast-method-not-allowed.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/data-dir-writable-fallback.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/database-settings-maintenance.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db/api-keys.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db/compressionRunTelemetry.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db/context-editing-telemetry-record.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db/default-combo-toggle.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db/discovery-results.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db/encryption-error-handling.test.mjs",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db/migration-071.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db/no-migration-collisions.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db/notion.test.mjs",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db/obsidian.test.mjs",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db/omp.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db/per-engine-analytics.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db/per-engine-breakdown-analytics.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db/quota-pools.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db/repositories/sqliteComboRepositories.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db/serviceModels.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db/stats-virtual-table.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db/vacuum-scheduler.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db/weak-rng-fixes.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-adapters/betterSqliteAdapter.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-adapters/bunSqliteAdapter.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-adapters/cliSqlite.test.mjs",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-adapters/driverFactory.test.ts",[],["43316","43317"],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-adapters/nodeSqliteShared.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-adapters/sqljsAdapter.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-agent-bridge-bypass.test.ts",["43318"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-agent-bridge-mappings.test.ts",["43319"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-agent-bridge-state.test.ts",["43320"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-api-key-groups.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-apiKeys-crud.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-backup-autobackup-setting-5871.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-backup-extended.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-backups-skills-3500.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-call-log-stats-3500.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-case-mapping-split.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-cleanup-xp-audit-log.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-cleanup.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-cli-tool-state.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-combos-crud.test.ts",["43321","43322","43323","43324","43325","43326","43327","43328","43329"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-command-code-auth.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-compression-cache-stats.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-context-handoffs.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-core-extended.test.ts",["43330","43331","43332","43333","43334"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-core-init.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-core-migration.test.ts",["43335","43336","43337","43338","43339","43340","43341"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-core-native-error.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-core-temp-store-pragma.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-core.test.ts",["43342","43343","43344","43345"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-credit-balance.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-detailed-logs.test.ts",["43346","43347","43348","43349"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-domainState-crud.test.ts",["43350","43351","43352","43353","43354"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-driver-bundling-externals.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-driver-logs-english-5103.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-encryption.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-gamification-federation-3500.test.ts",["43355"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-health-check.test.ts",["43356","43357","43358","43359","43360","43361","43362","43363","43364","43365","43366","43367","43368","43369","43370","43371","43372","43373","43374","43375","43376","43377","43378","43379","43380","43381","43382","43383","43384"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-health-route.test.ts",["43385","43386","43387","43388","43389","43390","43391"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-import-ebusy-5406.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-import-max-size-4719.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-import-resilient-driver-3025.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-inspector-custom-hosts.test.ts",["43392"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-inspector-sessions.test.ts",["43393"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-logs-cache-3500.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-middleware.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-migration-runner-account-identity.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-migration-runner-extra-dirs.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-migration-runner.test.ts",["43394","43395","43396","43397","43398","43399","43400","43401","43402","43403","43404","43405"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-migration-version-uniqueness.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-migrationrunner-constants-split.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-model-aliases-cascade.test.ts",["43406"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-model-context-overrides.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-models-crud.test.ts",["43407","43408"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-models-extended.test.ts",["43409","43410","43411","43412","43413"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-models-split.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-playground-presets.test.ts",["43414"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-provider-cookie-dedup-3368.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-provider-daily-usage-4009.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-provider-limits.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-provider-plans.test.ts",["43415"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-provider-stats.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-providers-access-token-1290.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-providers-cross-idp-dedup-2244.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-providers-crud.test.ts",["43416","43417","43418","43419","43420","43421","43422","43423","43424","43425","43426","43427","43428","43429","43430","43431","43432","43433"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-providers-split.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-proxies-crud.test.ts",["43434","43435","43436","43437","43438","43439"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-proxies-family.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-proxies-split.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-quota-consumption.test.ts",["43440"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-quota-migrations-idempotency.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-quota-pools.test.ts",["43441"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-quota-snapshots.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-read-cache.test.ts",["43442"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-recovery.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-registered-keys.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-registeredKeys-crud.test.ts",["43443","43444","43445","43446","43447","43448","43449","43450"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-reset-module-state.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-schema-columns-split.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-secrets.test.ts",["43451"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-session-account-affinity.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-settings-crud.test.ts",["43452","43453","43454","43455","43456","43457","43458","43459","43460","43461","43462","43463","43464","43465","43466","43467","43468","43469","43470","43471"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-settings-extended.test.ts",["43472","43473","43474","43475","43476","43477","43478"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-settings-split.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-sqljs-close-poison-7494.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-sqljs-preinit-ordering-gap-7288.test.ts",[],["43479"],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-state-reset.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-sync-tokens.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-tier-config.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-upstreamProxy.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-usage-analytics-3500.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-usageanalytics-split.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-versionManager.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/db-webhooks.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ddg-circuit-breaker-null-content-6999-7000.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/decrypt-stale-key-hint-6148.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/deepseek-pow-solver-strict.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/deepseek-quota-fetcher.test.ts",["43480","43481","43482","43483","43484","43485","43486","43487"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/deepseek-web-autorefresh-401-response.test.ts",["43488","43489","43490","43491"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/deepseek-web-executor-split.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/deepseek-web-rolling-window-2942.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/deepseek-web-session-persistence-2942.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/deepseek-web-tool-result-prompt-4712.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/deepseek-web-tools-execute-2820.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/deepseek-web-tools-execute.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/deepseek-web-tools-nameless-5154.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/deepseek-web-tools-variants.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/deepseek-web.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/default-reasoning-effort-6879.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/default-url-normalizers-split.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/delete-provider-connection-purges-key-health-7740.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/deno-deploy-relay-path-ssrf.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/derive-discovery-config-5087.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/design-grid-background.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/designer-web-empty-response-502.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/dev-ensure-native-sqlite.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/dev-origins-config.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/dev-script-heap-limit.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/device-tracker.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/devin-bridge-live-runtime.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/devin-bridge-network-guard.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/devin-cli-catalog.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/devin-cloud-agent-validator-6142.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/dgrid-provider.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/diagnostics-claude-thinking-5108.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/diagnostics.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/digitalocean-provider.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/direct-dispatcher-pipelining-4580.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/discontinued-providers-2026.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/display-and-error-utils.test.ts",["43492","43493","43494","43495"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/dns-config-generic.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/docker-base-path-patch.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/docker-ensure-base-path.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/docker-healthcheck-3151.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/docker-healthcheck-base-path.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/docker-llmlingua-optionals-9166.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/dockerfile-base-path-arg.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/dockerfile-better-sqlite3-node-gyp-6700.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/dockerfile-build-heap-4076.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/dockerignore-docs-coverage.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/docs/skillManifestsLint.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/domain-branch-hardening.test.ts",["43496"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/domain-cost-rules.test.ts",["43497","43498","43499"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/domain-degradation.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/domain-fallback-policy.test.ts",["43500"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/domain-lockout-policy.test.ts",["43501"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/domain-persistence.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/droid-custom-models.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/duckduckgo-challenge-split.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/duckduckgo-domain-4037.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/duckduckgo-vqd-429-misclassification-6996.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/duckduckgo-web-executor.test.ts",["43502","43503","43504","43505","43506","43507","43508","43509"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/duckduckgo-web-model-catalog-8000.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/early-stream-keepalive.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/earlyStreamKeepalive.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/edgetts-provider.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/effort-thinking-standardization-6241.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/electron-main.test.ts",["43510","43511"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/electron-packaging.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/electron-preload.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/electron-processtree.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/electron-rebuild-spawn-win.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/electron-release-desktop-channel-8949.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/electron-remote-server.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/electron-resolve-node-executable-7941.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/electron-resolve-server-entry.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/electron-smoke-script.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/embed-ws-host-empty-messages-5110.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/embedding-family-guard.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/embedding-rerank-provider-registry.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/embeddings-auth.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/embeddings-combo-dimensions.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/embeddings-combo-family-reject.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/embeddings-cost-telemetry-headers.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/embeddings-flatten-single-row-9089.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/embeddings-gemini-dimensions.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/embeddings-handler.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/embeddings-lan-noauth-6925.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/embeddings-multimodal-7956.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/embeddings-nvidia-input-type.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/embeddings-proxy-forwarding.test.ts",["43512"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/embeddings-route-apikeymeta-6929.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/emergency-fallback-service.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/empty-choices-no-inject.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/empty-content-stopreason-3572.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/empty-response-hardening.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/empty-stream-no-content-8649.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/empty-tool-name-loop.test.ts",["43513","43514","43515","43516","43517","43518","43519","43520"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/encrypted-reasoning-summary-7243.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/encryption.spec.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/endpoint-categories.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/endpoint-restrictions-policy.test.ts",["43521","43522","43523"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/env-docs-input-sanitizer-8093.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/error-boundary-stack.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/error-classification.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/error-classifier.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/error-config.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/error-message-sanitization.test.ts",["43524","43525","43526","43527","43528","43529","43530","43531","43532","43533","43534","43535","43536","43537","43538","43539","43540","43541","43542"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/error-sensitive-redaction.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/errorClassifier-noauth-403-6315.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/errorclassifier-antigravity-403.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/eslint-import-boundaries.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/estimateSizeFast.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/evalrunner-builtinsuites-split.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/evals-history.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/evals-route.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/event-bus.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/eviction-guards-apiKeyRotator.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/eviction-guards-codexQuotaFetcher.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/execute-chat-resource-pressure-breaker.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-adapta-web.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-agy.test.ts",["43543"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-antigravity-credits.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-antigravity-protocol.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-antigravity.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-azure-ai-responses.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-base-utils.test.ts",["43544","43545","43546","43547","43548"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-bedrock.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-claude-identity.test.ts",["43549","43550","43551"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-cloudflare-ai.test.ts",["43552","43553","43554","43555"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-codex-gpt56-lite-ultra.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-codex-gpt56.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-codex.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-command-code.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-deepseek-web-auto-refresh.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-default-anthropic-auth-8653.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-default-anthropic-compatible-bearer.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-default-base.test.ts",["43556","43557","43558","43559","43560","43561","43562","43563","43564","43565","43566","43567","43568","43569","43570","43571","43572","43573","43574","43575","43576","43577","43578","43579","43580","43581","43582","43583","43584","43585","43586","43587","43588","43589","43590","43591","43592","43593","43594","43595","43596","43597"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-default-strip-client-metadata.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-devin-cli-acp-protocol-8406.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-devin-cli-agentic-acp.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-devin-cli-agentic-core.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-devin-cli.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-doubao-web.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-firecrawl-fetch.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-github-prefill-sanitize.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-github.test.ts",["43598","43599","43600","43601","43602","43603","43604"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-gitlab.test.ts",["43605","43606","43607","43608"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-hailuo-web.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-huggingchat.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-hyperagent.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-inner-ai.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-kimi-web-decoder.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-kimi-web.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-kimi.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-kiro.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-nlpcloud.test.ts",["43609","43610"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-notion-web-thread-sessions.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-notion-web.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-nous-research.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-poe-web.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-pollinations.test.ts",["43611","43612","43613","43614"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-promptql.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-puter.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-qwen-web.test.ts",["43615","43616","43617","43618","43619","43620","43621","43622","43623","43624","43625","43626","43627","43628","43629","43630","43631","43632","43633","43634","43635","43636","43637","43638","43639","43640","43641","43642","43643","43644","43645","43646","43647","43648","43649","43650","43651","43652","43653","43654"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-strip-stainless-openai-compat.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-tinyfish-fetch.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-v0-vercel-web.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-venice-web.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-vertex-extended.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-web-cookie-sweep.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-xai.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executor-zai-web.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/executors-strip-unsupported-params.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/export-json-hide-paid-combos-6328.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/factory-provider-registry.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/faulty-upstream.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/feature-flags-settings.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/feature-triage/args.test.mjs",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/feature-triage/classify.test.mjs",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/feature-triage/delivered.test.mjs",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/feature-triage/frontmatter.test.mjs",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/feature-triage/integration.test.mjs",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/feature-triage/lifecycle.test.mjs",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/feature-triage/resync.test.mjs",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/featured-providers-rank.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/felo-web-executor.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/fetch-error-message.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/fetch-timeout.test.ts",["43655","43656","43657","43658","43659","43660","43661"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/field-400-downgrade.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/file-deletion.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/file-expiration-policy.test.ts",["43662","43663"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/finishReason.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/firecrawl-executor.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/firecrawl-quota-fetcher.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/firecrawl-search.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/firecrawl-usage.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/fireworks-model-id-prefix.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/fix-2130-system-passthrough.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/fix-bare-model-precedence.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/fix-bare-routing-fallback.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/fix-error-message-candidates.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/fix-synced-model-validation.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/fix-tls-client-node-binary-7802.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/fix-tool-adjacency.test.ts",["43664","43665","43666","43667"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/fixes-p1.test.ts",["43668","43669","43670","43671","43672","43673","43674","43675","43676","43677","43678","43679","43680","43681","43682","43683","43684","43685","43686","43687"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/flat-rate-cost-5552.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/format-provider-error-cause.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/format-reset-countdown.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/formatting-public-surface.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/forwarded-header-budget.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/free-catalog-2026-07-expansion.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/free-model-catalog.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/free-models.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/free-note-freshness.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/free-provider-rankings-custom-models-6368.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/free-providers-batch-2026-07.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/free-proxies-add-to-pool.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/free-proxies-db.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/free-proxies-list-search.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/free-proxy-auto-sync-scheduler.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/free-proxy-providers.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/free-proxy-sync-cycle.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/free-tier-catalog.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/free-tier-providers-wave1-b.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/free-tier-providers-wave1-c.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/free-tier-summary-route.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/free-tier-used-this-month.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/free-web-search.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/freeProviderRankings-authtype-6915.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/freeProviderRankings-filters.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/freeProviderRankings.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/freemodel-quota-fetcher.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/freepik-image-handler.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/functional-gateway-mirrors-append.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/functional-gateway-mirrors-db.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/functional-gateway-predicate.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/fusion-judge-model-6455.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/fusion-judge-own-intelligence.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/fusion-judge-survivor.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/fusion-panel-size-cap-1905.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/fusion-partial-panel-failure-6454.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/fusion-tools-bypass-6771.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/g13-combo-chatcore-golden.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/g4f-space-gateway-6650.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gamification/aggregate-profile-3484.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gamification/antiCheat.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gamification/badge-unlock-once-3472.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gamification/badges.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gamification/db-gamification.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gamification/events.test.ts",["43688"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gamification/federation-auth.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gamification/invites.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gamification/leaderboard.test.ts",["43689","43690","43691"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gamification/sharing.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gamification/streaks.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gamification/xp.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gamification-display-contract.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gemini-antigravity-pattern-preserved.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gemini-business-provider.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gemini-cli-ansi-sanitization.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gemini-cli-deprecation.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gemini-cli-legacy-refresh.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gemini-finish-reason-normalization.test.ts",["43692","43693","43694"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gemini-helper-audio-input-912.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gemini-helper-http-image-url-port344.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gemini-helper.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gemini-imagen-predict.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gemini-malformed-function-call-finish-reason-2462.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gemini-midstream-error-4177.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gemini-midstream-nonstreaming-responses.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gemini-midstream-responses.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gemini-models-parser.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gemini-multipleof-2309.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gemini-signatureless-text-mode.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gemini-strict-tool-schema.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gemini-thinking-budget-fallback.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gemini-thinking-budget-zero-6813.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gemini-to-openai-function-response.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gemini-tool-choice.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gemini-tool-params-object-3357.test.ts",["43695","43696"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gemini-web-cookie-rotation-7676.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gemini-web-missing-browser-3516.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gemini-web-multiturn-context-8371.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gemini-web-tool-calling-7286.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gemini-web.test.ts",["43697","43698","43699","43700","43701","43702","43703","43704"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gen-contributors.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/generic-quota-fetcher.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ghe-copilot-targetformat-parity.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ghe-copilot.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/github-claude-reasoning-effort-granular.test.ts",["43705","43706","43707","43708","43709","43710","43711","43712","43713"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/github-collector.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/github-copilot-claude-native-messages.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/github-copilot-gpt-4o-mini.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/github-copilot-model-discovery.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/github-copilot-retired-models.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/github-models-curated-catalog.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/github-models-request-compat.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/github-skill-tools-mcp.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/github-skills-route-validation.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gitlab-duo-oauth-setup-8688.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gitlab-duo-toolcalls-6051.test.ts",["43714","43715","43716","43717","43718","43719"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gitlab-tool-exchange-bounded-6220.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gitlab-tool-result-feedback-6220.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gitlawb-provider.test.ts",["43720","43721"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/glm-executor-max-tokens-clamp-7364.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/glm-executor.test.ts",["43722","43723","43724","43725","43726","43727","43728","43729","43730","43731","43732","43733","43734","43735","43736","43737","43738","43739","43740"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/glm-provider-model-import-route.test.ts",["43741","43742","43743"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/glm-team-quota.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/glm-think-close-marker-leak.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/glob-pattern-6540.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/global-package-path.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/google-flow-video-4569.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gpt-max-input-tokens-6191.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gpt5-sampling-guard.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gpt5-tools-reasoning-guard.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gptoss-provider-inference-5852.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/graceful-shutdown-sighup-8045.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/grok-cli-auth-json-paste-7610.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/grok-cli-device-route.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/grok-cli-function-call-output-sanitize-7611.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/grok-cli-oauth-test-supported-7610.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/grok-cli-oauth.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/grok-cli-proactive-refresh-7610.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/grok-cli-provider-limits-ui.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/grok-cli-provider-limits.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/grok-cli-proxy-selection.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/grok-cli-quota-fetcher.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/grok-cli-quota-frame.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/grok-cli-reasoning-strip-6288.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/grok-cli-responses-compat.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/grok-cli-strip-params.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/grok-quota-fetcher.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/grok-web-cloudflare-classification.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/grok-web-executor-split.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/grok-web.test.ts",["43744","43745","43746","43747","43748","43749","43750","43751","43752","43753","43754","43755","43756","43757","43758","43759","43760","43761","43762","43763","43764","43765","43766","43767","43768"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/grokweb-cookie-ua-hint-7567.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/groq-field-strip-wiring.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/group-provider-permission.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/gtts-provider.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/guardrails/injection-extraction.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/guardrails/injection-route-coverage.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/guardrails/vision-bridge-callmodel.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/guardrails/vision-bridge-sse-and-reasoning.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/guardrails/visionBridge.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/guardrails/visionBridgeHelpers.callVisionModel.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/guardrails/visionBridgeHelpers.extractImageParts.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/guardrails/visionBridgeHelpers.replaceImageParts.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/guardrails/visionBridgeHelpers.resolveImageAsDataUri.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/guardrails/visionBridgeRouter.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/guardrails-api-3496.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/guardrails-registry.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/guardrails-void-no-change-contract.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/guide-settings-apikey-null-3552.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/guide-settings-route.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/hcnsec-provider.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/head-request-closes-6400.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/head-request-v1-models-6400.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/headers-normalize.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/headroom-codex-quota-snapshot-6379.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/headroom-detect.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/headroom-proxy-lifecycle.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/headroom-responses-format.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/health-ping-route.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/healthMonitor.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/healthz-route.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/heap-autocalibrate-5172.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/heap-benchmark-corpus.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/heap-pressure.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/hf-model-suggestions.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/hide-paid-models-settings-schema.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/home-no-autorouting-banner.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/home-page-client-hook-imports-4759.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/home-provider-topology-default-4596.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/home-provider-topology-live-state.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/homolog-admin-client.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/homolog-parity.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/homolog-promptfoo-ctrf.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/homolog-provider-tiers.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/homolog-sse-parser.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/huggingchat-jsonl-split.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/huggingchat-model-catalog.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/i18n-block-extra-usage-copy.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/i18n-cli-namespaces.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/i18n-config.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/i18n-detect-browser-locale.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/i18n-fallback.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/i18n-glossary-consistency-check.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/i18n-hardcoded-pt-dashboard-6761.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/i18n-missing-placeholder-fallback.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/i18n-nest-dotted-keys.test.ts",["43769","43770","43771","43772"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/i18n-provider-filter-keys-6290.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/i18n-provider-visibility-filter-keys-6694.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/i18n-pt-br.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/i18n-quota-share-english.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/i18n-ui-value-drift.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/i18n-vi-completeness.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/idempotency-fusion-collision.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/idempotency.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/image-compat-node-alias-shadow.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/image-edits-multipart-3273.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/image-generation-baseurl-3205.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/image-generation-fetch-timeout.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/image-generation-handler.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/image-generation-route-auth.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/image-generation-route.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/image-model-not-in-chat-catalog-6457.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/image-registry-gpt56.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/image-routes-combo-edits-3214-3215.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/image-text-to-image-modality.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/image-upscale.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/inclusionai-provider.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/injection-guard-scan-bound-3932.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/injection-system-prompt-leak-heuristic-4041.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/inner-ai-find-model.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/input-sanitizer-pii-redaction.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/inspector-agent-bridge-hook.test.ts",["43773","43774","43775"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/inspector-buffer.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/inspector-context-key.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/inspector-conversation-normalizer.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/inspector-har-export.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/inspector-http-proxy.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/inspector-kind-detector.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/inspector-llm-metadata.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/inspector-pricing.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/inspector-process-attribution.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/inspector-sse-merger.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/inspector-system-proxy.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/inspector-types.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/instrumentation-database-closed-6560.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/instrumentation-live-ws.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/instrumentation-node-boot-db-failure.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/instrumentation-process-title.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/instrumentation-warm-catalog-cache.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/intent-classifier-pipeline.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/intercept-fetch-resolver.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/interception-rules.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/internal-service-auth.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/internal-usage-command.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ip-filter-persistence-6131.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ip-filter.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ipUtils.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/isLocalStreamLifecycleError-abort-shape.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/isolate-datadir.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/issue-6343-v0-web-alias-collision.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/issue-6623-opencode-mimo-reasoning-details-nonstream.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/issue-6638-ollama-quota.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/issue-6662-repro.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/issue-6686-quota-preflight-coverage.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/issue-7071-ollama-session-quota.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/issue-7284-connection-test-masks-429.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/issue-7705-tool-use-id-mismatch.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/issue-7793-env-doc-sync-repro.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/issue-7856-copilot-reasoning-text-nonstream.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/issue-7859-gemini-web-redirect-valid.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/issue-9407-gemini-web-validation-false-positive.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/issue-agent-audit.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/issue-agent-execution.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/issue-agent-github-export.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/issue-agent-route-execution.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/issue-agent-runner.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/issue-agent-runs-route.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/issue-fixes-v3.7.9.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/jina-reader-executor.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/json-migration-combos.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/json-size-exactness.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/json-to-sse-3089.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/keepalive-cleanup-8140.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/keepalive-threshold.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kenari.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/key-health-402-disable-5239.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kie-audio-transcription-result.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kie-executor-routing.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kie-task-helpers.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kilocode-anonymous-fallback-4019.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kimi-cn-region-baseurl.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kimi-coding-apikey-quota-4435.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kimi-coding-model-discovery.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kimi-coding-translator.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kimi-combo-preset.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kimi-k2.7-code-registration.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kimi-native-reasoning-injected-1480.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kimi-partner-aff-links.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kimi-quota-reset-recovery.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kimi-sponsor-banner-version-gate.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kimi-web-models-discovery.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kiro-api-key-route-helpers.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kiro-api-key-service.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kiro-auto-import-idc-2059.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kiro-auto-import-name-dedup-3615.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kiro-available-models.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kiro-builder-id-import-3333.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kiro-catalog-real-models.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kiro-claude-sonnet-5-2267.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kiro-connection-identity.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kiro-continue-filler-5231.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kiro-eventstream-split.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kiro-external-idp.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kiro-gpt56-family-registration.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kiro-iam-profilearn-usage.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kiro-iam-region.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kiro-idc-cross-region.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kiro-import-error-3589.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kiro-import-overwrite-9435.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kiro-long-tool-description-docs.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kiro-model-aliases.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kiro-multi-account-isolation.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kiro-overage-usage-4469.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kiro-region-ssrf-guard.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kiro-social-poll.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kiro-sso-cache-direct-clientid-1253.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kiro-streaming-finish-reason-3980.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kiro-system-reminder-2306.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kiro-tool-args-streaming.test.ts",["43776"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kiro-tool-call-validation.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kiro-tool-schema-sanitize-1375.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kiro-toolresult-compression.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kiro-usage-empty-breakdown-3506.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kiro-windows-auto-import-3363.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/kiroThinking.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ladder-engine-maps-6533.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/latency-stats-ttft-6875.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/launch-codex-windows-spawn-6312.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/learned-thinking-caps.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/lib/batches/costEstimator.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/lib/batches/csvToJsonl.test.ts",[],["43777"],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/lib/batches/retryFailed.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/lib/batches/schemas.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/lib/batches/validateJsonl.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/lib/connection-cooldown-summary.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/lib/consoleInterceptor-epipe.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/lib/consoleInterceptor-writes.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/lib/jobs/backupScheduleJob.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/lib/jobs/cronMatch.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/lib/machineToken.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/lib/managementCliToken.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/lib/quota-reset-events.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/limiter-lifecycle.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/list-uncovered-commits.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/listCapabilities-a2a.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/live-model-catalog-reconciliation-8926.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/live-ws-cookie-parse.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/live-ws-eaddrinuse-6324.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/live-ws-public-url.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/live-ws-standalone-wiring.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/livews-forward-backoff-4604.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/llama-cpp-local-url.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/llamacpp-model-delete.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/llm-selector-custom-vision-models.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/llm7-byteplus-models-fetch-3976.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/lmarena-provider.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/lmarena-split-cookie-4271.test.ts",["43778"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/lmstudio-embedding-provider-7601.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/local-aliases-precedence.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/local-corpus-index.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/local-corpus-tools.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/local-redis-runtime.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/log-export-routes.test.mjs",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/log-redaction.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/log-retention.test.ts",["43779","43780","43781","43782","43783","43784","43785","43786","43787","43788","43789","43790"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/log-rotation.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/logenv-datadir-path-6197.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/logger-redaction-wiring.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/logger-write-after-datadir-removed-6360.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/login-bootstrap-route.test.ts",["43791","43792","43793","43794","43795","43796","43797","43798","43799","43800"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/login-shell-path-3321.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/m365-bizchat-frames-4042.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/m365-connection-4042.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/m365-tier-selector-6334.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/m365-tone-model-variants.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/m365-web-token-extraction-7078.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mac-update-manifest-merge.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/machine-id.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/main-server-keepalive-timeout-7003.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/main-server-timeouts-parity.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/managed-available-models.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/managed-model-import.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/management-auth-docs.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/management-auth-hardening.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/management-password-insecure-default.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/management-password.test.ts",["43801","43802","43803","43804"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/manual-config-modal-clipboard.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/maritalk-model-catalog.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mark-account-unavailable-numeric-epoch-guard.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mask-email.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/masked-200-exhaustion-fallback-6427.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/materialize-bundled-symlinks.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mcp/serverSmartFilter.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mcp/tool-cardinality.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mcp/tool-definition-reexport.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mcp-connect-scope.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mcp-extra-forward-6178.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mcp-memory-tools-strategy.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mcp-model-catalog.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mcp-pool-tools-3368.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mcp-published-files-closure-3578.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mcp-server-entry.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mcp-server-hollow-dist-deps.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mcp-session-sweep.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mcp-sse-response-headers-8277.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mcp-tool-collections-shape.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mcp-tool-count-dedup-6854.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mcp-web-fetch-tool.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/media-body-arraybuffer-backing.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/media-cost-headers-handlers.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/media-cost-headers.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/media-provider-ordering.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/memory/typed-decay.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/memory-cache-safe-injection.test.ts",["43805","43806","43807","43808"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/memory-cache.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/memory-embedding-cache.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/memory-embedding-list-providers.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/memory-embedding-remote.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/memory-embedding-resolve.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/memory-embedding-static-potion.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/memory-embedding-transformers.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/memory-engine-status.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/memory-extraction.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/memory-glm-injection.test.ts",["43809"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/memory-needs-reindex.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/memory-reindex-batch.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/memory-retrieval-hybrid.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/memory-retrieval-rerank.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/memory-retrieval-semantic.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/memory-retrieve-preview.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/memory-route.test.ts",["43810","43811"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/memory-schemas-roundtrip.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/memory-settings-default.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/memory-settings-extended.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/memory-settings.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/memory-stats-api.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/memory-store-sync.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/memory-store.test.ts",["43812"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/memory-summarization-older-than.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/memory-summarization.test.ts",["43813","43814"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/memory-system-first-6135.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/memory-tools.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/memory-vec-meta.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/memory-vectorstore-crud.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/memory-vectorstore-ensure-ready.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/memory-vectorstore-int8-quant.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/memory-vectorstore-load.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/memory-vectorstore-rrf.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/memory-vectorstore-stats.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/memory-vectorstore-upsert-self-heal.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/merge-train-plan.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/messages-count-tokens-route.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/microsoft-designer-web-6672.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/middleware-header-strip-5849.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/middleware-hook-sandbox-5872.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/middleware-hooks-error-sanitization.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/migration-107-quota-share-strategy.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/migration-safety-abort-6260.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mimo-thinking-normalize.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mimocode-executor.test.ts",["43815","43816","43817","43818","43819","43820","43821","43822","43823","43824","43825","43826","43827","43828","43829","43830","43831","43832","43833","43834","43835","43836","43837","43838","43839","43840","43841","43842","43843","43844","43845","43846","43847","43848","43849","43850","43851","43852","43853","43854","43855","43856","43857","43858","43859","43860","43861","43862","43863","43864","43865","43866","43867","43868","43869","43870","43871","43872"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/minimax-coding-plan-usage.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/minimax-image-provider-2482.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/minimax-m3-maxtokens.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/minimax-m3-model-registry.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/minimax-media-servicekinds.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/minimax-thinking-signature-2706.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/minimax-tts-1043.test.ts",["43873","43874","43875","43876","43877","43878"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mistral-strip-reasoning-content-1649.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mistral-trailing-assistant.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-alias-config-shim.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-antigravity-reasoning-effort-override.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-cert-install-mode-9442.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-cert-mac-fingerprint.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-cert-migration-6684.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-cert-removal-wiring.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-detection.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-diagnostics.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-dns-graceful-degrade-6127.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-dnsConfig.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-forward-target.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-handler-antigravity.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-handler-base.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-handler-claudeCode.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-handler-codex.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-handler-copilot.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-handler-cursor.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-handler-kiro.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-handler-openCode.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-handler-trae.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-handler-zed.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-hosts-cleanup-on-exit.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-ingest-route-sanitize.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-ingest-shim.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-manager-bypass-json.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-manager-cleanup-symmetry.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-manager-repair.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-manager-stub.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-masksecrets.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-passthrough.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-privileged-steps-sudo-gate.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-root-ca-leaf-issuance-6684.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-root-ca-persistence-6684.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-sanitize-headers.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-server-claude-code-routing.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-server-connect.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-server-loop-guard.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-server-timeouts.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-start-guard.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-startup-error-3606.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-stop-dns-before-kill-1809.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-stub-alias-6344.test.mjs",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-sudo-gate-822.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-sudo-graceful-degrade.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-system-commands-prefix-3641.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-systemCommands-no-sudo.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-targets-resolve.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-targets-route.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-tool-hosts.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-upstream-ca-wiring.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mitm-upstream-trust.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/mixedbread-embedding-provider-6660.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/modal-credential-combine.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/modal-validation-model-prefill.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/modalCost.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-alias-provider-resolution.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-alias-route.test.ts",["43879","43880","43881","43882","43883","43884"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-alias-seed.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-aliases-globalthis-5777.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-aliases-settings-route-selfheal.test.ts",["43885","43886","43887","43888"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-breakdown-sort-8769.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-capabilities-kimi-k3-vision-8250.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-capabilities-mimo-vision-override.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-capabilities-mistral-vision-sync-4073.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-capabilities-path-shaped-vision-8032.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-capabilities-provider-unsupported-tools.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-capabilities-registry.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-capabilities-specialty-8016.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-capability-overrides.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-catalog-name-disambiguation.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-catalog-search.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-catalog-source.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-combo-mappings-db.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-combo-mappings.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-connid-prefix-normalization-6772.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-context-override-readpath.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-cooldowns-route-auth.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-cooldowns-route.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-cross-proxy-compat.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-deprecation.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-discovery-reasoning-levels.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-family-fallback-notation.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-intelligence-db.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-latency-stats-route.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-listing-capability-5420.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-lockout-decay.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-lockout-exact-cooldown-cap.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-lockout-max-cooldown.test.ts",["43889","43890","43891","43892"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-metadata-registry.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-output-cap-synced-fallthrough-6714.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-parse.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-pricing-litellm-gap-9364.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-resolver.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-select-all-confirm-threshold-8526.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-select-hidden-map-helpers-9203.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-select-null-alias-guard-2247.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-select-passthrough-alias-485.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-spec-lookup-index-8697.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-strip.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-sync-custom-preservation.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-sync-route.test.ts",["43893","43894","43895","43896","43897","43898","43899","43900","43901","43902","43903","43904","43905","43906","43907","43908"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-sync-scheduler.test.ts",["43909"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-test-route.test.ts",["43910","43911","43912"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-test-runner-compression-off-6240.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-test-runner.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/model-token-limit-catalog.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/models-catalog-auto-combos-4164.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/models-catalog-block-auto-5192.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/models-catalog-combo-metadata.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/models-catalog-envkey-6406.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/models-catalog-exact-dup-4424.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/models-catalog-functional-gateway.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/models-catalog-hidden-combo-leaves.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/models-catalog-hide-paid.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/models-catalog-low-noise-flag.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/models-catalog-route.test.ts",["43913","43914","43915","43916","43917","43918","43919","43920","43921","43922","43923","43924","43925","43926","43927","43928","43929","43930","43931","43932","43933","43934","43935","43936","43937","43938","43939","43940","43941","43942","43943","43944","43945","43946","43947","43948","43949","43950","43951","43952","43953","43954","43955","43956","43957","43958","43959","43960","43961","43962","43963","43964","43965","43966","43967","43968","43969","43970","43971","43972","43973","43974","43975","43976","43977","43978","43979","43980","43981","43982","43983","43984","43985","43986","43987","43988","43989","43990","43991"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/models-dev-pricing-memoization-8697.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/models-test-error-shape.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/modelsDevSync-extended.test.ts",["43992","43993"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/modelsDevSync.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/modelscope-policy.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/modelscope-provider.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/modelsdev-specialty-keying-8017.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/modelsdevsync-transform-split.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/moderations-handler.test.ts",["43994","43995","43996","43997","43998","43999","44000"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/modular-schemas.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/monaco-editor-import-path.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/moonshot-k3.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/morph-provider-catalog.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/multipart-body-arraybuffer-backing.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/muse-spark-cookie-copy-5449.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/muse-spark-response-parser-split.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/muse-spark-web-continuation.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/muse-spark-ws-auth-token-9502.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/music-generation-handler.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/namespace-tool-identity-integration.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/nanobanana-image-generation.test.ts",["44001","44002"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/nanobanana-image-handler.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/native-binary-compat.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/new-content-providers.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/newapi-aggregator-preflight-dispatch.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/newapi-aggregator-quota-fetcher.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/next-config.test.ts",["44003","44004","44005"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/nightly-compat-node26-webpack-8090.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ninerouter-embed-port-6205.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ninerouter-executor.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/no-memory-header.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/no-src-open-sse-alias.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/no-thinking-alias.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/noAuthProxyResolution.relayAuth.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/noauth-autocombo-allowlist.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/noauth-autocombo-exclude-7622.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/noauth-autocombo-hidden-7620.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/noauth-autocombo-lockout-7623.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/noauth-blocked-partition-5183.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/noauth-imported-models-3200.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/noauth-provider-validation.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/noauth-proxy-resolution.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/node-runtime-support.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/non-streaming-sse-terminal-typescan-4459.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/nonstream-usage-cache-tokens.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/nonstreaming-gemini-family-response-projection.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/normalize-base-path.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/notification-toast-coercion.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/notificationStore.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/notion-api.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/notion-thread-idor-7900.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/notion-tools.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/notion-web-models-discovery.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/npm-publish-artifact-provenance.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/npm-runtime-deps-fumadocs-mdx-7661.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/nube-provider.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/numeric-helpers.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/nvidia-catalog-drift.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/nvidia-minimax-m3-removed-3329.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/nvidia-minimax-thinking-strip.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/nvidia-nim-catalog-expansion-2373.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/nvidia-nim-image.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/nvidia-nim-registry-6108.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/nvidia-nim-validator.test.ts",["44006","44007"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/nvidia-passthrough-models-6773.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/nvidia-quota-phase1.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/nvidia-strip-prompt-cache-key.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/nvidia-tool-compatibility-2840.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/nvidia-validation-bypass-proxy-3226.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/nvidia-validation-model-3116.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/oauth-callback-path-doc.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/oauth-connection-persistence-codex-dedup.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/oauth-connection-test-codex-endpoint.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/oauth-connection-test-timeout.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/oauth-connection-tokenexpiresat-5326.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/oauth-credential-blob.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/oauth-cursor-auto-import.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/oauth-device-code-endpoints.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/oauth-device-code-error-transparency.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/oauth-error-linkify-5486.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/oauth-google-loopback-guidance.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/oauth-grok-cli-browser.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/oauth-keychain-import-only-6041.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/oauth-keychain-import-only-guard.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/oauth-kiro-idc.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/oauth-kiro.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/oauth-lan-loopback-guidance.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/oauth-legacy-services-removed.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/oauth-modal-codex-lan-ip-8046.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/oauth-modal-grok-cli-browser-login-7013.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/oauth-modal-grok-cli-paste-7610.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/oauth-modal-typescript-regressions.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/oauth-paste-credentials-route.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/oauth-paste-credentials.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/oauth-providers-config.test.ts",["44008","44009"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/oauth-providers-error-handling.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/oauth-redirect-uri-mismatch.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/oauth-refresh-connection-dedup-8059.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/oauth-refresh-error-resilience.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/oauth-test-config-8408.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/oauth-trae.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/observability-fase04.test.ts",["44010"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/observability-payloads.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/obsidian-api.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/obsidian-config.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/obsidian-plugin-sync.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/obsidian-tools.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/obsidian-webdav-route.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ocr-route.test.ts",["44011","44012","44013","44014","44015","44016","44017","44018"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/oidc-callback.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ollama-cloud-usage.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ollama-cloud-weekly-quota-cooldown-3709.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ollama-local-embedding-2824.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ollama-local-provider.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ollama-transform.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/omni-skills-page.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/omniroute-decision-header.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/omniroute-meta-fallback-attempts.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/omniroute-response-meta.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/onboarding-step-titles-i18n-4698.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/onboarding-wizard-details-link-6145.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/onboarding-wizard-route-5427.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/openai-developer-role-normalize.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/openai-gpt56-catalog.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/openai-gpt56-responses-routing.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/openai-responses-only-models-5842.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/openai-responses-reasoning-effort.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/openai-responses-request-split.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/openai-responses-single-text-content-string.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/openai-responses-subagent-strip-2446.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/openai-responses-verbosity.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/openai-style-providers-4239-4155-3841.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/openai-to-claude-bare-tool.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/openai-to-claude-empty-messages-5245.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/openai-to-claude-file-attachments.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/openai-to-claude-glm-split-tool-name-2077.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/openai-to-claude-redacted-replay-5312.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/openai-to-claude-strip-empty-signature-6953.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/openai-to-claude-strip-empty.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/openai-to-claude-strip-temperature-thinking.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/openai-to-claude-thinking-budget-split.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/openai-to-gemini-gemma-thinking.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/openai-to-gemini-helpers-split.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/openai-to-kiro-helpers-split.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/openai-tool-opaque-object-schema.test.ts",["44019","44020","44021","44022"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/openapi-coverage.test.ts",["44023"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/openapi-security-tiers.test.ts",["44024","44025","44026","44027","44028","44029","44030","44031"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/openapi-spec-example-body.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/openapi-spec-route.test.ts",["44032"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/openapi-try-route.test.ts",["44033","44034","44035","44036","44037","44038"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/openapi-ws-endpoint.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/opencode-cli-headers-synthesis-5997.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/opencode-deepseek-reasoning-injected.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/opencode-executor.test.ts",["44039"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/opencode-free-tier-catalog-stale-6998.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/opencode-go-catalog-alignment.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/opencode-go-effort-aliases-6922.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/opencode-go-effort-aliases-8353.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/opencode-go-quota-no-zai.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/opencode-go-usage.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/opencode-noauth-models-route.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/opencode-proxy-rotation-4954.test.ts",["44040","44041","44042","44043","44044","44045"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/opencode-quota-fetcher.test.ts",["44046"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/opencode-strip-client-metadata-1442.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/opencode-zen-alias-combo-e2e.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/opencodeReasoningSanitizer.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/openrouter-context-length-3202.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/openrouter-embeddings-catalog-6976.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/openrouter-free-window-wiring-6842.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/openrouter-midstream-error-chunk.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/openrouter-provider-stats.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/openrouter-quota-6842.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/openrouter-registry.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/openrouter-vision-sync-4264.test.ts",["44047","44048","44049","44050"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/openvecta-provider-registration.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ops-scripts.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/orphaned-tool-filter.test.ts",["44051","44052","44053","44054"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/outbound-url-guard-feature-flag.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/output-token-budget-model-cap.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/output-token-budget.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/pack-artifact-entrypoint-closures.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/pack-artifact-policy.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/pack-artifact-server-ws-closure.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/pagination.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/paid-model-target-6540.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/paid-model-target-routes-6540.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/param-filters-apply.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/param-filters-auto-learn.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/param-filters-db.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/parse-model-defensive.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/parse-provider-import-6836.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/passthrough-alias-1850.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/payload-rules-restart-persistence.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/payload-rules-route.test.ts",["44055","44056","44057","44058","44059","44060","44061"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/payload-rules.test.ts",["44062","44063"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/peer-routing.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/pending-counter-drift-8141.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/perplexity-key-validation-models.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/perplexity-tls-client.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/perplexity-web-executor-split.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/perplexity-web-model-mappings.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/perplexity-web-streaming-tools-5927.test.ts",["44064","44065"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/perplexity-web.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/persist-429-cooldown-account-fallback.test.ts",["44066","44067","44068","44069","44070","44071","44072"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/pick-internal-api-key-6372.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/pii-opt-in-default.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/piiReproduction.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/piiSanitizer.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/piiSanitizerIpv6.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/pioneer-provider.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/pipeline-router.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/pipeline.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/plan3-p0.test.ts",["44073","44074","44075","44076","44077","44078","44079","44080","44081","44082","44083","44084","44085","44086","44087","44088","44089","44090","44091","44092"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/playground-code-export.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/playground-key-policy-3503.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/playground-model-filter-3505.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/playground-model-qualify.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/playground-model-selection-3731.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/playground-prompt-improver.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/playground-reasoning-controls-6241.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/playground-schemas.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/playground-stream-metrics.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/plugins-analytics.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/plugins-api-routes.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/plugins-config-route.test.ts",["44093"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/plugins-config-validation.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/plugins-config.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/plugins-db.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/plugins-dev-mode.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/plugins-doctor.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/plugins-edge-cases.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/plugins-errors.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/plugins-fs-safety.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/plugins-hook-payload-chaining-3286.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/plugins-hooks-rate-limit.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/plugins-hooks.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/plugins-index.test.ts",["44094","44095","44096","44097","44098","44099","44100","44101","44102"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/plugins-loader-ipc.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/plugins-loader.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/plugins-logger.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/plugins-manager-lifecycle.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/plugins-manager-restart-reload-7806.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/plugins-manager.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/plugins-manifest.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/plugins-marketplace.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/plugins-metrics.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/plugins-permissions.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/plugins-route-error-sanitization.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/plugins-scanner.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/plugins-set-enabled-shim-3473.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/plugins-signing.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/plugins-tools.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/plugins-upgrade.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/plugins-welcome-banner-e2e.test.ts",["44103"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/podman-machine-guidance-8497.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/poe-api-executor-regression.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/poe-provider-models-baseurl.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/policy-engine.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/pollinations-image-anon-fallback-8085.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/pollinations-jsonmode-3981.test.ts",["44104","44105","44106"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/postinstall-support.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/pr-self-target-guard.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/pricing-ag-flash-tiers.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/pricing-cc-anthropic-rates.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/pricing-constants-split.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/pricing-route-sources.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/pricing-sync-cross-instance.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/pricing-sync-extended.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/pricing-sync-status-7955.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/pricing-sync.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/pricingSync.modal.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/probe-6409-turbopack-memory-doc.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/probe-6699-jules-executor-misroute.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/probe-6835-cyclebreaker.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/probe-6835-oom-uncapped.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/probe-7134-claude-web-empty-error-body.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/probe-7293-strict-system-hoist.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/probe-9064-code-execution-beta.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/probe-9408-tool-use-protocol.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/probe-9541-repro.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/probe-9575-tool-name-case.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/processManager.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/progress-tracker.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/prompt-cache-affinity.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/prompt-cache-prefix-analyzer.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/prompt-injection-guard-db-flag.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/prompt-injection-guard.test.ts",["44107","44108","44109"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/prompt-required-routes.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-add-ux-i18n-import-warning.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-alias-transitive-5918.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-alias-uniqueness.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-apikey-cap-6715.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-audit.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-columns.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-connection-apikey-dedup.test.ts",["44110"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-connection-healthcheck-interval-zero.test.ts",["44111","44112","44113","44114","44115","44116"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-connection-status.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-connections-fetch-url-2998.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-connections-pagination-2998.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-connections-quota-threshold.test.ts",["44117"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-connections-ui-regression.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-credential-requirement.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-detect-format-endpoint.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-display-label.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-endpoints-friendliai-novita.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-error-rules.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-field-strips.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-filters-url-sync.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-header-profiles.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-health-matrix.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-hints.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-icon-arena-themed.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-learn-more-link.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-limits-401-reauth-hint.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-limits-accesstoken-fallback-on-refresh-failure.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-limits-apikey-proxy-context.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-limits-chunked-spacing-sync.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-limits-force-refresh-imported.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-limits-local-apikey-sync-spacing.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-limits-oauth-sequential-sync.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-limits-provider-filter.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-limits-proxy-fail-closed.test.ts",["44118","44119","44120"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-limits-recovery.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-limits-rotating-expired-guard.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-limits-sanitize-scope-3821.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-limits-sync-scheduler-public-surface.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-limits-ui.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-metadata-5461-5470-5534.test.ts",["44121","44122","44123"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-metrics-route.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-model-filter-live-catalog-7250.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-models-config.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-models-context-window-override-4125.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-models-custom-merge-6247.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-models-discovery-split.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-models-management-route.test.ts",["44124","44125","44126","44127"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-models-qwen-web-redirect-6267.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-models-route-codex.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-models-route-lan-guard.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-models-route.test.ts",["44128","44129","44130","44131","44132","44133","44134","44135","44136","44137","44138","44139","44140","44141","44142","44143","44144","44145","44146","44147","44148","44149","44150","44151","44152","44153","44154","44155","44156","44157","44158","44159","44160","44161","44162","44163","44164","44165","44166","44167","44168","44169","44170","44171","44172","44173","44174","44175","44176","44177","44178","44179","44180","44181"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-models-token-limits.test.ts",["44182","44183"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-models-v1-route.test.ts",["44184"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-models-vision-override-1904.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-node-dedup-4746.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-node-icon-url.test.ts",["44185","44186","44187","44188","44189","44190"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-node-select-4421.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-nodes-route.test.ts",["44191","44192","44193","44194","44195","44196","44197","44198","44199","44200","44201","44202","44203"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-nodes-validate-docker-hint.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-nodes-validate-modelid.test.ts",["44204","44205","44206","44207","44208","44209","44210","44211"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-nodes-vibeproxy-preset.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-onboarding-href.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-onboarding-wizard.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-page-helpers-3501.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-plugin-manifest-url.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-plugin-manifest.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-proxy-lazy.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-quota-visibility.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-quota-widget-icon-prop.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-rate-limit-overrides-schema.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-registry-freetheai.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-registry-github-copilot-gpt-4.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-registry-github-copilot-gpt-4o.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-registry-github-copilot-targetformat.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-registry-kilocode-format.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-registry-llm7-cohere.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-registry-models-guard.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-registry-openai-gemini-expanded-models.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-registry-qwen-vision.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-request-capture-toolname-antigravity-4181.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-request-capture-toolname-map-4091.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-request-failure-pipeline.test.ts",["44212","44213","44214","44215","44216","44217"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-request-logging.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-route-schemas.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-scoped-aliases.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-scoped-chat-completions-validation.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-scoped-models-route.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-section-visibility.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-service-kind-filter-4240.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-service.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-settings-default.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-setup-links-5572.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-specific-data-schema.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-sweep-live-discovery.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-target-format-badge-4475.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-test-account-deactivated.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-test-mistral-401-classify.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-tier-field-helpers.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-translate-path-golden.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-validation-azure-vertex.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-validation-branches.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-validation-firepass-403.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-validation-hardening.test.ts",["44218","44219","44220","44221","44222","44223"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-validation-image-only.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-validation-qwen-web-5855.test.ts",["44224"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-validation-specialty.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-validation-ssrf-guard.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-validation-tinyfish.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-validation-web-cookie-auth007.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-validation-webfetch-4401.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-wafer.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/provider-window-costs.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/providerlimits-quotanormalize-split.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/providers-autosync-ssrf-323.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/providers-batch-update.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/providers-bulk-route.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/providers-constants-split.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/providers-free-tier-filter.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/providers-page-data-timeout.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/providers-page-utils-kimi.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/providers-page-utils.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/providers-route-managed-catalog.test.ts",["44225","44226","44227","44228"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/providers-test-route-cli-map.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/providers-validate-route.test.ts",["44229","44230","44231","44232"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/providers-yuanbao-web.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxy-assigned-unavailable-6246.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxy-autoselect-optin-3332.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxy-batch-routes-5918.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxy-bulk-import-dedup-7594.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxy-bypass-scope-guard-3226.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxy-concurrency-keepalive-regression.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxy-connection-test.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxy-dispatcher-cache-cap.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxy-dispatcher-family.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxy-egress-isolation-bdd.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxy-egress-validate-pool-default.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxy-egress-visibility.test.ts",["44233","44234","44235","44236","44237","44238","44239","44240","44241","44242"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxy-fallback-cache-key.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxy-fallback-candidates-listproxies-shape.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxy-fallback-ssrf.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxy-family-migration.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxy-family-resolve-cache.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxy-family-resolve.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxy-family.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxy-fetch.test.ts",["44243"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxy-health-6246.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxy-health-decide-action-6246.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxy-health-ipv6.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxy-health-scheduler-listproxies-shape.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxy-logger-client-ip.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxy-logs-egress-ip.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxy-logs-route.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxy-management-v1-route.test.ts",["44244","44245","44246","44247","44248","44249","44250","44251","44252","44253","44254","44255","44256","44257","44258","44259","44260","44261","44262","44263","44264","44265"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxy-nested-context-skip.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxy-noauth-provider-6272.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxy-pool-cloudflare-workers-deployer.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxy-pool-deno-deploy-relay.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxy-pool-rotation-6365.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxy-pool-route-6365.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxy-pool-sync-4878.test.ts",["44266"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxy-registry-manager.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxy-registry-route-handlers.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxy-registry.test.ts",["44267","44268","44269","44270","44271","44272","44273","44274","44275","44276","44277","44278","44279","44280","44281","44282","44283","44284","44285","44286","44287","44288","44289","44290","44291","44292","44293","44294","44295","44296","44297","44298","44299","44300","44301","44302","44303","44304","44305","44306","44307","44308","44309","44310","44311","44312","44313","44314","44315","44316","44317","44318","44319","44320"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxy-relay-mappers.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxy-relay-test-error-5716.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxy-resolution-status-filter.test.ts",["44321","44322","44323"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxy-rotation-latency.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxy-subscriptions-route-validation.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxy-types-socks5-runtime-3508.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxySubscription.coreEndpoint.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxySubscription.due.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxySubscription.fetchGuard.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxySubscription.fetchRetry.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxySubscription.needsCore.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxySubscription.parse.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxySubscription.scopes.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxySubscription.service.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxySubscription.url.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxyfetch-caller-abort-log-suppression.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxyfetch-retry-fresh-socket-4252.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxyfetch-undici-retry.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/proxyfetch-vercel-relay-2743.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/public-api-routes.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/public-client-ids-3493.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/publicCreds.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/publicai-not-keyless-3558.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/qdrant-schemas.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/qianfan-provider.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/qiniu-provider.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/qoder-cli.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/qoder-display-label.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/qoder-executor.test.ts",["44324","44325","44326"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/qoder-jobtoken-exchange-4683.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/qoder-oauth-config.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/qoder-test-runtime-disambiguation.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/qoder-unwrap-error-envelope.test.ts",["44327","44328","44329"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/qoder-usage-quota.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/qodercli-windows-resolve-6263.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quality-rail-gate-membership.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quality-ratchet.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-account-buckets.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-account-quota-row.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-auto-ping.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-burn-rate.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-cache-hydrate-5015.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-cache-is-exhausted-per-window-5923.test.ts",["44330","44331","44332","44333","44334","44335"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-cache-snapshot-dedup-4438.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-card-expanded-fixed-order-6687.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-card-expanded-loading-placeholder.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-card-expanded-sort-collapse.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-card-grid-density-6815.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-card-grid-horizontal-layout.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-card-grid-mobile-7072.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-catalog-filter.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-combo-balancing.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-combo-cli-providers.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-combo-groups.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-combos-sync.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-concept-card-i18n.test.ts",["44336","44337"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-connection-recovery.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-constrain-connections.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-deactivate-toggle.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-deterministic-order.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-dimensions.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-edit-opens-wizard.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-email-privacy.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-endpoints-card.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-enforce-await-store.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-enforce.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-epsilon-unconfigured-allow.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-equal-split.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-exclusive-catalog-4806.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-exclusive-catalog-short-circuit.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-exclusivity-reconcile.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-fair-share.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-fetch-throttle-6009.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-fetch-throttle-scope-6911.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-group-allocations.test.ts",[],["44338","44339"],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-group-scope.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-groups-crud.test.ts",["44340"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-groups-migration.test.ts",["44341"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-groups-route.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-groups-ui.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-helpers.test.ts",["44342"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-key-models-route.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-key-resolve.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-model-naming.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-monitor.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-multiprovider.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-parsing-claude-extra-usage.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-per-key-model-hotpath.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-per-key-model.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-plan-registry.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-plan-resolver.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-plans-route-retired.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-policy-generalization.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-pool-connections.test.ts",["44343"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-pool-delete-prune.test.ts",["44344","44345"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-pool-log-route.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-pool-single-provider.test.ts",["44346","44347","44348","44349","44350","44351","44352","44353","44354"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-pool-update-full.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-pool-usage-shape.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-pool-wizard-edit.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-pool-wizard-multi.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-pool-wizard.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-preflight.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-redis-store.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-saturation-anthropic-oauth.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-saturation-signals.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-saturation-token-headers.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-schemas.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-share-bugfixes-v388.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-share-grid.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-share-layout-v2.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-share-strategy.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-sharing-fixes.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-spend-recorder.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-sqlite-store.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-store-factory.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-store-pool-total.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-streaming-consumption-usd.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-summed-budget.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/quota-token-expiry-display.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/qwen-cloud-image-media.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/qwen-cloud-token-plan-media.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/qwen-cloud-video-media.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/qwen-code-config.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/qwen-settings-route.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/qwen-web-content-array-serialization.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/qwen-web-cookie-validation-3958.test.ts",["44355"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/qwen-web-models-discovery-3931.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/radar-api-routes.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/radar-apply-feed.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/radar-db.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/radar-flag-default.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/radar-inertia.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/radar-page-state.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/radar-sync.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/rate-limit-enhanced.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/rate-limit-manager.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/rate-limit-provider-default.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/rate-limit-queue-timeout-lockout.test.ts",["44356","44357","44358","44359"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/rate-limit-queue-timeout-message-4165.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/rate-limit-wedge-recovery.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/rate-limiter-eviction-4041.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/rate-limiter-fallback.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/rate-limiter-redis-optional.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/rateLimitManager-idle-eviction.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/rateLimitSemaphore.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ratelimit-admission-control-6593.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ratelimit-reservoir-refresh.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ratelimitmanager-headers-split.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/raycast-auth.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/raycast-local-extract.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/reactive-context-compaction-policy.test.mjs",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/reasoning-cache-truncation.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/reasoning-cache.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/reasoning-cost-double-billing.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/reasoning-placeholder-strip.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/reasoning-replay-big-pickle.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/reasoning-routing-api.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/reasoning-routing-decision-guards.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/reasoning-routing.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/reasoning-token-buffer-6274.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/reasoning-token-buffer-9507.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/reasoning-token-source-6187.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/reasoningContentInjector.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/redirects-cli-renames.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/refactor-buildHeaders-default.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/refactor-buildHeaders-opencode.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/refactor-buildHeaders-preamble.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/refactor-effortLevel.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/refactor-opencodeHeaders.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/refactor-registryFactory.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/refactor-resolveBaseUrl.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/refactor-urlSanitize.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/refresh-serializer-spacing.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/refresh-serializer.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/regional-provider-cn-notices-5462.test.ts",["44360","44361"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/registry-direct-exports.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/registry-utils.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/regolo-provider.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/rehome-open-prs.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/rejected-request-usage.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/relay-check-rate-limit-existing-token.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/relay-deploy-5128.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/relay-minified-fn-6149.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/relay-probe-stats.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/relay-test-result-awareness.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/release-cycle-base-resolver.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/release-green-docs-drift-7253.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/release-notes.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/releaseChecker.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/remaining-tasks.test.ts",["44362"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/remote-image-fetch-dns-rebinding.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/remote-image-fetch-pin-dns-connection.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/remote-image-fetch.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/replace-custom-models-preserve-hidden-5086.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/repro-6142-devin-cloud-agent-unwired.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/repro-6377-agentrouter-validation.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/repro-6524.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/repro-6557-noauth-connection-disable-ignored.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/repro-6576-kiro-thinking-unsupported-model.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/repro-6637-kimi-token-limit.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/repro-6692-sticky-terminal.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/repro-6701-claude-detect-fallback.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/repro-6912-volcengine-max-completion-tokens.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/repro-6951.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/repro-6952-commentary.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/repro-6953.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/repro-6957.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/repro-6975.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/repro-7023.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/repro-7268-401-model-not-supported-lockout.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/repro-7387-sticky-quota-exhausted.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/repro-7503-no-choices.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/repro-7764-collapsed-quota-order.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/repro-7820-amazon-q-static-models.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/repro-7847-bound-client-raw-request.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/repro-8065-quota-cache-cross-instance.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/repro-8136-antigravity-400-model-not-supported-lockout.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/repro-8429-capability-canonicalization.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/repro-8430.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/repro-8522.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/repro-8956.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/repro-9406-claude-web-429-valid.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/repro-9500-reasoning-separator.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/repro-9550-amazon-q-alias-resolution.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/repro-antigravity-404-family-cooldown-hijack.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/request-defaults-store-session.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/request-log-detail-layout.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/request-log-detail-stream.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/request-log-migration.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/request-log-payloads.test.ts",["44363","44364","44365","44366"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/request-logger-bounded-clone.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/request-logger-bounded-idempotence.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/request-logger-endpoints.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/request-logger-preferences.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/request-logger-signature.test.ts",["44367","44368","44369","44370","44371","44372","44373","44374"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/requesty-provider.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/require-management-auth-access-token.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/rerank-object-documents-response-path.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/rerank-openrouter-6574.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/rerank-providers-5332.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/rerank-proxy-pinning-7350.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/rerank-voyage-7809.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/rerank.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/reset-connection-backoff.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/reset-password-cli-6261-6258.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/resilience-provider-cooldown-api-3556.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/resilience-settings-combo-cooldown-wait.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/resilience-settings-normalize-split.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/resilience-settings-provider-breaker.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/resilience-settings-quota-preflight.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/resilience-settings-quota-share-concurrency.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/resilience-settings-stream-recovery.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/resilience-settings-upstream429-breaker.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/resilience-stream-recovery-feature-flags.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/resilience-tab-response-fields.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/resolve-bare-model-to-connection-default-474.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/resolve-model-alias-index-8697.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/resolve-omniroute-base-url.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/resolve-proxy-family.test.ts",["44375","44376","44377","44378","44379","44380","44381","44382","44383","44384"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/resolve-routing-model.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/resolve-stream-flag.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/resolve-web-provider-host.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/resolveComboContextLimit.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/resource-pressure-policy.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/resource-pressure-runtime.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/resource-pressure-sampler.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/resource-pressure.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/response-model-echo-1311.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/response-openai-responses-purehelpers-split.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/response-sanitizer.test.ts",["44385","44386","44387","44388","44389","44390","44391","44392","44393","44394","44395","44396","44397","44398","44399","44400","44401","44402","44403","44404","44405","44406","44407","44408","44409","44410","44411","44412","44413","44414","44415","44416","44417","44418","44419","44420","44421","44422","44423","44424","44425","44426","44427","44428","44429","44430","44431","44432","44433","44434","44435","44436","44437","44438","44439","44440","44441","44442","44443","44444","44445","44446","44447","44448","44449","44450","44451","44452","44453","44454","44455","44456","44457","44458","44459","44460","44461","44462","44463","44464","44465","44466","44467"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/responses-active-stream-custom-tool.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/responses-additional-tools.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/responses-chat-assistant-role-first-chunk.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/responses-chat-namespace-identity-map.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/responses-chat-namespace-qualified-name.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/responses-chat-translation-gaps.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/responses-combo-resolution-3227.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/responses-commentary-event-frame-6561.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/responses-commentary-passthrough-6199.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/responses-default-text-format.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/responses-handler.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/responses-input-item-status-8083.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/responses-input-sanitizer-name.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/responses-nameless-hosted-tool-filter.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/responses-namespace-flatten.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/responses-parse-once-4041.test.ts",["44468","44469","44470","44471","44472","44473"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/responses-reasoning-close-before-message-466.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/responses-state-policy.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/responses-strip-truncation-2311.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/responses-textless-terminal-3948.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/responses-to-claude-whitespace-9170.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/responses-tool-search-call-skip.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/responses-transformer-dense-output.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/responses-transformer.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/responses-translation-fixes.test.ts",["44474","44475","44476","44477","44478","44479","44480","44481","44482","44483","44484","44485","44486","44487","44488","44489","44490","44491","44492","44493","44494","44495","44496","44497","44498","44499","44500","44501","44502","44503","44504","44505","44506","44507","44508"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/responses-usage-trailing-6906.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/responses-ws-proxy-compression-parity.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/responses-ws-proxy-headers.test.mjs",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/responses-ws-proxy-multi-turn-history.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/responses-ws-proxy.test.mjs",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/responsesanitizer-reasoning-split.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/retrieval-scoring-split.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/reverse-models-dev-providers-8697.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/review-reviews-v3814-fixes.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/risk-notice-acknowledged.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/risk-notice-modal-button-import.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/role-normalizer.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/rotation-config-omniroute.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/route-edge-coverage.test.ts",["44509","44510","44511","44512","44513","44514","44515","44516","44517","44518","44519","44520","44521","44522","44523","44524","44525","44526","44527","44528","44529","44530","44531","44532","44533","44534","44535","44536","44537","44538","44539","44540","44541","44542","44543","44544","44545","44546","44547","44548","44549","44550","44551","44552","44553","44554","44555","44556","44557","44558","44559","44560","44561","44562","44563","44564","44565"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/route-error-sanitization-v382.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/route-explainability.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/route-guard-acp-agents-local-only.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/route-guard-forge-jcode-settings-local-only.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/route-guard-grok-build-settings-local-only.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/route-guard-loopback-via-proxy.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/route-guard-middleware-local-only.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/route-guard-plugins-local-only.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/route-guard-private-lan.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/route-guard-provider-login-local-only.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/route-guard-qwen-settings-local-only.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/router-eval-check.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/router-eval-cli.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/router-eval-compare.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/router-eval-e2e-chain.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/router-eval-patch-compare.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/router-eval-search.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/router-eval-trends.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/router-eval.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/router-strategies.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/routing-settings-ux-6147.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/rtk-enable-renderers-6703.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/rtk-gradle-dotnet-filters.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/rtk-new-filters.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/rule12-error-sanitization-sweep.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/run-next-node-env.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/run-next-playwright.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/runtime/live-ws-default.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/runtime/magicBytes.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/runtime/sqliteRuntime-node26-compat.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/runtime/sqliteRuntime.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/runtime-config-globalthis-5312.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/runtime-deps-save-exact-no-prune.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/runtime-env-max-old-space.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/runtime-env.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/runtime-ports.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/runtime-timeouts.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/safe-outbound-fetch.test.ts",["44566","44567","44568","44569","44570","44571","44572","44573","44574"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/safe-resolve-proxy-fail-closed.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/sanitizer-residual-policy.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/save-call-log-persistence.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/schema-coercion.test.ts",["44575","44576","44577","44578","44579","44580","44581","44582","44583","44584","44585","44586"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/search-cache-ttl-zero.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/search-handler-duckduckgo.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/search-handler-extended.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/search-handler-perplexity-options.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/search-provider-validation.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/search-providers-static-model-catalog-7529.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/search-registry.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/search-route.test.ts",["44587","44588","44589","44590","44591","44592","44593"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/search-select-provider-searxng-bug-9543.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/search-tools-schemas.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/secure-random-routing.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/security/build-profile-stubs.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/security/cloud-sync-hmac.test.ts",["44594","44595","44596","44597","44598"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/security/docs-path-traversal.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/security/docs-sanitization.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/security/elevated-powershell-no-encoded.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/security/live-server-allowlist.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/security/local-endpoints.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/security/zed-credential-fingerprint.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/security/zed-import-two-step.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/security-docs-truthfulness-8097.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/security-fase01.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/security-hashkey.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/segmind-image-video-provider-6656.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/select-impacted-tests.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/self-inflicted-upstream-timeout.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/semantic-cache.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/sensenova-image-provider-2233.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/sensenova-provider.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/serial/combo-health-autopilot.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/serial/combo-quota-share-cooldown-wait-timing.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/serial/combo-strategy-fallbacks-half-open-timing.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/serial/glm-coding-plan-monthly-3580.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/serial/provider-health-autopilot.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/serial/quota-division-blocks.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/serve-node-options-preserve-5238.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/service-backends.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/service-batch-processor.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/service-combo-metrics.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/service-context-handoff.test.ts",["44599"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/service-context-manager.test.ts",["44600"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/service-intent-classifier.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/service-payload-rules.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/service-provider-plugin-manifest.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/service-provider-plugin-registry.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/service-quota-monitor.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/service-reasoning-cache.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/service-session-manager.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/service-system-transforms.test.ts",["44601","44602","44603"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/service-thinking-budget.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/service-tier-labels.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/service-token-limit-counter.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/service-token-refresh.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/service-worker-navigation-fallback.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/services/ServiceSupervisor.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/services/bifrost-route-guard.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/services/bifrost-routing-backend.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/services/combo-metrics-memory.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/services/embed-proxy.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/services/embedWsProxy.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/services/emergency-fallback.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/services/end-to-end-shape.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/services/fusion-min-panel-and-failure-detail.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/services/geminiRateLimitTracker.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/services/htmlRewriter.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/services/install-route-helper.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/services/installers/bifrost-transport-version-format.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/services/installers/bifrost.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/services/installers/cliproxy-resolve-spawn-args-6877.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/services/installers/cliproxy.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/services/installers/mux.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/services/installers/ninerouter.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/services/installers/runNpm-shell-5379.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/services/lifecycle.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/services/logs-sse.test.ts",["44604","44605","44606","44607","44608","44609","44610"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/services/modelSync.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/services/providerCooldownTracker.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/services/ringBuffer.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/services-branch-hardening.test.ts",["44611"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/session-affinity-generic-7274.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/session-manager-sweep.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/session-manager.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/session-pool-modular.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/session-pool-rest-api.test.ts",["44612","44613","44614"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/session-pool.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/settings/authz-bypass.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/settings/probe-8950-set-password.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/settings-api.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/settings-cas-7784.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/settings-i18n-keys.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/settings-route-password.test.ts",["44615","44616","44617"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/settings-schema-routing-strategies.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/settings-transform-schema.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/settings-ui-layout-static.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/setup-open-code-win32-shell.test.mjs",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/shared/analytics-recharts-lazy.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/shared/basePath.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/shared/basePathFetch.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/shared/components/AutoRoutingBanner.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/shared/components/KiroAuthModal.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/shared/components/ProxyConfigModal.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/shared/machineId.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/shared/structuredLogger-raw-write-guard.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/shared-api-utils.test.ts",["44618","44619","44620","44621","44622","44623","44624","44625"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/shared-clipboard.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/shared-schemas.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/sidebar-back-compat.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/sidebar-cli-renames.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/sidebar-costs-quota-plans.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/sidebar-costs-section.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/sidebar-customization.test.ts",["44626","44627","44628","44629","44630","44631","44632","44633","44634","44635","44636"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/sidebar-icon-accents-3812.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/sidebar-monitoring-reorg.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/sidebar-prefetch-policy-8281.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/sidebar-quota-share-placement.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/sidebar-route-match.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/sidebar-search-filter.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/sidebar-tools-group.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/sidebar-visibility.test.ts",["44637"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/signature-cache-bypass.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/signature-cache.test.ts",["44638"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/silent-sse-close-7699.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/siliconflow-model-sync.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/siliconflow-registry-models.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/skills-builtins-sandbox.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/skills-collect-routes.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/skills-executor.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/skills-injection.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/skills-interception.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/skills-provider-setting.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/skills-registry.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/skills-routes-error-sanitization.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/skills-routes.test.ts",["44639","44640","44641","44642","44643","44644","44645","44646","44647"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/skills-schemas.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/skills-skillssh.test.ts",["44648","44649","44650","44651","44652","44653","44654"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/skip-provider-breaker-consumer-2743.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/sliding-window-limiter.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/small-vps-docs.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/socks-connector-family.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/socks-handshake-timeout-5109.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/socks5-default-on.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/sonar-quality-gate-fixes.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/source-scanner-guards.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/spark-openai-compatible-endpoint-7942.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/specialty-model-catalog-routes.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/specificity-rules.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/speechmatics-transcription-provider.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/spend-batch-writer.test.ts",["44655"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/sqlite-repair-discoverability-3476.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/sqljs-build-warning-8135.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/sre-oncall-rotation.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/sre-redact-logs.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/sre-tcp-close-analyzer.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/sse-auth-antigravity-credits.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/sse-auth-resource-404.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/sse-auth.test.ts",["44656","44657","44658","44659","44660","44661","44662","44663","44664","44665","44666","44667","44668"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/sse-error-passthrough-3324.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/sse-finish-reason-synthesis-7800.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/sse-heartbeat-integration.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/sse-heartbeat.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/sse-nonstream-accept-5305.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/sse-parser-numeric-ids.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/sse-parser.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/sse-shim-contract.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/sseHeartbeat.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/sseTextTransform.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/standalone-server-ws-keepalive-timeout-7003.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/start-ws-server-cwd-4055.test.mjs",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/startup-stale-cooldown-recovery.test.ts",["44669"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/static-constants-public-surface.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/static-models-venice-web-6269.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/stepfun-mono-fallback-and-sidebar-hydration-7743.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/sticky-affinity-failover-6219.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/stmt-cache-lru.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/stream-continuation-wiring.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/stream-continuation.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/stream-early-eof-affinity-8928.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/stream-early-eof-breaker.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/stream-early-eof-retry-3758.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/stream-failure-499-classification.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/stream-handler-catch-logging-8143.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/stream-handler-client-disconnect.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/stream-handler.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/stream-helpers.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/stream-non-json-sse.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/stream-numeric-ids.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/stream-onfailure-callback-logging.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/stream-options-nonstreaming-3884.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/stream-payload-collector.test.ts",["44670","44671"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/stream-prompt-tokens-zero-upstream.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/stream-readiness-policy.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/stream-readiness.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/stream-recovery.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/stream-request-body-size-mark-7045.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/stream-strip-responses-lifecycle-echo.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/stream-utilities.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/stream-utils.test.ts",["44672","44673","44674","44675","44676","44677","44678","44679","44680","44681","44682","44683","44684","44685"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/streamHelpers.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/streaming-empty-content-block-1382.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/streaming-reasoning-dedup-5786.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/streamingPiiInitialization.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/streamingPiiTransform.test.ts",["44686","44687","44688","44689","44690","44691","44692","44693","44694","44695","44696","44697","44698","44699","44700","44701","44702","44703"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/strict-random-deck.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/strip-reasoning-blobs-agentic-context-1599.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/strip-reasoning-header.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/structured-logger-dedup-bound.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/suggested-models-route.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/sumopod-x5lab-provider.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/supervisor-policy-4425.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/sweep-stale-fragments.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/sync-bundle.test.ts",["44704","44705"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/sync-env-bundled-require-5006.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/sync-env.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/sync-models-degraded-local-catalog-5460-5465.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/sync-next-cycle.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/sync-reasoning-supported-efforts-7694.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/sync-routes.test.ts",["44706","44707","44708","44709","44710"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/sync-search-to-url-8624.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/sync-wiki.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/synced-capability-warmup-8697.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/synced-model-delete-persist-3199.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/synced-model-hide-persist-3782.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/synthetic-provider.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/system-prompt.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/system-role-extraction.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/system-transforms.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/system-trust-test-guard.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/system-version-cache-8278.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/system-version-check-4100.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/t06-schema-hardening.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/t07-no-log-key-config.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/t08-allowed-connections.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/t08-mcp-scope-enforcement.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/t09-a2a-lifecycle.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/t12-pricing-updates.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/t13-stale-quota-display.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/t14-proxy-fast-fail.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/t16-gemini-enum-type-string.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/t19-codex-responses-empty-content.test.ts",["44711","44712","44713","44714"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/t23-t24-fallback-resilience.test.ts",["44715"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/t25-provider-validation-modelid-fallback.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/t26-ai-sdk-accept-header-compat.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/t27-github-copilot-response-format.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/t28-model-catalog-updates.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/t29-vertex-sa-json-executor.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/t3-chat-web-credentials.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/t3-chat-web.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/t30-kiro-400-model-unavailable.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/t31-t33-t34-t38-model-specs.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/t3chat-web-cookie-hint-5465.test.ts",["44716"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/t40-opencode-cli-tools-integration.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/t42-image-size-to-aspect-ratio.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/t43-gemini-tool-call-no-thought-signature.test.ts",["44717","44718","44719","44720"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/t44-antigravity-thought-signature-preserved.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/tag-routing.test.ts",["44721"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/tailscale-authkey.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/tailscaleTunnel.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/task-fitness-missing-table-8603.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/task-router-auto-intent-8602.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/task-routing-config-restore-8601.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/telemetry-auto-cleanup-6848.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/telemetry-summary-route.test.ts",["44722"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/termux-android-cache-dir.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/termux-android-playwright-static-import-7265.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/test-all-model-status.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/test-all-results-i18n.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/test-masking-release-scale.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/test-process-detection.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/test-scoped-selection.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/test-serial-quarantine.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/textual-toolcall-sanitizer-false-positive.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/theoldllm-body-double-read-3296.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/theoldllm-context-length-4184.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/theoldllm-model-refresh-5181.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/theoldllm-provider-proxy.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/theoldllm-request-token-3491.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/think-close-marker-responses-format.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/think-close-marker-suppress-5245.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/think-tag-parser.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/thinking-budget-boot-wiring-5312.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/thinking-budget-globalthis-5312.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/thinking-budget-groq-3258.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/thinking-budget-hydration-5312.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/thinking-budget.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/thundering-herd.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/tier-config-provider-override-route.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/tier-coverage-widget-provider-override.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/tier-resolver-provider-override.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/tiktoken-counter.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/tls-client-download-dir-8579.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/tls-client-node-docker-binary-7802.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/tls-client-proxy-fail-closed.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/tls-options.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/tls-profiles-valid-5591.test.mjs",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/tlsClient-circuit-breaker.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/token-accounting-input-fix.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/token-health-check-circuit-breaker.test.ts",["44723","44724","44725"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/token-health-check-devin-cli-8407.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/token-health-check-sweep.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/token-health-check-tickms-defined.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/token-health-check.test.ts",["44726","44727","44728","44729","44730","44731","44732","44733","44734","44735"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/token-health-no-refresh-token-expired-5326.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/token-limits.test.ts",["44736"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/token-refresh-cas-guard-4038.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/token-refresh-cas-guard.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/token-refresh-circuit-breaker.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/token-refresh-race-comprehensive.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/token-refresh-rotation-map.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/token-refresh-route-service.test.ts",["44737","44738","44739","44740","44741","44742","44743","44744","44745","44746"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/token-refresh-service.test.ts",["44747","44748","44749","44750","44751","44752","44753","44754","44755","44756","44757","44758","44759","44760","44761","44762","44763"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/tokenExtractionConfig.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/tokenHealthCheck-batchSize.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/tokenHealthCheck-transient.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/tool-call-arguments.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/tool-latency-tracker.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/tool-limit-detector.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/tool-name-case-preserve-4307.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/tool-request-sanitization.test.ts",["44764","44765","44766","44767","44768","44769","44770","44771","44772","44773","44774","44775"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/tool-schema-sanitizer.test.mjs",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/tool-search-filtered-responses-to-chat-7532.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/tool-source-diagnostics.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/tools-filter-anthropic-format.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/tooltip-portal-behavior.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/topology-active-requests-3507.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/topology-connection-health.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/topology-filtering-and-click.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/topology-label-3198.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/topology-request-lifecycle-emit.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/tproxy-build-native.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/tproxy-ca-trust.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/tproxy-capture-api.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/tproxy-capture-manager.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/tproxy-capture-mode.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/tproxy-commands.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/tproxy-dynamic-cert.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/tproxy-route.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/tproxy-setup.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/tproxy-tls-capture.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/tproxy-transparent-socket.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/trae-executor.test.ts",["44776","44777","44778","44779","44780","44781","44782"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/trae-publiccred.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/traffic-filter-live.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/transform-stream-hwm.test.ts",["44783","44784","44785","44786","44787"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-ai-sdk-image-parts.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-antigravity-to-openai.test.ts",["44788","44789","44790","44791"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-claude-helper-thinking.test.ts",["44792","44793","44794","44795","44796","44797","44798","44799","44800","44801","44802","44803","44804","44805","44806","44807","44808","44809","44810","44811","44812"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-claude-to-gemini.test.ts",["44813","44814","44815","44816","44817","44818","44819","44820","44821","44822","44823","44824","44825","44826","44827"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-claude-to-openai-orphan-tool-4385.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-claude-to-openai-strip-billing-header.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-claude-to-openai.test.ts",["44828"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-format-detection-2949.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-friendly-advanced-section.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-friendly-compression.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-friendly-concept-card.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-friendly-deeplink.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-friendly-i18n-keys.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-friendly-integration.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-friendly-monitor-tab.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-friendly-page-client.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-friendly-pipeline-view.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-friendly-raw-json-panel.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-friendly-result-narrated.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-friendly-session.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-friendly-simple-controls.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-friendly-stream-transformer.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-friendly-test-bench.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-friendly-translate-tab.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-gemini-audio-input.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-gemini-consecutive-role-2191.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-gemini-schema-pattern-property.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-gemini-thinking-budget-6943.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-gemini-to-openai.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-helper-branches.test.ts",["44829","44830","44831","44832","44833","44834","44835","44836","44837","44838","44839","44840","44841","44842","44843","44844","44845","44846","44847","44848","44849","44850","44851","44852","44853"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-helper-tool-description-coercion.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-json-util.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-mistral-strip-echo-fields.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-openai-responses-custom-tool-1007.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-openai-responses-empty-input-419.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-openai-responses-image-output-8459.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-openai-responses-req.test.ts",["44854","44855","44856","44857","44858","44859","44860","44861","44862","44863","44864","44865","44866","44867","44868","44869","44870","44871","44872","44873","44874","44875","44876","44877","44878","44879","44880","44881","44882","44883","44884","44885","44886","44887","44888","44889","44890","44891","44892","44893","44894","44895","44896","44897","44898","44899","44900","44901","44902","44903","44904","44905","44906","44907","44908","44909","44910","44911","44912","44913","44914","44915","44916","44917","44918","44919","44920","44921","44922","44923","44924","44925","44926","44927","44928","44929"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-openai-to-claude-empty-reasoning.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-openai-to-claude.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-openai-to-cursor.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-openai-to-gemini-defaults.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-openai-to-gemini-sse.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-openai-to-gemini.test.ts",["44930","44931","44932","44933","44934","44935","44936","44937","44938","44939","44940","44941","44942","44943","44944","44945","44946","44947","44948","44949","44950","44951","44952","44953","44954","44955","44956","44957","44958","44959","44960","44961","44962","44963","44964","44965","44966","44967","44968","44969","44970","44971","44972","44973","44974","44975","44976","44977","44978","44979","44980","44981","44982","44983","44984","44985","44986","44987","44988","44989","44990","44991","44992","44993","44994","44995","44996","44997","44998","44999","45000","45001","45002","45003"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-openai-to-kiro.test.ts",["45004","45005","45006","45007","45008","45009","45010","45011","45012","45013","45014","45015","45016","45017","45018","45019","45020"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-redacted-thinking-model-aware-4479.test.ts",["45021","45022","45023","45024","45025","45026"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-request-openai-responses.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-resp-antigravity-thinking-boundary.test.ts",["45027","45028","45029","45030","45031","45032"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-resp-claude-to-openai.test.ts",["45033","45034","45035","45036","45037","45038","45039","45040","45041","45042","45043","45044","45045","45046","45047","45048","45049"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-resp-cursor-to-openai.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-resp-empty-string-tool-arg.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-resp-gemini-to-claude.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-resp-gemini-to-openai.test.ts",["45050","45051","45052","45053","45054","45055","45056","45057","45058","45059","45060","45061","45062","45063","45064","45065","45066","45067","45068","45069","45070","45071","45072","45073","45074","45075","45076","45077","45078","45079","45080","45081","45082","45083","45084","45085","45086","45087","45088","45089","45090","45091","45092","45093","45094","45095","45096","45097","45098","45099","45100","45101","45102","45103","45104","45105","45106","45107","45108","45109","45110","45111","45112","45113","45114","45115","45116","45117","45118","45119","45120","45121","45122","45123","45124"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-resp-kiro-to-openai.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-resp-openai-responses-completed-synthesis.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-resp-openai-responses-namespace-identity.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-resp-openai-responses-roundtrip.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-resp-openai-responses.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-resp-openai-to-antigravity.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-resp-openai-to-claude.test.ts",["45125","45126","45127","45128","45129","45130","45131","45132","45133","45134","45135","45136","45137","45138"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-resp-openai-to-gemini.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-same-format-null-flush.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-stream-transform.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-strip-client-metadata-1157.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-thinking-provider-compat-2043.test.ts",["45139","45140","45141","45142","45143","45144","45145","45146","45147","45148","45149","45150"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-tool-call-shim.test.ts",["45151","45152","45153","45154"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-toolcall-helper.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-tools-anthropic-shape.test.ts",["45155","45156","45157","45158","45159","45160","45161","45162","45163"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/translator-xiaomi-mimo-reasoning-replay-1321.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/tray-kill-orphan-pid.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/tray-systray-loader-4605.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/triage-bugs-2026-08-02.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/tryBackedChat.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ts7-executor-override-signatures.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ts7-executor-result-contract.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ts7-executor-shared-shapes.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ts7-open-sse-type-fixes.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/tsconfig-ts7-readiness.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/tsx-runtime-transform-5757.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/turbopack-cache-heal-6289.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/turkishText.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/types-barrel-model-cooldown.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/AcpAgentsPage.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/AntigravityToolCard-model-aliases.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/ClaudeClassifierCompatToggle.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/ClaudeToolCard-manual-config-fallback.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/CliAgentsPage.test.tsx",[],["45164"],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/CliCodePage.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/CliComparisonCard.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/CliConceptCard.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/CliToolCard.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/CompressionHub-patch-only.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/CoolingConnectionsPanel.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/HermesAgentToolCard-model-aliases.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/LocaleAutoDetect-refresh.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/OpenClawToolCard-manual-config-fallback.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/ProviderIcon-icon-url.test.tsx",[],["45165"],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/ProxyRegistryManager-tdz-render.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/ToolDetailClient.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/activity-page-redirect.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/add-api-key-modal-free-models.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/add-api-key-modal-unsupported-save-5565.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/add-api-key-modal-validation-error-5088.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/agent-bridge-page.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/agent-bridge-server-card-a11y.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/agent-card-risk-modal.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/agent-card.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/allocation-table.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/authz-cors-banner.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/burn-rate-chart.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/bypass-list-editor.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/cache-settings-tab-bounds-8219.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/cli-agents-detail-page.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/cli-code-detail-page.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/cli-tools-no-mitm-tab.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/combo-compression-mode-select.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/combo-defaults-fusion-5598.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/combo-form-deselect-handler.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/combo-form-select-all-handlers.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/combo-response-validation-editor.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/comboFlowModel-breakers.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/comboFlowModel-cooldown.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/comboFlowModel.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/comboLiveStudio.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/combos-error-boundary.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/combos-page-smoke.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/compareView.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/compatible-provider-apikey-setup.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/compliance-tab-actor-filter.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/compression-combos-routing-mode-6760.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/compression-exclusions-page.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/compression-guidance-7530.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/compression-log-namespace.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/compression-pipeline-editor.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/compression-replay-reducer.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/compression-replay-speed.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/compression-settings-page.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/compression-settings-tab-consolidation.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/compressionAnnotation.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/compressionCockpit.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/compressionFlowModel.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/compressionHub-active-selector.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/compressionHub-context-editing.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/compressionHub.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/compressionPanel.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/compressionStylesPanel.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/compressionStylesTile.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/compressionUltraTier.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/confirm-delete-connection-7361.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/connection-row-proxy-name-7643.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/connection-row-token-badge-5836.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/connectionsSearchFilter.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/conversation-tab-separators.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/conversation-tab.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/costs-toplistcard-legacy-free-label-7272.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/dashboard-csrf-fetch.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/diffPane.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/edgeStyles.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/edit-connection-modal-free-models.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/edit-memory-modal.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/embedding-source-selector.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/engine-pages.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/engine-tab.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/engineConfigForm.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/engineConfigPage.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/engineNode.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/evals-tab-smoke.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/fidelityGateToggle.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/fleetAggregation.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/flowCanvas.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/free-budget-card.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/free-pool-tab.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/free-provider-rankings-page-authtype-6915.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/fuzzyDedupToggle.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/grok-device-oauth-modal.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/hermes-agent-config-loop.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/hermes-agent-opencode-free.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/highlightableProviderCard.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/historic-session-banner.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/home-page-client-dashboard-smoke-4615.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/home-provider-topology-section-4606.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/home-topology-hidden-4596.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/home-topology-last-used-node-color.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/home-update-error-render-5991.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/home-update-step-warning-color-amber.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/ionizerLane.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/issue-7845-log-detail-structured-error.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/kimiComboPresetCard.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/kimiSponsorBanner.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/live-compression-accumulate.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/livePage.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/lobe-provider-icons-stepfun.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/logs-page-detail-modal-reopen-on-close.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/markdown-message.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/memories-tab.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/memory-page.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/mitm-proxy-error-boundary.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/mitm-proxy-moved-page.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/model-alias-edit.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/model-select-field-6540.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/model-select-modal-connection-filter.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/model-select-modal-deselect.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/model-select-modal-hidden-models-7156.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/model-select-modal-keep-open.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/model-select-modal-select-all.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/model-select-modal-zero-config.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/model-visibility-toolbar-free.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/namedCombos-active-badge.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/noauth-account-card.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/oauth-callback-postmessage-scope.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/omniglyphContextPage.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/onboarding-public-endpoint.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/open-sse-alias.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/playView.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/playground-api-tab.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/playground-build-tab.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/playground-chat-tab.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/playground-compare-column.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/playground-compare-tab.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/playground-config-pane.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/playground-export-modal.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/playground-improve-prompt-button.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/playground-model-search-4086.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/playground-preset-picker.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/playground-structured-output-editor.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/playground-studio.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/playground-tab.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/playground-token-cost-counter.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/playground-tools-builder.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/pool-card.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/previewToRunModel.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/provider-breaker-health-hook.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/provider-quota-widget-auto-refresh-label-4611.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/providerCardHandle.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/providerCardKimiPartnerAccent.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/providerCascadeNode.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/providerIconKimiLogomark.test.tsx",[],["45166"],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/providerPageHeaderKimiPartnerLink.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/providerPageHighlightLogic.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/proxy-config-modal-saved-sort-default-7643.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/qdrant-config-card.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/quantumLockBadge.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/quick-start-api-keys-link-5695.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/quota-cutoff-modal-draft-reset-7889.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/quota-share-delete-error.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/quota-share-page.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/request-logger-autorefresh-visibility-3972.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/rerank-config-card.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/riskGateBadge.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/rtkLearnDiscoverCard.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/rtkTomlImportCard.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/rtl-logical-classes.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/runtime-page-client.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/saliencyHeatmap.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/same-context-filter.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/search-tools-compare-tab.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/search-tools-concept-card.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/search-tools-provider-catalog.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/search-tools-scrape-result.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/search-tools-scrape-tab.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/search-tools-search-tab.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/search-tools-studio.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/session-recorder-bar.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/setup-wizard.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/sidebar-engine-items.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/sidebar-proxy-expansion.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/stacked-allocation-bar.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/stats-tab.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/status-dot.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/studio-pages.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/studioTabs.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/system-storage-manual-vacuum.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/timeline-page-detail-deeplink.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/timing-i18n.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/toonEncoderTable.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/traffic-inspector-page.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/use-improve-prompt.test.tsx",[],["45167"],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/use-local-storage-pool-migration.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/use-model-visibility-handlers-test-all.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/use-pools-usage-aggregate.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/use-presets.test.tsx",[],["45168"],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/use-resizable-panels.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/use-session-recorder.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/use-stream-metrics.test.tsx",[],["45169"],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/use-structured-output.test.tsx",[],["45170"],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/use-system-proxy-exit-guard.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/use-tools-builder.test.tsx",[],["45171"],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/use-traffic-stream.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/use-virtual-list.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/usePreviewCompression.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/useToolBatchStatuses.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/waterfallInspector.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/web-session-cookie-modal-size-6265.test.tsx",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui-value-drift-cosmetic.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/universal-handoff.test.ts",["45172","45173","45174","45175","45176","45177","45178","45179","45180","45181","45182","45183","45184","45185","45186","45187"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/unorouter-registry.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/upstream-ca-test-route-3488.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/upstream-error-passthrough.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/upstream-headers-sanitize.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/upstream-response-headers-strip.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/upstream-retry-hints-toggle.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/upstream-timeout-model-override.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/url-sanitize.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/usage/usageHistoryDedup.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/usage-account-analytics-route.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/usage-account-identity.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/usage-analytics-model-dedup-7535.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/usage-analytics-provider-display-name-7534.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/usage-analytics-route.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/usage-analytics.test.ts",["45188","45189","45190","45191","45192"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/usage-antigravity-family-split.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/usage-bailian-split.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/usage-cache-health-route.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/usage-cache-health.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/usage-crof-split.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/usage-deepseek-split.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/usage-endpoint-dimension.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/usage-events.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/usage-extractor.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/usage-families-split.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/usage-github-split.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/usage-glm-family-split.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/usage-history-db.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/usage-history-reset.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/usage-migrations-legacy-archive-safety.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/usage-migrations.test.ts",["45193","45194","45195","45196","45197","45198","45199","45200","45201","45202","45203","45204","45205","45206","45207","45208","45209"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/usage-minimax-family-split.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/usage-nanogpt-split.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/usage-opencode-split.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/usage-pending-sweep.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/usage-providers.test.ts",["45210","45211","45212"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/usage-qoder-split.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/usage-quota-core-split.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/usage-quota-row-visibility.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/usage-scalars-split.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/usage-service-antigravity-credits.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/usage-service-deepseek.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/usage-service-hardening.test.ts",["45213","45214","45215","45216","45217","45218","45219","45220","45221","45222","45223","45224","45225","45226","45227","45228","45229","45230","45231","45232","45233","45234","45235","45236","45237","45238","45239","45240","45241","45242","45243","45244","45245","45246","45247","45248","45249","45250","45251","45252","45253","45254","45255","45256","45257","45258","45259","45260","45261","45262","45263","45264","45265","45266","45267","45268"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/usage-token-buffer.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/usage-utils.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/usage-vertex-split.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/usage-xai-split.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/usage-xiaomi-mimo-split.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/usagehistory-helpers-split.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/useApiKey.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/v0-quota-fetcher.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/v1-chat-completions-content-type-6414.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/v1-combos-projection.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/v1-completions-model-header-match-6426.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/v1-models-aliases-included.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/v1-models-auth-leak-9320.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/v1-models-by-id-4674.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/v1-models-catalog-generation-race.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/v1-models-catalog-ttl.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/v1-models-concurrent-6408.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/v1-models-discovery-conformance.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/v1-ws-bridge.test.ts",["45269","45270"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/v1-ws-route.test.ts",["45271","45272","45273","45274"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/v1beta-gemini-tool-calling-6222.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/v1beta-models-route.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/v388-phase1-screen-fixes.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/v388-phase3-memory.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/v388-phase4-playground.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/v388-quota-share-usage-guard.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/validate-release-green.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/validate-response-quality.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/validation-audio-misc-split.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/validation-badge-unsupported-5442.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/validation-cloud-providers-split.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/validation-format-validators-split.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/validation-helpers-split.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/validation-kiro-split.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/validation-search-embedding-split.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/validation-specialty-inline-split.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/validation-web-cookie-split.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/validation-web-providers-split.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/veoaifree-video-route.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/veoaifree-web-executor.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/verbosity-prompt-cache-key-provider-gate-7533.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/vercel-ai-gateway-media.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/vercel-deploy-relay-path-ssrf.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/vercel-deploy-sso-protection-check.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/vercel-gateway-models-fetch-4249.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/verify-published.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/verify-ratchet-bank.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/version-compare-client-safe.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/version-manager-request.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/version-manager.test.ts",["45275"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/versionManager-orchestrator.test.ts",["45276","45277"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/vertex-express-apikey.test.ts",["45278","45279"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/vertex-functioncall-id-3440.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/vertex-media.test.ts",["45280","45281","45282"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/vertex-oauth-scopes.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/vertex-spend-usage.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/vertex-tts.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/video-deepinfra-6653.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/video-generation-handler.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/video-novita-6658.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/video-xai-grok-imagine.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/virtual-auto-combo.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/vision-bridge-cc-no-reroute.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/vision-bridge-env-override.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/vision-bridge-policy-reroute-6640.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/vision-bridge-preserve-on-failure-4012.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/vision-bridge-settings-schema.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/vision-compression-authoritative-capability-7237.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/vision-detection-consistency.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/vision-models-cc-fragments.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/visionBridgeDefaults.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/vnc-session.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/vps-runner-variable-scope.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/vscode-context-sanitizer.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/vscode-responses-models.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/vscode-shared-metadata.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/vscode-token-in-url-warning.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/vscode-token-routes-gpt56.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/vscode-token-routes-responses-listing.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/vscode-token-routes.test.ts",["45283","45284","45285","45286","45287","45288","45289","45290","45291","45292","45293","45294","45295","45296","45297","45298","45299","45300","45301","45302","45303","45304","45305","45306","45307","45308","45309","45310","45311","45312","45313","45314","45315","45316","45317","45318","45319","45320","45321","45322","45323","45324","45325","45326","45327","45328","45329","45330","45331","45332","45333","45334","45335","45336","45337","45338","45339","45340","45341","45342","45343","45344","45345","45346","45347"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/vscode-tokenized-request.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/wafRateLimit.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/waitForServer-tcp-fallback-6800.test.mjs",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/web-cookie-auth.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/web-cookie-providers-new.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/web-cookie-validation-fallback.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/web-cookie-validation-false-positive-7857.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/web-cookie-validation-proxy-7058.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/web-fetch-dispatch.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/web-fetch-handler.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/web-fetch-interception.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/web-fetch-quota-fallback.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/web-runtime-env.test.ts",["45348"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/web-search-fallback-format.test.ts",["45349"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/web-search-tool-routing-4481.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/web-session-credentials.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/web-session-dedup-3368.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/web-session-pool-health.test.ts",["45350","45351"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/web-session-provider-link-6316.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/web-tools-translation-2820.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/web-tools-translation-3260.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/web-tools-translation.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/webdav-server-3485.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/webhook-abort-timer-cleanup.test.ts",["45352","45353","45354","45355","45356"],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/webhook-deliveries-db.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/webhook-discord-dispatcher.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/webhook-dispatcher-routing.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/webhook-edit-wizard-regression.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/webhook-event-descriptions.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/webhook-metadata-guard-3269.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/webhook-private-optin-3269.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/webhook-slack-dispatcher.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/webhook-ssrf-guard.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/webhook-telegram-dispatcher.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/webshare-sync.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/wildcard-alias-settings-not-applied-7693.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/wildcard-router.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/windows-cert-identity-7275.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/windows-hide-child-process-spawns-8131.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/windows-process-stop-8045.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/windsurf-devin-executors.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/workflows-no-foreign-fork-publishers.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/xai-agent-tools-passthrough.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/xai-exact-cost-2453.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/xai-oauth-provider.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/xai-oauth-quota-fetcher.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/xai-oauth-test-supported.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/xai-oauth-usage.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/xai-translators.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/xai-usage.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/xiaomi-mimo-provider.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/xiaomi-mimo-selftrack-usage.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/xiaomi-providers-registry.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/zai-catalog-glm52.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/zai-execution-credentials-target-format-7364.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/zai-glm-max-tokens-clamp-7364.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/zai-glm-target-format-override.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/zai-validator.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/zai-web-chat-endpoint-8014-probe.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/zai-web-models-discovery-7678.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/zed-docker-detect.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/zed-hosted-think-close-marker.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/zed-import-utils.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/zed-oauth-provider.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/zed-provider.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/zenmux-free-provider.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/zenmux-models-fetch-4202.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/zenmux-provider.test.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/vitest.config.ts",[],[],"/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/vitest.mcp.config.ts",[],[],{"ruleId":"45357","severity":2,"message":"45358","line":383,"column":39,"nodeType":"45359","messageId":"45360","endLine":383,"endColumn":42,"suggestions":"45361"},{"ruleId":"45357","severity":2,"message":"45358","line":386,"column":11,"nodeType":"45359","messageId":"45360","endLine":386,"endColumn":14,"suggestions":"45362"},{"ruleId":"45357","severity":2,"message":"45358","line":238,"column":42,"nodeType":"45359","messageId":"45360","endLine":238,"endColumn":45,"suggestions":"45363"},{"ruleId":"45357","severity":2,"message":"45358","line":244,"column":39,"nodeType":"45359","messageId":"45360","endLine":244,"endColumn":42,"suggestions":"45364"},{"ruleId":"45357","severity":2,"message":"45358","line":280,"column":34,"nodeType":"45359","messageId":"45360","endLine":280,"endColumn":37,"suggestions":"45365"},{"ruleId":"45357","severity":2,"message":"45358","line":281,"column":34,"nodeType":"45359","messageId":"45360","endLine":281,"endColumn":37,"suggestions":"45366"},{"ruleId":"45357","severity":2,"message":"45358","line":282,"column":34,"nodeType":"45359","messageId":"45360","endLine":282,"endColumn":37,"suggestions":"45367"},{"ruleId":"45357","severity":2,"message":"45358","line":332,"column":55,"nodeType":"45359","messageId":"45360","endLine":332,"endColumn":58,"suggestions":"45368"},{"ruleId":"45357","severity":2,"message":"45358","line":393,"column":36,"nodeType":"45359","messageId":"45360","endLine":393,"endColumn":39,"suggestions":"45369"},{"ruleId":"45357","severity":2,"message":"45358","line":399,"column":33,"nodeType":"45359","messageId":"45360","endLine":399,"endColumn":36,"suggestions":"45370"},{"ruleId":"45357","severity":2,"message":"45358","line":472,"column":49,"nodeType":"45359","messageId":"45360","endLine":472,"endColumn":52,"suggestions":"45371"},{"ruleId":"45357","severity":2,"message":"45358","line":493,"column":24,"nodeType":"45359","messageId":"45360","endLine":493,"endColumn":27,"suggestions":"45372"},{"ruleId":"45357","severity":2,"message":"45358","line":494,"column":22,"nodeType":"45359","messageId":"45360","endLine":494,"endColumn":25,"suggestions":"45373"},{"ruleId":"45357","severity":2,"message":"45358","line":495,"column":19,"nodeType":"45359","messageId":"45360","endLine":495,"endColumn":22,"suggestions":"45374"},{"ruleId":"45357","severity":2,"message":"45358","line":449,"column":18,"nodeType":"45359","messageId":"45360","endLine":449,"endColumn":21,"suggestions":"45375"},{"ruleId":"45357","severity":2,"message":"45358","line":482,"column":42,"nodeType":"45359","messageId":"45360","endLine":482,"endColumn":45,"suggestions":"45376"},{"ruleId":"45357","severity":2,"message":"45358","line":36,"column":47,"nodeType":"45359","messageId":"45360","endLine":36,"endColumn":50,"suggestions":"45377"},{"ruleId":"45357","severity":2,"message":"45358","line":40,"column":56,"nodeType":"45359","messageId":"45360","endLine":40,"endColumn":59,"suggestions":"45378"},{"ruleId":"45357","severity":2,"message":"45358","line":92,"column":55,"nodeType":"45359","messageId":"45360","endLine":92,"endColumn":58,"suggestions":"45379"},{"ruleId":"45357","severity":2,"message":"45358","line":92,"column":78,"nodeType":"45359","messageId":"45360","endLine":92,"endColumn":81,"suggestions":"45380"},{"ruleId":"45357","severity":2,"message":"45358","line":119,"column":41,"nodeType":"45359","messageId":"45360","endLine":119,"endColumn":44,"suggestions":"45381"},{"ruleId":"45357","severity":2,"message":"45358","line":119,"column":76,"nodeType":"45359","messageId":"45360","endLine":119,"endColumn":79,"suggestions":"45382"},{"ruleId":"45357","severity":2,"message":"45358","line":119,"column":82,"nodeType":"45359","messageId":"45360","endLine":119,"endColumn":85,"suggestions":"45383"},{"ruleId":"45357","severity":2,"message":"45358","line":214,"column":61,"nodeType":"45359","messageId":"45360","endLine":214,"endColumn":64,"suggestions":"45384"},{"ruleId":"45357","severity":2,"message":"45358","line":229,"column":47,"nodeType":"45359","messageId":"45360","endLine":229,"endColumn":50,"suggestions":"45385"},{"ruleId":"45357","severity":2,"message":"45358","line":229,"column":53,"nodeType":"45359","messageId":"45360","endLine":229,"endColumn":56,"suggestions":"45386"},{"ruleId":"45357","severity":2,"message":"45358","line":236,"column":19,"nodeType":"45359","messageId":"45360","endLine":236,"endColumn":22,"suggestions":"45387"},{"ruleId":"45357","severity":2,"message":"45358","line":251,"column":22,"nodeType":"45359","messageId":"45360","endLine":251,"endColumn":25,"suggestions":"45388"},{"ruleId":"45357","severity":2,"message":"45358","line":264,"column":42,"nodeType":"45359","messageId":"45360","endLine":264,"endColumn":45,"suggestions":"45389"},{"ruleId":"45357","severity":2,"message":"45358","line":264,"column":48,"nodeType":"45359","messageId":"45360","endLine":264,"endColumn":51,"suggestions":"45390"},{"ruleId":"45357","severity":2,"message":"45358","line":327,"column":11,"nodeType":"45359","messageId":"45360","endLine":327,"endColumn":14,"suggestions":"45391"},{"ruleId":"45357","severity":2,"message":"45358","line":330,"column":6,"nodeType":"45359","messageId":"45360","endLine":330,"endColumn":9,"suggestions":"45392"},{"ruleId":"45357","severity":2,"message":"45358","line":19,"column":29,"nodeType":"45359","messageId":"45360","endLine":19,"endColumn":32,"suggestions":"45393"},{"ruleId":"45357","severity":2,"message":"45358","line":37,"column":41,"nodeType":"45359","messageId":"45360","endLine":37,"endColumn":44,"suggestions":"45394"},{"ruleId":"45357","severity":2,"message":"45358","line":37,"column":77,"nodeType":"45359","messageId":"45360","endLine":37,"endColumn":80,"suggestions":"45395"},{"ruleId":"45357","severity":2,"message":"45358","line":37,"column":83,"nodeType":"45359","messageId":"45360","endLine":37,"endColumn":86,"suggestions":"45396"},{"ruleId":"45357","severity":2,"message":"45358","line":95,"column":19,"nodeType":"45359","messageId":"45360","endLine":95,"endColumn":22,"suggestions":"45397"},{"ruleId":"45357","severity":2,"message":"45358","line":109,"column":24,"nodeType":"45359","messageId":"45360","endLine":109,"endColumn":27,"suggestions":"45398"},{"ruleId":"45357","severity":2,"message":"45358","line":110,"column":24,"nodeType":"45359","messageId":"45360","endLine":110,"endColumn":27,"suggestions":"45399"},{"ruleId":"45357","severity":2,"message":"45358","line":35,"column":29,"nodeType":"45359","messageId":"45360","endLine":35,"endColumn":32,"suggestions":"45400"},{"ruleId":"45357","severity":2,"message":"45358","line":52,"column":41,"nodeType":"45359","messageId":"45360","endLine":52,"endColumn":44,"suggestions":"45401"},{"ruleId":"45357","severity":2,"message":"45358","line":52,"column":78,"nodeType":"45359","messageId":"45360","endLine":52,"endColumn":81,"suggestions":"45402"},{"ruleId":"45357","severity":2,"message":"45358","line":52,"column":84,"nodeType":"45359","messageId":"45360","endLine":52,"endColumn":87,"suggestions":"45403"},{"ruleId":"45357","severity":2,"message":"45358","line":241,"column":23,"nodeType":"45359","messageId":"45360","endLine":241,"endColumn":26,"suggestions":"45404"},{"ruleId":"45357","severity":2,"message":"45358","line":241,"column":64,"nodeType":"45359","messageId":"45360","endLine":241,"endColumn":67,"suggestions":"45405"},{"ruleId":"45357","severity":2,"message":"45358","line":242,"column":23,"nodeType":"45359","messageId":"45360","endLine":242,"endColumn":26,"suggestions":"45406"},{"ruleId":"45357","severity":2,"message":"45358","line":242,"column":65,"nodeType":"45359","messageId":"45360","endLine":242,"endColumn":68,"suggestions":"45407"},{"ruleId":"45357","severity":2,"message":"45358","line":243,"column":23,"nodeType":"45359","messageId":"45360","endLine":243,"endColumn":26,"suggestions":"45408"},{"ruleId":"45357","severity":2,"message":"45358","line":243,"column":67,"nodeType":"45359","messageId":"45360","endLine":243,"endColumn":70,"suggestions":"45409"},{"ruleId":"45357","severity":2,"message":"45358","line":246,"column":22,"nodeType":"45359","messageId":"45360","endLine":246,"endColumn":25,"suggestions":"45410"},{"ruleId":"45357","severity":2,"message":"45358","line":258,"column":40,"nodeType":"45359","messageId":"45360","endLine":258,"endColumn":43,"suggestions":"45411"},{"ruleId":"45357","severity":2,"message":"45358","line":258,"column":78,"nodeType":"45359","messageId":"45360","endLine":258,"endColumn":81,"suggestions":"45412"},{"ruleId":"45357","severity":2,"message":"45358","line":265,"column":21,"nodeType":"45359","messageId":"45360","endLine":265,"endColumn":24,"suggestions":"45413"},{"ruleId":"45357","severity":2,"message":"45358","line":436,"column":62,"nodeType":"45359","messageId":"45360","endLine":436,"endColumn":65,"suggestions":"45414"},{"ruleId":"45357","severity":2,"message":"45358","line":158,"column":21,"nodeType":"45359","messageId":"45360","endLine":158,"endColumn":24,"suggestions":"45415"},{"ruleId":"45357","severity":2,"message":"45358","line":166,"column":71,"nodeType":"45359","messageId":"45360","endLine":166,"endColumn":74,"suggestions":"45416"},{"ruleId":"45357","severity":2,"message":"45358","line":198,"column":29,"nodeType":"45359","messageId":"45360","endLine":198,"endColumn":32,"suggestions":"45417"},{"ruleId":"45418","severity":2,"message":"45419","line":3,"column":1,"nodeType":"45420","messageId":"45421","endLine":3,"endColumn":65},{"ruleId":"45418","severity":2,"message":"45419","line":1,"column":1,"nodeType":"45420","messageId":"45421","endLine":1,"endColumn":56},{"ruleId":"45418","severity":2,"message":"45419","line":266,"column":1,"nodeType":"45420","messageId":"45421","endLine":266,"endColumn":98},{"ruleId":"45357","severity":2,"message":"45358","line":117,"column":19,"nodeType":"45359","messageId":"45360","endLine":117,"endColumn":22,"suggestions":"45422"},{"ruleId":"45423","severity":2,"message":"45424","line":70,"column":1,"nodeType":"45425","messageId":"45426","endLine":72,"endColumn":2},{"ruleId":"45423","severity":2,"message":"45424","line":24,"column":1,"nodeType":"45425","messageId":"45426","endLine":32,"endColumn":2},{"ruleId":"45357","severity":2,"message":"45358","line":95,"column":31,"nodeType":"45359","messageId":"45360","endLine":95,"endColumn":34,"suggestions":"45427"},{"ruleId":"45357","severity":2,"message":"45358","line":97,"column":41,"nodeType":"45359","messageId":"45360","endLine":97,"endColumn":44,"suggestions":"45428"},{"ruleId":"45357","severity":2,"message":"45358","line":98,"column":9,"nodeType":"45359","messageId":"45360","endLine":98,"endColumn":12,"suggestions":"45429"},{"ruleId":"45357","severity":2,"message":"45358","line":169,"column":9,"nodeType":"45359","messageId":"45360","endLine":169,"endColumn":12,"suggestions":"45430"},{"ruleId":"45357","severity":2,"message":"45358","line":177,"column":36,"nodeType":"45359","messageId":"45360","endLine":177,"endColumn":39,"suggestions":"45431"},{"ruleId":"45357","severity":2,"message":"45358","line":201,"column":9,"nodeType":"45359","messageId":"45360","endLine":201,"endColumn":12,"suggestions":"45432"},{"ruleId":"45357","severity":2,"message":"45358","line":212,"column":36,"nodeType":"45359","messageId":"45360","endLine":212,"endColumn":39,"suggestions":"45433"},{"ruleId":"45357","severity":2,"message":"45358","line":629,"column":9,"nodeType":"45359","messageId":"45360","endLine":629,"endColumn":12,"suggestions":"45434"},{"ruleId":"45357","severity":2,"message":"45358","line":637,"column":36,"nodeType":"45359","messageId":"45360","endLine":637,"endColumn":39,"suggestions":"45435"},{"ruleId":"45357","severity":2,"message":"45358","line":654,"column":9,"nodeType":"45359","messageId":"45360","endLine":654,"endColumn":12,"suggestions":"45436"},{"ruleId":"45357","severity":2,"message":"45358","line":662,"column":36,"nodeType":"45359","messageId":"45360","endLine":662,"endColumn":39,"suggestions":"45437"},{"ruleId":"45357","severity":2,"message":"45358","line":685,"column":9,"nodeType":"45359","messageId":"45360","endLine":685,"endColumn":12,"suggestions":"45438"},{"ruleId":"45357","severity":2,"message":"45358","line":693,"column":36,"nodeType":"45359","messageId":"45360","endLine":693,"endColumn":39,"suggestions":"45439"},{"ruleId":"45357","severity":2,"message":"45358","line":713,"column":9,"nodeType":"45359","messageId":"45360","endLine":713,"endColumn":12,"suggestions":"45440"},{"ruleId":"45357","severity":2,"message":"45358","line":719,"column":36,"nodeType":"45359","messageId":"45360","endLine":719,"endColumn":39,"suggestions":"45441"},{"ruleId":"45357","severity":2,"message":"45358","line":748,"column":9,"nodeType":"45359","messageId":"45360","endLine":748,"endColumn":12,"suggestions":"45442"},{"ruleId":"45357","severity":2,"message":"45358","line":754,"column":36,"nodeType":"45359","messageId":"45360","endLine":754,"endColumn":39,"suggestions":"45443"},{"ruleId":"45357","severity":2,"message":"45358","line":775,"column":9,"nodeType":"45359","messageId":"45360","endLine":775,"endColumn":12,"suggestions":"45444"},{"ruleId":"45357","severity":2,"message":"45358","line":786,"column":36,"nodeType":"45359","messageId":"45360","endLine":786,"endColumn":39,"suggestions":"45445"},{"ruleId":"45357","severity":2,"message":"45358","line":817,"column":9,"nodeType":"45359","messageId":"45360","endLine":817,"endColumn":12,"suggestions":"45446"},{"ruleId":"45357","severity":2,"message":"45358","line":828,"column":36,"nodeType":"45359","messageId":"45360","endLine":828,"endColumn":39,"suggestions":"45447"},{"ruleId":"45357","severity":2,"message":"45358","line":867,"column":9,"nodeType":"45359","messageId":"45360","endLine":867,"endColumn":12,"suggestions":"45448"},{"ruleId":"45357","severity":2,"message":"45358","line":874,"column":36,"nodeType":"45359","messageId":"45360","endLine":874,"endColumn":39,"suggestions":"45449"},{"ruleId":"45357","severity":2,"message":"45358","line":896,"column":9,"nodeType":"45359","messageId":"45360","endLine":896,"endColumn":12,"suggestions":"45450"},{"ruleId":"45357","severity":2,"message":"45358","line":903,"column":36,"nodeType":"45359","messageId":"45360","endLine":903,"endColumn":39,"suggestions":"45451"},{"ruleId":"45357","severity":2,"message":"45358","line":1030,"column":19,"nodeType":"45359","messageId":"45360","endLine":1030,"endColumn":22,"suggestions":"45452"},{"ruleId":"45357","severity":2,"message":"45358","line":1031,"column":16,"nodeType":"45359","messageId":"45360","endLine":1031,"endColumn":19,"suggestions":"45453"},{"ruleId":"45357","severity":2,"message":"45358","line":1075,"column":9,"nodeType":"45359","messageId":"45360","endLine":1075,"endColumn":12,"suggestions":"45454"},{"ruleId":"45357","severity":2,"message":"45358","line":1128,"column":17,"nodeType":"45359","messageId":"45360","endLine":1128,"endColumn":20,"suggestions":"45455"},{"ruleId":"45357","severity":2,"message":"45358","line":1160,"column":9,"nodeType":"45359","messageId":"45360","endLine":1160,"endColumn":12,"suggestions":"45456"},{"ruleId":"45357","severity":2,"message":"45358","line":1375,"column":31,"nodeType":"45359","messageId":"45360","endLine":1375,"endColumn":34,"suggestions":"45457"},{"ruleId":"45357","severity":2,"message":"45358","line":1377,"column":9,"nodeType":"45359","messageId":"45360","endLine":1377,"endColumn":12,"suggestions":"45458"},{"ruleId":"45357","severity":2,"message":"45358","line":1416,"column":17,"nodeType":"45359","messageId":"45360","endLine":1416,"endColumn":20,"suggestions":"45459"},{"ruleId":"45357","severity":2,"message":"45358","line":1507,"column":17,"nodeType":"45359","messageId":"45360","endLine":1507,"endColumn":20,"suggestions":"45460"},{"ruleId":"45423","severity":2,"message":"45424","line":151,"column":1,"nodeType":"45425","messageId":"45426","endLine":158,"endColumn":2},{"ruleId":"45357","severity":2,"message":"45358","line":206,"column":17,"nodeType":"45359","messageId":"45360","endLine":206,"endColumn":20,"suggestions":"45461"},{"ruleId":"45357","severity":2,"message":"45358","line":9,"column":25,"nodeType":"45359","messageId":"45360","endLine":9,"endColumn":28,"suggestions":"45462"},{"ruleId":"45357","severity":2,"message":"45358","line":110,"column":9,"nodeType":"45359","messageId":"45360","endLine":110,"endColumn":12,"suggestions":"45463"},{"ruleId":"45357","severity":2,"message":"45358","line":111,"column":19,"nodeType":"45359","messageId":"45360","endLine":111,"endColumn":22,"suggestions":"45464"},{"ruleId":"45357","severity":2,"message":"45358","line":121,"column":17,"nodeType":"45359","messageId":"45360","endLine":121,"endColumn":20,"suggestions":"45465"},{"ruleId":"45357","severity":2,"message":"45358","line":131,"column":16,"nodeType":"45359","messageId":"45360","endLine":131,"endColumn":19,"suggestions":"45466"},{"ruleId":"45357","severity":2,"message":"45358","line":80,"column":12,"nodeType":"45359","messageId":"45360","endLine":80,"endColumn":15,"suggestions":"45467"},{"ruleId":"45357","severity":2,"message":"45358","line":17,"column":39,"nodeType":"45359","messageId":"45360","endLine":17,"endColumn":42,"suggestions":"45468"},{"ruleId":"45357","severity":2,"message":"45358","line":35,"column":34,"nodeType":"45359","messageId":"45360","endLine":35,"endColumn":37,"suggestions":"45469"},{"ruleId":"45357","severity":2,"message":"45358","line":36,"column":35,"nodeType":"45359","messageId":"45360","endLine":36,"endColumn":38,"suggestions":"45470"},{"ruleId":"45423","severity":2,"message":"45424","line":195,"column":1,"nodeType":"45425","messageId":"45426","endLine":203,"endColumn":2},{"ruleId":"45423","severity":2,"message":"45424","line":166,"column":1,"nodeType":"45425","messageId":"45426","endLine":168,"endColumn":2},{"ruleId":"45357","severity":2,"message":"45358","line":1044,"column":48,"nodeType":"45359","messageId":"45360","endLine":1044,"endColumn":51,"suggestions":"45471"},{"ruleId":"45357","severity":2,"message":"45358","line":1071,"column":47,"nodeType":"45359","messageId":"45360","endLine":1071,"endColumn":50,"suggestions":"45472"},{"ruleId":"45357","severity":2,"message":"45358","line":1175,"column":53,"nodeType":"45359","messageId":"45360","endLine":1175,"endColumn":56,"suggestions":"45473"},{"ruleId":"45423","severity":2,"message":"45424","line":79,"column":1,"nodeType":"45425","messageId":"45426","endLine":87,"endColumn":2},{"ruleId":"45357","severity":2,"message":"45358","line":20,"column":51,"nodeType":"45359","messageId":"45360","endLine":20,"endColumn":54,"suggestions":"45474"},{"ruleId":"45357","severity":2,"message":"45358","line":34,"column":63,"nodeType":"45359","messageId":"45360","endLine":34,"endColumn":66,"suggestions":"45475"},{"ruleId":"45423","severity":2,"message":"45424","line":66,"column":1,"nodeType":"45425","messageId":"45426","endLine":69,"endColumn":2},{"ruleId":"45357","severity":2,"message":"45358","line":47,"column":50,"nodeType":"45359","messageId":"45360","endLine":47,"endColumn":53,"suggestions":"45476"},{"ruleId":"45423","severity":2,"message":"45424","line":75,"column":1,"nodeType":"45425","messageId":"45426","endLine":82,"endColumn":2},{"ruleId":"45423","severity":2,"message":"45424","line":76,"column":1,"nodeType":"45425","messageId":"45426","endLine":83,"endColumn":2},{"ruleId":"45418","severity":2,"message":"45419","line":2,"column":1,"nodeType":"45420","messageId":"45421","endLine":2,"endColumn":71},{"ruleId":"45418","severity":2,"message":"45419","line":3,"column":1,"nodeType":"45420","messageId":"45421","endLine":19,"endColumn":24},{"ruleId":"45357","severity":2,"message":"45358","line":181,"column":83,"nodeType":"45359","messageId":"45360","endLine":181,"endColumn":86,"suggestions":"45477"},{"ruleId":"45357","severity":2,"message":"45358","line":181,"column":89,"nodeType":"45359","messageId":"45360","endLine":181,"endColumn":92,"suggestions":"45478"},{"ruleId":"45357","severity":2,"message":"45358","line":292,"column":34,"nodeType":"45359","messageId":"45360","endLine":292,"endColumn":37,"suggestions":"45479"},{"ruleId":"45357","severity":2,"message":"45358","line":465,"column":59,"nodeType":"45359","messageId":"45360","endLine":465,"endColumn":62,"suggestions":"45480"},{"ruleId":"45423","severity":2,"message":"45424","line":624,"column":7,"nodeType":"45481","messageId":"45426","endLine":628,"endColumn":2},{"ruleId":"45357","severity":2,"message":"45358","line":645,"column":33,"nodeType":"45359","messageId":"45360","endLine":645,"endColumn":36,"suggestions":"45482"},{"ruleId":"45357","severity":2,"message":"45358","line":645,"column":64,"nodeType":"45359","messageId":"45360","endLine":645,"endColumn":67,"suggestions":"45483"},{"ruleId":"45357","severity":2,"message":"45358","line":663,"column":55,"nodeType":"45359","messageId":"45360","endLine":663,"endColumn":58,"suggestions":"45484"},{"ruleId":"45357","severity":2,"message":"45358","line":700,"column":12,"nodeType":"45359","messageId":"45360","endLine":700,"endColumn":15,"suggestions":"45485"},{"ruleId":"45357","severity":2,"message":"45358","line":701,"column":20,"nodeType":"45359","messageId":"45360","endLine":701,"endColumn":23,"suggestions":"45486"},{"ruleId":"45357","severity":2,"message":"45358","line":781,"column":55,"nodeType":"45359","messageId":"45360","endLine":781,"endColumn":58,"suggestions":"45487"},{"ruleId":"45357","severity":2,"message":"45358","line":823,"column":54,"nodeType":"45359","messageId":"45360","endLine":823,"endColumn":57,"suggestions":"45488"},{"ruleId":"45357","severity":2,"message":"45358","line":823,"column":68,"nodeType":"45359","messageId":"45360","endLine":823,"endColumn":71,"suggestions":"45489"},{"ruleId":"45357","severity":2,"message":"45358","line":844,"column":12,"nodeType":"45359","messageId":"45360","endLine":844,"endColumn":15,"suggestions":"45490"},{"ruleId":"45357","severity":2,"message":"45358","line":845,"column":12,"nodeType":"45359","messageId":"45360","endLine":845,"endColumn":15,"suggestions":"45491"},{"ruleId":"45357","severity":2,"message":"45358","line":846,"column":20,"nodeType":"45359","messageId":"45360","endLine":846,"endColumn":23,"suggestions":"45492"},{"ruleId":"45357","severity":2,"message":"45358","line":875,"column":25,"nodeType":"45359","messageId":"45360","endLine":875,"endColumn":28,"suggestions":"45493"},{"ruleId":"45357","severity":2,"message":"45358","line":879,"column":35,"nodeType":"45359","messageId":"45360","endLine":879,"endColumn":38,"suggestions":"45494"},{"ruleId":"45357","severity":2,"message":"45358","line":17,"column":9,"nodeType":"45359","messageId":"45360","endLine":17,"endColumn":12,"suggestions":"45495"},{"ruleId":"45357","severity":2,"message":"45358","line":161,"column":33,"nodeType":"45359","messageId":"45360","endLine":161,"endColumn":36,"suggestions":"45496"},{"ruleId":"45357","severity":2,"message":"45358","line":163,"column":12,"nodeType":"45359","messageId":"45360","endLine":163,"endColumn":15,"suggestions":"45497"},{"ruleId":"45423","severity":2,"message":"45424","line":275,"column":1,"nodeType":"45425","messageId":"45426","endLine":282,"endColumn":2},{"ruleId":"45423","severity":2,"message":"45424","line":33,"column":1,"nodeType":"45425","messageId":"45426","endLine":40,"endColumn":2},{"ruleId":"45418","severity":2,"message":"45419","line":22,"column":1,"nodeType":"45420","messageId":"45421","endLine":22,"endColumn":65},{"ruleId":"45418","severity":2,"message":"45419","line":22,"column":1,"nodeType":"45420","messageId":"45421","endLine":22,"endColumn":65},{"ruleId":"45357","severity":2,"message":"45358","line":22,"column":47,"nodeType":"45359","messageId":"45360","endLine":22,"endColumn":50,"suggestions":"45498"},{"ruleId":"45357","severity":2,"message":"45358","line":86,"column":32,"nodeType":"45359","messageId":"45360","endLine":86,"endColumn":35,"suggestions":"45499"},{"ruleId":"45357","severity":2,"message":"45358","line":112,"column":23,"nodeType":"45359","messageId":"45360","endLine":112,"endColumn":26,"suggestions":"45500"},{"ruleId":"45357","severity":2,"message":"45358","line":140,"column":36,"nodeType":"45359","messageId":"45360","endLine":140,"endColumn":39,"suggestions":"45501"},{"ruleId":"45357","severity":2,"message":"45358","line":211,"column":39,"nodeType":"45359","messageId":"45360","endLine":211,"endColumn":42,"suggestions":"45502"},{"ruleId":"45357","severity":2,"message":"45358","line":222,"column":5,"nodeType":"45359","messageId":"45360","endLine":222,"endColumn":8,"suggestions":"45503"},{"ruleId":"45357","severity":2,"message":"45358","line":313,"column":27,"nodeType":"45359","messageId":"45360","endLine":313,"endColumn":30,"suggestions":"45504"},{"ruleId":"45357","severity":2,"message":"45358","line":315,"column":19,"nodeType":"45359","messageId":"45360","endLine":315,"endColumn":22,"suggestions":"45505"},{"ruleId":"45357","severity":2,"message":"45358","line":333,"column":32,"nodeType":"45359","messageId":"45360","endLine":333,"endColumn":35,"suggestions":"45506"},{"ruleId":"45357","severity":2,"message":"45358","line":384,"column":5,"nodeType":"45359","messageId":"45360","endLine":384,"endColumn":8,"suggestions":"45507"},{"ruleId":"45357","severity":2,"message":"45358","line":386,"column":15,"nodeType":"45359","messageId":"45360","endLine":386,"endColumn":18,"suggestions":"45508"},{"ruleId":"45357","severity":2,"message":"45358","line":437,"column":40,"nodeType":"45359","messageId":"45360","endLine":437,"endColumn":43,"suggestions":"45509"},{"ruleId":"45357","severity":2,"message":"45358","line":444,"column":40,"nodeType":"45359","messageId":"45360","endLine":444,"endColumn":43,"suggestions":"45510"},{"ruleId":"45357","severity":2,"message":"45358","line":500,"column":46,"nodeType":"45359","messageId":"45360","endLine":500,"endColumn":49,"suggestions":"45511"},{"ruleId":"45357","severity":2,"message":"45358","line":538,"column":39,"nodeType":"45359","messageId":"45360","endLine":538,"endColumn":42,"suggestions":"45512"},{"ruleId":"45357","severity":2,"message":"45358","line":587,"column":35,"nodeType":"45359","messageId":"45360","endLine":587,"endColumn":38,"suggestions":"45513"},{"ruleId":"45357","severity":2,"message":"45358","line":626,"column":31,"nodeType":"45359","messageId":"45360","endLine":626,"endColumn":34,"suggestions":"45514"},{"ruleId":"45357","severity":2,"message":"45358","line":684,"column":13,"nodeType":"45359","messageId":"45360","endLine":684,"endColumn":16,"suggestions":"45515"},{"ruleId":"45357","severity":2,"message":"45358","line":689,"column":34,"nodeType":"45359","messageId":"45360","endLine":689,"endColumn":37,"suggestions":"45516"},{"ruleId":"45357","severity":2,"message":"45358","line":767,"column":77,"nodeType":"45359","messageId":"45360","endLine":767,"endColumn":80,"suggestions":"45517"},{"ruleId":"45357","severity":2,"message":"45358","line":769,"column":16,"nodeType":"45359","messageId":"45360","endLine":769,"endColumn":19,"suggestions":"45518"},{"ruleId":"45357","severity":2,"message":"45358","line":796,"column":36,"nodeType":"45359","messageId":"45360","endLine":796,"endColumn":39,"suggestions":"45519"},{"ruleId":"45357","severity":2,"message":"45358","line":140,"column":66,"nodeType":"45359","messageId":"45360","endLine":140,"endColumn":69,"suggestions":"45520"},{"ruleId":"45357","severity":2,"message":"45358","line":38,"column":52,"nodeType":"45359","messageId":"45360","endLine":38,"endColumn":55,"suggestions":"45521","suppressions":"45522"},{"ruleId":"45357","severity":2,"message":"45358","line":58,"column":49,"nodeType":"45359","messageId":"45360","endLine":58,"endColumn":52,"suggestions":"45523","suppressions":"45524"},{"ruleId":"45357","severity":2,"message":"45358","line":69,"column":87,"nodeType":"45359","messageId":"45360","endLine":69,"endColumn":90,"suggestions":"45525","suppressions":"45526"},{"ruleId":"45357","severity":2,"message":"45358","line":79,"column":53,"nodeType":"45359","messageId":"45360","endLine":79,"endColumn":56,"suggestions":"45527","suppressions":"45528"},{"ruleId":"45357","severity":2,"message":"45358","line":8,"column":48,"nodeType":"45359","messageId":"45360","endLine":8,"endColumn":51,"suggestions":"45529"},{"ruleId":"45357","severity":2,"message":"45358","line":24,"column":43,"nodeType":"45359","messageId":"45360","endLine":24,"endColumn":46,"suggestions":"45530"},{"ruleId":"45357","severity":2,"message":"45358","line":77,"column":40,"nodeType":"45359","messageId":"45360","endLine":77,"endColumn":43,"suggestions":"45531"},{"ruleId":"45423","severity":2,"message":"45424","line":69,"column":1,"nodeType":"45425","messageId":"45426","endLine":76,"endColumn":2},{"ruleId":"45423","severity":2,"message":"45424","line":78,"column":1,"nodeType":"45425","messageId":"45426","endLine":85,"endColumn":2},{"ruleId":"45423","severity":2,"message":"45424","line":55,"column":1,"nodeType":"45425","messageId":"45426","endLine":62,"endColumn":2},{"ruleId":"45357","severity":2,"message":"45358","line":86,"column":21,"nodeType":"45359","messageId":"45360","endLine":86,"endColumn":24,"suggestions":"45532"},{"ruleId":"45357","severity":2,"message":"45358","line":149,"column":19,"nodeType":"45359","messageId":"45360","endLine":149,"endColumn":22,"suggestions":"45533"},{"ruleId":"45418","severity":2,"message":"45419","line":15,"column":1,"nodeType":"45420","messageId":"45421","endLine":15,"endColumn":76},{"ruleId":"45423","severity":2,"message":"45424","line":53,"column":1,"nodeType":"45425","messageId":"45426","endLine":61,"endColumn":2},{"ruleId":"45423","severity":2,"message":"45424","line":122,"column":1,"nodeType":"45425","messageId":"45426","endLine":129,"endColumn":2},{"ruleId":"45357","severity":2,"message":"45358","line":288,"column":19,"nodeType":"45359","messageId":"45360","endLine":288,"endColumn":22,"suggestions":"45534"},{"ruleId":"45357","severity":2,"message":"45358","line":299,"column":41,"nodeType":"45359","messageId":"45360","endLine":299,"endColumn":44,"suggestions":"45535"},{"ruleId":"45357","severity":2,"message":"45358","line":311,"column":38,"nodeType":"45359","messageId":"45360","endLine":311,"endColumn":41,"suggestions":"45536"},{"ruleId":"45357","severity":2,"message":"45358","line":373,"column":9,"nodeType":"45359","messageId":"45360","endLine":373,"endColumn":12,"suggestions":"45537"},{"ruleId":"45418","severity":2,"message":"45419","line":16,"column":1,"nodeType":"45420","messageId":"45421","endLine":23,"endColumn":24},{"ruleId":"45357","severity":2,"message":"45358","line":55,"column":32,"nodeType":"45359","messageId":"45360","endLine":55,"endColumn":35,"suggestions":"45538"},{"ruleId":"45357","severity":2,"message":"45358","line":150,"column":17,"nodeType":"45359","messageId":"45360","endLine":150,"endColumn":20,"suggestions":"45539"},{"ruleId":"45357","severity":2,"message":"45358","line":191,"column":19,"nodeType":"45359","messageId":"45360","endLine":191,"endColumn":22,"suggestions":"45540"},{"ruleId":"45423","severity":2,"message":"45424","line":17,"column":8,"nodeType":"45425","messageId":"45426","endLine":25,"endColumn":2},{"ruleId":"45423","severity":2,"message":"45424","line":68,"column":1,"nodeType":"45425","messageId":"45426","endLine":75,"endColumn":2},{"ruleId":"45418","severity":2,"message":"45419","line":13,"column":1,"nodeType":"45420","messageId":"45421","endLine":13,"endColumn":100},{"ruleId":"45357","severity":2,"message":"45358","line":6,"column":22,"nodeType":"45359","messageId":"45360","endLine":6,"endColumn":25,"suggestions":"45541"},{"ruleId":"45357","severity":2,"message":"45358","line":6,"column":62,"nodeType":"45359","messageId":"45360","endLine":6,"endColumn":65,"suggestions":"45542"},{"ruleId":"45357","severity":2,"message":"45358","line":21,"column":28,"nodeType":"45359","messageId":"45360","endLine":21,"endColumn":31,"suggestions":"45543"},{"ruleId":"45357","severity":2,"message":"45358","line":27,"column":8,"nodeType":"45359","messageId":"45360","endLine":27,"endColumn":11,"suggestions":"45544"},{"ruleId":"45357","severity":2,"message":"45358","line":32,"column":18,"nodeType":"45359","messageId":"45360","endLine":32,"endColumn":21,"suggestions":"45545"},{"ruleId":"45423","severity":2,"message":"45424","line":46,"column":1,"nodeType":"45425","messageId":"45426","endLine":53,"endColumn":2},{"ruleId":"45546","severity":2,"message":"45547","line":171,"column":6,"nodeType":"45548","endLine":171,"endColumn":59,"suggestions":"45549"},{"ruleId":"45546","severity":2,"message":"45550","line":262,"column":6,"nodeType":"45548","endLine":262,"endColumn":8,"suggestions":"45551","suppressions":"45552"},{"ruleId":"45553","severity":2,"message":"45554","line":23,"column":9,"nodeType":null,"endLine":23,"endColumn":21,"suppressions":"45555"},{"ruleId":"45553","severity":2,"message":"45556","line":32,"column":9,"nodeType":null,"endLine":32,"endColumn":21,"suppressions":"45557"},{"ruleId":"45546","severity":2,"message":"45558","line":50,"column":6,"nodeType":"45548","endLine":50,"endColumn":23,"suggestions":"45559","suppressions":"45560"},{"ruleId":"45423","severity":2,"message":"45561","line":335,"column":6,"nodeType":"45562","messageId":"45426","endLine":335,"endColumn":50,"suppressions":"45563"},{"ruleId":"45423","severity":2,"message":"45561","line":337,"column":7,"nodeType":"45562","messageId":"45426","endLine":337,"endColumn":52,"suppressions":"45564"},{"ruleId":"45423","severity":2,"message":"45561","line":339,"column":7,"nodeType":"45562","messageId":"45426","endLine":339,"endColumn":49,"suppressions":"45565"},{"ruleId":"45423","severity":2,"message":"45561","line":341,"column":7,"nodeType":"45562","messageId":"45426","endLine":341,"endColumn":51,"suppressions":"45566"},{"ruleId":"45423","severity":2,"message":"45561","line":343,"column":7,"nodeType":"45562","messageId":"45426","endLine":343,"endColumn":44,"suppressions":"45567"},{"ruleId":"45568","severity":2,"message":"45569","line":392,"column":13,"nodeType":"45570","endLine":396,"endColumn":15,"suppressions":"45571"},{"ruleId":"45546","severity":2,"message":"45572","line":490,"column":6,"nodeType":"45548","endLine":490,"endColumn":8,"suggestions":"45573","suppressions":"45574"},{"ruleId":"45423","severity":2,"message":"45561","line":40,"column":29,"nodeType":"45562","messageId":"45426","endLine":40,"endColumn":64},{"ruleId":"45423","severity":2,"message":"45561","line":41,"column":27,"nodeType":"45562","messageId":"45426","endLine":41,"endColumn":60},{"ruleId":"45423","severity":2,"message":"45561","line":42,"column":29,"nodeType":"45562","messageId":"45426","endLine":42,"endColumn":71},{"ruleId":"45423","severity":2,"message":"45561","line":43,"column":31,"nodeType":"45562","messageId":"45426","endLine":43,"endColumn":68},{"ruleId":"45546","severity":2,"message":"45575","line":65,"column":6,"nodeType":"45548","endLine":65,"endColumn":26,"suggestions":"45576"},{"ruleId":"45423","severity":2,"message":"45561","line":293,"column":23,"nodeType":"45562","messageId":"45426","endLine":293,"endColumn":62,"suppressions":"45577"},{"ruleId":"45553","severity":2,"message":"45578","line":97,"column":7,"nodeType":null,"endLine":97,"endColumn":23,"suppressions":"45579"},{"ruleId":"45568","severity":2,"message":"45569","line":111,"column":13,"nodeType":"45570","endLine":120,"endColumn":15,"suppressions":"45580"},{"ruleId":"45423","severity":2,"message":"45561","line":158,"column":14,"nodeType":"45562","messageId":"45426","endLine":158,"endColumn":82},{"ruleId":"45546","severity":2,"message":"45581","line":268,"column":6,"nodeType":"45548","endLine":268,"endColumn":27,"suggestions":"45582","suppressions":"45583"},{"ruleId":"45546","severity":2,"message":"45584","line":315,"column":6,"nodeType":"45548","endLine":315,"endColumn":38,"suggestions":"45585","suppressions":"45586"},{"ruleId":"45546","severity":2,"message":"45587","line":327,"column":6,"nodeType":"45548","endLine":327,"endColumn":30,"suggestions":"45588","suppressions":"45589"},{"ruleId":"45546","severity":2,"message":"45590","line":72,"column":6,"nodeType":"45548","endLine":72,"endColumn":40,"suggestions":"45591","suppressions":"45592"},{"ruleId":"45546","severity":2,"message":"45593","line":72,"column":7,"nodeType":"45562","endLine":72,"endColumn":39,"suppressions":"45594"},{"ruleId":"45546","severity":2,"message":"45595","line":122,"column":6,"nodeType":"45548","endLine":122,"endColumn":42,"suggestions":"45596","suppressions":"45597"},{"ruleId":"45546","severity":2,"message":"45598","line":134,"column":6,"nodeType":"45548","endLine":134,"endColumn":65,"suggestions":"45599","suppressions":"45600"},{"ruleId":"45546","severity":2,"message":"45593","line":134,"column":27,"nodeType":"45562","endLine":134,"endColumn":64,"suppressions":"45601"},{"ruleId":"45546","severity":2,"message":"45602","line":343,"column":9,"nodeType":"45481","endLine":350,"endColumn":4,"suggestions":"45603"},{"ruleId":"45568","severity":2,"message":"45569","line":161,"column":15,"nodeType":"45570","endLine":165,"endColumn":17,"suppressions":"45604"},{"ruleId":"45568","severity":2,"message":"45569","line":662,"column":25,"nodeType":"45570","endLine":666,"endColumn":27,"suppressions":"45605"},{"ruleId":"45546","severity":2,"message":"45606","line":165,"column":6,"nodeType":"45548","endLine":165,"endColumn":22,"suggestions":"45607","suppressions":"45608"},{"ruleId":"45546","severity":2,"message":"45609","line":62,"column":6,"nodeType":"45548","endLine":62,"endColumn":20,"suggestions":"45610","suppressions":"45611"},{"ruleId":"45546","severity":2,"message":"45612","line":73,"column":6,"nodeType":"45548","endLine":73,"endColumn":20,"suggestions":"45613","suppressions":"45614"},{"ruleId":"45423","severity":2,"message":"45561","line":36,"column":31,"nodeType":"45562","messageId":"45426","endLine":36,"endColumn":68,"suppressions":"45615"},{"ruleId":"45546","severity":2,"message":"45616","line":56,"column":6,"nodeType":"45548","endLine":56,"endColumn":8,"suggestions":"45617","suppressions":"45618"},{"ruleId":"45568","severity":2,"message":"45569","line":572,"column":19,"nodeType":"45570","endLine":579,"endColumn":21},{"ruleId":"45568","severity":2,"message":"45569","line":642,"column":19,"nodeType":"45570","endLine":646,"endColumn":21},{"ruleId":"45568","severity":2,"message":"45569","line":666,"column":19,"nodeType":"45570","endLine":673,"endColumn":21},{"ruleId":"45568","severity":2,"message":"45569","line":742,"column":19,"nodeType":"45570","endLine":746,"endColumn":21},{"ruleId":"45546","severity":2,"message":"45619","line":65,"column":6,"nodeType":"45548","endLine":65,"endColumn":8,"suggestions":"45620","suppressions":"45621"},{"ruleId":"45423","severity":2,"message":"45561","line":66,"column":9,"nodeType":"45562","messageId":"45426","endLine":66,"endColumn":52},{"ruleId":"45546","severity":2,"message":"45622","line":40,"column":6,"nodeType":"45548","endLine":40,"endColumn":8,"suggestions":"45623","suppressions":"45624"},{"ruleId":"45625","severity":2,"message":"45626","line":304,"column":15,"nodeType":"45570","endLine":311,"endColumn":16},{"ruleId":"45546","severity":2,"message":"45627","line":87,"column":5,"nodeType":"45548","endLine":87,"endColumn":18,"suggestions":"45628"},{"ruleId":"45546","severity":2,"message":"45629","line":73,"column":6,"nodeType":"45548","endLine":73,"endColumn":8,"suggestions":"45630"},{"ruleId":"45553","severity":2,"message":"45631","line":52,"column":16,"nodeType":null,"endLine":52,"endColumn":34,"suppressions":"45632"},{"ruleId":"45553","severity":2,"message":"45633","line":101,"column":5,"nodeType":null,"endLine":101,"endColumn":13,"suppressions":"45634"},{"ruleId":"45423","severity":2,"message":"45561","line":50,"column":10,"nodeType":"45562","messageId":"45426","endLine":50,"endColumn":47},{"ruleId":"45423","severity":2,"message":"45561","line":51,"column":10,"nodeType":"45562","messageId":"45426","endLine":51,"endColumn":45},{"ruleId":"45423","severity":2,"message":"45561","line":52,"column":35,"nodeType":"45562","messageId":"45426","endLine":52,"endColumn":62},{"ruleId":"45546","severity":2,"message":"45635","line":133,"column":6,"nodeType":"45548","endLine":133,"endColumn":8,"suggestions":"45636","suppressions":"45637"},{"ruleId":"45546","severity":2,"message":"45638","line":45,"column":6,"nodeType":"45548","endLine":45,"endColumn":8,"suggestions":"45639","suppressions":"45640"},{"ruleId":"45546","severity":2,"message":"45641","line":497,"column":6,"nodeType":"45548","endLine":497,"endColumn":8,"suggestions":"45642","suppressions":"45643"},{"ruleId":"45546","severity":2,"message":"45622","line":491,"column":6,"nodeType":"45548","endLine":491,"endColumn":8,"suggestions":"45644","suppressions":"45645"},{"ruleId":"45546","severity":2,"message":"45646","line":320,"column":5,"nodeType":"45548","endLine":320,"endColumn":46,"suggestions":"45647","suppressions":"45648"},{"ruleId":"45418","severity":2,"message":"45419","line":3,"column":1,"nodeType":"45420","messageId":"45421","endLine":3,"endColumn":45},{"ruleId":"45418","severity":2,"message":"45419","line":4,"column":1,"nodeType":"45420","messageId":"45421","endLine":4,"endColumn":51},{"ruleId":"45418","severity":2,"message":"45419","line":2,"column":1,"nodeType":"45420","messageId":"45421","endLine":2,"endColumn":67},{"ruleId":"45418","severity":2,"message":"45419","line":2,"column":1,"nodeType":"45420","messageId":"45421","endLine":2,"endColumn":51},{"ruleId":"45418","severity":2,"message":"45419","line":2,"column":1,"nodeType":"45420","messageId":"45421","endLine":2,"endColumn":42},{"ruleId":"45418","severity":2,"message":"45419","line":2,"column":1,"nodeType":"45420","messageId":"45421","endLine":2,"endColumn":45},{"ruleId":"45418","severity":2,"message":"45419","line":11,"column":1,"nodeType":"45420","messageId":"45421","endLine":11,"endColumn":51},{"ruleId":"45418","severity":2,"message":"45419","line":4,"column":1,"nodeType":"45420","messageId":"45421","endLine":4,"endColumn":51},{"ruleId":"45418","severity":2,"message":"45419","line":17,"column":1,"nodeType":"45420","messageId":"45421","endLine":17,"endColumn":47},{"ruleId":"45418","severity":2,"message":"45419","line":16,"column":1,"nodeType":"45420","messageId":"45421","endLine":16,"endColumn":47},{"ruleId":"45423","severity":2,"message":"45561","line":140,"column":9,"nodeType":"45562","messageId":"45426","endLine":142,"endColumn":36,"suppressions":"45649"},{"ruleId":"45418","severity":2,"message":"45419","line":3,"column":1,"nodeType":"45420","messageId":"45421","endLine":3,"endColumn":44},{"ruleId":"45418","severity":2,"message":"45419","line":2,"column":1,"nodeType":"45420","messageId":"45421","endLine":9,"endColumn":24},{"ruleId":"45418","severity":2,"message":"45419","line":2,"column":1,"nodeType":"45420","messageId":"45421","endLine":2,"endColumn":63},{"ruleId":"45418","severity":2,"message":"45419","line":2,"column":1,"nodeType":"45420","messageId":"45421","endLine":8,"endColumn":24},{"ruleId":"45418","severity":2,"message":"45419","line":4,"column":1,"nodeType":"45420","messageId":"45421","endLine":4,"endColumn":85},{"ruleId":"45418","severity":2,"message":"45650","line":6,"column":1,"nodeType":"45420","messageId":"45421","endLine":6,"endColumn":79},{"ruleId":"45418","severity":2,"message":"45419","line":2,"column":1,"nodeType":"45420","messageId":"45421","endLine":11,"endColumn":24},{"ruleId":"45418","severity":2,"message":"45419","line":3,"column":1,"nodeType":"45420","messageId":"45421","endLine":3,"endColumn":76},{"ruleId":"45418","severity":2,"message":"45419","line":2,"column":1,"nodeType":"45420","messageId":"45421","endLine":2,"endColumn":96},{"ruleId":"45418","severity":2,"message":"45419","line":2,"column":1,"nodeType":"45420","messageId":"45421","endLine":2,"endColumn":53},{"ruleId":"45418","severity":2,"message":"45419","line":2,"column":1,"nodeType":"45420","messageId":"45421","endLine":2,"endColumn":57},{"ruleId":"45418","severity":2,"message":"45419","line":2,"column":1,"nodeType":"45420","messageId":"45421","endLine":2,"endColumn":43},{"ruleId":"45418","severity":2,"message":"45651","line":4,"column":1,"nodeType":"45420","messageId":"45421","endLine":4,"endColumn":72},{"ruleId":"45418","severity":2,"message":"45419","line":2,"column":1,"nodeType":"45420","messageId":"45421","endLine":2,"endColumn":50},{"ruleId":"45418","severity":2,"message":"45419","line":2,"column":1,"nodeType":"45420","messageId":"45421","endLine":2,"endColumn":47},{"ruleId":"45418","severity":2,"message":"45419","line":2,"column":1,"nodeType":"45420","messageId":"45421","endLine":7,"endColumn":24},{"ruleId":"45418","severity":2,"message":"45419","line":3,"column":1,"nodeType":"45420","messageId":"45421","endLine":3,"endColumn":97},{"ruleId":"45418","severity":2,"message":"45419","line":3,"column":1,"nodeType":"45420","messageId":"45421","endLine":8,"endColumn":24},{"ruleId":"45418","severity":2,"message":"45419","line":3,"column":1,"nodeType":"45420","messageId":"45421","endLine":12,"endColumn":24},{"ruleId":"45418","severity":2,"message":"45419","line":3,"column":1,"nodeType":"45420","messageId":"45421","endLine":3,"endColumn":78},{"ruleId":"45418","severity":2,"message":"45419","line":2,"column":1,"nodeType":"45420","messageId":"45421","endLine":8,"endColumn":24},{"ruleId":"45418","severity":2,"message":"45419","line":6,"column":1,"nodeType":"45420","messageId":"45421","endLine":6,"endColumn":60},{"ruleId":"45418","severity":2,"message":"45419","line":3,"column":1,"nodeType":"45420","messageId":"45421","endLine":8,"endColumn":24},{"ruleId":"45418","severity":2,"message":"45419","line":3,"column":1,"nodeType":"45420","messageId":"45421","endLine":8,"endColumn":24},{"ruleId":"45418","severity":2,"message":"45419","line":10,"column":1,"nodeType":"45420","messageId":"45421","endLine":14,"endColumn":24},{"ruleId":"45418","severity":2,"message":"45419","line":10,"column":1,"nodeType":"45420","messageId":"45421","endLine":10,"endColumn":80},{"ruleId":"45418","severity":2,"message":"45419","line":17,"column":1,"nodeType":"45420","messageId":"45421","endLine":17,"endColumn":50},{"ruleId":"45418","severity":2,"message":"45419","line":2,"column":1,"nodeType":"45420","messageId":"45421","endLine":2,"endColumn":75},{"ruleId":"45418","severity":2,"message":"45419","line":3,"column":1,"nodeType":"45420","messageId":"45421","endLine":3,"endColumn":93},{"ruleId":"45418","severity":2,"message":"45419","line":3,"column":1,"nodeType":"45420","messageId":"45421","endLine":9,"endColumn":24},{"ruleId":"45418","severity":2,"message":"45419","line":1,"column":1,"nodeType":"45420","messageId":"45421","endLine":14,"endColumn":24},{"ruleId":"45418","severity":2,"message":"45419","line":10,"column":1,"nodeType":"45420","messageId":"45421","endLine":10,"endColumn":91},{"ruleId":"45418","severity":2,"message":"45652","line":23,"column":1,"nodeType":"45420","messageId":"45421","endLine":23,"endColumn":76},{"ruleId":"45418","severity":2,"message":"45419","line":14,"column":1,"nodeType":"45420","messageId":"45421","endLine":19,"endColumn":24},{"ruleId":"45418","severity":2,"message":"45419","line":2,"column":1,"nodeType":"45420","messageId":"45421","endLine":2,"endColumn":65},{"ruleId":"45418","severity":2,"message":"45419","line":7,"column":1,"nodeType":"45420","messageId":"45421","endLine":12,"endColumn":24},{"ruleId":"45418","severity":2,"message":"45419","line":2,"column":1,"nodeType":"45420","messageId":"45421","endLine":2,"endColumn":65},{"ruleId":"45418","severity":2,"message":"45419","line":4,"column":1,"nodeType":"45420","messageId":"45421","endLine":9,"endColumn":24},{"ruleId":"45418","severity":2,"message":"45419","line":31,"column":1,"nodeType":"45420","messageId":"45421","endLine":31,"endColumn":75},{"ruleId":"45418","severity":2,"message":"45419","line":2,"column":1,"nodeType":"45420","messageId":"45421","endLine":2,"endColumn":56},{"ruleId":"45418","severity":2,"message":"45419","line":7,"column":1,"nodeType":"45420","messageId":"45421","endLine":7,"endColumn":65},{"ruleId":"45418","severity":2,"message":"45419","line":27,"column":1,"nodeType":"45420","messageId":"45421","endLine":27,"endColumn":75},{"ruleId":"45418","severity":2,"message":"45419","line":3,"column":1,"nodeType":"45420","messageId":"45421","endLine":3,"endColumn":51},{"ruleId":"45418","severity":2,"message":"45419","line":11,"column":1,"nodeType":"45420","messageId":"45421","endLine":11,"endColumn":75},{"ruleId":"45418","severity":2,"message":"45419","line":25,"column":1,"nodeType":"45420","messageId":"45421","endLine":25,"endColumn":85},{"ruleId":"45418","severity":2,"message":"45419","line":18,"column":1,"nodeType":"45420","messageId":"45421","endLine":18,"endColumn":57},{"ruleId":"45418","severity":2,"message":"45419","line":22,"column":1,"nodeType":"45420","messageId":"45421","endLine":22,"endColumn":58},{"ruleId":"45418","severity":2,"message":"45419","line":22,"column":1,"nodeType":"45420","messageId":"45421","endLine":26,"endColumn":24},{"ruleId":"45418","severity":2,"message":"45419","line":20,"column":1,"nodeType":"45420","messageId":"45421","endLine":20,"endColumn":51},{"ruleId":"45418","severity":2,"message":"45419","line":18,"column":1,"nodeType":"45420","messageId":"45421","endLine":18,"endColumn":65},{"ruleId":"45418","severity":2,"message":"45419","line":16,"column":1,"nodeType":"45420","messageId":"45421","endLine":16,"endColumn":41},{"ruleId":"45418","severity":2,"message":"45419","line":19,"column":1,"nodeType":"45420","messageId":"45421","endLine":19,"endColumn":55},{"ruleId":"45418","severity":2,"message":"45419","line":28,"column":1,"nodeType":"45420","messageId":"45421","endLine":28,"endColumn":41},{"ruleId":"45418","severity":2,"message":"45419","line":4,"column":1,"nodeType":"45420","messageId":"45421","endLine":4,"endColumn":82},{"ruleId":"45418","severity":2,"message":"45419","line":2,"column":1,"nodeType":"45420","messageId":"45421","endLine":2,"endColumn":80},{"ruleId":"45423","severity":2,"message":"45561","line":95,"column":33,"nodeType":"45562","messageId":"45426","endLine":95,"endColumn":78},{"ruleId":"45418","severity":2,"message":"45653","line":22,"column":1,"nodeType":"45420","messageId":"45421","endLine":22,"endColumn":71},{"ruleId":"45418","severity":2,"message":"45653","line":14,"column":1,"nodeType":"45420","messageId":"45421","endLine":14,"endColumn":71},{"ruleId":"45418","severity":2,"message":"45419","line":2,"column":1,"nodeType":"45420","messageId":"45421","endLine":2,"endColumn":45},{"ruleId":"45418","severity":2,"message":"45419","line":2,"column":1,"nodeType":"45420","messageId":"45421","endLine":2,"endColumn":61},{"ruleId":"45418","severity":2,"message":"45419","line":2,"column":1,"nodeType":"45420","messageId":"45421","endLine":2,"endColumn":61},{"ruleId":"45418","severity":2,"message":"45419","line":2,"column":1,"nodeType":"45420","messageId":"45421","endLine":8,"endColumn":24},{"ruleId":"45418","severity":2,"message":"45419","line":4,"column":1,"nodeType":"45420","messageId":"45421","endLine":4,"endColumn":74},{"ruleId":"45418","severity":2,"message":"45419","line":6,"column":1,"nodeType":"45420","messageId":"45421","endLine":6,"endColumn":74},{"ruleId":"45418","severity":2,"message":"45419","line":5,"column":1,"nodeType":"45420","messageId":"45421","endLine":12,"endColumn":24},{"ruleId":"45418","severity":2,"message":"45419","line":3,"column":1,"nodeType":"45420","messageId":"45421","endLine":3,"endColumn":51},{"ruleId":"45418","severity":2,"message":"45419","line":2,"column":1,"nodeType":"45420","messageId":"45421","endLine":2,"endColumn":61},{"ruleId":"45418","severity":2,"message":"45419","line":2,"column":1,"nodeType":"45420","messageId":"45421","endLine":2,"endColumn":48},{"ruleId":"45418","severity":2,"message":"45419","line":4,"column":1,"nodeType":"45420","messageId":"45421","endLine":4,"endColumn":59},{"ruleId":"45418","severity":2,"message":"45419","line":1,"column":1,"nodeType":"45420","messageId":"45421","endLine":1,"endColumn":100},{"ruleId":"45418","severity":2,"message":"45419","line":2,"column":1,"nodeType":"45420","messageId":"45421","endLine":2,"endColumn":75},{"ruleId":"45418","severity":2,"message":"45419","line":2,"column":1,"nodeType":"45420","messageId":"45421","endLine":2,"endColumn":45},{"ruleId":"45418","severity":2,"message":"45419","line":2,"column":1,"nodeType":"45420","messageId":"45421","endLine":2,"endColumn":49},{"ruleId":"45418","severity":2,"message":"45419","line":1,"column":1,"nodeType":"45420","messageId":"45421","endLine":1,"endColumn":56},{"ruleId":"45418","severity":2,"message":"45419","line":1,"column":1,"nodeType":"45420","messageId":"45421","endLine":1,"endColumn":45},{"ruleId":"45418","severity":2,"message":"45419","line":1,"column":1,"nodeType":"45420","messageId":"45421","endLine":1,"endColumn":53},{"ruleId":"45418","severity":2,"message":"45419","line":1,"column":1,"nodeType":"45420","messageId":"45421","endLine":1,"endColumn":68},{"ruleId":"45418","severity":2,"message":"45419","line":1,"column":1,"nodeType":"45420","messageId":"45421","endLine":7,"endColumn":24},{"ruleId":"45418","severity":2,"message":"45419","line":1,"column":1,"nodeType":"45420","messageId":"45421","endLine":1,"endColumn":45},{"ruleId":"45418","severity":2,"message":"45419","line":6,"column":1,"nodeType":"45420","messageId":"45421","endLine":6,"endColumn":45},{"ruleId":"45418","severity":2,"message":"45419","line":6,"column":1,"nodeType":"45420","messageId":"45421","endLine":6,"endColumn":45},{"ruleId":"45418","severity":2,"message":"45653","line":1,"column":1,"nodeType":"45420","messageId":"45421","endLine":9,"endColumn":34},{"ruleId":"45418","severity":2,"message":"45419","line":12,"column":1,"nodeType":"45420","messageId":"45421","endLine":12,"endColumn":46},{"ruleId":"45418","severity":2,"message":"45419","line":6,"column":1,"nodeType":"45420","messageId":"45421","endLine":6,"endColumn":45},{"ruleId":"45418","severity":2,"message":"45419","line":6,"column":1,"nodeType":"45420","messageId":"45421","endLine":6,"endColumn":61},{"ruleId":"45418","severity":2,"message":"45419","line":26,"column":1,"nodeType":"45420","messageId":"45421","endLine":26,"endColumn":61},{"ruleId":"45418","severity":2,"message":"45419","line":4,"column":1,"nodeType":"45420","messageId":"45421","endLine":4,"endColumn":61},{"ruleId":"45418","severity":2,"message":"45419","line":2,"column":1,"nodeType":"45420","messageId":"45421","endLine":2,"endColumn":82},{"ruleId":"45418","severity":2,"message":"45654","line":15,"column":1,"nodeType":"45420","messageId":"45421","endLine":15,"endColumn":89},{"ruleId":"45418","severity":2,"message":"45419","line":6,"column":1,"nodeType":"45420","messageId":"45421","endLine":6,"endColumn":48},{"ruleId":"45418","severity":2,"message":"45419","line":2,"column":1,"nodeType":"45420","messageId":"45421","endLine":2,"endColumn":61},{"ruleId":"45418","severity":2,"message":"45419","line":30,"column":1,"nodeType":"45420","messageId":"45421","endLine":30,"endColumn":67},{"ruleId":"45418","severity":2,"message":"45419","line":2,"column":1,"nodeType":"45420","messageId":"45421","endLine":2,"endColumn":100},{"ruleId":"45418","severity":2,"message":"45419","line":8,"column":1,"nodeType":"45420","messageId":"45421","endLine":8,"endColumn":56},{"ruleId":"45418","severity":2,"message":"45419","line":21,"column":1,"nodeType":"45420","messageId":"45421","endLine":21,"endColumn":58},{"ruleId":"45418","severity":2,"message":"45419","line":8,"column":1,"nodeType":"45420","messageId":"45421","endLine":8,"endColumn":56},{"ruleId":"45418","severity":2,"message":"45419","line":10,"column":1,"nodeType":"45420","messageId":"45421","endLine":10,"endColumn":56},{"ruleId":"45418","severity":2,"message":"45419","line":5,"column":1,"nodeType":"45420","messageId":"45421","endLine":5,"endColumn":56},{"ruleId":"45418","severity":2,"message":"45419","line":2,"column":1,"nodeType":"45420","messageId":"45421","endLine":2,"endColumn":56},{"ruleId":"45418","severity":2,"message":"45419","line":16,"column":1,"nodeType":"45420","messageId":"45421","endLine":22,"endColumn":24},{"ruleId":"45418","severity":2,"message":"45419","line":1,"column":1,"nodeType":"45420","messageId":"45421","endLine":1,"endColumn":51},{"ruleId":"45418","severity":2,"message":"45419","line":22,"column":1,"nodeType":"45420","messageId":"45421","endLine":22,"endColumn":80},{"ruleId":"45418","severity":2,"message":"45419","line":2,"column":1,"nodeType":"45420","messageId":"45421","endLine":2,"endColumn":55},{"ruleId":"45418","severity":2,"message":"45419","line":2,"column":1,"nodeType":"45420","messageId":"45421","endLine":2,"endColumn":55},{"ruleId":"45418","severity":2,"message":"45419","line":2,"column":1,"nodeType":"45420","messageId":"45421","endLine":2,"endColumn":56},{"ruleId":"45418","severity":2,"message":"45419","line":2,"column":1,"nodeType":"45420","messageId":"45421","endLine":2,"endColumn":81},{"ruleId":"45418","severity":2,"message":"45419","line":11,"column":1,"nodeType":"45420","messageId":"45421","endLine":11,"endColumn":43},{"ruleId":"45418","severity":2,"message":"45419","line":2,"column":1,"nodeType":"45420","messageId":"45421","endLine":2,"endColumn":57},{"ruleId":"45418","severity":2,"message":"45419","line":2,"column":1,"nodeType":"45420","messageId":"45421","endLine":2,"endColumn":73},{"ruleId":"45418","severity":2,"message":"45419","line":2,"column":1,"nodeType":"45420","messageId":"45421","endLine":2,"endColumn":87},{"ruleId":"45418","severity":2,"message":"45419","line":27,"column":1,"nodeType":"45420","messageId":"45421","endLine":27,"endColumn":59},{"ruleId":"45418","severity":2,"message":"45655","line":29,"column":1,"nodeType":"45420","messageId":"45421","endLine":29,"endColumn":80},{"ruleId":"45418","severity":2,"message":"45419","line":1,"column":1,"nodeType":"45420","messageId":"45421","endLine":1,"endColumn":100},{"ruleId":"45418","severity":2,"message":"45419","line":1,"column":1,"nodeType":"45420","messageId":"45421","endLine":1,"endColumn":56},{"ruleId":"45418","severity":2,"message":"45419","line":1,"column":1,"nodeType":"45420","messageId":"45421","endLine":1,"endColumn":53},{"ruleId":"45418","severity":2,"message":"45419","line":1,"column":1,"nodeType":"45420","messageId":"45421","endLine":1,"endColumn":45},{"ruleId":"45418","severity":2,"message":"45656","line":5,"column":1,"nodeType":"45420","messageId":"45421","endLine":5,"endColumn":70},{"ruleId":"45418","severity":2,"message":"45419","line":3,"column":1,"nodeType":"45420","messageId":"45421","endLine":12,"endColumn":24},{"ruleId":"45423","severity":2,"message":"45561","line":440,"column":17,"nodeType":"45562","messageId":"45426","endLine":440,"endColumn":54,"suppressions":"45657"},{"ruleId":"45418","severity":2,"message":"45419","line":13,"column":1,"nodeType":"45420","messageId":"45421","endLine":13,"endColumn":56},{"ruleId":"45423","severity":2,"message":"45561","line":131,"column":49,"nodeType":"45562","messageId":"45426","endLine":131,"endColumn":117},{"ruleId":"45418","severity":2,"message":"45419","line":8,"column":1,"nodeType":"45420","messageId":"45421","endLine":8,"endColumn":56},{"ruleId":"45418","severity":2,"message":"45419","line":8,"column":1,"nodeType":"45420","messageId":"45421","endLine":8,"endColumn":59},{"ruleId":"45418","severity":2,"message":"45419","line":11,"column":1,"nodeType":"45420","messageId":"45421","endLine":11,"endColumn":80},{"ruleId":"45418","severity":2,"message":"45419","line":8,"column":1,"nodeType":"45420","messageId":"45421","endLine":8,"endColumn":44},{"ruleId":"45418","severity":2,"message":"45419","line":15,"column":1,"nodeType":"45420","messageId":"45421","endLine":15,"endColumn":55},{"ruleId":"45418","severity":2,"message":"45419","line":10,"column":1,"nodeType":"45420","messageId":"45421","endLine":10,"endColumn":60},{"ruleId":"45423","severity":2,"message":"45424","line":100,"column":1,"nodeType":"45425","messageId":"45426","endLine":107,"endColumn":2},{"ruleId":"45418","severity":2,"message":"45419","line":20,"column":1,"nodeType":"45420","messageId":"45421","endLine":20,"endColumn":92},{"ruleId":"45546","severity":2,"message":"45658","line":274,"column":6,"nodeType":"45548","endLine":274,"endColumn":94,"suggestions":"45659"},{"ruleId":"45546","severity":2,"message":"45660","line":274,"column":31,"nodeType":"45562","endLine":274,"endColumn":49},{"ruleId":"45423","severity":2,"message":"45424","line":39,"column":1,"nodeType":"45425","messageId":"45426","endLine":41,"endColumn":2},{"ruleId":"45418","severity":2,"message":"45419","line":11,"column":1,"nodeType":"45420","messageId":"45421","endLine":11,"endColumn":49},{"ruleId":"45418","severity":2,"message":"45419","line":1,"column":1,"nodeType":"45420","messageId":"45421","endLine":9,"endColumn":24},{"ruleId":"45418","severity":2,"message":"45419","line":2,"column":1,"nodeType":"45420","messageId":"45421","endLine":2,"endColumn":82},{"ruleId":"45418","severity":2,"message":"45419","line":1,"column":1,"nodeType":"45420","messageId":"45421","endLine":9,"endColumn":24},{"ruleId":"45423","severity":2,"message":"45424","line":101,"column":1,"nodeType":"45425","messageId":"45426","endLine":103,"endColumn":2},{"ruleId":"45418","severity":2,"message":"45661","line":26,"column":1,"nodeType":"45420","messageId":"45421","endLine":26,"endColumn":44},{"ruleId":"45418","severity":2,"message":"45419","line":20,"column":1,"nodeType":"45420","messageId":"45421","endLine":20,"endColumn":56},{"ruleId":"45423","severity":2,"message":"45424","line":43,"column":1,"nodeType":"45425","messageId":"45426","endLine":45,"endColumn":2},{"ruleId":"45423","severity":2,"message":"45424","line":65,"column":1,"nodeType":"45425","messageId":"45426","endLine":72,"endColumn":2},{"ruleId":"45423","severity":2,"message":"45424","line":45,"column":1,"nodeType":"45425","messageId":"45426","endLine":53,"endColumn":2},{"ruleId":"45423","severity":2,"message":"45424","line":26,"column":1,"nodeType":"45425","messageId":"45426","endLine":33,"endColumn":2},{"ruleId":"45423","severity":2,"message":"45424","line":59,"column":1,"nodeType":"45425","messageId":"45426","endLine":66,"endColumn":2},{"ruleId":"45418","severity":2,"message":"45419","line":14,"column":1,"nodeType":"45420","messageId":"45421","endLine":19,"endColumn":24},{"ruleId":"45418","severity":2,"message":"45419","line":4,"column":1,"nodeType":"45420","messageId":"45421","endLine":4,"endColumn":58},{"ruleId":"45418","severity":2,"message":"45419","line":25,"column":1,"nodeType":"45420","messageId":"45421","endLine":25,"endColumn":51},{"ruleId":"45418","severity":2,"message":"45419","line":2,"column":1,"nodeType":"45420","messageId":"45421","endLine":6,"endColumn":24},{"ruleId":"45418","severity":2,"message":"45419","line":13,"column":1,"nodeType":"45420","messageId":"45421","endLine":13,"endColumn":45},{"ruleId":"45418","severity":2,"message":"45419","line":21,"column":1,"nodeType":"45420","messageId":"45421","endLine":21,"endColumn":56},{"ruleId":"45418","severity":2,"message":"45419","line":14,"column":1,"nodeType":"45420","messageId":"45421","endLine":14,"endColumn":56},{"ruleId":"45418","severity":2,"message":"45419","line":8,"column":1,"nodeType":"45420","messageId":"45421","endLine":8,"endColumn":56},{"ruleId":"45418","severity":2,"message":"45419","line":6,"column":1,"nodeType":"45420","messageId":"45421","endLine":10,"endColumn":24},{"ruleId":"45418","severity":2,"message":"45419","line":13,"column":1,"nodeType":"45420","messageId":"45421","endLine":13,"endColumn":56},{"ruleId":"45418","severity":2,"message":"45662","line":12,"column":1,"nodeType":"45420","messageId":"45421","endLine":17,"endColumn":21},{"ruleId":"45418","severity":2,"message":"45419","line":7,"column":1,"nodeType":"45420","messageId":"45421","endLine":7,"endColumn":65},{"ruleId":"45423","severity":2,"message":"45424","line":116,"column":1,"nodeType":"45425","messageId":"45426","endLine":123,"endColumn":2},{"ruleId":"45423","severity":2,"message":"45424","line":136,"column":1,"nodeType":"45425","messageId":"45426","endLine":143,"endColumn":2},{"ruleId":"45418","severity":2,"message":"45419","line":1,"column":1,"nodeType":"45420","messageId":"45421","endLine":5,"endColumn":24},{"ruleId":"45418","severity":2,"message":"45419","line":3,"column":1,"nodeType":"45420","messageId":"45421","endLine":3,"endColumn":65},{"ruleId":"45418","severity":2,"message":"45419","line":1,"column":1,"nodeType":"45420","messageId":"45421","endLine":5,"endColumn":24},{"ruleId":"45418","severity":2,"message":"45419","line":3,"column":1,"nodeType":"45420","messageId":"45421","endLine":3,"endColumn":65},{"ruleId":"45418","severity":2,"message":"45419","line":1,"column":1,"nodeType":"45420","messageId":"45421","endLine":5,"endColumn":24},{"ruleId":"45418","severity":2,"message":"45419","line":1,"column":1,"nodeType":"45420","messageId":"45421","endLine":7,"endColumn":24},{"ruleId":"45418","severity":2,"message":"45419","line":14,"column":1,"nodeType":"45420","messageId":"45421","endLine":14,"endColumn":75},{"ruleId":"45418","severity":2,"message":"45419","line":15,"column":1,"nodeType":"45420","messageId":"45421","endLine":15,"endColumn":49},{"ruleId":"45418","severity":2,"message":"45419","line":15,"column":1,"nodeType":"45420","messageId":"45421","endLine":15,"endColumn":65},{"ruleId":"45418","severity":2,"message":"45419","line":11,"column":1,"nodeType":"45420","messageId":"45421","endLine":11,"endColumn":65},{"ruleId":"45418","severity":2,"message":"45419","line":19,"column":1,"nodeType":"45420","messageId":"45421","endLine":22,"endColumn":24},{"ruleId":"45418","severity":2,"message":"45419","line":18,"column":1,"nodeType":"45420","messageId":"45421","endLine":18,"endColumn":96},{"ruleId":"45423","severity":2,"message":"45424","line":25,"column":1,"nodeType":"45425","messageId":"45426","endLine":32,"endColumn":2},{"ruleId":"45418","severity":2,"message":"45419","line":27,"column":1,"nodeType":"45420","messageId":"45421","endLine":27,"endColumn":95},{"ruleId":"45418","severity":2,"message":"45419","line":2,"column":1,"nodeType":"45420","messageId":"45421","endLine":10,"endColumn":24},{"ruleId":"45418","severity":2,"message":"45419","line":14,"column":1,"nodeType":"45420","messageId":"45421","endLine":20,"endColumn":24},{"ruleId":"45418","severity":2,"message":"45419","line":13,"column":1,"nodeType":"45420","messageId":"45421","endLine":13,"endColumn":85},{"ruleId":"45423","severity":2,"message":"45424","line":72,"column":1,"nodeType":"45425","messageId":"45426","endLine":80,"endColumn":2},{"ruleId":"45423","severity":2,"message":"45424","line":66,"column":1,"nodeType":"45425","messageId":"45426","endLine":73,"endColumn":2},{"ruleId":"45418","severity":2,"message":"45419","line":1,"column":1,"nodeType":"45420","messageId":"45421","endLine":1,"endColumn":86},{"ruleId":"45423","severity":2,"message":"45424","line":68,"column":1,"nodeType":"45425","messageId":"45426","endLine":75,"endColumn":2},{"ruleId":"45423","severity":2,"message":"45424","line":158,"column":1,"nodeType":"45425","messageId":"45426","endLine":165,"endColumn":2},{"ruleId":"45423","severity":2,"message":"45424","line":123,"column":1,"nodeType":"45425","messageId":"45426","endLine":130,"endColumn":2},{"ruleId":"45423","severity":2,"message":"45424","line":201,"column":1,"nodeType":"45425","messageId":"45426","endLine":203,"endColumn":2},{"ruleId":"45418","severity":2,"message":"45419","line":2,"column":1,"nodeType":"45420","messageId":"45421","endLine":2,"endColumn":45},{"ruleId":"45418","severity":2,"message":"45419","line":2,"column":1,"nodeType":"45663","messageId":"45421","endLine":31,"endColumn":24},{"ruleId":"45546","severity":2,"message":"45629","line":62,"column":6,"nodeType":"45548","endLine":62,"endColumn":14,"suggestions":"45664"},{"ruleId":"45568","severity":2,"message":"45569","line":26,"column":5,"nodeType":"45570","endLine":31,"endColumn":7},{"ruleId":"45546","severity":2,"message":"45665","line":40,"column":6,"nodeType":"45548","endLine":40,"endColumn":8,"suggestions":"45666","suppressions":"45667"},{"ruleId":"45546","severity":2,"message":"45668","line":244,"column":6,"nodeType":"45548","endLine":244,"endColumn":31,"suggestions":"45669","suppressions":"45670"},{"ruleId":"45568","severity":2,"message":"45569","line":360,"column":9,"nodeType":"45570","endLine":367,"endColumn":11,"suppressions":"45671"},{"ruleId":"45568","severity":2,"message":"45569","line":479,"column":9,"nodeType":"45570","endLine":486,"endColumn":11,"suppressions":"45672"},{"ruleId":"45546","severity":2,"message":"45673","line":285,"column":6,"nodeType":"45548","endLine":285,"endColumn":30,"suggestions":"45674"},{"ruleId":"45546","severity":2,"message":"45675","line":163,"column":8,"nodeType":"45548","endLine":163,"endColumn":10,"suggestions":"45676"},{"ruleId":"45546","severity":2,"message":"45675","line":172,"column":7,"nodeType":"45548","endLine":172,"endColumn":15,"suggestions":"45677"},{"ruleId":"45546","severity":2,"message":"45678","line":529,"column":11,"nodeType":"45481","endLine":609,"endColumn":6,"suggestions":"45679"},{"ruleId":"45546","severity":2,"message":"45680","line":648,"column":8,"nodeType":"45548","endLine":648,"endColumn":27,"suggestions":"45681"},{"ruleId":"45546","severity":2,"message":"45682","line":754,"column":8,"nodeType":"45548","endLine":754,"endColumn":43,"suggestions":"45683"},{"ruleId":"45546","severity":2,"message":"45682","line":769,"column":8,"nodeType":"45548","endLine":769,"endColumn":43,"suggestions":"45684"},{"ruleId":"45568","severity":2,"message":"45569","line":506,"column":17,"nodeType":"45570","endLine":510,"endColumn":19},{"ruleId":"45546","severity":2,"message":"45685","line":304,"column":6,"nodeType":"45548","endLine":304,"endColumn":69,"suggestions":"45686","suppressions":"45687"},{"ruleId":"45423","severity":2,"message":"45424","line":30,"column":1,"nodeType":"45425","messageId":"45426","endLine":37,"endColumn":2},{"ruleId":"45418","severity":2,"message":"45419","line":1,"column":1,"nodeType":"45420","messageId":"45421","endLine":1,"endColumn":61},{"ruleId":"45418","severity":2,"message":"45419","line":2,"column":1,"nodeType":"45420","messageId":"45421","endLine":2,"endColumn":48},{"ruleId":"45418","severity":2,"message":"45419","line":2,"column":1,"nodeType":"45420","messageId":"45421","endLine":2,"endColumn":76},{"ruleId":"45418","severity":2,"message":"45419","line":13,"column":1,"nodeType":"45420","messageId":"45421","endLine":13,"endColumn":61},{"ruleId":"45418","severity":2,"message":"45419","line":12,"column":1,"nodeType":"45420","messageId":"45421","endLine":12,"endColumn":45},{"ruleId":"45418","severity":2,"message":"45419","line":12,"column":1,"nodeType":"45420","messageId":"45421","endLine":17,"endColumn":24},{"ruleId":"45418","severity":2,"message":"45419","line":17,"column":1,"nodeType":"45420","messageId":"45421","endLine":17,"endColumn":51},{"ruleId":"45418","severity":2,"message":"45419","line":54,"column":1,"nodeType":"45420","messageId":"45421","endLine":61,"endColumn":24},{"ruleId":"45418","severity":2,"message":"45419","line":34,"column":1,"nodeType":"45420","messageId":"45421","endLine":34,"endColumn":59},{"ruleId":"45418","severity":2,"message":"45419","line":3,"column":1,"nodeType":"45420","messageId":"45421","endLine":14,"endColumn":24},{"ruleId":"45423","severity":2,"message":"45424","line":128,"column":1,"nodeType":"45425","messageId":"45426","endLine":135,"endColumn":2},{"ruleId":"45418","severity":2,"message":"45419","line":2,"column":1,"nodeType":"45420","messageId":"45421","endLine":9,"endColumn":24},{"ruleId":"45418","severity":2,"message":"45419","line":10,"column":1,"nodeType":"45420","messageId":"45421","endLine":10,"endColumn":51},{"ruleId":"45418","severity":2,"message":"45419","line":1,"column":1,"nodeType":"45420","messageId":"45421","endLine":1,"endColumn":45},{"ruleId":"45418","severity":2,"message":"45419","line":3,"column":1,"nodeType":"45420","messageId":"45421","endLine":7,"endColumn":24},{"ruleId":"45357","severity":2,"message":"45358","line":7,"column":40,"nodeType":"45359","messageId":"45360","endLine":7,"endColumn":43,"suggestions":"45688"},{"ruleId":"45357","severity":2,"message":"45358","line":14,"column":40,"nodeType":"45359","messageId":"45360","endLine":14,"endColumn":43,"suggestions":"45689"},{"ruleId":"45357","severity":2,"message":"45358","line":23,"column":42,"nodeType":"45359","messageId":"45360","endLine":23,"endColumn":45,"suggestions":"45690"},{"ruleId":"45357","severity":2,"message":"45358","line":41,"column":40,"nodeType":"45359","messageId":"45360","endLine":41,"endColumn":43,"suggestions":"45691"},{"ruleId":"45357","severity":2,"message":"45358","line":48,"column":40,"nodeType":"45359","messageId":"45360","endLine":48,"endColumn":43,"suggestions":"45692"},{"ruleId":"45357","severity":2,"message":"45358","line":55,"column":40,"nodeType":"45359","messageId":"45360","endLine":55,"endColumn":43,"suggestions":"45693"},{"ruleId":"45357","severity":2,"message":"45358","line":77,"column":40,"nodeType":"45359","messageId":"45360","endLine":77,"endColumn":43,"suggestions":"45694"},{"ruleId":"45357","severity":2,"message":"45358","line":99,"column":46,"nodeType":"45359","messageId":"45360","endLine":99,"endColumn":49,"suggestions":"45695"},{"ruleId":"45357","severity":2,"message":"45358","line":105,"column":56,"nodeType":"45359","messageId":"45360","endLine":105,"endColumn":59,"suggestions":"45696"},{"ruleId":"45357","severity":2,"message":"45358","line":108,"column":45,"nodeType":"45359","messageId":"45360","endLine":108,"endColumn":48,"suggestions":"45697"},{"ruleId":"45357","severity":2,"message":"45358","line":114,"column":46,"nodeType":"45359","messageId":"45360","endLine":114,"endColumn":49,"suggestions":"45698"},{"ruleId":"45357","severity":2,"message":"45358","line":122,"column":56,"nodeType":"45359","messageId":"45360","endLine":122,"endColumn":59,"suggestions":"45699"},{"ruleId":"45357","severity":2,"message":"45358","line":125,"column":45,"nodeType":"45359","messageId":"45360","endLine":125,"endColumn":48,"suggestions":"45700"},{"ruleId":"45357","severity":2,"message":"45358","line":140,"column":40,"nodeType":"45359","messageId":"45360","endLine":140,"endColumn":43,"suggestions":"45701"},{"ruleId":"45357","severity":2,"message":"45358","line":161,"column":40,"nodeType":"45359","messageId":"45360","endLine":161,"endColumn":43,"suggestions":"45702"},{"ruleId":"45357","severity":2,"message":"45358","line":177,"column":40,"nodeType":"45359","messageId":"45360","endLine":177,"endColumn":43,"suggestions":"45703"},{"ruleId":"45357","severity":2,"message":"45358","line":206,"column":40,"nodeType":"45359","messageId":"45360","endLine":206,"endColumn":43,"suggestions":"45704"},{"ruleId":"45357","severity":2,"message":"45358","line":208,"column":47,"nodeType":"45359","messageId":"45360","endLine":208,"endColumn":50,"suggestions":"45705"},{"ruleId":"45357","severity":2,"message":"45358","line":218,"column":40,"nodeType":"45359","messageId":"45360","endLine":218,"endColumn":43,"suggestions":"45706"},{"ruleId":"45357","severity":2,"message":"45358","line":321,"column":40,"nodeType":"45359","messageId":"45360","endLine":321,"endColumn":43,"suggestions":"45707"},{"ruleId":"45357","severity":2,"message":"45358","line":54,"column":43,"nodeType":"45359","messageId":"45360","endLine":54,"endColumn":46,"suggestions":"45708"},{"ruleId":"45357","severity":2,"message":"45358","line":130,"column":21,"nodeType":"45359","messageId":"45360","endLine":130,"endColumn":24,"suggestions":"45709"},{"ruleId":"45357","severity":2,"message":"45358","line":67,"column":19,"nodeType":"45359","messageId":"45360","endLine":67,"endColumn":22,"suggestions":"45710"},{"ruleId":"45357","severity":2,"message":"45358","line":140,"column":54,"nodeType":"45359","messageId":"45360","endLine":140,"endColumn":57,"suggestions":"45711"},{"ruleId":"45357","severity":2,"message":"45358","line":142,"column":37,"nodeType":"45359","messageId":"45360","endLine":142,"endColumn":40,"suggestions":"45712"},{"ruleId":"45357","severity":2,"message":"45358","line":153,"column":46,"nodeType":"45359","messageId":"45360","endLine":153,"endColumn":49,"suggestions":"45713"},{"ruleId":"45357","severity":2,"message":"45358","line":214,"column":54,"nodeType":"45359","messageId":"45360","endLine":214,"endColumn":57,"suggestions":"45714"},{"ruleId":"45357","severity":2,"message":"45358","line":216,"column":34,"nodeType":"45359","messageId":"45360","endLine":216,"endColumn":37,"suggestions":"45715"},{"ruleId":"45357","severity":2,"message":"45358","line":29,"column":38,"nodeType":"45359","messageId":"45360","endLine":29,"endColumn":41,"suggestions":"45716"},{"ruleId":"45357","severity":2,"message":"45358","line":173,"column":21,"nodeType":"45359","messageId":"45360","endLine":173,"endColumn":24,"suggestions":"45717"},{"ruleId":"45357","severity":2,"message":"45358","line":58,"column":28,"nodeType":"45359","messageId":"45360","endLine":58,"endColumn":31,"suggestions":"45718"},{"ruleId":"45357","severity":2,"message":"45358","line":72,"column":36,"nodeType":"45359","messageId":"45360","endLine":72,"endColumn":39,"suggestions":"45719"},{"ruleId":"45357","severity":2,"message":"45358","line":72,"column":47,"nodeType":"45359","messageId":"45360","endLine":72,"endColumn":50,"suggestions":"45720"},{"ruleId":"45357","severity":2,"message":"45358","line":79,"column":65,"nodeType":"45359","messageId":"45360","endLine":79,"endColumn":68,"suggestions":"45721"},{"ruleId":"45357","severity":2,"message":"45358","line":80,"column":59,"nodeType":"45359","messageId":"45360","endLine":80,"endColumn":62,"suggestions":"45722"},{"ruleId":"45357","severity":2,"message":"45358","line":105,"column":65,"nodeType":"45359","messageId":"45360","endLine":105,"endColumn":68,"suggestions":"45723"},{"ruleId":"45357","severity":2,"message":"45358","line":106,"column":59,"nodeType":"45359","messageId":"45360","endLine":106,"endColumn":62,"suggestions":"45724"},{"ruleId":"45357","severity":2,"message":"45358","line":123,"column":43,"nodeType":"45359","messageId":"45360","endLine":123,"endColumn":46,"suggestions":"45725"},{"ruleId":"45357","severity":2,"message":"45358","line":166,"column":43,"nodeType":"45359","messageId":"45360","endLine":166,"endColumn":46,"suggestions":"45726"},{"ruleId":"45357","severity":2,"message":"45358","line":186,"column":51,"nodeType":"45359","messageId":"45360","endLine":186,"endColumn":54,"suggestions":"45727"},{"ruleId":"45357","severity":2,"message":"45358","line":187,"column":49,"nodeType":"45359","messageId":"45360","endLine":187,"endColumn":52,"suggestions":"45728"},{"ruleId":"45357","severity":2,"message":"45358","line":211,"column":43,"nodeType":"45359","messageId":"45360","endLine":211,"endColumn":46,"suggestions":"45729"},{"ruleId":"45357","severity":2,"message":"45358","line":228,"column":43,"nodeType":"45359","messageId":"45360","endLine":228,"endColumn":46,"suggestions":"45730"},{"ruleId":"45357","severity":2,"message":"45358","line":249,"column":43,"nodeType":"45359","messageId":"45360","endLine":249,"endColumn":46,"suggestions":"45731"},{"ruleId":"45357","severity":2,"message":"45358","line":280,"column":45,"nodeType":"45359","messageId":"45360","endLine":280,"endColumn":48,"suggestions":"45732"},{"ruleId":"45357","severity":2,"message":"45358","line":320,"column":45,"nodeType":"45359","messageId":"45360","endLine":320,"endColumn":48,"suggestions":"45733"},{"ruleId":"45357","severity":2,"message":"45358","line":351,"column":45,"nodeType":"45359","messageId":"45360","endLine":351,"endColumn":48,"suggestions":"45734"},{"ruleId":"45357","severity":2,"message":"45358","line":388,"column":57,"nodeType":"45359","messageId":"45360","endLine":388,"endColumn":60,"suggestions":"45735"},{"ruleId":"45357","severity":2,"message":"45358","line":389,"column":63,"nodeType":"45359","messageId":"45360","endLine":389,"endColumn":66,"suggestions":"45736"},{"ruleId":"45357","severity":2,"message":"45358","line":390,"column":61,"nodeType":"45359","messageId":"45360","endLine":390,"endColumn":64,"suggestions":"45737"},{"ruleId":"45357","severity":2,"message":"45358","line":433,"column":53,"nodeType":"45359","messageId":"45360","endLine":433,"endColumn":56,"suggestions":"45738"},{"ruleId":"45357","severity":2,"message":"45358","line":434,"column":65,"nodeType":"45359","messageId":"45360","endLine":434,"endColumn":68,"suggestions":"45739"},{"ruleId":"45357","severity":2,"message":"45358","line":435,"column":63,"nodeType":"45359","messageId":"45360","endLine":435,"endColumn":66,"suggestions":"45740"},{"ruleId":"45357","severity":2,"message":"45358","line":464,"column":55,"nodeType":"45359","messageId":"45360","endLine":464,"endColumn":58,"suggestions":"45741"},{"ruleId":"45357","severity":2,"message":"45358","line":510,"column":55,"nodeType":"45359","messageId":"45360","endLine":510,"endColumn":58,"suggestions":"45742"},{"ruleId":"45357","severity":2,"message":"45358","line":511,"column":69,"nodeType":"45359","messageId":"45360","endLine":511,"endColumn":72,"suggestions":"45743"},{"ruleId":"45357","severity":2,"message":"45358","line":88,"column":52,"nodeType":"45359","messageId":"45360","endLine":88,"endColumn":55,"suggestions":"45744"},{"ruleId":"45357","severity":2,"message":"45358","line":146,"column":65,"nodeType":"45359","messageId":"45360","endLine":146,"endColumn":68,"suggestions":"45745"},{"ruleId":"45357","severity":2,"message":"45358","line":147,"column":59,"nodeType":"45359","messageId":"45360","endLine":147,"endColumn":62,"suggestions":"45746"},{"ruleId":"45357","severity":2,"message":"45358","line":148,"column":49,"nodeType":"45359","messageId":"45360","endLine":148,"endColumn":52,"suggestions":"45747"},{"ruleId":"45357","severity":2,"message":"45358","line":149,"column":53,"nodeType":"45359","messageId":"45360","endLine":149,"endColumn":56,"suggestions":"45748"},{"ruleId":"45357","severity":2,"message":"45358","line":150,"column":55,"nodeType":"45359","messageId":"45360","endLine":150,"endColumn":58,"suggestions":"45749"},{"ruleId":"45357","severity":2,"message":"45358","line":151,"column":67,"nodeType":"45359","messageId":"45360","endLine":151,"endColumn":70,"suggestions":"45750"},{"ruleId":"45357","severity":2,"message":"45358","line":152,"column":59,"nodeType":"45359","messageId":"45360","endLine":152,"endColumn":62,"suggestions":"45751"},{"ruleId":"45357","severity":2,"message":"45358","line":153,"column":55,"nodeType":"45359","messageId":"45360","endLine":153,"endColumn":58,"suggestions":"45752"},{"ruleId":"45357","severity":2,"message":"45358","line":154,"column":61,"nodeType":"45359","messageId":"45360","endLine":154,"endColumn":64,"suggestions":"45753"},{"ruleId":"45357","severity":2,"message":"45358","line":155,"column":63,"nodeType":"45359","messageId":"45360","endLine":155,"endColumn":66,"suggestions":"45754"},{"ruleId":"45357","severity":2,"message":"45358","line":156,"column":59,"nodeType":"45359","messageId":"45360","endLine":156,"endColumn":62,"suggestions":"45755"},{"ruleId":"45357","severity":2,"message":"45358","line":214,"column":54,"nodeType":"45359","messageId":"45360","endLine":214,"endColumn":57,"suggestions":"45756"},{"ruleId":"45357","severity":2,"message":"45358","line":236,"column":65,"nodeType":"45359","messageId":"45360","endLine":236,"endColumn":68,"suggestions":"45757"},{"ruleId":"45357","severity":2,"message":"45358","line":237,"column":57,"nodeType":"45359","messageId":"45360","endLine":237,"endColumn":60,"suggestions":"45758"},{"ruleId":"45357","severity":2,"message":"45358","line":238,"column":53,"nodeType":"45359","messageId":"45360","endLine":238,"endColumn":56,"suggestions":"45759"},{"ruleId":"45357","severity":2,"message":"45358","line":239,"column":59,"nodeType":"45359","messageId":"45360","endLine":239,"endColumn":62,"suggestions":"45760"},{"ruleId":"45357","severity":2,"message":"45358","line":240,"column":61,"nodeType":"45359","messageId":"45360","endLine":240,"endColumn":64,"suggestions":"45761"},{"ruleId":"45357","severity":2,"message":"45358","line":308,"column":45,"nodeType":"45359","messageId":"45360","endLine":308,"endColumn":48,"suggestions":"45762"},{"ruleId":"45357","severity":2,"message":"45358","line":314,"column":45,"nodeType":"45359","messageId":"45360","endLine":314,"endColumn":48,"suggestions":"45763"},{"ruleId":"45357","severity":2,"message":"45358","line":374,"column":57,"nodeType":"45359","messageId":"45360","endLine":374,"endColumn":60,"suggestions":"45764"},{"ruleId":"45357","severity":2,"message":"45358","line":375,"column":67,"nodeType":"45359","messageId":"45360","endLine":375,"endColumn":70,"suggestions":"45765"},{"ruleId":"45357","severity":2,"message":"45358","line":376,"column":67,"nodeType":"45359","messageId":"45360","endLine":376,"endColumn":70,"suggestions":"45766"},{"ruleId":"45357","severity":2,"message":"45358","line":377,"column":67,"nodeType":"45359","messageId":"45360","endLine":377,"endColumn":70,"suggestions":"45767"},{"ruleId":"45357","severity":2,"message":"45358","line":378,"column":59,"nodeType":"45359","messageId":"45360","endLine":378,"endColumn":62,"suggestions":"45768"},{"ruleId":"45357","severity":2,"message":"45358","line":379,"column":71,"nodeType":"45359","messageId":"45360","endLine":379,"endColumn":74,"suggestions":"45769"},{"ruleId":"45357","severity":2,"message":"45358","line":380,"column":73,"nodeType":"45359","messageId":"45360","endLine":380,"endColumn":76,"suggestions":"45770"},{"ruleId":"45357","severity":2,"message":"45358","line":381,"column":61,"nodeType":"45359","messageId":"45360","endLine":381,"endColumn":64,"suggestions":"45771"},{"ruleId":"45357","severity":2,"message":"45358","line":417,"column":43,"nodeType":"45359","messageId":"45360","endLine":417,"endColumn":46,"suggestions":"45772"},{"ruleId":"45357","severity":2,"message":"45358","line":436,"column":57,"nodeType":"45359","messageId":"45360","endLine":436,"endColumn":60,"suggestions":"45773"},{"ruleId":"45357","severity":2,"message":"45358","line":444,"column":57,"nodeType":"45359","messageId":"45360","endLine":444,"endColumn":60,"suggestions":"45774"},{"ruleId":"45357","severity":2,"message":"45358","line":452,"column":53,"nodeType":"45359","messageId":"45360","endLine":452,"endColumn":56,"suggestions":"45775"},{"ruleId":"45357","severity":2,"message":"45358","line":454,"column":14,"nodeType":"45359","messageId":"45360","endLine":454,"endColumn":17,"suggestions":"45776"},{"ruleId":"45357","severity":2,"message":"45358","line":457,"column":14,"nodeType":"45359","messageId":"45360","endLine":457,"endColumn":17,"suggestions":"45777"},{"ruleId":"45357","severity":2,"message":"45358","line":521,"column":75,"nodeType":"45359","messageId":"45360","endLine":521,"endColumn":78,"suggestions":"45778"},{"ruleId":"45357","severity":2,"message":"45358","line":522,"column":75,"nodeType":"45359","messageId":"45360","endLine":522,"endColumn":78,"suggestions":"45779"},{"ruleId":"45357","severity":2,"message":"45358","line":523,"column":61,"nodeType":"45359","messageId":"45360","endLine":523,"endColumn":64,"suggestions":"45780"},{"ruleId":"45357","severity":2,"message":"45358","line":524,"column":59,"nodeType":"45359","messageId":"45360","endLine":524,"endColumn":62,"suggestions":"45781"},{"ruleId":"45357","severity":2,"message":"45358","line":541,"column":43,"nodeType":"45359","messageId":"45360","endLine":541,"endColumn":46,"suggestions":"45782"},{"ruleId":"45357","severity":2,"message":"45358","line":55,"column":24,"nodeType":"45359","messageId":"45360","endLine":55,"endColumn":27,"suggestions":"45783"},{"ruleId":"45357","severity":2,"message":"45358","line":543,"column":43,"nodeType":"45359","messageId":"45360","endLine":543,"endColumn":46,"suggestions":"45784"},{"ruleId":"45357","severity":2,"message":"45358","line":576,"column":43,"nodeType":"45359","messageId":"45360","endLine":576,"endColumn":46,"suggestions":"45785"},{"ruleId":"45357","severity":2,"message":"45358","line":630,"column":43,"nodeType":"45359","messageId":"45360","endLine":630,"endColumn":46,"suggestions":"45786"},{"ruleId":"45357","severity":2,"message":"45358","line":959,"column":43,"nodeType":"45359","messageId":"45360","endLine":959,"endColumn":46,"suggestions":"45787"},{"ruleId":"45357","severity":2,"message":"45358","line":993,"column":43,"nodeType":"45359","messageId":"45360","endLine":993,"endColumn":46,"suggestions":"45788"},{"ruleId":"45357","severity":2,"message":"45358","line":1030,"column":43,"nodeType":"45359","messageId":"45360","endLine":1030,"endColumn":46,"suggestions":"45789"},{"ruleId":"45357","severity":2,"message":"45358","line":1077,"column":63,"nodeType":"45359","messageId":"45360","endLine":1077,"endColumn":66,"suggestions":"45790"},{"ruleId":"45357","severity":2,"message":"45358","line":1086,"column":61,"nodeType":"45359","messageId":"45360","endLine":1086,"endColumn":64,"suggestions":"45791"},{"ruleId":"45357","severity":2,"message":"45358","line":1106,"column":43,"nodeType":"45359","messageId":"45360","endLine":1106,"endColumn":46,"suggestions":"45792"},{"ruleId":"45357","severity":2,"message":"45358","line":1124,"column":43,"nodeType":"45359","messageId":"45360","endLine":1124,"endColumn":46,"suggestions":"45793"},{"ruleId":"45357","severity":2,"message":"45358","line":1184,"column":43,"nodeType":"45359","messageId":"45360","endLine":1184,"endColumn":46,"suggestions":"45794"},{"ruleId":"45357","severity":2,"message":"45358","line":1228,"column":43,"nodeType":"45359","messageId":"45360","endLine":1228,"endColumn":46,"suggestions":"45795"},{"ruleId":"45357","severity":2,"message":"45358","line":1253,"column":43,"nodeType":"45359","messageId":"45360","endLine":1253,"endColumn":46,"suggestions":"45796"},{"ruleId":"45357","severity":2,"message":"45358","line":1291,"column":43,"nodeType":"45359","messageId":"45360","endLine":1291,"endColumn":46,"suggestions":"45797"},{"ruleId":"45357","severity":2,"message":"45358","line":1357,"column":43,"nodeType":"45359","messageId":"45360","endLine":1357,"endColumn":46,"suggestions":"45798"},{"ruleId":"45357","severity":2,"message":"45358","line":1396,"column":43,"nodeType":"45359","messageId":"45360","endLine":1396,"endColumn":46,"suggestions":"45799"},{"ruleId":"45357","severity":2,"message":"45358","line":1457,"column":43,"nodeType":"45359","messageId":"45360","endLine":1457,"endColumn":46,"suggestions":"45800"},{"ruleId":"45357","severity":2,"message":"45358","line":1504,"column":43,"nodeType":"45359","messageId":"45360","endLine":1504,"endColumn":46,"suggestions":"45801"},{"ruleId":"45357","severity":2,"message":"45358","line":1552,"column":43,"nodeType":"45359","messageId":"45360","endLine":1552,"endColumn":46,"suggestions":"45802"},{"ruleId":"45357","severity":2,"message":"45358","line":83,"column":21,"nodeType":"45359","messageId":"45360","endLine":83,"endColumn":24,"suggestions":"45803"},{"ruleId":"45357","severity":2,"message":"45358","line":281,"column":21,"nodeType":"45359","messageId":"45360","endLine":281,"endColumn":24,"suggestions":"45804"},{"ruleId":"45357","severity":2,"message":"45358","line":363,"column":21,"nodeType":"45359","messageId":"45360","endLine":363,"endColumn":24,"suggestions":"45805"},{"ruleId":"45357","severity":2,"message":"45358","line":406,"column":54,"nodeType":"45359","messageId":"45360","endLine":406,"endColumn":57,"suggestions":"45806"},{"ruleId":"45357","severity":2,"message":"45358","line":442,"column":21,"nodeType":"45359","messageId":"45360","endLine":442,"endColumn":24,"suggestions":"45807"},{"ruleId":"45357","severity":2,"message":"45358","line":478,"column":56,"nodeType":"45359","messageId":"45360","endLine":478,"endColumn":59,"suggestions":"45808"},{"ruleId":"45357","severity":2,"message":"45358","line":651,"column":21,"nodeType":"45359","messageId":"45360","endLine":651,"endColumn":24,"suggestions":"45809"},{"ruleId":"45357","severity":2,"message":"45358","line":1000,"column":21,"nodeType":"45359","messageId":"45360","endLine":1000,"endColumn":24,"suggestions":"45810"},{"ruleId":"45357","severity":2,"message":"45358","line":1070,"column":21,"nodeType":"45359","messageId":"45360","endLine":1070,"endColumn":24,"suggestions":"45811"},{"ruleId":"45357","severity":2,"message":"45358","line":88,"column":17,"nodeType":"45359","messageId":"45360","endLine":88,"endColumn":20,"suggestions":"45812"},{"ruleId":"45357","severity":2,"message":"45358","line":89,"column":15,"nodeType":"45359","messageId":"45360","endLine":89,"endColumn":18,"suggestions":"45813"},{"ruleId":"45357","severity":2,"message":"45358","line":90,"column":13,"nodeType":"45359","messageId":"45360","endLine":90,"endColumn":16,"suggestions":"45814"},{"ruleId":"45357","severity":2,"message":"45358","line":94,"column":12,"nodeType":"45359","messageId":"45360","endLine":94,"endColumn":15,"suggestions":"45815"},{"ruleId":"45357","severity":2,"message":"45358","line":148,"column":17,"nodeType":"45359","messageId":"45360","endLine":148,"endColumn":20,"suggestions":"45816"},{"ruleId":"45357","severity":2,"message":"45358","line":184,"column":17,"nodeType":"45359","messageId":"45360","endLine":184,"endColumn":20,"suggestions":"45817"},{"ruleId":"45357","severity":2,"message":"45358","line":229,"column":38,"nodeType":"45359","messageId":"45360","endLine":229,"endColumn":41,"suggestions":"45818"},{"ruleId":"45357","severity":2,"message":"45358","line":245,"column":12,"nodeType":"45359","messageId":"45360","endLine":245,"endColumn":15,"suggestions":"45819"},{"ruleId":"45357","severity":2,"message":"45358","line":279,"column":19,"nodeType":"45359","messageId":"45360","endLine":279,"endColumn":22,"suggestions":"45820"},{"ruleId":"45357","severity":2,"message":"45358","line":280,"column":16,"nodeType":"45359","messageId":"45360","endLine":280,"endColumn":19,"suggestions":"45821"},{"ruleId":"45357","severity":2,"message":"45358","line":110,"column":30,"nodeType":"45359","messageId":"45360","endLine":110,"endColumn":33,"suggestions":"45822"},{"ruleId":"45357","severity":2,"message":"45358","line":111,"column":13,"nodeType":"45359","messageId":"45360","endLine":111,"endColumn":16,"suggestions":"45823"},{"ruleId":"45357","severity":2,"message":"45358","line":112,"column":21,"nodeType":"45359","messageId":"45360","endLine":112,"endColumn":24,"suggestions":"45824"},{"ruleId":"45357","severity":2,"message":"45358","line":120,"column":30,"nodeType":"45359","messageId":"45360","endLine":120,"endColumn":33,"suggestions":"45825"},{"ruleId":"45357","severity":2,"message":"45358","line":134,"column":29,"nodeType":"45359","messageId":"45360","endLine":134,"endColumn":32,"suggestions":"45826"},{"ruleId":"45357","severity":2,"message":"45358","line":164,"column":9,"nodeType":"45359","messageId":"45360","endLine":164,"endColumn":12,"suggestions":"45827"},{"ruleId":"45357","severity":2,"message":"45358","line":165,"column":9,"nodeType":"45359","messageId":"45360","endLine":165,"endColumn":12,"suggestions":"45828"},{"ruleId":"45357","severity":2,"message":"45358","line":170,"column":9,"nodeType":"45359","messageId":"45360","endLine":170,"endColumn":12,"suggestions":"45829"},{"ruleId":"45357","severity":2,"message":"45358","line":170,"column":56,"nodeType":"45359","messageId":"45360","endLine":170,"endColumn":59,"suggestions":"45830"},{"ruleId":"45357","severity":2,"message":"45358","line":175,"column":17,"nodeType":"45359","messageId":"45360","endLine":175,"endColumn":20,"suggestions":"45831"},{"ruleId":"45357","severity":2,"message":"45358","line":202,"column":32,"nodeType":"45359","messageId":"45360","endLine":202,"endColumn":35,"suggestions":"45832"},{"ruleId":"45357","severity":2,"message":"45358","line":203,"column":11,"nodeType":"45359","messageId":"45360","endLine":203,"endColumn":14,"suggestions":"45833"},{"ruleId":"45357","severity":2,"message":"45358","line":204,"column":19,"nodeType":"45359","messageId":"45360","endLine":204,"endColumn":22,"suggestions":"45834"},{"ruleId":"45357","severity":2,"message":"45358","line":217,"column":28,"nodeType":"45359","messageId":"45360","endLine":217,"endColumn":31,"suggestions":"45835"},{"ruleId":"45357","severity":2,"message":"45358","line":245,"column":32,"nodeType":"45359","messageId":"45360","endLine":245,"endColumn":35,"suggestions":"45836"},{"ruleId":"45357","severity":2,"message":"45358","line":246,"column":36,"nodeType":"45359","messageId":"45360","endLine":246,"endColumn":39,"suggestions":"45837"},{"ruleId":"45357","severity":2,"message":"45358","line":300,"column":32,"nodeType":"45359","messageId":"45360","endLine":300,"endColumn":35,"suggestions":"45838"},{"ruleId":"45357","severity":2,"message":"45358","line":301,"column":11,"nodeType":"45359","messageId":"45360","endLine":301,"endColumn":14,"suggestions":"45839"},{"ruleId":"45357","severity":2,"message":"45358","line":302,"column":19,"nodeType":"45359","messageId":"45360","endLine":302,"endColumn":22,"suggestions":"45840"},{"ruleId":"45357","severity":2,"message":"45358","line":349,"column":28,"nodeType":"45359","messageId":"45360","endLine":349,"endColumn":31,"suggestions":"45841"},{"ruleId":"45357","severity":2,"message":"45358","line":371,"column":32,"nodeType":"45359","messageId":"45360","endLine":371,"endColumn":35,"suggestions":"45842"},{"ruleId":"45357","severity":2,"message":"45358","line":372,"column":36,"nodeType":"45359","messageId":"45360","endLine":372,"endColumn":39,"suggestions":"45843"},{"ruleId":"45357","severity":2,"message":"45358","line":72,"column":30,"nodeType":"45359","messageId":"45360","endLine":72,"endColumn":33,"suggestions":"45844"},{"ruleId":"45357","severity":2,"message":"45358","line":73,"column":13,"nodeType":"45359","messageId":"45360","endLine":73,"endColumn":16,"suggestions":"45845"},{"ruleId":"45357","severity":2,"message":"45358","line":74,"column":21,"nodeType":"45359","messageId":"45360","endLine":74,"endColumn":24,"suggestions":"45846"},{"ruleId":"45357","severity":2,"message":"45358","line":82,"column":30,"nodeType":"45359","messageId":"45360","endLine":82,"endColumn":33,"suggestions":"45847"},{"ruleId":"45357","severity":2,"message":"45358","line":98,"column":29,"nodeType":"45359","messageId":"45360","endLine":98,"endColumn":32,"suggestions":"45848"},{"ruleId":"45357","severity":2,"message":"45358","line":123,"column":37,"nodeType":"45359","messageId":"45360","endLine":123,"endColumn":40,"suggestions":"45849"},{"ruleId":"45357","severity":2,"message":"45358","line":148,"column":9,"nodeType":"45359","messageId":"45360","endLine":148,"endColumn":12,"suggestions":"45850"},{"ruleId":"45357","severity":2,"message":"45358","line":149,"column":9,"nodeType":"45359","messageId":"45360","endLine":149,"endColumn":12,"suggestions":"45851"},{"ruleId":"45357","severity":2,"message":"45358","line":154,"column":9,"nodeType":"45359","messageId":"45360","endLine":154,"endColumn":12,"suggestions":"45852"},{"ruleId":"45357","severity":2,"message":"45358","line":154,"column":56,"nodeType":"45359","messageId":"45360","endLine":154,"endColumn":59,"suggestions":"45853"},{"ruleId":"45357","severity":2,"message":"45358","line":159,"column":17,"nodeType":"45359","messageId":"45360","endLine":159,"endColumn":20,"suggestions":"45854"},{"ruleId":"45357","severity":2,"message":"45358","line":244,"column":29,"nodeType":"45359","messageId":"45360","endLine":244,"endColumn":32,"suggestions":"45855"},{"ruleId":"45357","severity":2,"message":"45358","line":248,"column":20,"nodeType":"45359","messageId":"45360","endLine":248,"endColumn":23,"suggestions":"45856"},{"ruleId":"45357","severity":2,"message":"45358","line":248,"column":58,"nodeType":"45359","messageId":"45360","endLine":248,"endColumn":61,"suggestions":"45857"},{"ruleId":"45357","severity":2,"message":"45358","line":253,"column":34,"nodeType":"45359","messageId":"45360","endLine":253,"endColumn":37,"suggestions":"45858"},{"ruleId":"45357","severity":2,"message":"45358","line":254,"column":13,"nodeType":"45359","messageId":"45360","endLine":254,"endColumn":16,"suggestions":"45859"},{"ruleId":"45357","severity":2,"message":"45358","line":255,"column":21,"nodeType":"45359","messageId":"45360","endLine":255,"endColumn":24,"suggestions":"45860"},{"ruleId":"45357","severity":2,"message":"45358","line":262,"column":30,"nodeType":"45359","messageId":"45360","endLine":262,"endColumn":33,"suggestions":"45861"},{"ruleId":"45357","severity":2,"message":"45358","line":266,"column":34,"nodeType":"45359","messageId":"45360","endLine":266,"endColumn":37,"suggestions":"45862"},{"ruleId":"45357","severity":2,"message":"45358","line":267,"column":38,"nodeType":"45359","messageId":"45360","endLine":267,"endColumn":41,"suggestions":"45863"},{"ruleId":"45357","severity":2,"message":"45358","line":350,"column":19,"nodeType":"45359","messageId":"45360","endLine":350,"endColumn":22,"suggestions":"45864"},{"ruleId":"45357","severity":2,"message":"45358","line":395,"column":67,"nodeType":"45359","messageId":"45360","endLine":395,"endColumn":70,"suggestions":"45865"},{"ruleId":"45357","severity":2,"message":"45358","line":402,"column":29,"nodeType":"45359","messageId":"45360","endLine":402,"endColumn":32,"suggestions":"45866"},{"ruleId":"45357","severity":2,"message":"45358","line":418,"column":34,"nodeType":"45359","messageId":"45360","endLine":418,"endColumn":37,"suggestions":"45867"},{"ruleId":"45357","severity":2,"message":"45358","line":419,"column":13,"nodeType":"45359","messageId":"45360","endLine":419,"endColumn":16,"suggestions":"45868"},{"ruleId":"45357","severity":2,"message":"45358","line":420,"column":21,"nodeType":"45359","messageId":"45360","endLine":420,"endColumn":24,"suggestions":"45869"},{"ruleId":"45357","severity":2,"message":"45358","line":430,"column":30,"nodeType":"45359","messageId":"45360","endLine":430,"endColumn":33,"suggestions":"45870"},{"ruleId":"45357","severity":2,"message":"45358","line":439,"column":38,"nodeType":"45359","messageId":"45360","endLine":439,"endColumn":41,"suggestions":"45871"},{"ruleId":"45357","severity":2,"message":"45358","line":477,"column":19,"nodeType":"45359","messageId":"45360","endLine":477,"endColumn":22,"suggestions":"45872"},{"ruleId":"45357","severity":2,"message":"45358","line":138,"column":9,"nodeType":"45359","messageId":"45360","endLine":138,"endColumn":12,"suggestions":"45873"},{"ruleId":"45357","severity":2,"message":"45358","line":140,"column":9,"nodeType":"45359","messageId":"45360","endLine":140,"endColumn":12,"suggestions":"45874"},{"ruleId":"45357","severity":2,"message":"45358","line":145,"column":9,"nodeType":"45359","messageId":"45360","endLine":145,"endColumn":12,"suggestions":"45875"},{"ruleId":"45357","severity":2,"message":"45358","line":145,"column":56,"nodeType":"45359","messageId":"45360","endLine":145,"endColumn":59,"suggestions":"45876"},{"ruleId":"45357","severity":2,"message":"45358","line":92,"column":34,"nodeType":"45359","messageId":"45360","endLine":92,"endColumn":37,"suggestions":"45877"},{"ruleId":"45357","severity":2,"message":"45358","line":92,"column":45,"nodeType":"45359","messageId":"45360","endLine":92,"endColumn":48,"suggestions":"45878"},{"ruleId":"45357","severity":2,"message":"45358","line":18,"column":34,"nodeType":"45359","messageId":"45360","endLine":18,"endColumn":37,"suggestions":"45879"},{"ruleId":"45357","severity":2,"message":"45358","line":66,"column":49,"nodeType":"45359","messageId":"45360","endLine":66,"endColumn":52,"suggestions":"45880"},{"ruleId":"45357","severity":2,"message":"45358","line":103,"column":43,"nodeType":"45359","messageId":"45360","endLine":103,"endColumn":46,"suggestions":"45881"},{"ruleId":"45357","severity":2,"message":"45358","line":142,"column":49,"nodeType":"45359","messageId":"45360","endLine":142,"endColumn":52,"suggestions":"45882"},{"ruleId":"45357","severity":2,"message":"45358","line":182,"column":43,"nodeType":"45359","messageId":"45360","endLine":182,"endColumn":46,"suggestions":"45883"},{"ruleId":"45357","severity":2,"message":"45358","line":212,"column":49,"nodeType":"45359","messageId":"45360","endLine":212,"endColumn":52,"suggestions":"45884"},{"ruleId":"45357","severity":2,"message":"45358","line":247,"column":43,"nodeType":"45359","messageId":"45360","endLine":247,"endColumn":46,"suggestions":"45885"},{"ruleId":"45357","severity":2,"message":"45358","line":286,"column":49,"nodeType":"45359","messageId":"45360","endLine":286,"endColumn":52,"suggestions":"45886"},{"ruleId":"45357","severity":2,"message":"45358","line":331,"column":43,"nodeType":"45359","messageId":"45360","endLine":331,"endColumn":46,"suggestions":"45887"},{"ruleId":"45357","severity":2,"message":"45358","line":347,"column":10,"nodeType":"45359","messageId":"45360","endLine":347,"endColumn":13,"suggestions":"45888"},{"ruleId":"45357","severity":2,"message":"45358","line":367,"column":49,"nodeType":"45359","messageId":"45360","endLine":367,"endColumn":52,"suggestions":"45889"},{"ruleId":"45357","severity":2,"message":"45358","line":411,"column":45,"nodeType":"45359","messageId":"45360","endLine":411,"endColumn":48,"suggestions":"45890"},{"ruleId":"45357","severity":2,"message":"45358","line":440,"column":45,"nodeType":"45359","messageId":"45360","endLine":440,"endColumn":48,"suggestions":"45891"},{"ruleId":"45357","severity":2,"message":"45358","line":469,"column":49,"nodeType":"45359","messageId":"45360","endLine":469,"endColumn":52,"suggestions":"45892"},{"ruleId":"45357","severity":2,"message":"45358","line":506,"column":43,"nodeType":"45359","messageId":"45360","endLine":506,"endColumn":46,"suggestions":"45893"},{"ruleId":"45357","severity":2,"message":"45358","line":545,"column":49,"nodeType":"45359","messageId":"45360","endLine":545,"endColumn":52,"suggestions":"45894"},{"ruleId":"45357","severity":2,"message":"45358","line":582,"column":43,"nodeType":"45359","messageId":"45360","endLine":582,"endColumn":46,"suggestions":"45895"},{"ruleId":"45357","severity":2,"message":"45358","line":608,"column":34,"nodeType":"45359","messageId":"45360","endLine":608,"endColumn":37,"suggestions":"45896"},{"ruleId":"45357","severity":2,"message":"45358","line":608,"column":45,"nodeType":"45359","messageId":"45360","endLine":608,"endColumn":48,"suggestions":"45897"},{"ruleId":"45357","severity":2,"message":"45358","line":67,"column":43,"nodeType":"45359","messageId":"45360","endLine":67,"endColumn":46,"suggestions":"45898"},{"ruleId":"45357","severity":2,"message":"45358","line":183,"column":43,"nodeType":"45359","messageId":"45360","endLine":183,"endColumn":46,"suggestions":"45899"},{"ruleId":"45357","severity":2,"message":"45358","line":245,"column":43,"nodeType":"45359","messageId":"45360","endLine":245,"endColumn":46,"suggestions":"45900"},{"ruleId":"45357","severity":2,"message":"45358","line":315,"column":43,"nodeType":"45359","messageId":"45360","endLine":315,"endColumn":46,"suggestions":"45901"},{"ruleId":"45357","severity":2,"message":"45358","line":350,"column":43,"nodeType":"45359","messageId":"45360","endLine":350,"endColumn":46,"suggestions":"45902"},{"ruleId":"45357","severity":2,"message":"45358","line":365,"column":43,"nodeType":"45359","messageId":"45360","endLine":365,"endColumn":46,"suggestions":"45903"},{"ruleId":"45357","severity":2,"message":"45358","line":398,"column":40,"nodeType":"45359","messageId":"45360","endLine":398,"endColumn":43,"suggestions":"45904"},{"ruleId":"45418","severity":2,"message":"45419","line":3,"column":1,"nodeType":"45420","messageId":"45421","endLine":3,"endColumn":76},{"ruleId":"45357","severity":2,"message":"45358","line":74,"column":36,"nodeType":"45359","messageId":"45360","endLine":74,"endColumn":39,"suggestions":"45905"},{"ruleId":"45357","severity":2,"message":"45358","line":77,"column":36,"nodeType":"45359","messageId":"45360","endLine":77,"endColumn":39,"suggestions":"45906"},{"ruleId":"45357","severity":2,"message":"45358","line":30,"column":24,"nodeType":"45359","messageId":"45360","endLine":30,"endColumn":27,"suggestions":"45907"},{"ruleId":"45357","severity":2,"message":"45358","line":128,"column":43,"nodeType":"45359","messageId":"45360","endLine":128,"endColumn":46,"suggestions":"45908"},{"ruleId":"45357","severity":2,"message":"45358","line":169,"column":43,"nodeType":"45359","messageId":"45360","endLine":169,"endColumn":46,"suggestions":"45909"},{"ruleId":"45357","severity":2,"message":"45358","line":187,"column":43,"nodeType":"45359","messageId":"45360","endLine":187,"endColumn":46,"suggestions":"45910"},{"ruleId":"45357","severity":2,"message":"45358","line":41,"column":15,"nodeType":"45359","messageId":"45360","endLine":41,"endColumn":18,"suggestions":"45911"},{"ruleId":"45357","severity":2,"message":"45358","line":52,"column":24,"nodeType":"45359","messageId":"45360","endLine":52,"endColumn":27,"suggestions":"45912"},{"ruleId":"45357","severity":2,"message":"45358","line":55,"column":24,"nodeType":"45359","messageId":"45360","endLine":55,"endColumn":27,"suggestions":"45913"},{"ruleId":"45357","severity":2,"message":"45358","line":52,"column":24,"nodeType":"45359","messageId":"45360","endLine":52,"endColumn":27,"suggestions":"45914"},{"ruleId":"45357","severity":2,"message":"45358","line":97,"column":14,"nodeType":"45359","messageId":"45360","endLine":97,"endColumn":17,"suggestions":"45915"},{"ruleId":"45357","severity":2,"message":"45358","line":100,"column":14,"nodeType":"45359","messageId":"45360","endLine":100,"endColumn":17,"suggestions":"45916"},{"ruleId":"45357","severity":2,"message":"45358","line":102,"column":14,"nodeType":"45359","messageId":"45360","endLine":102,"endColumn":17,"suggestions":"45917"},{"ruleId":"45357","severity":2,"message":"45358","line":108,"column":27,"nodeType":"45359","messageId":"45360","endLine":108,"endColumn":30,"suggestions":"45918"},{"ruleId":"45357","severity":2,"message":"45358","line":108,"column":50,"nodeType":"45359","messageId":"45360","endLine":108,"endColumn":53,"suggestions":"45919"},{"ruleId":"45357","severity":2,"message":"45358","line":120,"column":14,"nodeType":"45359","messageId":"45360","endLine":120,"endColumn":17,"suggestions":"45920"},{"ruleId":"45357","severity":2,"message":"45358","line":124,"column":14,"nodeType":"45359","messageId":"45360","endLine":124,"endColumn":17,"suggestions":"45921"},{"ruleId":"45357","severity":2,"message":"45358","line":126,"column":14,"nodeType":"45359","messageId":"45360","endLine":126,"endColumn":17,"suggestions":"45922"},{"ruleId":"45357","severity":2,"message":"45358","line":135,"column":25,"nodeType":"45359","messageId":"45360","endLine":135,"endColumn":28,"suggestions":"45923"},{"ruleId":"45357","severity":2,"message":"45358","line":135,"column":48,"nodeType":"45359","messageId":"45360","endLine":135,"endColumn":51,"suggestions":"45924"},{"ruleId":"45357","severity":2,"message":"45358","line":136,"column":25,"nodeType":"45359","messageId":"45360","endLine":136,"endColumn":28,"suggestions":"45925"},{"ruleId":"45357","severity":2,"message":"45358","line":136,"column":48,"nodeType":"45359","messageId":"45360","endLine":136,"endColumn":51,"suggestions":"45926"},{"ruleId":"45357","severity":2,"message":"45358","line":144,"column":31,"nodeType":"45359","messageId":"45360","endLine":144,"endColumn":34,"suggestions":"45927"},{"ruleId":"45357","severity":2,"message":"45358","line":26,"column":18,"nodeType":"45359","messageId":"45360","endLine":26,"endColumn":21,"suggestions":"45928"},{"ruleId":"45357","severity":2,"message":"45358","line":27,"column":12,"nodeType":"45359","messageId":"45360","endLine":27,"endColumn":15,"suggestions":"45929"},{"ruleId":"45357","severity":2,"message":"45358","line":28,"column":14,"nodeType":"45359","messageId":"45360","endLine":28,"endColumn":17,"suggestions":"45930"},{"ruleId":"45357","severity":2,"message":"45358","line":29,"column":12,"nodeType":"45359","messageId":"45360","endLine":29,"endColumn":15,"suggestions":"45931"},{"ruleId":"45357","severity":2,"message":"45358","line":196,"column":36,"nodeType":"45359","messageId":"45360","endLine":196,"endColumn":39,"suggestions":"45932"},{"ruleId":"45357","severity":2,"message":"45358","line":233,"column":36,"nodeType":"45359","messageId":"45360","endLine":233,"endColumn":39,"suggestions":"45933"},{"ruleId":"45357","severity":2,"message":"45358","line":310,"column":30,"nodeType":"45359","messageId":"45360","endLine":310,"endColumn":33,"suggestions":"45934"},{"ruleId":"45357","severity":2,"message":"45358","line":494,"column":30,"nodeType":"45359","messageId":"45360","endLine":494,"endColumn":33,"suggestions":"45935"},{"ruleId":"45357","severity":2,"message":"45358","line":507,"column":30,"nodeType":"45359","messageId":"45360","endLine":507,"endColumn":33,"suggestions":"45936"},{"ruleId":"45357","severity":2,"message":"45358","line":530,"column":30,"nodeType":"45359","messageId":"45360","endLine":530,"endColumn":33,"suggestions":"45937"},{"ruleId":"45357","severity":2,"message":"45358","line":542,"column":30,"nodeType":"45359","messageId":"45360","endLine":542,"endColumn":33,"suggestions":"45938"},{"ruleId":"45357","severity":2,"message":"45358","line":628,"column":31,"nodeType":"45359","messageId":"45360","endLine":628,"endColumn":34,"suggestions":"45939"},{"ruleId":"45357","severity":2,"message":"45358","line":248,"column":45,"nodeType":"45359","messageId":"45360","endLine":248,"endColumn":48,"suggestions":"45940"},{"ruleId":"45357","severity":2,"message":"45358","line":61,"column":12,"nodeType":"45359","messageId":"45360","endLine":61,"endColumn":15,"suggestions":"45941"},{"ruleId":"45357","severity":2,"message":"45358","line":64,"column":12,"nodeType":"45359","messageId":"45360","endLine":64,"endColumn":15,"suggestions":"45942"},{"ruleId":"45357","severity":2,"message":"45358","line":85,"column":37,"nodeType":"45359","messageId":"45360","endLine":85,"endColumn":40,"suggestions":"45943"},{"ruleId":"45357","severity":2,"message":"45358","line":85,"column":48,"nodeType":"45359","messageId":"45360","endLine":85,"endColumn":51,"suggestions":"45944"},{"ruleId":"45357","severity":2,"message":"45358","line":116,"column":45,"nodeType":"45359","messageId":"45360","endLine":116,"endColumn":48,"suggestions":"45945"},{"ruleId":"45357","severity":2,"message":"45358","line":142,"column":12,"nodeType":"45359","messageId":"45360","endLine":142,"endColumn":15,"suggestions":"45946"},{"ruleId":"45357","severity":2,"message":"45358","line":152,"column":36,"nodeType":"45359","messageId":"45360","endLine":152,"endColumn":39,"suggestions":"45947"},{"ruleId":"45357","severity":2,"message":"45358","line":152,"column":48,"nodeType":"45359","messageId":"45360","endLine":152,"endColumn":51,"suggestions":"45948"},{"ruleId":"45357","severity":2,"message":"45358","line":175,"column":45,"nodeType":"45359","messageId":"45360","endLine":175,"endColumn":48,"suggestions":"45949"},{"ruleId":"45357","severity":2,"message":"45358","line":67,"column":52,"nodeType":"45359","messageId":"45360","endLine":67,"endColumn":55,"suggestions":"45950"},{"ruleId":"45357","severity":2,"message":"45358","line":77,"column":56,"nodeType":"45359","messageId":"45360","endLine":77,"endColumn":59,"suggestions":"45951"},{"ruleId":"45357","severity":2,"message":"45358","line":85,"column":52,"nodeType":"45359","messageId":"45360","endLine":85,"endColumn":55,"suggestions":"45952"},{"ruleId":"45357","severity":2,"message":"45358","line":118,"column":52,"nodeType":"45359","messageId":"45360","endLine":118,"endColumn":55,"suggestions":"45953"},{"ruleId":"45357","severity":2,"message":"45358","line":141,"column":49,"nodeType":"45359","messageId":"45360","endLine":141,"endColumn":52,"suggestions":"45954"},{"ruleId":"45357","severity":2,"message":"45358","line":158,"column":49,"nodeType":"45359","messageId":"45360","endLine":158,"endColumn":52,"suggestions":"45955"},{"ruleId":"45357","severity":2,"message":"45358","line":183,"column":53,"nodeType":"45359","messageId":"45360","endLine":183,"endColumn":56,"suggestions":"45956"},{"ruleId":"45357","severity":2,"message":"45358","line":195,"column":62,"nodeType":"45359","messageId":"45360","endLine":195,"endColumn":65,"suggestions":"45957"},{"ruleId":"45357","severity":2,"message":"45358","line":232,"column":57,"nodeType":"45359","messageId":"45360","endLine":232,"endColumn":60,"suggestions":"45958"},{"ruleId":"45357","severity":2,"message":"45358","line":105,"column":52,"nodeType":"45359","messageId":"45360","endLine":105,"endColumn":55,"suggestions":"45959"},{"ruleId":"45357","severity":2,"message":"45358","line":124,"column":52,"nodeType":"45359","messageId":"45360","endLine":124,"endColumn":55,"suggestions":"45960"},{"ruleId":"45357","severity":2,"message":"45358","line":140,"column":52,"nodeType":"45359","messageId":"45360","endLine":140,"endColumn":55,"suggestions":"45961"},{"ruleId":"45357","severity":2,"message":"45358","line":162,"column":52,"nodeType":"45359","messageId":"45360","endLine":162,"endColumn":55,"suggestions":"45962"},{"ruleId":"45357","severity":2,"message":"45358","line":179,"column":12,"nodeType":"45359","messageId":"45360","endLine":179,"endColumn":15,"suggestions":"45963"},{"ruleId":"45357","severity":2,"message":"45358","line":184,"column":12,"nodeType":"45359","messageId":"45360","endLine":184,"endColumn":15,"suggestions":"45964"},{"ruleId":"45357","severity":2,"message":"45358","line":201,"column":12,"nodeType":"45359","messageId":"45360","endLine":201,"endColumn":15,"suggestions":"45965"},{"ruleId":"45357","severity":2,"message":"45358","line":229,"column":12,"nodeType":"45359","messageId":"45360","endLine":229,"endColumn":15,"suggestions":"45966"},{"ruleId":"45357","severity":2,"message":"45358","line":248,"column":52,"nodeType":"45359","messageId":"45360","endLine":248,"endColumn":55,"suggestions":"45967"},{"ruleId":"45357","severity":2,"message":"45358","line":257,"column":52,"nodeType":"45359","messageId":"45360","endLine":257,"endColumn":55,"suggestions":"45968"},{"ruleId":"45357","severity":2,"message":"45358","line":271,"column":50,"nodeType":"45359","messageId":"45360","endLine":271,"endColumn":53,"suggestions":"45969"},{"ruleId":"45357","severity":2,"message":"45358","line":284,"column":50,"nodeType":"45359","messageId":"45360","endLine":284,"endColumn":53,"suggestions":"45970"},{"ruleId":"45357","severity":2,"message":"45358","line":297,"column":51,"nodeType":"45359","messageId":"45360","endLine":297,"endColumn":54,"suggestions":"45971"},{"ruleId":"45357","severity":2,"message":"45358","line":311,"column":51,"nodeType":"45359","messageId":"45360","endLine":311,"endColumn":54,"suggestions":"45972"},{"ruleId":"45357","severity":2,"message":"45358","line":321,"column":52,"nodeType":"45359","messageId":"45360","endLine":321,"endColumn":55,"suggestions":"45973"},{"ruleId":"45357","severity":2,"message":"45358","line":340,"column":59,"nodeType":"45359","messageId":"45360","endLine":340,"endColumn":62,"suggestions":"45974"},{"ruleId":"45357","severity":2,"message":"45358","line":347,"column":45,"nodeType":"45359","messageId":"45360","endLine":347,"endColumn":48,"suggestions":"45975"},{"ruleId":"45357","severity":2,"message":"45358","line":354,"column":59,"nodeType":"45359","messageId":"45360","endLine":354,"endColumn":62,"suggestions":"45976"},{"ruleId":"45357","severity":2,"message":"45358","line":370,"column":52,"nodeType":"45359","messageId":"45360","endLine":370,"endColumn":55,"suggestions":"45977"},{"ruleId":"45357","severity":2,"message":"45358","line":264,"column":21,"nodeType":"45359","messageId":"45360","endLine":264,"endColumn":24,"suggestions":"45978"},{"ruleId":"45357","severity":2,"message":"45358","line":412,"column":46,"nodeType":"45359","messageId":"45360","endLine":412,"endColumn":49,"suggestions":"45979"},{"ruleId":"45357","severity":2,"message":"45358","line":419,"column":43,"nodeType":"45359","messageId":"45360","endLine":419,"endColumn":46,"suggestions":"45980"},{"ruleId":"45357","severity":2,"message":"45358","line":92,"column":43,"nodeType":"45359","messageId":"45360","endLine":92,"endColumn":46,"suggestions":"45981"},{"ruleId":"45357","severity":2,"message":"45358","line":173,"column":43,"nodeType":"45359","messageId":"45360","endLine":173,"endColumn":46,"suggestions":"45982"},{"ruleId":"45357","severity":2,"message":"45358","line":205,"column":43,"nodeType":"45359","messageId":"45360","endLine":205,"endColumn":46,"suggestions":"45983"},{"ruleId":"45357","severity":2,"message":"45358","line":278,"column":43,"nodeType":"45359","messageId":"45360","endLine":278,"endColumn":46,"suggestions":"45984"},{"ruleId":"45357","severity":2,"message":"45358","line":353,"column":29,"nodeType":"45359","messageId":"45360","endLine":353,"endColumn":32,"suggestions":"45985"},{"ruleId":"45357","severity":2,"message":"45358","line":354,"column":26,"nodeType":"45359","messageId":"45360","endLine":354,"endColumn":29,"suggestions":"45986"},{"ruleId":"45357","severity":2,"message":"45358","line":355,"column":14,"nodeType":"45359","messageId":"45360","endLine":355,"endColumn":17,"suggestions":"45987"},{"ruleId":"45357","severity":2,"message":"45358","line":356,"column":18,"nodeType":"45359","messageId":"45360","endLine":356,"endColumn":21,"suggestions":"45988"},{"ruleId":"45357","severity":2,"message":"45358","line":359,"column":26,"nodeType":"45359","messageId":"45360","endLine":359,"endColumn":29,"suggestions":"45989"},{"ruleId":"45357","severity":2,"message":"45358","line":390,"column":40,"nodeType":"45359","messageId":"45360","endLine":390,"endColumn":43,"suggestions":"45990"},{"ruleId":"45357","severity":2,"message":"45358","line":390,"column":69,"nodeType":"45359","messageId":"45360","endLine":390,"endColumn":72,"suggestions":"45991"},{"ruleId":"45357","severity":2,"message":"45358","line":605,"column":25,"nodeType":"45359","messageId":"45360","endLine":605,"endColumn":28,"suggestions":"45992"},{"ruleId":"45357","severity":2,"message":"45358","line":836,"column":43,"nodeType":"45359","messageId":"45360","endLine":836,"endColumn":46,"suggestions":"45993"},{"ruleId":"45357","severity":2,"message":"45358","line":902,"column":43,"nodeType":"45359","messageId":"45360","endLine":902,"endColumn":46,"suggestions":"45994"},{"ruleId":"45357","severity":2,"message":"45358","line":39,"column":47,"nodeType":"45359","messageId":"45360","endLine":39,"endColumn":50,"suggestions":"45995"},{"ruleId":"45357","severity":2,"message":"45358","line":40,"column":59,"nodeType":"45359","messageId":"45360","endLine":40,"endColumn":62,"suggestions":"45996"},{"ruleId":"45357","severity":2,"message":"45358","line":47,"column":52,"nodeType":"45359","messageId":"45360","endLine":47,"endColumn":55,"suggestions":"45997"},{"ruleId":"45357","severity":2,"message":"45358","line":48,"column":64,"nodeType":"45359","messageId":"45360","endLine":48,"endColumn":67,"suggestions":"45998"},{"ruleId":"45357","severity":2,"message":"45358","line":58,"column":43,"nodeType":"45359","messageId":"45360","endLine":58,"endColumn":46,"suggestions":"45999"},{"ruleId":"45357","severity":2,"message":"45358","line":78,"column":43,"nodeType":"45359","messageId":"45360","endLine":78,"endColumn":46,"suggestions":"46000"},{"ruleId":"45357","severity":2,"message":"45358","line":97,"column":43,"nodeType":"45359","messageId":"45360","endLine":97,"endColumn":46,"suggestions":"46001"},{"ruleId":"45357","severity":2,"message":"45358","line":123,"column":43,"nodeType":"45359","messageId":"45360","endLine":123,"endColumn":46,"suggestions":"46002"},{"ruleId":"45357","severity":2,"message":"45358","line":143,"column":43,"nodeType":"45359","messageId":"45360","endLine":143,"endColumn":46,"suggestions":"46003"},{"ruleId":"45357","severity":2,"message":"45358","line":173,"column":43,"nodeType":"45359","messageId":"45360","endLine":173,"endColumn":46,"suggestions":"46004"},{"ruleId":"45357","severity":2,"message":"45358","line":23,"column":12,"nodeType":"45359","messageId":"45360","endLine":23,"endColumn":15,"suggestions":"46005"},{"ruleId":"45357","severity":2,"message":"45358","line":63,"column":12,"nodeType":"45359","messageId":"45360","endLine":63,"endColumn":15,"suggestions":"46006"},{"ruleId":"45357","severity":2,"message":"45358","line":39,"column":34,"nodeType":"45359","messageId":"45360","endLine":39,"endColumn":37,"suggestions":"46007"},{"ruleId":"45357","severity":2,"message":"45358","line":63,"column":43,"nodeType":"45359","messageId":"45360","endLine":63,"endColumn":46,"suggestions":"46008"},{"ruleId":"45357","severity":2,"message":"45358","line":82,"column":59,"nodeType":"45359","messageId":"45360","endLine":82,"endColumn":62,"suggestions":"46009"},{"ruleId":"45357","severity":2,"message":"45358","line":93,"column":59,"nodeType":"45359","messageId":"45360","endLine":93,"endColumn":62,"suggestions":"46010"},{"ruleId":"45357","severity":2,"message":"45358","line":116,"column":87,"nodeType":"45359","messageId":"45360","endLine":116,"endColumn":90,"suggestions":"46011"},{"ruleId":"45357","severity":2,"message":"45358","line":132,"column":37,"nodeType":"45359","messageId":"45360","endLine":132,"endColumn":40,"suggestions":"46012"},{"ruleId":"45357","severity":2,"message":"45358","line":188,"column":35,"nodeType":"45359","messageId":"45360","endLine":188,"endColumn":38,"suggestions":"46013"},{"ruleId":"45357","severity":2,"message":"45358","line":221,"column":37,"nodeType":"45359","messageId":"45360","endLine":221,"endColumn":40,"suggestions":"46014"},{"ruleId":"45357","severity":2,"message":"45358","line":254,"column":19,"nodeType":"45359","messageId":"45360","endLine":254,"endColumn":22,"suggestions":"46015"},{"ruleId":"45357","severity":2,"message":"45358","line":272,"column":37,"nodeType":"45359","messageId":"45360","endLine":272,"endColumn":40,"suggestions":"46016"},{"ruleId":"45357","severity":2,"message":"45358","line":48,"column":15,"nodeType":"45359","messageId":"45360","endLine":48,"endColumn":18,"suggestions":"46017"},{"ruleId":"45357","severity":2,"message":"45358","line":142,"column":55,"nodeType":"45359","messageId":"45360","endLine":142,"endColumn":58,"suggestions":"46018"},{"ruleId":"45357","severity":2,"message":"45358","line":146,"column":17,"nodeType":"45359","messageId":"45360","endLine":146,"endColumn":20,"suggestions":"46019"},{"ruleId":"45357","severity":2,"message":"45358","line":65,"column":32,"nodeType":"45359","messageId":"45360","endLine":65,"endColumn":35,"suggestions":"46020","suppressions":"46021"},{"ruleId":"45357","severity":2,"message":"45358","line":40,"column":64,"nodeType":"45359","messageId":"45360","endLine":40,"endColumn":67,"suggestions":"46022"},{"ruleId":"45357","severity":2,"message":"45358","line":72,"column":43,"nodeType":"45359","messageId":"45360","endLine":72,"endColumn":46,"suggestions":"46023"},{"ruleId":"45357","severity":2,"message":"45358","line":98,"column":43,"nodeType":"45359","messageId":"45360","endLine":98,"endColumn":46,"suggestions":"46024"},{"ruleId":"45357","severity":2,"message":"45358","line":152,"column":55,"nodeType":"45359","messageId":"45360","endLine":152,"endColumn":58,"suggestions":"46025"},{"ruleId":"45357","severity":2,"message":"45358","line":192,"column":54,"nodeType":"45359","messageId":"45360","endLine":192,"endColumn":57,"suggestions":"46026"},{"ruleId":"45357","severity":2,"message":"45358","line":196,"column":37,"nodeType":"45359","messageId":"45360","endLine":196,"endColumn":40,"suggestions":"46027"},{"ruleId":"45357","severity":2,"message":"45358","line":201,"column":33,"nodeType":"45359","messageId":"45360","endLine":201,"endColumn":36,"suggestions":"46028"},{"ruleId":"45357","severity":2,"message":"45358","line":202,"column":14,"nodeType":"45359","messageId":"45360","endLine":202,"endColumn":17,"suggestions":"46029"},{"ruleId":"45357","severity":2,"message":"45358","line":202,"column":51,"nodeType":"45359","messageId":"45360","endLine":202,"endColumn":54,"suggestions":"46030"},{"ruleId":"45357","severity":2,"message":"45358","line":203,"column":14,"nodeType":"45359","messageId":"45360","endLine":203,"endColumn":17,"suggestions":"46031"},{"ruleId":"45357","severity":2,"message":"45358","line":203,"column":63,"nodeType":"45359","messageId":"45360","endLine":203,"endColumn":66,"suggestions":"46032"},{"ruleId":"45357","severity":2,"message":"45358","line":204,"column":14,"nodeType":"45359","messageId":"45360","endLine":204,"endColumn":17,"suggestions":"46033"},{"ruleId":"45357","severity":2,"message":"45358","line":204,"column":63,"nodeType":"45359","messageId":"45360","endLine":204,"endColumn":66,"suggestions":"46034"},{"ruleId":"45357","severity":2,"message":"45358","line":210,"column":54,"nodeType":"45359","messageId":"45360","endLine":210,"endColumn":57,"suggestions":"46035"},{"ruleId":"45357","severity":2,"message":"45358","line":89,"column":19,"nodeType":"45359","messageId":"45360","endLine":89,"endColumn":22,"suggestions":"46036"},{"ruleId":"45357","severity":2,"message":"45358","line":246,"column":16,"nodeType":"45359","messageId":"45360","endLine":246,"endColumn":19,"suggestions":"46037"},{"ruleId":"45357","severity":2,"message":"45358","line":51,"column":55,"nodeType":"45359","messageId":"45360","endLine":51,"endColumn":58,"suggestions":"46038"},{"ruleId":"45357","severity":2,"message":"45358","line":55,"column":43,"nodeType":"45359","messageId":"45360","endLine":55,"endColumn":46,"suggestions":"46039"},{"ruleId":"45357","severity":2,"message":"45358","line":82,"column":39,"nodeType":"45359","messageId":"45360","endLine":82,"endColumn":42,"suggestions":"46040"},{"ruleId":"45357","severity":2,"message":"45358","line":86,"column":42,"nodeType":"45359","messageId":"45360","endLine":86,"endColumn":45,"suggestions":"46041"},{"ruleId":"45357","severity":2,"message":"45358","line":27,"column":36,"nodeType":"45359","messageId":"45360","endLine":27,"endColumn":39,"suggestions":"46042"},{"ruleId":"45357","severity":2,"message":"45358","line":27,"column":47,"nodeType":"45359","messageId":"45360","endLine":27,"endColumn":50,"suggestions":"46043"},{"ruleId":"45357","severity":2,"message":"45358","line":63,"column":36,"nodeType":"45359","messageId":"45360","endLine":63,"endColumn":39,"suggestions":"46044"},{"ruleId":"45357","severity":2,"message":"45358","line":91,"column":27,"nodeType":"45359","messageId":"45360","endLine":91,"endColumn":30,"suggestions":"46045"},{"ruleId":"45357","severity":2,"message":"45358","line":114,"column":27,"nodeType":"45359","messageId":"45360","endLine":114,"endColumn":30,"suggestions":"46046"},{"ruleId":"45357","severity":2,"message":"45358","line":53,"column":37,"nodeType":"45359","messageId":"45360","endLine":53,"endColumn":40,"suggestions":"46047"},{"ruleId":"45357","severity":2,"message":"45358","line":82,"column":28,"nodeType":"45359","messageId":"45360","endLine":82,"endColumn":31,"suggestions":"46048"},{"ruleId":"45357","severity":2,"message":"45358","line":93,"column":37,"nodeType":"45359","messageId":"45360","endLine":93,"endColumn":40,"suggestions":"46049"},{"ruleId":"45357","severity":2,"message":"45358","line":117,"column":28,"nodeType":"45359","messageId":"45360","endLine":117,"endColumn":31,"suggestions":"46050"},{"ruleId":"45357","severity":2,"message":"45358","line":16,"column":72,"nodeType":"45359","messageId":"45360","endLine":16,"endColumn":75,"suggestions":"46051"},{"ruleId":"45357","severity":2,"message":"45358","line":197,"column":35,"nodeType":"45359","messageId":"45360","endLine":197,"endColumn":38,"suggestions":"46052"},{"ruleId":"45357","severity":2,"message":"45358","line":210,"column":37,"nodeType":"45359","messageId":"45360","endLine":210,"endColumn":40,"suggestions":"46053"},{"ruleId":"45357","severity":2,"message":"45358","line":131,"column":9,"nodeType":"45359","messageId":"45360","endLine":131,"endColumn":12,"suggestions":"46054","suppressions":"46055"},{"ruleId":"45357","severity":2,"message":"45358","line":48,"column":43,"nodeType":"45359","messageId":"45360","endLine":48,"endColumn":46,"suggestions":"46056"},{"ruleId":"45357","severity":2,"message":"45358","line":63,"column":43,"nodeType":"45359","messageId":"45360","endLine":63,"endColumn":46,"suggestions":"46057"},{"ruleId":"45357","severity":2,"message":"45358","line":91,"column":45,"nodeType":"45359","messageId":"45360","endLine":91,"endColumn":48,"suggestions":"46058"},{"ruleId":"45357","severity":2,"message":"45358","line":108,"column":43,"nodeType":"45359","messageId":"45360","endLine":108,"endColumn":46,"suggestions":"46059"},{"ruleId":"45357","severity":2,"message":"45358","line":122,"column":43,"nodeType":"45359","messageId":"45360","endLine":122,"endColumn":46,"suggestions":"46060"},{"ruleId":"45357","severity":2,"message":"45358","line":136,"column":43,"nodeType":"45359","messageId":"45360","endLine":136,"endColumn":46,"suggestions":"46061"},{"ruleId":"45357","severity":2,"message":"45358","line":149,"column":43,"nodeType":"45359","messageId":"45360","endLine":149,"endColumn":46,"suggestions":"46062"},{"ruleId":"45357","severity":2,"message":"45358","line":162,"column":43,"nodeType":"45359","messageId":"45360","endLine":162,"endColumn":46,"suggestions":"46063"},{"ruleId":"45357","severity":2,"message":"45358","line":35,"column":21,"nodeType":"45359","messageId":"45360","endLine":35,"endColumn":24,"suggestions":"46064"},{"ruleId":"45357","severity":2,"message":"45358","line":12,"column":46,"nodeType":"45359","messageId":"45360","endLine":12,"endColumn":49,"suggestions":"46065"},{"ruleId":"45357","severity":2,"message":"45358","line":23,"column":46,"nodeType":"45359","messageId":"45360","endLine":23,"endColumn":49,"suggestions":"46066"},{"ruleId":"45357","severity":2,"message":"45358","line":125,"column":48,"nodeType":"45359","messageId":"45360","endLine":125,"endColumn":51,"suggestions":"46067"},{"ruleId":"45357","severity":2,"message":"45358","line":333,"column":46,"nodeType":"45359","messageId":"45360","endLine":333,"endColumn":49,"suggestions":"46068"},{"ruleId":"45357","severity":2,"message":"45358","line":347,"column":46,"nodeType":"45359","messageId":"45360","endLine":347,"endColumn":49,"suggestions":"46069"},{"ruleId":"45357","severity":2,"message":"45358","line":430,"column":46,"nodeType":"45359","messageId":"45360","endLine":430,"endColumn":49,"suggestions":"46070"},{"ruleId":"45357","severity":2,"message":"45358","line":553,"column":52,"nodeType":"45359","messageId":"45360","endLine":553,"endColumn":55,"suggestions":"46071"},{"ruleId":"45357","severity":2,"message":"45358","line":640,"column":48,"nodeType":"45359","messageId":"45360","endLine":640,"endColumn":51,"suggestions":"46072"},{"ruleId":"45357","severity":2,"message":"45358","line":664,"column":48,"nodeType":"45359","messageId":"45360","endLine":664,"endColumn":51,"suggestions":"46073"},{"ruleId":"45357","severity":2,"message":"45358","line":20,"column":46,"nodeType":"45359","messageId":"45360","endLine":20,"endColumn":49,"suggestions":"46074"},{"ruleId":"45357","severity":2,"message":"45358","line":31,"column":46,"nodeType":"45359","messageId":"45360","endLine":31,"endColumn":49,"suggestions":"46075"},{"ruleId":"45357","severity":2,"message":"45358","line":127,"column":48,"nodeType":"45359","messageId":"45360","endLine":127,"endColumn":51,"suggestions":"46076"},{"ruleId":"45357","severity":2,"message":"45358","line":227,"column":46,"nodeType":"45359","messageId":"45360","endLine":227,"endColumn":49,"suggestions":"46077"},{"ruleId":"45357","severity":2,"message":"45358","line":239,"column":46,"nodeType":"45359","messageId":"45360","endLine":239,"endColumn":49,"suggestions":"46078"},{"ruleId":"45357","severity":2,"message":"45358","line":352,"column":48,"nodeType":"45359","messageId":"45360","endLine":352,"endColumn":51,"suggestions":"46079"},{"ruleId":"45357","severity":2,"message":"45358","line":548,"column":46,"nodeType":"45359","messageId":"45360","endLine":548,"endColumn":49,"suggestions":"46080"},{"ruleId":"45357","severity":2,"message":"45358","line":575,"column":48,"nodeType":"45359","messageId":"45360","endLine":575,"endColumn":51,"suggestions":"46081"},{"ruleId":"45357","severity":2,"message":"45358","line":600,"column":48,"nodeType":"45359","messageId":"45360","endLine":600,"endColumn":51,"suggestions":"46082"},{"ruleId":"45357","severity":2,"message":"45358","line":15,"column":46,"nodeType":"45359","messageId":"45360","endLine":15,"endColumn":49,"suggestions":"46083"},{"ruleId":"45357","severity":2,"message":"45358","line":26,"column":46,"nodeType":"45359","messageId":"45360","endLine":26,"endColumn":49,"suggestions":"46084"},{"ruleId":"45357","severity":2,"message":"45358","line":38,"column":46,"nodeType":"45359","messageId":"45360","endLine":38,"endColumn":49,"suggestions":"46085"},{"ruleId":"45357","severity":2,"message":"45358","line":53,"column":46,"nodeType":"45359","messageId":"45360","endLine":53,"endColumn":49,"suggestions":"46086"},{"ruleId":"45357","severity":2,"message":"45358","line":164,"column":48,"nodeType":"45359","messageId":"45360","endLine":164,"endColumn":51,"suggestions":"46087"},{"ruleId":"45357","severity":2,"message":"45358","line":190,"column":48,"nodeType":"45359","messageId":"45360","endLine":190,"endColumn":51,"suggestions":"46088"},{"ruleId":"45357","severity":2,"message":"45358","line":107,"column":49,"nodeType":"45359","messageId":"45360","endLine":107,"endColumn":52,"suggestions":"46089"},{"ruleId":"45357","severity":2,"message":"45358","line":109,"column":43,"nodeType":"45359","messageId":"45360","endLine":109,"endColumn":46,"suggestions":"46090"},{"ruleId":"45357","severity":2,"message":"45358","line":160,"column":49,"nodeType":"45359","messageId":"45360","endLine":160,"endColumn":52,"suggestions":"46091"},{"ruleId":"45357","severity":2,"message":"45358","line":162,"column":43,"nodeType":"45359","messageId":"45360","endLine":162,"endColumn":46,"suggestions":"46092"},{"ruleId":"45357","severity":2,"message":"45358","line":209,"column":32,"nodeType":"45359","messageId":"45360","endLine":209,"endColumn":35,"suggestions":"46093"},{"ruleId":"45357","severity":2,"message":"45358","line":212,"column":25,"nodeType":"45359","messageId":"45360","endLine":212,"endColumn":28,"suggestions":"46094"},{"ruleId":"45357","severity":2,"message":"45358","line":216,"column":47,"nodeType":"45359","messageId":"45360","endLine":216,"endColumn":50,"suggestions":"46095"},{"ruleId":"45357","severity":2,"message":"45358","line":364,"column":49,"nodeType":"45359","messageId":"45360","endLine":364,"endColumn":52,"suggestions":"46096"},{"ruleId":"45357","severity":2,"message":"45358","line":366,"column":40,"nodeType":"45359","messageId":"45360","endLine":366,"endColumn":43,"suggestions":"46097"},{"ruleId":"45357","severity":2,"message":"45358","line":48,"column":44,"nodeType":"45359","messageId":"45360","endLine":48,"endColumn":47,"suggestions":"46098"},{"ruleId":"45357","severity":2,"message":"45358","line":50,"column":75,"nodeType":"45359","messageId":"45360","endLine":50,"endColumn":78,"suggestions":"46099"},{"ruleId":"45357","severity":2,"message":"45358","line":71,"column":44,"nodeType":"45359","messageId":"45360","endLine":71,"endColumn":47,"suggestions":"46100"},{"ruleId":"45357","severity":2,"message":"45358","line":81,"column":75,"nodeType":"45359","messageId":"45360","endLine":81,"endColumn":78,"suggestions":"46101"},{"ruleId":"45357","severity":2,"message":"45358","line":117,"column":75,"nodeType":"45359","messageId":"45360","endLine":117,"endColumn":78,"suggestions":"46102"},{"ruleId":"45357","severity":2,"message":"45358","line":41,"column":14,"nodeType":"45359","messageId":"45360","endLine":41,"endColumn":17,"suggestions":"46103"},{"ruleId":"45357","severity":2,"message":"45358","line":47,"column":70,"nodeType":"45359","messageId":"45360","endLine":47,"endColumn":73,"suggestions":"46104"},{"ruleId":"45357","severity":2,"message":"45358","line":78,"column":14,"nodeType":"45359","messageId":"45360","endLine":78,"endColumn":17,"suggestions":"46105"},{"ruleId":"45357","severity":2,"message":"45358","line":84,"column":70,"nodeType":"45359","messageId":"45360","endLine":84,"endColumn":73,"suggestions":"46106"},{"ruleId":"45357","severity":2,"message":"45358","line":103,"column":14,"nodeType":"45359","messageId":"45360","endLine":103,"endColumn":17,"suggestions":"46107"},{"ruleId":"45357","severity":2,"message":"45358","line":109,"column":70,"nodeType":"45359","messageId":"45360","endLine":109,"endColumn":73,"suggestions":"46108"},{"ruleId":"45357","severity":2,"message":"45358","line":129,"column":14,"nodeType":"45359","messageId":"45360","endLine":129,"endColumn":17,"suggestions":"46109"},{"ruleId":"45357","severity":2,"message":"45358","line":135,"column":70,"nodeType":"45359","messageId":"45360","endLine":135,"endColumn":73,"suggestions":"46110"},{"ruleId":"45357","severity":2,"message":"45358","line":167,"column":17,"nodeType":"45359","messageId":"45360","endLine":167,"endColumn":20,"suggestions":"46111"},{"ruleId":"45357","severity":2,"message":"45358","line":174,"column":19,"nodeType":"45359","messageId":"45360","endLine":174,"endColumn":22,"suggestions":"46112"},{"ruleId":"45357","severity":2,"message":"45358","line":187,"column":19,"nodeType":"45359","messageId":"45360","endLine":187,"endColumn":22,"suggestions":"46113"},{"ruleId":"45357","severity":2,"message":"45358","line":105,"column":20,"nodeType":"45359","messageId":"45360","endLine":105,"endColumn":23,"suggestions":"46114"},{"ruleId":"45357","severity":2,"message":"45358","line":49,"column":14,"nodeType":"45359","messageId":"45360","endLine":49,"endColumn":17,"suggestions":"46115"},{"ruleId":"45357","severity":2,"message":"45358","line":59,"column":70,"nodeType":"45359","messageId":"45360","endLine":59,"endColumn":73,"suggestions":"46116"},{"ruleId":"45357","severity":2,"message":"45358","line":66,"column":14,"nodeType":"45359","messageId":"45360","endLine":66,"endColumn":17,"suggestions":"46117"},{"ruleId":"45357","severity":2,"message":"45358","line":74,"column":14,"nodeType":"45359","messageId":"45360","endLine":74,"endColumn":17,"suggestions":"46118"},{"ruleId":"45357","severity":2,"message":"45358","line":85,"column":14,"nodeType":"45359","messageId":"45360","endLine":85,"endColumn":17,"suggestions":"46119"},{"ruleId":"45357","severity":2,"message":"45358","line":93,"column":70,"nodeType":"45359","messageId":"45360","endLine":93,"endColumn":73,"suggestions":"46120"},{"ruleId":"45357","severity":2,"message":"45358","line":100,"column":14,"nodeType":"45359","messageId":"45360","endLine":100,"endColumn":17,"suggestions":"46121"},{"ruleId":"45357","severity":2,"message":"45358","line":111,"column":14,"nodeType":"45359","messageId":"45360","endLine":111,"endColumn":17,"suggestions":"46122"},{"ruleId":"45357","severity":2,"message":"45358","line":118,"column":14,"nodeType":"45359","messageId":"45360","endLine":118,"endColumn":17,"suggestions":"46123"},{"ruleId":"45357","severity":2,"message":"45358","line":125,"column":70,"nodeType":"45359","messageId":"45360","endLine":125,"endColumn":73,"suggestions":"46124"},{"ruleId":"45357","severity":2,"message":"45358","line":133,"column":14,"nodeType":"45359","messageId":"45360","endLine":133,"endColumn":17,"suggestions":"46125"},{"ruleId":"45357","severity":2,"message":"45358","line":100,"column":14,"nodeType":"45359","messageId":"45360","endLine":100,"endColumn":17,"suggestions":"46126"},{"ruleId":"45357","severity":2,"message":"45358","line":110,"column":70,"nodeType":"45359","messageId":"45360","endLine":110,"endColumn":73,"suggestions":"46127"},{"ruleId":"45357","severity":2,"message":"45358","line":126,"column":14,"nodeType":"45359","messageId":"45360","endLine":126,"endColumn":17,"suggestions":"46128"},{"ruleId":"45357","severity":2,"message":"45358","line":132,"column":70,"nodeType":"45359","messageId":"45360","endLine":132,"endColumn":73,"suggestions":"46129"},{"ruleId":"45357","severity":2,"message":"45358","line":152,"column":14,"nodeType":"45359","messageId":"45360","endLine":152,"endColumn":17,"suggestions":"46130"},{"ruleId":"45357","severity":2,"message":"45358","line":158,"column":70,"nodeType":"45359","messageId":"45360","endLine":158,"endColumn":73,"suggestions":"46131"},{"ruleId":"45357","severity":2,"message":"45358","line":178,"column":14,"nodeType":"45359","messageId":"45360","endLine":178,"endColumn":17,"suggestions":"46132"},{"ruleId":"45357","severity":2,"message":"45358","line":184,"column":70,"nodeType":"45359","messageId":"45360","endLine":184,"endColumn":73,"suggestions":"46133"},{"ruleId":"45357","severity":2,"message":"45358","line":205,"column":14,"nodeType":"45359","messageId":"45360","endLine":205,"endColumn":17,"suggestions":"46134"},{"ruleId":"45357","severity":2,"message":"45358","line":211,"column":70,"nodeType":"45359","messageId":"45360","endLine":211,"endColumn":73,"suggestions":"46135"},{"ruleId":"45357","severity":2,"message":"45358","line":212,"column":70,"nodeType":"45359","messageId":"45360","endLine":212,"endColumn":73,"suggestions":"46136"},{"ruleId":"45357","severity":2,"message":"45358","line":234,"column":14,"nodeType":"45359","messageId":"45360","endLine":234,"endColumn":17,"suggestions":"46137"},{"ruleId":"45357","severity":2,"message":"45358","line":240,"column":70,"nodeType":"45359","messageId":"45360","endLine":240,"endColumn":73,"suggestions":"46138"},{"ruleId":"45357","severity":2,"message":"45358","line":261,"column":14,"nodeType":"45359","messageId":"45360","endLine":261,"endColumn":17,"suggestions":"46139"},{"ruleId":"45357","severity":2,"message":"45358","line":267,"column":70,"nodeType":"45359","messageId":"45360","endLine":267,"endColumn":73,"suggestions":"46140"},{"ruleId":"45357","severity":2,"message":"45358","line":153,"column":83,"nodeType":"45359","messageId":"45360","endLine":153,"endColumn":86,"suggestions":"46141"},{"ruleId":"45357","severity":2,"message":"45358","line":30,"column":16,"nodeType":"45359","messageId":"45360","endLine":30,"endColumn":19,"suggestions":"46142"},{"ruleId":"45357","severity":2,"message":"45358","line":36,"column":16,"nodeType":"45359","messageId":"45360","endLine":36,"endColumn":19,"suggestions":"46143"},{"ruleId":"45357","severity":2,"message":"45358","line":69,"column":16,"nodeType":"45359","messageId":"45360","endLine":69,"endColumn":19,"suggestions":"46144"},{"ruleId":"45357","severity":2,"message":"45358","line":82,"column":16,"nodeType":"45359","messageId":"45360","endLine":82,"endColumn":19,"suggestions":"46145"},{"ruleId":"45357","severity":2,"message":"45358","line":115,"column":16,"nodeType":"45359","messageId":"45360","endLine":115,"endColumn":19,"suggestions":"46146"},{"ruleId":"45357","severity":2,"message":"45358","line":131,"column":16,"nodeType":"45359","messageId":"45360","endLine":131,"endColumn":19,"suggestions":"46147"},{"ruleId":"45357","severity":2,"message":"45358","line":164,"column":16,"nodeType":"45359","messageId":"45360","endLine":164,"endColumn":19,"suggestions":"46148"},{"ruleId":"45357","severity":2,"message":"45358","line":180,"column":16,"nodeType":"45359","messageId":"45360","endLine":180,"endColumn":19,"suggestions":"46149"},{"ruleId":"45357","severity":2,"message":"45358","line":213,"column":16,"nodeType":"45359","messageId":"45360","endLine":213,"endColumn":19,"suggestions":"46150"},{"ruleId":"45357","severity":2,"message":"45358","line":231,"column":16,"nodeType":"45359","messageId":"45360","endLine":231,"endColumn":19,"suggestions":"46151"},{"ruleId":"45357","severity":2,"message":"45358","line":278,"column":16,"nodeType":"45359","messageId":"45360","endLine":278,"endColumn":19,"suggestions":"46152"},{"ruleId":"45357","severity":2,"message":"45358","line":292,"column":16,"nodeType":"45359","messageId":"45360","endLine":292,"endColumn":19,"suggestions":"46153"},{"ruleId":"45357","severity":2,"message":"45358","line":308,"column":16,"nodeType":"45359","messageId":"45360","endLine":308,"endColumn":19,"suggestions":"46154"},{"ruleId":"45357","severity":2,"message":"45358","line":325,"column":16,"nodeType":"45359","messageId":"45360","endLine":325,"endColumn":19,"suggestions":"46155"},{"ruleId":"45357","severity":2,"message":"45358","line":354,"column":16,"nodeType":"45359","messageId":"45360","endLine":354,"endColumn":19,"suggestions":"46156"},{"ruleId":"45357","severity":2,"message":"45358","line":362,"column":16,"nodeType":"45359","messageId":"45360","endLine":362,"endColumn":19,"suggestions":"46157"},{"ruleId":"45357","severity":2,"message":"45358","line":417,"column":16,"nodeType":"45359","messageId":"45360","endLine":417,"endColumn":19,"suggestions":"46158"},{"ruleId":"45357","severity":2,"message":"45358","line":453,"column":16,"nodeType":"45359","messageId":"45360","endLine":453,"endColumn":19,"suggestions":"46159"},{"ruleId":"45357","severity":2,"message":"45358","line":467,"column":16,"nodeType":"45359","messageId":"45360","endLine":467,"endColumn":19,"suggestions":"46160"},{"ruleId":"45357","severity":2,"message":"45358","line":503,"column":16,"nodeType":"45359","messageId":"45360","endLine":503,"endColumn":19,"suggestions":"46161"},{"ruleId":"45357","severity":2,"message":"45358","line":579,"column":16,"nodeType":"45359","messageId":"45360","endLine":579,"endColumn":19,"suggestions":"46162"},{"ruleId":"45357","severity":2,"message":"45358","line":26,"column":27,"nodeType":"45359","messageId":"45360","endLine":26,"endColumn":30,"suggestions":"46163"},{"ruleId":"45357","severity":2,"message":"45358","line":27,"column":27,"nodeType":"45359","messageId":"45360","endLine":27,"endColumn":30,"suggestions":"46164"},{"ruleId":"45357","severity":2,"message":"45358","line":44,"column":27,"nodeType":"45359","messageId":"45360","endLine":44,"endColumn":30,"suggestions":"46165"},{"ruleId":"45357","severity":2,"message":"45358","line":56,"column":27,"nodeType":"45359","messageId":"45360","endLine":56,"endColumn":30,"suggestions":"46166"},{"ruleId":"45357","severity":2,"message":"45358","line":76,"column":27,"nodeType":"45359","messageId":"45360","endLine":76,"endColumn":30,"suggestions":"46167"},{"ruleId":"45357","severity":2,"message":"45358","line":87,"column":27,"nodeType":"45359","messageId":"45360","endLine":87,"endColumn":30,"suggestions":"46168"},{"ruleId":"45357","severity":2,"message":"45358","line":103,"column":27,"nodeType":"45359","messageId":"45360","endLine":103,"endColumn":30,"suggestions":"46169"},{"ruleId":"45357","severity":2,"message":"45358","line":154,"column":27,"nodeType":"45359","messageId":"45360","endLine":154,"endColumn":30,"suggestions":"46170"},{"ruleId":"45357","severity":2,"message":"45358","line":155,"column":27,"nodeType":"45359","messageId":"45360","endLine":155,"endColumn":30,"suggestions":"46171"},{"ruleId":"45357","severity":2,"message":"45358","line":172,"column":27,"nodeType":"45359","messageId":"45360","endLine":172,"endColumn":30,"suggestions":"46172"},{"ruleId":"45357","severity":2,"message":"45358","line":193,"column":27,"nodeType":"45359","messageId":"45360","endLine":193,"endColumn":30,"suggestions":"46173"},{"ruleId":"45357","severity":2,"message":"45358","line":214,"column":27,"nodeType":"45359","messageId":"45360","endLine":214,"endColumn":30,"suggestions":"46174"},{"ruleId":"45357","severity":2,"message":"45358","line":233,"column":27,"nodeType":"45359","messageId":"45360","endLine":233,"endColumn":30,"suggestions":"46175"},{"ruleId":"45357","severity":2,"message":"45358","line":234,"column":27,"nodeType":"45359","messageId":"45360","endLine":234,"endColumn":30,"suggestions":"46176"},{"ruleId":"45357","severity":2,"message":"45358","line":235,"column":27,"nodeType":"45359","messageId":"45360","endLine":235,"endColumn":30,"suggestions":"46177"},{"ruleId":"45357","severity":2,"message":"45358","line":251,"column":33,"nodeType":"45359","messageId":"45360","endLine":251,"endColumn":36,"suggestions":"46178"},{"ruleId":"45357","severity":2,"message":"45358","line":265,"column":31,"nodeType":"45359","messageId":"45360","endLine":265,"endColumn":34,"suggestions":"46179"},{"ruleId":"45357","severity":2,"message":"45358","line":279,"column":32,"nodeType":"45359","messageId":"45360","endLine":279,"endColumn":35,"suggestions":"46180"},{"ruleId":"45357","severity":2,"message":"45358","line":290,"column":27,"nodeType":"45359","messageId":"45360","endLine":290,"endColumn":30,"suggestions":"46181"},{"ruleId":"45357","severity":2,"message":"45358","line":291,"column":27,"nodeType":"45359","messageId":"45360","endLine":291,"endColumn":30,"suggestions":"46182"},{"ruleId":"45357","severity":2,"message":"45358","line":301,"column":27,"nodeType":"45359","messageId":"45360","endLine":301,"endColumn":30,"suggestions":"46183"},{"ruleId":"45357","severity":2,"message":"45358","line":302,"column":27,"nodeType":"45359","messageId":"45360","endLine":302,"endColumn":30,"suggestions":"46184"},{"ruleId":"45357","severity":2,"message":"45358","line":313,"column":27,"nodeType":"45359","messageId":"45360","endLine":313,"endColumn":30,"suggestions":"46185"},{"ruleId":"45357","severity":2,"message":"45358","line":329,"column":27,"nodeType":"45359","messageId":"45360","endLine":329,"endColumn":30,"suggestions":"46186"},{"ruleId":"45357","severity":2,"message":"45358","line":339,"column":27,"nodeType":"45359","messageId":"45360","endLine":339,"endColumn":30,"suggestions":"46187"},{"ruleId":"45357","severity":2,"message":"45358","line":354,"column":34,"nodeType":"45359","messageId":"45360","endLine":354,"endColumn":37,"suggestions":"46188"},{"ruleId":"45357","severity":2,"message":"45358","line":371,"column":33,"nodeType":"45359","messageId":"45360","endLine":371,"endColumn":36,"suggestions":"46189"},{"ruleId":"45357","severity":2,"message":"45358","line":386,"column":38,"nodeType":"45359","messageId":"45360","endLine":386,"endColumn":41,"suggestions":"46190"},{"ruleId":"45357","severity":2,"message":"45358","line":396,"column":27,"nodeType":"45359","messageId":"45360","endLine":396,"endColumn":30,"suggestions":"46191"},{"ruleId":"45357","severity":2,"message":"45358","line":406,"column":31,"nodeType":"45359","messageId":"45360","endLine":406,"endColumn":34,"suggestions":"46192"},{"ruleId":"45357","severity":2,"message":"45358","line":416,"column":27,"nodeType":"45359","messageId":"45360","endLine":416,"endColumn":30,"suggestions":"46193"},{"ruleId":"45357","severity":2,"message":"45358","line":447,"column":27,"nodeType":"45359","messageId":"45360","endLine":447,"endColumn":30,"suggestions":"46194"},{"ruleId":"45357","severity":2,"message":"45358","line":581,"column":27,"nodeType":"45359","messageId":"45360","endLine":581,"endColumn":30,"suggestions":"46195"},{"ruleId":"45357","severity":2,"message":"45358","line":582,"column":27,"nodeType":"45359","messageId":"45360","endLine":582,"endColumn":30,"suggestions":"46196"},{"ruleId":"45357","severity":2,"message":"45358","line":598,"column":27,"nodeType":"45359","messageId":"45360","endLine":598,"endColumn":30,"suggestions":"46197"},{"ruleId":"45357","severity":2,"message":"45358","line":610,"column":27,"nodeType":"45359","messageId":"45360","endLine":610,"endColumn":30,"suggestions":"46198"},{"ruleId":"45357","severity":2,"message":"45358","line":620,"column":27,"nodeType":"45359","messageId":"45360","endLine":620,"endColumn":30,"suggestions":"46199"},{"ruleId":"45357","severity":2,"message":"45358","line":631,"column":27,"nodeType":"45359","messageId":"45360","endLine":631,"endColumn":30,"suggestions":"46200"},{"ruleId":"45357","severity":2,"message":"45358","line":641,"column":27,"nodeType":"45359","messageId":"45360","endLine":641,"endColumn":30,"suggestions":"46201"},{"ruleId":"45357","severity":2,"message":"45358","line":642,"column":27,"nodeType":"45359","messageId":"45360","endLine":642,"endColumn":30,"suggestions":"46202"},{"ruleId":"45357","severity":2,"message":"45358","line":643,"column":27,"nodeType":"45359","messageId":"45360","endLine":643,"endColumn":30,"suggestions":"46203"},{"ruleId":"45357","severity":2,"message":"45358","line":661,"column":27,"nodeType":"45359","messageId":"45360","endLine":661,"endColumn":30,"suggestions":"46204"},{"ruleId":"45357","severity":2,"message":"45358","line":678,"column":27,"nodeType":"45359","messageId":"45360","endLine":678,"endColumn":30,"suggestions":"46205"},{"ruleId":"45357","severity":2,"message":"45358","line":695,"column":18,"nodeType":"45359","messageId":"45360","endLine":695,"endColumn":21,"suggestions":"46206"},{"ruleId":"45357","severity":2,"message":"45358","line":712,"column":27,"nodeType":"45359","messageId":"45360","endLine":712,"endColumn":30,"suggestions":"46207"},{"ruleId":"45357","severity":2,"message":"45358","line":725,"column":16,"nodeType":"45359","messageId":"45360","endLine":725,"endColumn":19,"suggestions":"46208"},{"ruleId":"45357","severity":2,"message":"45358","line":730,"column":40,"nodeType":"45359","messageId":"45360","endLine":730,"endColumn":43,"suggestions":"46209"},{"ruleId":"45357","severity":2,"message":"45358","line":747,"column":27,"nodeType":"45359","messageId":"45360","endLine":747,"endColumn":30,"suggestions":"46210"},{"ruleId":"45418","severity":2,"message":"45419","line":3,"column":1,"nodeType":"45420","messageId":"45421","endLine":11,"endColumn":24},{"ruleId":"45357","severity":2,"message":"45358","line":276,"column":18,"nodeType":"45359","messageId":"45360","endLine":276,"endColumn":21,"suggestions":"46211"},{"ruleId":"45357","severity":2,"message":"45358","line":502,"column":39,"nodeType":"45359","messageId":"45360","endLine":502,"endColumn":42,"suggestions":"46212"},{"ruleId":"45357","severity":2,"message":"45358","line":904,"column":18,"nodeType":"45359","messageId":"45360","endLine":904,"endColumn":21,"suggestions":"46213"},{"ruleId":"45357","severity":2,"message":"45358","line":1072,"column":41,"nodeType":"45359","messageId":"45360","endLine":1072,"endColumn":44,"suggestions":"46214"},{"ruleId":"45357","severity":2,"message":"45358","line":1073,"column":42,"nodeType":"45359","messageId":"45360","endLine":1073,"endColumn":45,"suggestions":"46215"},{"ruleId":"45357","severity":2,"message":"45358","line":1074,"column":42,"nodeType":"45359","messageId":"45360","endLine":1074,"endColumn":45,"suggestions":"46216"},{"ruleId":"45357","severity":2,"message":"45358","line":1102,"column":24,"nodeType":"45359","messageId":"45360","endLine":1102,"endColumn":27,"suggestions":"46217"},{"ruleId":"45357","severity":2,"message":"45358","line":42,"column":9,"nodeType":"45359","messageId":"45360","endLine":42,"endColumn":12,"suggestions":"46218"},{"ruleId":"45357","severity":2,"message":"45358","line":50,"column":18,"nodeType":"45359","messageId":"45360","endLine":50,"endColumn":21,"suggestions":"46219"},{"ruleId":"45357","severity":2,"message":"45358","line":36,"column":34,"nodeType":"45359","messageId":"45360","endLine":36,"endColumn":37,"suggestions":"46220"},{"ruleId":"45357","severity":2,"message":"45358","line":36,"column":45,"nodeType":"45359","messageId":"45360","endLine":36,"endColumn":48,"suggestions":"46221"},{"ruleId":"45357","severity":2,"message":"45358","line":90,"column":52,"nodeType":"45359","messageId":"45360","endLine":90,"endColumn":55,"suggestions":"46222"},{"ruleId":"45357","severity":2,"message":"45358","line":149,"column":52,"nodeType":"45359","messageId":"45360","endLine":149,"endColumn":55,"suggestions":"46223"},{"ruleId":"45357","severity":2,"message":"45358","line":174,"column":52,"nodeType":"45359","messageId":"45360","endLine":174,"endColumn":55,"suggestions":"46224"},{"ruleId":"45357","severity":2,"message":"45358","line":196,"column":52,"nodeType":"45359","messageId":"45360","endLine":196,"endColumn":55,"suggestions":"46225"},{"ruleId":"45357","severity":2,"message":"45358","line":218,"column":52,"nodeType":"45359","messageId":"45360","endLine":218,"endColumn":55,"suggestions":"46226"},{"ruleId":"45357","severity":2,"message":"45358","line":240,"column":52,"nodeType":"45359","messageId":"45360","endLine":240,"endColumn":55,"suggestions":"46227"},{"ruleId":"45357","severity":2,"message":"45358","line":323,"column":47,"nodeType":"45359","messageId":"45360","endLine":323,"endColumn":50,"suggestions":"46228"},{"ruleId":"45357","severity":2,"message":"45358","line":335,"column":36,"nodeType":"45359","messageId":"45360","endLine":335,"endColumn":39,"suggestions":"46229"},{"ruleId":"45357","severity":2,"message":"45358","line":250,"column":22,"nodeType":"45359","messageId":"45360","endLine":250,"endColumn":25,"suggestions":"46230"},{"ruleId":"45357","severity":2,"message":"45358","line":254,"column":22,"nodeType":"45359","messageId":"45360","endLine":254,"endColumn":25,"suggestions":"46231"},{"ruleId":"45357","severity":2,"message":"45358","line":258,"column":22,"nodeType":"45359","messageId":"45360","endLine":258,"endColumn":25,"suggestions":"46232"},{"ruleId":"45357","severity":2,"message":"45358","line":262,"column":15,"nodeType":"45359","messageId":"45360","endLine":262,"endColumn":18,"suggestions":"46233"},{"ruleId":"45357","severity":2,"message":"45358","line":270,"column":58,"nodeType":"45359","messageId":"45360","endLine":270,"endColumn":61,"suggestions":"46234"},{"ruleId":"45357","severity":2,"message":"45358","line":44,"column":53,"nodeType":"45359","messageId":"45360","endLine":44,"endColumn":56,"suggestions":"46235"},{"ruleId":"45357","severity":2,"message":"45358","line":82,"column":53,"nodeType":"45359","messageId":"45360","endLine":82,"endColumn":56,"suggestions":"46236"},{"ruleId":"45357","severity":2,"message":"45358","line":133,"column":62,"nodeType":"45359","messageId":"45360","endLine":133,"endColumn":65,"suggestions":"46237"},{"ruleId":"45357","severity":2,"message":"45358","line":134,"column":45,"nodeType":"45359","messageId":"45360","endLine":134,"endColumn":48,"suggestions":"46238"},{"ruleId":"45357","severity":2,"message":"45358","line":135,"column":45,"nodeType":"45359","messageId":"45360","endLine":135,"endColumn":48,"suggestions":"46239"},{"ruleId":"45357","severity":2,"message":"45358","line":145,"column":27,"nodeType":"45359","messageId":"45360","endLine":145,"endColumn":30,"suggestions":"46240"},{"ruleId":"45357","severity":2,"message":"45358","line":158,"column":14,"nodeType":"45359","messageId":"45360","endLine":158,"endColumn":17,"suggestions":"46241"},{"ruleId":"45357","severity":2,"message":"45358","line":158,"column":40,"nodeType":"45359","messageId":"45360","endLine":158,"endColumn":43,"suggestions":"46242"},{"ruleId":"45357","severity":2,"message":"45358","line":159,"column":31,"nodeType":"45359","messageId":"45360","endLine":159,"endColumn":34,"suggestions":"46243"},{"ruleId":"45357","severity":2,"message":"45358","line":160,"column":31,"nodeType":"45359","messageId":"45360","endLine":160,"endColumn":34,"suggestions":"46244"},{"ruleId":"45357","severity":2,"message":"45358","line":161,"column":31,"nodeType":"45359","messageId":"45360","endLine":161,"endColumn":34,"suggestions":"46245"},{"ruleId":"45357","severity":2,"message":"45358","line":162,"column":31,"nodeType":"45359","messageId":"45360","endLine":162,"endColumn":34,"suggestions":"46246"},{"ruleId":"45357","severity":2,"message":"45358","line":163,"column":38,"nodeType":"45359","messageId":"45360","endLine":163,"endColumn":41,"suggestions":"46247"},{"ruleId":"45357","severity":2,"message":"45358","line":238,"column":75,"nodeType":"45359","messageId":"45360","endLine":238,"endColumn":78,"suggestions":"46248"},{"ruleId":"45357","severity":2,"message":"45358","line":245,"column":32,"nodeType":"45359","messageId":"45360","endLine":245,"endColumn":35,"suggestions":"46249"},{"ruleId":"45357","severity":2,"message":"45358","line":256,"column":93,"nodeType":"45359","messageId":"45360","endLine":256,"endColumn":96,"suggestions":"46250"},{"ruleId":"45357","severity":2,"message":"45358","line":262,"column":91,"nodeType":"45359","messageId":"45360","endLine":262,"endColumn":94,"suggestions":"46251"},{"ruleId":"45357","severity":2,"message":"45358","line":421,"column":51,"nodeType":"45359","messageId":"45360","endLine":421,"endColumn":54,"suggestions":"46252"},{"ruleId":"45357","severity":2,"message":"45358","line":424,"column":14,"nodeType":"45359","messageId":"45360","endLine":424,"endColumn":17,"suggestions":"46253"},{"ruleId":"45357","severity":2,"message":"45358","line":425,"column":52,"nodeType":"45359","messageId":"45360","endLine":425,"endColumn":55,"suggestions":"46254"},{"ruleId":"45357","severity":2,"message":"45358","line":429,"column":50,"nodeType":"45359","messageId":"45360","endLine":429,"endColumn":53,"suggestions":"46255"},{"ruleId":"45357","severity":2,"message":"45358","line":458,"column":24,"nodeType":"45359","messageId":"45360","endLine":458,"endColumn":27,"suggestions":"46256"},{"ruleId":"45357","severity":2,"message":"45358","line":459,"column":24,"nodeType":"45359","messageId":"45360","endLine":459,"endColumn":27,"suggestions":"46257"},{"ruleId":"45357","severity":2,"message":"45358","line":488,"column":24,"nodeType":"45359","messageId":"45360","endLine":488,"endColumn":27,"suggestions":"46258"},{"ruleId":"45357","severity":2,"message":"45358","line":489,"column":24,"nodeType":"45359","messageId":"45360","endLine":489,"endColumn":27,"suggestions":"46259"},{"ruleId":"45357","severity":2,"message":"45358","line":490,"column":14,"nodeType":"45359","messageId":"45360","endLine":490,"endColumn":17,"suggestions":"46260"},{"ruleId":"45357","severity":2,"message":"45358","line":490,"column":40,"nodeType":"45359","messageId":"45360","endLine":490,"endColumn":43,"suggestions":"46261"},{"ruleId":"45357","severity":2,"message":"45358","line":491,"column":24,"nodeType":"45359","messageId":"45360","endLine":491,"endColumn":27,"suggestions":"46262"},{"ruleId":"45357","severity":2,"message":"45358","line":493,"column":70,"nodeType":"45359","messageId":"45360","endLine":493,"endColumn":73,"suggestions":"46263"},{"ruleId":"45357","severity":2,"message":"45358","line":502,"column":32,"nodeType":"45359","messageId":"45360","endLine":502,"endColumn":35,"suggestions":"46264"},{"ruleId":"45357","severity":2,"message":"45358","line":536,"column":24,"nodeType":"45359","messageId":"45360","endLine":536,"endColumn":27,"suggestions":"46265"},{"ruleId":"45357","severity":2,"message":"45358","line":537,"column":21,"nodeType":"45359","messageId":"45360","endLine":537,"endColumn":24,"suggestions":"46266"},{"ruleId":"45357","severity":2,"message":"45358","line":539,"column":70,"nodeType":"45359","messageId":"45360","endLine":539,"endColumn":73,"suggestions":"46267"},{"ruleId":"45357","severity":2,"message":"45358","line":579,"column":24,"nodeType":"45359","messageId":"45360","endLine":579,"endColumn":27,"suggestions":"46268"},{"ruleId":"45357","severity":2,"message":"45358","line":580,"column":21,"nodeType":"45359","messageId":"45360","endLine":580,"endColumn":24,"suggestions":"46269"},{"ruleId":"45357","severity":2,"message":"45358","line":582,"column":70,"nodeType":"45359","messageId":"45360","endLine":582,"endColumn":73,"suggestions":"46270"},{"ruleId":"45357","severity":2,"message":"45358","line":623,"column":24,"nodeType":"45359","messageId":"45360","endLine":623,"endColumn":27,"suggestions":"46271"},{"ruleId":"45357","severity":2,"message":"45358","line":624,"column":21,"nodeType":"45359","messageId":"45360","endLine":624,"endColumn":24,"suggestions":"46272"},{"ruleId":"45357","severity":2,"message":"45358","line":626,"column":70,"nodeType":"45359","messageId":"45360","endLine":626,"endColumn":73,"suggestions":"46273"},{"ruleId":"45357","severity":2,"message":"45358","line":665,"column":24,"nodeType":"45359","messageId":"45360","endLine":665,"endColumn":27,"suggestions":"46274"},{"ruleId":"45357","severity":2,"message":"45358","line":666,"column":21,"nodeType":"45359","messageId":"45360","endLine":666,"endColumn":24,"suggestions":"46275"},{"ruleId":"45357","severity":2,"message":"45358","line":668,"column":70,"nodeType":"45359","messageId":"45360","endLine":668,"endColumn":73,"suggestions":"46276"},{"ruleId":"45357","severity":2,"message":"45358","line":702,"column":24,"nodeType":"45359","messageId":"45360","endLine":702,"endColumn":27,"suggestions":"46277"},{"ruleId":"45357","severity":2,"message":"45358","line":703,"column":21,"nodeType":"45359","messageId":"45360","endLine":703,"endColumn":24,"suggestions":"46278"},{"ruleId":"45357","severity":2,"message":"45358","line":705,"column":70,"nodeType":"45359","messageId":"45360","endLine":705,"endColumn":73,"suggestions":"46279"},{"ruleId":"45357","severity":2,"message":"45358","line":36,"column":21,"nodeType":"45359","messageId":"45360","endLine":36,"endColumn":24,"suggestions":"46280"},{"ruleId":"45357","severity":2,"message":"45358","line":179,"column":89,"nodeType":"45359","messageId":"45360","endLine":179,"endColumn":92,"suggestions":"46281"},{"ruleId":"45357","severity":2,"message":"45358","line":187,"column":29,"nodeType":"45359","messageId":"45360","endLine":187,"endColumn":32,"suggestions":"46282"},{"ruleId":"45357","severity":2,"message":"45358","line":188,"column":14,"nodeType":"45359","messageId":"45360","endLine":188,"endColumn":17,"suggestions":"46283"},{"ruleId":"45357","severity":2,"message":"45358","line":188,"column":38,"nodeType":"45359","messageId":"45360","endLine":188,"endColumn":41,"suggestions":"46284"},{"ruleId":"45357","severity":2,"message":"45358","line":18,"column":21,"nodeType":"45359","messageId":"45360","endLine":18,"endColumn":24,"suggestions":"46285"},{"ruleId":"45357","severity":2,"message":"45358","line":68,"column":18,"nodeType":"45359","messageId":"45360","endLine":68,"endColumn":21,"suggestions":"46286"},{"ruleId":"45357","severity":2,"message":"45358","line":101,"column":32,"nodeType":"45359","messageId":"45360","endLine":101,"endColumn":35,"suggestions":"46287"},{"ruleId":"45357","severity":2,"message":"45358","line":102,"column":35,"nodeType":"45359","messageId":"45360","endLine":102,"endColumn":38,"suggestions":"46288"},{"ruleId":"45357","severity":2,"message":"45358","line":39,"column":28,"nodeType":"45359","messageId":"45360","endLine":39,"endColumn":31,"suggestions":"46289"},{"ruleId":"45357","severity":2,"message":"45358","line":39,"column":38,"nodeType":"45359","messageId":"45360","endLine":39,"endColumn":41,"suggestions":"46290"},{"ruleId":"45357","severity":2,"message":"45358","line":54,"column":40,"nodeType":"45359","messageId":"45360","endLine":54,"endColumn":43,"suggestions":"46291"},{"ruleId":"45357","severity":2,"message":"45358","line":90,"column":38,"nodeType":"45359","messageId":"45360","endLine":90,"endColumn":41,"suggestions":"46292"},{"ruleId":"45357","severity":2,"message":"45358","line":101,"column":39,"nodeType":"45359","messageId":"45360","endLine":101,"endColumn":42,"suggestions":"46293"},{"ruleId":"45357","severity":2,"message":"45358","line":111,"column":38,"nodeType":"45359","messageId":"45360","endLine":111,"endColumn":41,"suggestions":"46294"},{"ruleId":"45357","severity":2,"message":"45358","line":128,"column":38,"nodeType":"45359","messageId":"45360","endLine":128,"endColumn":41,"suggestions":"46295"},{"ruleId":"45357","severity":2,"message":"45358","line":138,"column":39,"nodeType":"45359","messageId":"45360","endLine":138,"endColumn":42,"suggestions":"46296"},{"ruleId":"45357","severity":2,"message":"45358","line":148,"column":39,"nodeType":"45359","messageId":"45360","endLine":148,"endColumn":42,"suggestions":"46297"},{"ruleId":"45357","severity":2,"message":"45358","line":156,"column":39,"nodeType":"45359","messageId":"45360","endLine":156,"endColumn":42,"suggestions":"46298"},{"ruleId":"45357","severity":2,"message":"45358","line":170,"column":40,"nodeType":"45359","messageId":"45360","endLine":170,"endColumn":43,"suggestions":"46299"},{"ruleId":"45357","severity":2,"message":"45358","line":182,"column":40,"nodeType":"45359","messageId":"45360","endLine":182,"endColumn":43,"suggestions":"46300"},{"ruleId":"45357","severity":2,"message":"45358","line":195,"column":40,"nodeType":"45359","messageId":"45360","endLine":195,"endColumn":43,"suggestions":"46301"},{"ruleId":"45357","severity":2,"message":"45358","line":207,"column":40,"nodeType":"45359","messageId":"45360","endLine":207,"endColumn":43,"suggestions":"46302"},{"ruleId":"45357","severity":2,"message":"45358","line":224,"column":40,"nodeType":"45359","messageId":"45360","endLine":224,"endColumn":43,"suggestions":"46303"},{"ruleId":"45357","severity":2,"message":"45358","line":242,"column":40,"nodeType":"45359","messageId":"45360","endLine":242,"endColumn":43,"suggestions":"46304"},{"ruleId":"45357","severity":2,"message":"45358","line":244,"column":9,"nodeType":"45359","messageId":"45360","endLine":244,"endColumn":12,"suggestions":"46305"},{"ruleId":"45357","severity":2,"message":"45358","line":251,"column":67,"nodeType":"45359","messageId":"45360","endLine":251,"endColumn":70,"suggestions":"46306"},{"ruleId":"45357","severity":2,"message":"45358","line":264,"column":40,"nodeType":"45359","messageId":"45360","endLine":264,"endColumn":43,"suggestions":"46307"},{"ruleId":"45357","severity":2,"message":"45358","line":277,"column":40,"nodeType":"45359","messageId":"45360","endLine":277,"endColumn":43,"suggestions":"46308"},{"ruleId":"45357","severity":2,"message":"45358","line":285,"column":84,"nodeType":"45359","messageId":"45360","endLine":285,"endColumn":87,"suggestions":"46309"},{"ruleId":"45357","severity":2,"message":"45358","line":288,"column":48,"nodeType":"45359","messageId":"45360","endLine":288,"endColumn":51,"suggestions":"46310"},{"ruleId":"45357","severity":2,"message":"45358","line":289,"column":69,"nodeType":"45359","messageId":"45360","endLine":289,"endColumn":72,"suggestions":"46311"},{"ruleId":"45357","severity":2,"message":"45358","line":293,"column":50,"nodeType":"45359","messageId":"45360","endLine":293,"endColumn":53,"suggestions":"46312"},{"ruleId":"45357","severity":2,"message":"45358","line":318,"column":81,"nodeType":"45359","messageId":"45360","endLine":318,"endColumn":84,"suggestions":"46313"},{"ruleId":"45357","severity":2,"message":"45358","line":338,"column":39,"nodeType":"45359","messageId":"45360","endLine":338,"endColumn":42,"suggestions":"46314"},{"ruleId":"45357","severity":2,"message":"45358","line":358,"column":40,"nodeType":"45359","messageId":"45360","endLine":358,"endColumn":43,"suggestions":"46315"},{"ruleId":"45357","severity":2,"message":"45358","line":386,"column":57,"nodeType":"45359","messageId":"45360","endLine":386,"endColumn":60,"suggestions":"46316"},{"ruleId":"45357","severity":2,"message":"45358","line":390,"column":40,"nodeType":"45359","messageId":"45360","endLine":390,"endColumn":43,"suggestions":"46317"},{"ruleId":"45357","severity":2,"message":"45358","line":428,"column":38,"nodeType":"45359","messageId":"45360","endLine":428,"endColumn":41,"suggestions":"46318"},{"ruleId":"45357","severity":2,"message":"45358","line":429,"column":40,"nodeType":"45359","messageId":"45360","endLine":429,"endColumn":43,"suggestions":"46319"},{"ruleId":"45357","severity":2,"message":"45358","line":58,"column":43,"nodeType":"45359","messageId":"45360","endLine":58,"endColumn":46,"suggestions":"46320"},{"ruleId":"45357","severity":2,"message":"45358","line":65,"column":34,"nodeType":"45359","messageId":"45360","endLine":65,"endColumn":37,"suggestions":"46321"},{"ruleId":"45357","severity":2,"message":"45358","line":132,"column":55,"nodeType":"45359","messageId":"45360","endLine":132,"endColumn":58,"suggestions":"46322"},{"ruleId":"45357","severity":2,"message":"45358","line":133,"column":40,"nodeType":"45359","messageId":"45360","endLine":133,"endColumn":43,"suggestions":"46323"},{"ruleId":"45357","severity":2,"message":"45358","line":134,"column":37,"nodeType":"45359","messageId":"45360","endLine":134,"endColumn":40,"suggestions":"46324"},{"ruleId":"45357","severity":2,"message":"45358","line":136,"column":28,"nodeType":"45359","messageId":"45360","endLine":136,"endColumn":31,"suggestions":"46325"},{"ruleId":"45357","severity":2,"message":"45358","line":137,"column":14,"nodeType":"45359","messageId":"45360","endLine":137,"endColumn":17,"suggestions":"46326"},{"ruleId":"45357","severity":2,"message":"45358","line":137,"column":47,"nodeType":"45359","messageId":"45360","endLine":137,"endColumn":50,"suggestions":"46327"},{"ruleId":"45357","severity":2,"message":"45358","line":138,"column":38,"nodeType":"45359","messageId":"45360","endLine":138,"endColumn":41,"suggestions":"46328"},{"ruleId":"45357","severity":2,"message":"45358","line":140,"column":38,"nodeType":"45359","messageId":"45360","endLine":140,"endColumn":41,"suggestions":"46329"},{"ruleId":"45357","severity":2,"message":"45358","line":154,"column":57,"nodeType":"45359","messageId":"45360","endLine":154,"endColumn":60,"suggestions":"46330"},{"ruleId":"45357","severity":2,"message":"45358","line":155,"column":39,"nodeType":"45359","messageId":"45360","endLine":155,"endColumn":42,"suggestions":"46331"},{"ruleId":"45357","severity":2,"message":"45358","line":227,"column":38,"nodeType":"45359","messageId":"45360","endLine":227,"endColumn":41,"suggestions":"46332"},{"ruleId":"45357","severity":2,"message":"45358","line":228,"column":38,"nodeType":"45359","messageId":"45360","endLine":228,"endColumn":41,"suggestions":"46333"},{"ruleId":"45357","severity":2,"message":"45358","line":229,"column":42,"nodeType":"45359","messageId":"45360","endLine":229,"endColumn":45,"suggestions":"46334"},{"ruleId":"45357","severity":2,"message":"45358","line":230,"column":14,"nodeType":"45359","messageId":"45360","endLine":230,"endColumn":17,"suggestions":"46335"},{"ruleId":"45357","severity":2,"message":"45358","line":230,"column":64,"nodeType":"45359","messageId":"45360","endLine":230,"endColumn":67,"suggestions":"46336"},{"ruleId":"45357","severity":2,"message":"45358","line":233,"column":55,"nodeType":"45359","messageId":"45360","endLine":233,"endColumn":58,"suggestions":"46337"},{"ruleId":"45357","severity":2,"message":"45358","line":237,"column":51,"nodeType":"45359","messageId":"45360","endLine":237,"endColumn":54,"suggestions":"46338"},{"ruleId":"45357","severity":2,"message":"45358","line":282,"column":38,"nodeType":"45359","messageId":"45360","endLine":282,"endColumn":41,"suggestions":"46339"},{"ruleId":"45357","severity":2,"message":"45358","line":283,"column":51,"nodeType":"45359","messageId":"45360","endLine":283,"endColumn":54,"suggestions":"46340"},{"ruleId":"45357","severity":2,"message":"45358","line":284,"column":51,"nodeType":"45359","messageId":"45360","endLine":284,"endColumn":54,"suggestions":"46341"},{"ruleId":"45357","severity":2,"message":"45358","line":285,"column":51,"nodeType":"45359","messageId":"45360","endLine":285,"endColumn":54,"suggestions":"46342"},{"ruleId":"45357","severity":2,"message":"45358","line":286,"column":42,"nodeType":"45359","messageId":"45360","endLine":286,"endColumn":45,"suggestions":"46343"},{"ruleId":"45357","severity":2,"message":"45358","line":312,"column":38,"nodeType":"45359","messageId":"45360","endLine":312,"endColumn":41,"suggestions":"46344"},{"ruleId":"45357","severity":2,"message":"45358","line":313,"column":38,"nodeType":"45359","messageId":"45360","endLine":313,"endColumn":41,"suggestions":"46345"},{"ruleId":"45357","severity":2,"message":"45358","line":314,"column":42,"nodeType":"45359","messageId":"45360","endLine":314,"endColumn":45,"suggestions":"46346"},{"ruleId":"45357","severity":2,"message":"45358","line":315,"column":42,"nodeType":"45359","messageId":"45360","endLine":315,"endColumn":45,"suggestions":"46347"},{"ruleId":"45357","severity":2,"message":"45358","line":342,"column":14,"nodeType":"45359","messageId":"45360","endLine":342,"endColumn":17,"suggestions":"46348"},{"ruleId":"45357","severity":2,"message":"45358","line":343,"column":28,"nodeType":"45359","messageId":"45360","endLine":343,"endColumn":31,"suggestions":"46349"},{"ruleId":"45357","severity":2,"message":"45358","line":344,"column":28,"nodeType":"45359","messageId":"45360","endLine":344,"endColumn":31,"suggestions":"46350"},{"ruleId":"45357","severity":2,"message":"45358","line":345,"column":28,"nodeType":"45359","messageId":"45360","endLine":345,"endColumn":31,"suggestions":"46351"},{"ruleId":"45357","severity":2,"message":"45358","line":346,"column":28,"nodeType":"45359","messageId":"45360","endLine":346,"endColumn":31,"suggestions":"46352"},{"ruleId":"45357","severity":2,"message":"45358","line":347,"column":51,"nodeType":"45359","messageId":"45360","endLine":347,"endColumn":54,"suggestions":"46353"},{"ruleId":"45357","severity":2,"message":"45358","line":579,"column":53,"nodeType":"45359","messageId":"45360","endLine":579,"endColumn":56,"suggestions":"46354"},{"ruleId":"45357","severity":2,"message":"45358","line":666,"column":53,"nodeType":"45359","messageId":"45360","endLine":666,"endColumn":56,"suggestions":"46355"},{"ruleId":"45357","severity":2,"message":"45358","line":834,"column":43,"nodeType":"45359","messageId":"45360","endLine":834,"endColumn":46,"suggestions":"46356"},{"ruleId":"45357","severity":2,"message":"45358","line":889,"column":68,"nodeType":"45359","messageId":"45360","endLine":889,"endColumn":71,"suggestions":"46357"},{"ruleId":"45357","severity":2,"message":"45358","line":1189,"column":43,"nodeType":"45359","messageId":"45360","endLine":1189,"endColumn":46,"suggestions":"46358"},{"ruleId":"45357","severity":2,"message":"45358","line":173,"column":51,"nodeType":"45359","messageId":"45360","endLine":173,"endColumn":54,"suggestions":"46359"},{"ruleId":"45357","severity":2,"message":"45358","line":181,"column":75,"nodeType":"45359","messageId":"45360","endLine":181,"endColumn":78,"suggestions":"46360"},{"ruleId":"45357","severity":2,"message":"45358","line":225,"column":57,"nodeType":"45359","messageId":"45360","endLine":225,"endColumn":60,"suggestions":"46361"},{"ruleId":"45357","severity":2,"message":"45358","line":238,"column":53,"nodeType":"45359","messageId":"45360","endLine":238,"endColumn":56,"suggestions":"46362"},{"ruleId":"45357","severity":2,"message":"45358","line":310,"column":43,"nodeType":"45359","messageId":"45360","endLine":310,"endColumn":46,"suggestions":"46363"},{"ruleId":"45357","severity":2,"message":"45358","line":337,"column":51,"nodeType":"45359","messageId":"45360","endLine":337,"endColumn":54,"suggestions":"46364"},{"ruleId":"45357","severity":2,"message":"45358","line":8,"column":14,"nodeType":"45359","messageId":"45360","endLine":8,"endColumn":17,"suggestions":"46365"},{"ruleId":"45357","severity":2,"message":"45358","line":121,"column":18,"nodeType":"45359","messageId":"45360","endLine":121,"endColumn":21,"suggestions":"46366"},{"ruleId":"45357","severity":2,"message":"45358","line":121,"column":43,"nodeType":"45359","messageId":"45360","endLine":121,"endColumn":46,"suggestions":"46367"},{"ruleId":"45357","severity":2,"message":"45358","line":121,"column":54,"nodeType":"45359","messageId":"45360","endLine":121,"endColumn":57,"suggestions":"46368"},{"ruleId":"45357","severity":2,"message":"45358","line":163,"column":53,"nodeType":"45359","messageId":"45360","endLine":163,"endColumn":56,"suggestions":"46369"},{"ruleId":"45357","severity":2,"message":"45358","line":175,"column":58,"nodeType":"45359","messageId":"45360","endLine":175,"endColumn":61,"suggestions":"46370"},{"ruleId":"45357","severity":2,"message":"45358","line":189,"column":55,"nodeType":"45359","messageId":"45360","endLine":189,"endColumn":58,"suggestions":"46371"},{"ruleId":"45357","severity":2,"message":"45358","line":235,"column":18,"nodeType":"45359","messageId":"45360","endLine":235,"endColumn":21,"suggestions":"46372"},{"ruleId":"45357","severity":2,"message":"45358","line":235,"column":43,"nodeType":"45359","messageId":"45360","endLine":235,"endColumn":46,"suggestions":"46373"},{"ruleId":"45357","severity":2,"message":"45358","line":235,"column":54,"nodeType":"45359","messageId":"45360","endLine":235,"endColumn":57,"suggestions":"46374"},{"ruleId":"45357","severity":2,"message":"45358","line":144,"column":43,"nodeType":"45359","messageId":"45360","endLine":144,"endColumn":46,"suggestions":"46375"},{"ruleId":"45357","severity":2,"message":"45358","line":195,"column":43,"nodeType":"45359","messageId":"45360","endLine":195,"endColumn":46,"suggestions":"46376"},{"ruleId":"45357","severity":2,"message":"45358","line":230,"column":43,"nodeType":"45359","messageId":"45360","endLine":230,"endColumn":46,"suggestions":"46377"},{"ruleId":"45357","severity":2,"message":"45358","line":251,"column":15,"nodeType":"45359","messageId":"45360","endLine":251,"endColumn":18,"suggestions":"46378"},{"ruleId":"45357","severity":2,"message":"45358","line":258,"column":16,"nodeType":"45359","messageId":"45360","endLine":258,"endColumn":19,"suggestions":"46379"},{"ruleId":"45357","severity":2,"message":"45358","line":280,"column":43,"nodeType":"45359","messageId":"45360","endLine":280,"endColumn":46,"suggestions":"46380"},{"ruleId":"45357","severity":2,"message":"45358","line":315,"column":43,"nodeType":"45359","messageId":"45360","endLine":315,"endColumn":46,"suggestions":"46381"},{"ruleId":"45357","severity":2,"message":"45358","line":321,"column":79,"nodeType":"45359","messageId":"45360","endLine":321,"endColumn":82,"suggestions":"46382"},{"ruleId":"45357","severity":2,"message":"45358","line":321,"column":92,"nodeType":"45359","messageId":"45360","endLine":321,"endColumn":95,"suggestions":"46383"},{"ruleId":"45357","severity":2,"message":"45358","line":361,"column":43,"nodeType":"45359","messageId":"45360","endLine":361,"endColumn":46,"suggestions":"46384"},{"ruleId":"45357","severity":2,"message":"45358","line":85,"column":47,"nodeType":"45359","messageId":"45360","endLine":85,"endColumn":50,"suggestions":"46385"},{"ruleId":"45357","severity":2,"message":"45358","line":120,"column":47,"nodeType":"45359","messageId":"45360","endLine":120,"endColumn":50,"suggestions":"46386"},{"ruleId":"45357","severity":2,"message":"45358","line":133,"column":47,"nodeType":"45359","messageId":"45360","endLine":133,"endColumn":50,"suggestions":"46387"},{"ruleId":"45357","severity":2,"message":"45358","line":147,"column":47,"nodeType":"45359","messageId":"45360","endLine":147,"endColumn":50,"suggestions":"46388"},{"ruleId":"45357","severity":2,"message":"45358","line":216,"column":43,"nodeType":"45359","messageId":"45360","endLine":216,"endColumn":46,"suggestions":"46389"},{"ruleId":"45357","severity":2,"message":"45358","line":273,"column":49,"nodeType":"45359","messageId":"45360","endLine":273,"endColumn":52,"suggestions":"46390"},{"ruleId":"45357","severity":2,"message":"45358","line":274,"column":53,"nodeType":"45359","messageId":"45360","endLine":274,"endColumn":56,"suggestions":"46391"},{"ruleId":"45357","severity":2,"message":"45358","line":298,"column":43,"nodeType":"45359","messageId":"45360","endLine":298,"endColumn":46,"suggestions":"46392"},{"ruleId":"45357","severity":2,"message":"45358","line":323,"column":43,"nodeType":"45359","messageId":"45360","endLine":323,"endColumn":46,"suggestions":"46393"},{"ruleId":"45357","severity":2,"message":"45358","line":346,"column":43,"nodeType":"45359","messageId":"45360","endLine":346,"endColumn":46,"suggestions":"46394"},{"ruleId":"45357","severity":2,"message":"45358","line":363,"column":43,"nodeType":"45359","messageId":"45360","endLine":363,"endColumn":46,"suggestions":"46395"},{"ruleId":"45357","severity":2,"message":"45358","line":372,"column":58,"nodeType":"45359","messageId":"45360","endLine":372,"endColumn":61,"suggestions":"46396"},{"ruleId":"45357","severity":2,"message":"45358","line":474,"column":47,"nodeType":"45359","messageId":"45360","endLine":474,"endColumn":50,"suggestions":"46397"},{"ruleId":"45357","severity":2,"message":"45358","line":58,"column":43,"nodeType":"45359","messageId":"45360","endLine":58,"endColumn":46,"suggestions":"46398"},{"ruleId":"45357","severity":2,"message":"45358","line":90,"column":43,"nodeType":"45359","messageId":"45360","endLine":90,"endColumn":46,"suggestions":"46399"},{"ruleId":"45357","severity":2,"message":"45358","line":87,"column":43,"nodeType":"45359","messageId":"45360","endLine":87,"endColumn":46,"suggestions":"46400"},{"ruleId":"45357","severity":2,"message":"45358","line":109,"column":43,"nodeType":"45359","messageId":"45360","endLine":109,"endColumn":46,"suggestions":"46401"},{"ruleId":"45357","severity":2,"message":"45358","line":135,"column":43,"nodeType":"45359","messageId":"45360","endLine":135,"endColumn":46,"suggestions":"46402"},{"ruleId":"45357","severity":2,"message":"45358","line":181,"column":43,"nodeType":"45359","messageId":"45360","endLine":181,"endColumn":46,"suggestions":"46403"},{"ruleId":"45357","severity":2,"message":"45358","line":196,"column":43,"nodeType":"45359","messageId":"45360","endLine":196,"endColumn":46,"suggestions":"46404"},{"ruleId":"45357","severity":2,"message":"45358","line":229,"column":43,"nodeType":"45359","messageId":"45360","endLine":229,"endColumn":46,"suggestions":"46405"},{"ruleId":"45357","severity":2,"message":"45358","line":276,"column":43,"nodeType":"45359","messageId":"45360","endLine":276,"endColumn":46,"suggestions":"46406"},{"ruleId":"45357","severity":2,"message":"45358","line":317,"column":43,"nodeType":"45359","messageId":"45360","endLine":317,"endColumn":46,"suggestions":"46407"},{"ruleId":"45357","severity":2,"message":"45358","line":338,"column":43,"nodeType":"45359","messageId":"45360","endLine":338,"endColumn":46,"suggestions":"46408"},{"ruleId":"45357","severity":2,"message":"45358","line":359,"column":59,"nodeType":"45359","messageId":"45360","endLine":359,"endColumn":62,"suggestions":"46409"},{"ruleId":"45357","severity":2,"message":"45358","line":378,"column":56,"nodeType":"45359","messageId":"45360","endLine":378,"endColumn":59,"suggestions":"46410"},{"ruleId":"45357","severity":2,"message":"45358","line":404,"column":43,"nodeType":"45359","messageId":"45360","endLine":404,"endColumn":46,"suggestions":"46411"},{"ruleId":"45357","severity":2,"message":"45358","line":441,"column":43,"nodeType":"45359","messageId":"45360","endLine":441,"endColumn":46,"suggestions":"46412"},{"ruleId":"45357","severity":2,"message":"45358","line":487,"column":43,"nodeType":"45359","messageId":"45360","endLine":487,"endColumn":46,"suggestions":"46413"},{"ruleId":"45357","severity":2,"message":"45358","line":514,"column":43,"nodeType":"45359","messageId":"45360","endLine":514,"endColumn":46,"suggestions":"46414"},{"ruleId":"45357","severity":2,"message":"45358","line":176,"column":40,"nodeType":"45359","messageId":"45360","endLine":176,"endColumn":43,"suggestions":"46415"},{"ruleId":"45357","severity":2,"message":"45358","line":268,"column":45,"nodeType":"45359","messageId":"45360","endLine":268,"endColumn":48,"suggestions":"46416"},{"ruleId":"45357","severity":2,"message":"45358","line":304,"column":43,"nodeType":"45359","messageId":"45360","endLine":304,"endColumn":46,"suggestions":"46417"},{"ruleId":"45357","severity":2,"message":"45358","line":330,"column":45,"nodeType":"45359","messageId":"45360","endLine":330,"endColumn":48,"suggestions":"46418"},{"ruleId":"45357","severity":2,"message":"45358","line":94,"column":36,"nodeType":"45359","messageId":"45360","endLine":94,"endColumn":39,"suggestions":"46419"},{"ruleId":"45357","severity":2,"message":"45358","line":142,"column":42,"nodeType":"45359","messageId":"45360","endLine":142,"endColumn":45,"suggestions":"46420"},{"ruleId":"45357","severity":2,"message":"45358","line":44,"column":51,"nodeType":"45359","messageId":"45360","endLine":44,"endColumn":54,"suggestions":"46421"},{"ruleId":"45357","severity":2,"message":"45358","line":105,"column":51,"nodeType":"45359","messageId":"45360","endLine":105,"endColumn":54,"suggestions":"46422"},{"ruleId":"45357","severity":2,"message":"45358","line":136,"column":39,"nodeType":"45359","messageId":"45360","endLine":136,"endColumn":42,"suggestions":"46423"},{"ruleId":"45357","severity":2,"message":"45358","line":136,"column":62,"nodeType":"45359","messageId":"45360","endLine":136,"endColumn":65,"suggestions":"46424"},{"ruleId":"45357","severity":2,"message":"45358","line":318,"column":4,"nodeType":"45359","messageId":"45360","endLine":318,"endColumn":7,"suggestions":"46425"},{"ruleId":"45357","severity":2,"message":"45358","line":319,"column":16,"nodeType":"45359","messageId":"45360","endLine":319,"endColumn":19,"suggestions":"46426"},{"ruleId":"45357","severity":2,"message":"45358","line":365,"column":10,"nodeType":"45359","messageId":"45360","endLine":365,"endColumn":13,"suggestions":"46427"},{"ruleId":"45357","severity":2,"message":"45358","line":410,"column":25,"nodeType":"45359","messageId":"45360","endLine":410,"endColumn":28,"suggestions":"46428"},{"ruleId":"45357","severity":2,"message":"45358","line":433,"column":10,"nodeType":"45359","messageId":"45360","endLine":433,"endColumn":13,"suggestions":"46429"},{"ruleId":"45357","severity":2,"message":"45358","line":441,"column":24,"nodeType":"45359","messageId":"45360","endLine":441,"endColumn":27,"suggestions":"46430"},{"ruleId":"45357","severity":2,"message":"45358","line":442,"column":11,"nodeType":"45359","messageId":"45360","endLine":442,"endColumn":14,"suggestions":"46431"},{"ruleId":"45357","severity":2,"message":"45358","line":480,"column":44,"nodeType":"45359","messageId":"45360","endLine":480,"endColumn":47,"suggestions":"46432"},{"ruleId":"45357","severity":2,"message":"45358","line":533,"column":53,"nodeType":"45359","messageId":"45360","endLine":533,"endColumn":56,"suggestions":"46433"},{"ruleId":"45357","severity":2,"message":"45358","line":1248,"column":53,"nodeType":"45359","messageId":"45360","endLine":1248,"endColumn":56,"suggestions":"46434"},{"ruleId":"45357","severity":2,"message":"45358","line":1377,"column":53,"nodeType":"45359","messageId":"45360","endLine":1377,"endColumn":56,"suggestions":"46435"},{"ruleId":"45357","severity":2,"message":"45358","line":1458,"column":53,"nodeType":"45359","messageId":"45360","endLine":1458,"endColumn":56,"suggestions":"46436"},{"ruleId":"45357","severity":2,"message":"45358","line":1661,"column":60,"nodeType":"45359","messageId":"45360","endLine":1661,"endColumn":63,"suggestions":"46437"},{"ruleId":"45357","severity":2,"message":"45358","line":1702,"column":60,"nodeType":"45359","messageId":"45360","endLine":1702,"endColumn":63,"suggestions":"46438"},{"ruleId":"45357","severity":2,"message":"45358","line":1757,"column":60,"nodeType":"45359","messageId":"45360","endLine":1757,"endColumn":63,"suggestions":"46439"},{"ruleId":"45357","severity":2,"message":"45358","line":1847,"column":53,"nodeType":"45359","messageId":"45360","endLine":1847,"endColumn":56,"suggestions":"46440"},{"ruleId":"45357","severity":2,"message":"45358","line":1865,"column":53,"nodeType":"45359","messageId":"45360","endLine":1865,"endColumn":56,"suggestions":"46441"},{"ruleId":"45357","severity":2,"message":"45358","line":1940,"column":78,"nodeType":"45359","messageId":"45360","endLine":1940,"endColumn":81,"suggestions":"46442"},{"ruleId":"45357","severity":2,"message":"45358","line":1943,"column":28,"nodeType":"45359","messageId":"45360","endLine":1943,"endColumn":31,"suggestions":"46443"},{"ruleId":"45357","severity":2,"message":"45358","line":1944,"column":28,"nodeType":"45359","messageId":"45360","endLine":1944,"endColumn":31,"suggestions":"46444"},{"ruleId":"45357","severity":2,"message":"45358","line":1946,"column":24,"nodeType":"45359","messageId":"45360","endLine":1946,"endColumn":27,"suggestions":"46445"},{"ruleId":"45357","severity":2,"message":"45358","line":1949,"column":28,"nodeType":"45359","messageId":"45360","endLine":1949,"endColumn":31,"suggestions":"46446"},{"ruleId":"45357","severity":2,"message":"45358","line":1991,"column":80,"nodeType":"45359","messageId":"45360","endLine":1991,"endColumn":83,"suggestions":"46447"},{"ruleId":"45357","severity":2,"message":"45358","line":1994,"column":30,"nodeType":"45359","messageId":"45360","endLine":1994,"endColumn":33,"suggestions":"46448"},{"ruleId":"45357","severity":2,"message":"45358","line":1997,"column":20,"nodeType":"45359","messageId":"45360","endLine":1997,"endColumn":23,"suggestions":"46449"},{"ruleId":"45357","severity":2,"message":"45358","line":2003,"column":84,"nodeType":"45359","messageId":"45360","endLine":2003,"endColumn":87,"suggestions":"46450"},{"ruleId":"45357","severity":2,"message":"45358","line":2005,"column":32,"nodeType":"45359","messageId":"45360","endLine":2005,"endColumn":35,"suggestions":"46451"},{"ruleId":"45357","severity":2,"message":"45358","line":2009,"column":34,"nodeType":"45359","messageId":"45360","endLine":2009,"endColumn":37,"suggestions":"46452"},{"ruleId":"45357","severity":2,"message":"45358","line":2033,"column":53,"nodeType":"45359","messageId":"45360","endLine":2033,"endColumn":56,"suggestions":"46453"},{"ruleId":"45357","severity":2,"message":"45358","line":2068,"column":53,"nodeType":"45359","messageId":"45360","endLine":2068,"endColumn":56,"suggestions":"46454"},{"ruleId":"45357","severity":2,"message":"45358","line":2089,"column":53,"nodeType":"45359","messageId":"45360","endLine":2089,"endColumn":56,"suggestions":"46455"},{"ruleId":"45357","severity":2,"message":"45358","line":2172,"column":53,"nodeType":"45359","messageId":"45360","endLine":2172,"endColumn":56,"suggestions":"46456"},{"ruleId":"45357","severity":2,"message":"45358","line":2334,"column":50,"nodeType":"45359","messageId":"45360","endLine":2334,"endColumn":53,"suggestions":"46457"},{"ruleId":"45357","severity":2,"message":"45358","line":2337,"column":21,"nodeType":"45359","messageId":"45360","endLine":2337,"endColumn":24,"suggestions":"46458"},{"ruleId":"45357","severity":2,"message":"45358","line":60,"column":61,"nodeType":"45359","messageId":"45360","endLine":60,"endColumn":64,"suggestions":"46459"},{"ruleId":"45357","severity":2,"message":"45358","line":150,"column":13,"nodeType":"45359","messageId":"45360","endLine":150,"endColumn":16,"suggestions":"46460"},{"ruleId":"45357","severity":2,"message":"45358","line":156,"column":51,"nodeType":"45359","messageId":"45360","endLine":156,"endColumn":54,"suggestions":"46461"},{"ruleId":"45357","severity":2,"message":"45358","line":178,"column":13,"nodeType":"45359","messageId":"45360","endLine":178,"endColumn":16,"suggestions":"46462"},{"ruleId":"45357","severity":2,"message":"45358","line":209,"column":13,"nodeType":"45359","messageId":"45360","endLine":209,"endColumn":16,"suggestions":"46463"},{"ruleId":"45357","severity":2,"message":"45358","line":244,"column":13,"nodeType":"45359","messageId":"45360","endLine":244,"endColumn":16,"suggestions":"46464"},{"ruleId":"45357","severity":2,"message":"45358","line":13,"column":34,"nodeType":"45359","messageId":"45360","endLine":13,"endColumn":37,"suggestions":"46465"},{"ruleId":"45357","severity":2,"message":"45358","line":40,"column":33,"nodeType":"45359","messageId":"45360","endLine":40,"endColumn":36,"suggestions":"46466"},{"ruleId":"45357","severity":2,"message":"45358","line":61,"column":35,"nodeType":"45359","messageId":"45360","endLine":61,"endColumn":38,"suggestions":"46467"},{"ruleId":"45357","severity":2,"message":"45358","line":135,"column":28,"nodeType":"45359","messageId":"45360","endLine":135,"endColumn":31,"suggestions":"46468"},{"ruleId":"45357","severity":2,"message":"45358","line":136,"column":22,"nodeType":"45359","messageId":"45360","endLine":136,"endColumn":25,"suggestions":"46469"},{"ruleId":"45357","severity":2,"message":"45358","line":143,"column":28,"nodeType":"45359","messageId":"45360","endLine":143,"endColumn":31,"suggestions":"46470"},{"ruleId":"45357","severity":2,"message":"45358","line":179,"column":38,"nodeType":"45359","messageId":"45360","endLine":179,"endColumn":41,"suggestions":"46471"},{"ruleId":"45357","severity":2,"message":"45358","line":180,"column":38,"nodeType":"45359","messageId":"45360","endLine":180,"endColumn":41,"suggestions":"46472"},{"ruleId":"45357","severity":2,"message":"45358","line":277,"column":38,"nodeType":"45359","messageId":"45360","endLine":277,"endColumn":41,"suggestions":"46473"},{"ruleId":"45357","severity":2,"message":"45358","line":344,"column":25,"nodeType":"45359","messageId":"45360","endLine":344,"endColumn":28,"suggestions":"46474"},{"ruleId":"45357","severity":2,"message":"45358","line":346,"column":29,"nodeType":"45359","messageId":"45360","endLine":346,"endColumn":32,"suggestions":"46475"},{"ruleId":"45357","severity":2,"message":"45358","line":347,"column":39,"nodeType":"45359","messageId":"45360","endLine":347,"endColumn":42,"suggestions":"46476"},{"ruleId":"45357","severity":2,"message":"45358","line":348,"column":39,"nodeType":"45359","messageId":"45360","endLine":348,"endColumn":42,"suggestions":"46477"},{"ruleId":"45357","severity":2,"message":"45358","line":349,"column":29,"nodeType":"45359","messageId":"45360","endLine":349,"endColumn":32,"suggestions":"46478"},{"ruleId":"45357","severity":2,"message":"45358","line":354,"column":40,"nodeType":"45359","messageId":"45360","endLine":354,"endColumn":43,"suggestions":"46479"},{"ruleId":"45357","severity":2,"message":"45358","line":355,"column":40,"nodeType":"45359","messageId":"45360","endLine":355,"endColumn":43,"suggestions":"46480"},{"ruleId":"45357","severity":2,"message":"45358","line":356,"column":14,"nodeType":"45359","messageId":"45360","endLine":356,"endColumn":17,"suggestions":"46481"},{"ruleId":"45357","severity":2,"message":"45358","line":356,"column":53,"nodeType":"45359","messageId":"45360","endLine":356,"endColumn":56,"suggestions":"46482"},{"ruleId":"45357","severity":2,"message":"45358","line":357,"column":14,"nodeType":"45359","messageId":"45360","endLine":357,"endColumn":17,"suggestions":"46483"},{"ruleId":"45357","severity":2,"message":"45358","line":357,"column":62,"nodeType":"45359","messageId":"45360","endLine":357,"endColumn":65,"suggestions":"46484"},{"ruleId":"45357","severity":2,"message":"45358","line":358,"column":53,"nodeType":"45359","messageId":"45360","endLine":358,"endColumn":56,"suggestions":"46485"},{"ruleId":"45357","severity":2,"message":"45358","line":396,"column":51,"nodeType":"45359","messageId":"45360","endLine":396,"endColumn":54,"suggestions":"46486"},{"ruleId":"45357","severity":2,"message":"45358","line":398,"column":51,"nodeType":"45359","messageId":"45360","endLine":398,"endColumn":54,"suggestions":"46487"},{"ruleId":"45357","severity":2,"message":"45358","line":399,"column":51,"nodeType":"45359","messageId":"45360","endLine":399,"endColumn":54,"suggestions":"46488"},{"ruleId":"45357","severity":2,"message":"45358","line":400,"column":51,"nodeType":"45359","messageId":"45360","endLine":400,"endColumn":54,"suggestions":"46489"},{"ruleId":"45357","severity":2,"message":"45358","line":401,"column":51,"nodeType":"45359","messageId":"45360","endLine":401,"endColumn":54,"suggestions":"46490"},{"ruleId":"45357","severity":2,"message":"45358","line":428,"column":51,"nodeType":"45359","messageId":"45360","endLine":428,"endColumn":54,"suggestions":"46491"},{"ruleId":"45357","severity":2,"message":"45358","line":429,"column":51,"nodeType":"45359","messageId":"45360","endLine":429,"endColumn":54,"suggestions":"46492"},{"ruleId":"45357","severity":2,"message":"45358","line":447,"column":14,"nodeType":"45359","messageId":"45360","endLine":447,"endColumn":17,"suggestions":"46493"},{"ruleId":"45357","severity":2,"message":"45358","line":448,"column":28,"nodeType":"45359","messageId":"45360","endLine":448,"endColumn":31,"suggestions":"46494"},{"ruleId":"45357","severity":2,"message":"45358","line":489,"column":30,"nodeType":"45359","messageId":"45360","endLine":489,"endColumn":33,"suggestions":"46495"},{"ruleId":"45357","severity":2,"message":"45358","line":490,"column":52,"nodeType":"45359","messageId":"45360","endLine":490,"endColumn":55,"suggestions":"46496"},{"ruleId":"45357","severity":2,"message":"45358","line":29,"column":69,"nodeType":"45359","messageId":"45360","endLine":29,"endColumn":72,"suggestions":"46497"},{"ruleId":"45357","severity":2,"message":"45358","line":83,"column":35,"nodeType":"45359","messageId":"45360","endLine":83,"endColumn":38,"suggestions":"46498"},{"ruleId":"45357","severity":2,"message":"45358","line":84,"column":35,"nodeType":"45359","messageId":"45360","endLine":84,"endColumn":38,"suggestions":"46499"},{"ruleId":"45357","severity":2,"message":"45358","line":117,"column":10,"nodeType":"45359","messageId":"45360","endLine":117,"endColumn":13,"suggestions":"46500"},{"ruleId":"45357","severity":2,"message":"45358","line":34,"column":49,"nodeType":"45359","messageId":"45360","endLine":34,"endColumn":52,"suggestions":"46501"},{"ruleId":"45357","severity":2,"message":"45358","line":43,"column":49,"nodeType":"45359","messageId":"45360","endLine":43,"endColumn":52,"suggestions":"46502"},{"ruleId":"45357","severity":2,"message":"45358","line":50,"column":49,"nodeType":"45359","messageId":"45360","endLine":50,"endColumn":52,"suggestions":"46503"},{"ruleId":"45357","severity":2,"message":"45358","line":66,"column":35,"nodeType":"45359","messageId":"45360","endLine":66,"endColumn":38,"suggestions":"46504"},{"ruleId":"45357","severity":2,"message":"45358","line":83,"column":22,"nodeType":"45359","messageId":"45360","endLine":83,"endColumn":25,"suggestions":"46505"},{"ruleId":"45357","severity":2,"message":"45358","line":88,"column":9,"nodeType":"45359","messageId":"45360","endLine":88,"endColumn":12,"suggestions":"46506"},{"ruleId":"45357","severity":2,"message":"45358","line":145,"column":35,"nodeType":"45359","messageId":"45360","endLine":145,"endColumn":38,"suggestions":"46507"},{"ruleId":"45357","severity":2,"message":"45358","line":161,"column":22,"nodeType":"45359","messageId":"45360","endLine":161,"endColumn":25,"suggestions":"46508"},{"ruleId":"45357","severity":2,"message":"45358","line":166,"column":9,"nodeType":"45359","messageId":"45360","endLine":166,"endColumn":12,"suggestions":"46509"},{"ruleId":"45357","severity":2,"message":"45358","line":208,"column":35,"nodeType":"45359","messageId":"45360","endLine":208,"endColumn":38,"suggestions":"46510"},{"ruleId":"45357","severity":2,"message":"45358","line":253,"column":35,"nodeType":"45359","messageId":"45360","endLine":253,"endColumn":38,"suggestions":"46511"},{"ruleId":"45357","severity":2,"message":"45358","line":58,"column":9,"nodeType":"45359","messageId":"45360","endLine":58,"endColumn":12,"suggestions":"46512"},{"ruleId":"45357","severity":2,"message":"45358","line":63,"column":44,"nodeType":"45359","messageId":"45360","endLine":63,"endColumn":47,"suggestions":"46513"},{"ruleId":"45357","severity":2,"message":"45358","line":71,"column":29,"nodeType":"45359","messageId":"45360","endLine":71,"endColumn":32,"suggestions":"46514"},{"ruleId":"45357","severity":2,"message":"45358","line":75,"column":21,"nodeType":"45359","messageId":"45360","endLine":75,"endColumn":24,"suggestions":"46515"},{"ruleId":"45357","severity":2,"message":"45358","line":78,"column":43,"nodeType":"45359","messageId":"45360","endLine":78,"endColumn":46,"suggestions":"46516"},{"ruleId":"45357","severity":2,"message":"45358","line":82,"column":9,"nodeType":"45359","messageId":"45360","endLine":82,"endColumn":12,"suggestions":"46517"},{"ruleId":"45357","severity":2,"message":"45358","line":84,"column":30,"nodeType":"45359","messageId":"45360","endLine":84,"endColumn":33,"suggestions":"46518"},{"ruleId":"45357","severity":2,"message":"45358","line":111,"column":9,"nodeType":"45359","messageId":"45360","endLine":111,"endColumn":12,"suggestions":"46519"},{"ruleId":"45357","severity":2,"message":"45358","line":116,"column":30,"nodeType":"45359","messageId":"45360","endLine":116,"endColumn":33,"suggestions":"46520"},{"ruleId":"45357","severity":2,"message":"45358","line":129,"column":9,"nodeType":"45359","messageId":"45360","endLine":129,"endColumn":12,"suggestions":"46521"},{"ruleId":"45357","severity":2,"message":"45358","line":133,"column":44,"nodeType":"45359","messageId":"45360","endLine":133,"endColumn":47,"suggestions":"46522"},{"ruleId":"45357","severity":2,"message":"45358","line":147,"column":43,"nodeType":"45359","messageId":"45360","endLine":147,"endColumn":46,"suggestions":"46523"},{"ruleId":"45357","severity":2,"message":"45358","line":151,"column":9,"nodeType":"45359","messageId":"45360","endLine":151,"endColumn":12,"suggestions":"46524"},{"ruleId":"45357","severity":2,"message":"45358","line":153,"column":30,"nodeType":"45359","messageId":"45360","endLine":153,"endColumn":33,"suggestions":"46525"},{"ruleId":"45357","severity":2,"message":"45358","line":166,"column":9,"nodeType":"45359","messageId":"45360","endLine":166,"endColumn":12,"suggestions":"46526"},{"ruleId":"45357","severity":2,"message":"45358","line":168,"column":30,"nodeType":"45359","messageId":"45360","endLine":168,"endColumn":33,"suggestions":"46527"},{"ruleId":"45357","severity":2,"message":"45358","line":88,"column":37,"nodeType":"45359","messageId":"45360","endLine":88,"endColumn":40,"suggestions":"46528"},{"ruleId":"45357","severity":2,"message":"45358","line":92,"column":61,"nodeType":"45359","messageId":"45360","endLine":92,"endColumn":64,"suggestions":"46529"},{"ruleId":"45357","severity":2,"message":"45358","line":98,"column":29,"nodeType":"45359","messageId":"45360","endLine":98,"endColumn":32,"suggestions":"46530"},{"ruleId":"45357","severity":2,"message":"45358","line":99,"column":29,"nodeType":"45359","messageId":"45360","endLine":99,"endColumn":32,"suggestions":"46531"},{"ruleId":"45357","severity":2,"message":"45358","line":108,"column":9,"nodeType":"45359","messageId":"45360","endLine":108,"endColumn":12,"suggestions":"46532"},{"ruleId":"45357","severity":2,"message":"45358","line":112,"column":68,"nodeType":"45359","messageId":"45360","endLine":112,"endColumn":71,"suggestions":"46533"},{"ruleId":"45357","severity":2,"message":"45358","line":118,"column":30,"nodeType":"45359","messageId":"45360","endLine":118,"endColumn":33,"suggestions":"46534"},{"ruleId":"45357","severity":2,"message":"45358","line":127,"column":9,"nodeType":"45359","messageId":"45360","endLine":127,"endColumn":12,"suggestions":"46535"},{"ruleId":"45357","severity":2,"message":"45358","line":134,"column":20,"nodeType":"45359","messageId":"45360","endLine":134,"endColumn":23,"suggestions":"46536"},{"ruleId":"45357","severity":2,"message":"45358","line":149,"column":9,"nodeType":"45359","messageId":"45360","endLine":149,"endColumn":12,"suggestions":"46537"},{"ruleId":"45357","severity":2,"message":"45358","line":153,"column":65,"nodeType":"45359","messageId":"45360","endLine":153,"endColumn":68,"suggestions":"46538"},{"ruleId":"45357","severity":2,"message":"45358","line":169,"column":9,"nodeType":"45359","messageId":"45360","endLine":169,"endColumn":12,"suggestions":"46539"},{"ruleId":"45357","severity":2,"message":"45358","line":173,"column":62,"nodeType":"45359","messageId":"45360","endLine":173,"endColumn":65,"suggestions":"46540"},{"ruleId":"45357","severity":2,"message":"45358","line":184,"column":37,"nodeType":"45359","messageId":"45360","endLine":184,"endColumn":40,"suggestions":"46541"},{"ruleId":"45357","severity":2,"message":"45358","line":188,"column":75,"nodeType":"45359","messageId":"45360","endLine":188,"endColumn":78,"suggestions":"46542"},{"ruleId":"45357","severity":2,"message":"45358","line":43,"column":9,"nodeType":"45359","messageId":"45360","endLine":43,"endColumn":12,"suggestions":"46543"},{"ruleId":"45357","severity":2,"message":"45358","line":45,"column":30,"nodeType":"45359","messageId":"45360","endLine":45,"endColumn":33,"suggestions":"46544"},{"ruleId":"45357","severity":2,"message":"45358","line":57,"column":9,"nodeType":"45359","messageId":"45360","endLine":57,"endColumn":12,"suggestions":"46545"},{"ruleId":"45357","severity":2,"message":"45358","line":60,"column":30,"nodeType":"45359","messageId":"45360","endLine":60,"endColumn":33,"suggestions":"46546"},{"ruleId":"45357","severity":2,"message":"45358","line":67,"column":21,"nodeType":"45359","messageId":"45360","endLine":67,"endColumn":24,"suggestions":"46547"},{"ruleId":"45357","severity":2,"message":"45358","line":69,"column":44,"nodeType":"45359","messageId":"45360","endLine":69,"endColumn":47,"suggestions":"46548"},{"ruleId":"45357","severity":2,"message":"45358","line":72,"column":9,"nodeType":"45359","messageId":"45360","endLine":72,"endColumn":12,"suggestions":"46549"},{"ruleId":"45357","severity":2,"message":"45358","line":74,"column":30,"nodeType":"45359","messageId":"45360","endLine":74,"endColumn":33,"suggestions":"46550"},{"ruleId":"45357","severity":2,"message":"45358","line":92,"column":43,"nodeType":"45359","messageId":"45360","endLine":92,"endColumn":46,"suggestions":"46551"},{"ruleId":"45357","severity":2,"message":"45358","line":96,"column":9,"nodeType":"45359","messageId":"45360","endLine":96,"endColumn":12,"suggestions":"46552"},{"ruleId":"45357","severity":2,"message":"45358","line":98,"column":30,"nodeType":"45359","messageId":"45360","endLine":98,"endColumn":33,"suggestions":"46553"},{"ruleId":"45357","severity":2,"message":"45358","line":111,"column":9,"nodeType":"45359","messageId":"45360","endLine":111,"endColumn":12,"suggestions":"46554"},{"ruleId":"45357","severity":2,"message":"45358","line":113,"column":30,"nodeType":"45359","messageId":"45360","endLine":113,"endColumn":33,"suggestions":"46555"},{"ruleId":"45357","severity":2,"message":"45358","line":133,"column":10,"nodeType":"45359","messageId":"45360","endLine":133,"endColumn":13,"suggestions":"46556"},{"ruleId":"45357","severity":2,"message":"45358","line":134,"column":9,"nodeType":"45359","messageId":"45360","endLine":134,"endColumn":12,"suggestions":"46557"},{"ruleId":"45357","severity":2,"message":"45358","line":137,"column":47,"nodeType":"45359","messageId":"45360","endLine":137,"endColumn":50,"suggestions":"46558"},{"ruleId":"45357","severity":2,"message":"45358","line":43,"column":50,"nodeType":"45359","messageId":"45360","endLine":43,"endColumn":53,"suggestions":"46559"},{"ruleId":"45357","severity":2,"message":"45358","line":48,"column":69,"nodeType":"45359","messageId":"45360","endLine":48,"endColumn":72,"suggestions":"46560"},{"ruleId":"45357","severity":2,"message":"45358","line":60,"column":50,"nodeType":"45359","messageId":"45360","endLine":60,"endColumn":53,"suggestions":"46561"},{"ruleId":"45357","severity":2,"message":"45358","line":65,"column":69,"nodeType":"45359","messageId":"45360","endLine":65,"endColumn":72,"suggestions":"46562"},{"ruleId":"45357","severity":2,"message":"45358","line":79,"column":21,"nodeType":"45359","messageId":"45360","endLine":79,"endColumn":24,"suggestions":"46563"},{"ruleId":"45357","severity":2,"message":"45358","line":81,"column":43,"nodeType":"45359","messageId":"45360","endLine":81,"endColumn":46,"suggestions":"46564"},{"ruleId":"45357","severity":2,"message":"45358","line":84,"column":9,"nodeType":"45359","messageId":"45360","endLine":84,"endColumn":12,"suggestions":"46565"},{"ruleId":"45357","severity":2,"message":"45358","line":89,"column":92,"nodeType":"45359","messageId":"45360","endLine":89,"endColumn":95,"suggestions":"46566"},{"ruleId":"45357","severity":2,"message":"45358","line":101,"column":50,"nodeType":"45359","messageId":"45360","endLine":101,"endColumn":53,"suggestions":"46567"},{"ruleId":"45357","severity":2,"message":"45358","line":105,"column":83,"nodeType":"45359","messageId":"45360","endLine":105,"endColumn":86,"suggestions":"46568"},{"ruleId":"45357","severity":2,"message":"45358","line":126,"column":43,"nodeType":"45359","messageId":"45360","endLine":126,"endColumn":46,"suggestions":"46569"},{"ruleId":"45357","severity":2,"message":"45358","line":129,"column":9,"nodeType":"45359","messageId":"45360","endLine":129,"endColumn":12,"suggestions":"46570"},{"ruleId":"45357","severity":2,"message":"45358","line":137,"column":91,"nodeType":"45359","messageId":"45360","endLine":137,"endColumn":94,"suggestions":"46571"},{"ruleId":"45357","severity":2,"message":"45358","line":147,"column":21,"nodeType":"45359","messageId":"45360","endLine":147,"endColumn":24,"suggestions":"46572"},{"ruleId":"45357","severity":2,"message":"45358","line":149,"column":43,"nodeType":"45359","messageId":"45360","endLine":149,"endColumn":46,"suggestions":"46573"},{"ruleId":"45357","severity":2,"message":"45358","line":152,"column":9,"nodeType":"45359","messageId":"45360","endLine":152,"endColumn":12,"suggestions":"46574"},{"ruleId":"45357","severity":2,"message":"45358","line":160,"column":91,"nodeType":"45359","messageId":"45360","endLine":160,"endColumn":94,"suggestions":"46575"},{"ruleId":"45357","severity":2,"message":"45358","line":54,"column":9,"nodeType":"45359","messageId":"45360","endLine":54,"endColumn":12,"suggestions":"46576"},{"ruleId":"45357","severity":2,"message":"45358","line":59,"column":42,"nodeType":"45359","messageId":"45360","endLine":59,"endColumn":45,"suggestions":"46577"},{"ruleId":"45357","severity":2,"message":"45358","line":72,"column":9,"nodeType":"45359","messageId":"45360","endLine":72,"endColumn":12,"suggestions":"46578"},{"ruleId":"45357","severity":2,"message":"45358","line":81,"column":42,"nodeType":"45359","messageId":"45360","endLine":81,"endColumn":45,"suggestions":"46579"},{"ruleId":"45357","severity":2,"message":"45358","line":89,"column":21,"nodeType":"45359","messageId":"45360","endLine":89,"endColumn":24,"suggestions":"46580"},{"ruleId":"45357","severity":2,"message":"45358","line":92,"column":43,"nodeType":"45359","messageId":"45360","endLine":92,"endColumn":46,"suggestions":"46581"},{"ruleId":"45357","severity":2,"message":"45358","line":96,"column":9,"nodeType":"45359","messageId":"45360","endLine":96,"endColumn":12,"suggestions":"46582"},{"ruleId":"45357","severity":2,"message":"45358","line":106,"column":30,"nodeType":"45359","messageId":"45360","endLine":106,"endColumn":33,"suggestions":"46583"},{"ruleId":"45357","severity":2,"message":"45358","line":118,"column":21,"nodeType":"45359","messageId":"45360","endLine":118,"endColumn":24,"suggestions":"46584"},{"ruleId":"45357","severity":2,"message":"45358","line":120,"column":44,"nodeType":"45359","messageId":"45360","endLine":120,"endColumn":47,"suggestions":"46585"},{"ruleId":"45357","severity":2,"message":"45358","line":123,"column":9,"nodeType":"45359","messageId":"45360","endLine":123,"endColumn":12,"suggestions":"46586"},{"ruleId":"45357","severity":2,"message":"45358","line":125,"column":30,"nodeType":"45359","messageId":"45360","endLine":125,"endColumn":33,"suggestions":"46587"},{"ruleId":"45357","severity":2,"message":"45358","line":135,"column":21,"nodeType":"45359","messageId":"45360","endLine":135,"endColumn":24,"suggestions":"46588"},{"ruleId":"45357","severity":2,"message":"45358","line":137,"column":44,"nodeType":"45359","messageId":"45360","endLine":137,"endColumn":47,"suggestions":"46589"},{"ruleId":"45357","severity":2,"message":"45358","line":140,"column":9,"nodeType":"45359","messageId":"45360","endLine":140,"endColumn":12,"suggestions":"46590"},{"ruleId":"45357","severity":2,"message":"45358","line":142,"column":30,"nodeType":"45359","messageId":"45360","endLine":142,"endColumn":33,"suggestions":"46591"},{"ruleId":"45357","severity":2,"message":"45358","line":157,"column":9,"nodeType":"45359","messageId":"45360","endLine":157,"endColumn":12,"suggestions":"46592"},{"ruleId":"45357","severity":2,"message":"45358","line":159,"column":30,"nodeType":"45359","messageId":"45360","endLine":159,"endColumn":33,"suggestions":"46593"},{"ruleId":"45357","severity":2,"message":"45358","line":23,"column":21,"nodeType":"45359","messageId":"45360","endLine":23,"endColumn":24,"suggestions":"46594"},{"ruleId":"45357","severity":2,"message":"45358","line":26,"column":43,"nodeType":"45359","messageId":"45360","endLine":26,"endColumn":46,"suggestions":"46595"},{"ruleId":"45357","severity":2,"message":"45358","line":43,"column":9,"nodeType":"45359","messageId":"45360","endLine":43,"endColumn":12,"suggestions":"46596"},{"ruleId":"45357","severity":2,"message":"45358","line":45,"column":30,"nodeType":"45359","messageId":"45360","endLine":45,"endColumn":33,"suggestions":"46597"},{"ruleId":"45357","severity":2,"message":"45358","line":60,"column":21,"nodeType":"45359","messageId":"45360","endLine":60,"endColumn":24,"suggestions":"46598"},{"ruleId":"45357","severity":2,"message":"45358","line":62,"column":44,"nodeType":"45359","messageId":"45360","endLine":62,"endColumn":47,"suggestions":"46599"},{"ruleId":"45357","severity":2,"message":"45358","line":65,"column":9,"nodeType":"45359","messageId":"45360","endLine":65,"endColumn":12,"suggestions":"46600"},{"ruleId":"45357","severity":2,"message":"45358","line":67,"column":30,"nodeType":"45359","messageId":"45360","endLine":67,"endColumn":33,"suggestions":"46601"},{"ruleId":"45357","severity":2,"message":"45358","line":86,"column":21,"nodeType":"45359","messageId":"45360","endLine":86,"endColumn":24,"suggestions":"46602"},{"ruleId":"45357","severity":2,"message":"45358","line":88,"column":44,"nodeType":"45359","messageId":"45360","endLine":88,"endColumn":47,"suggestions":"46603"},{"ruleId":"45357","severity":2,"message":"45358","line":91,"column":9,"nodeType":"45359","messageId":"45360","endLine":91,"endColumn":12,"suggestions":"46604"},{"ruleId":"45357","severity":2,"message":"45358","line":93,"column":30,"nodeType":"45359","messageId":"45360","endLine":93,"endColumn":33,"suggestions":"46605"},{"ruleId":"45357","severity":2,"message":"45358","line":112,"column":43,"nodeType":"45359","messageId":"45360","endLine":112,"endColumn":46,"suggestions":"46606"},{"ruleId":"45357","severity":2,"message":"45358","line":118,"column":9,"nodeType":"45359","messageId":"45360","endLine":118,"endColumn":12,"suggestions":"46607"},{"ruleId":"45357","severity":2,"message":"45358","line":120,"column":30,"nodeType":"45359","messageId":"45360","endLine":120,"endColumn":33,"suggestions":"46608"},{"ruleId":"45357","severity":2,"message":"45358","line":124,"column":30,"nodeType":"45359","messageId":"45360","endLine":124,"endColumn":33,"suggestions":"46609"},{"ruleId":"45357","severity":2,"message":"45358","line":13,"column":22,"nodeType":"45359","messageId":"45360","endLine":13,"endColumn":25,"suggestions":"46610"},{"ruleId":"45357","severity":2,"message":"45358","line":22,"column":24,"nodeType":"45359","messageId":"45360","endLine":22,"endColumn":27,"suggestions":"46611"},{"ruleId":"45357","severity":2,"message":"45358","line":32,"column":22,"nodeType":"45359","messageId":"45360","endLine":32,"endColumn":25,"suggestions":"46612"},{"ruleId":"45357","severity":2,"message":"45358","line":41,"column":24,"nodeType":"45359","messageId":"45360","endLine":41,"endColumn":27,"suggestions":"46613"},{"ruleId":"45357","severity":2,"message":"45358","line":50,"column":22,"nodeType":"45359","messageId":"45360","endLine":50,"endColumn":25,"suggestions":"46614"},{"ruleId":"45357","severity":2,"message":"45358","line":59,"column":24,"nodeType":"45359","messageId":"45360","endLine":59,"endColumn":27,"suggestions":"46615"},{"ruleId":"45357","severity":2,"message":"45358","line":67,"column":22,"nodeType":"45359","messageId":"45360","endLine":67,"endColumn":25,"suggestions":"46616"},{"ruleId":"45357","severity":2,"message":"45358","line":70,"column":61,"nodeType":"45359","messageId":"45360","endLine":70,"endColumn":64,"suggestions":"46617"},{"ruleId":"45357","severity":2,"message":"45358","line":73,"column":24,"nodeType":"45359","messageId":"45360","endLine":73,"endColumn":27,"suggestions":"46618"},{"ruleId":"45357","severity":2,"message":"45358","line":81,"column":22,"nodeType":"45359","messageId":"45360","endLine":81,"endColumn":25,"suggestions":"46619"},{"ruleId":"45357","severity":2,"message":"45358","line":88,"column":24,"nodeType":"45359","messageId":"45360","endLine":88,"endColumn":27,"suggestions":"46620"},{"ruleId":"45357","severity":2,"message":"45358","line":38,"column":21,"nodeType":"45359","messageId":"45360","endLine":38,"endColumn":24,"suggestions":"46621"},{"ruleId":"45357","severity":2,"message":"45358","line":40,"column":44,"nodeType":"45359","messageId":"45360","endLine":40,"endColumn":47,"suggestions":"46622"},{"ruleId":"45357","severity":2,"message":"45358","line":43,"column":9,"nodeType":"45359","messageId":"45360","endLine":43,"endColumn":12,"suggestions":"46623"},{"ruleId":"45357","severity":2,"message":"45358","line":46,"column":67,"nodeType":"45359","messageId":"45360","endLine":46,"endColumn":70,"suggestions":"46624"},{"ruleId":"45357","severity":2,"message":"45358","line":53,"column":21,"nodeType":"45359","messageId":"45360","endLine":53,"endColumn":24,"suggestions":"46625"},{"ruleId":"45357","severity":2,"message":"45358","line":55,"column":44,"nodeType":"45359","messageId":"45360","endLine":55,"endColumn":47,"suggestions":"46626"},{"ruleId":"45357","severity":2,"message":"45358","line":58,"column":9,"nodeType":"45359","messageId":"45360","endLine":58,"endColumn":12,"suggestions":"46627"},{"ruleId":"45357","severity":2,"message":"45358","line":62,"column":93,"nodeType":"45359","messageId":"45360","endLine":62,"endColumn":96,"suggestions":"46628"},{"ruleId":"45357","severity":2,"message":"45358","line":75,"column":21,"nodeType":"45359","messageId":"45360","endLine":75,"endColumn":24,"suggestions":"46629"},{"ruleId":"45357","severity":2,"message":"45358","line":77,"column":44,"nodeType":"45359","messageId":"45360","endLine":77,"endColumn":47,"suggestions":"46630"},{"ruleId":"45357","severity":2,"message":"45358","line":80,"column":9,"nodeType":"45359","messageId":"45360","endLine":80,"endColumn":12,"suggestions":"46631"},{"ruleId":"45357","severity":2,"message":"45358","line":84,"column":59,"nodeType":"45359","messageId":"45360","endLine":84,"endColumn":62,"suggestions":"46632"},{"ruleId":"45357","severity":2,"message":"45358","line":99,"column":9,"nodeType":"45359","messageId":"45360","endLine":99,"endColumn":12,"suggestions":"46633"},{"ruleId":"45357","severity":2,"message":"45358","line":103,"column":70,"nodeType":"45359","messageId":"45360","endLine":103,"endColumn":73,"suggestions":"46634"},{"ruleId":"45357","severity":2,"message":"45358","line":120,"column":9,"nodeType":"45359","messageId":"45360","endLine":120,"endColumn":12,"suggestions":"46635"},{"ruleId":"45357","severity":2,"message":"45358","line":122,"column":30,"nodeType":"45359","messageId":"45360","endLine":122,"endColumn":33,"suggestions":"46636"},{"ruleId":"45357","severity":2,"message":"45358","line":129,"column":21,"nodeType":"45359","messageId":"45360","endLine":129,"endColumn":24,"suggestions":"46637"},{"ruleId":"45357","severity":2,"message":"45358","line":132,"column":43,"nodeType":"45359","messageId":"45360","endLine":132,"endColumn":46,"suggestions":"46638"},{"ruleId":"45357","severity":2,"message":"45358","line":136,"column":9,"nodeType":"45359","messageId":"45360","endLine":136,"endColumn":12,"suggestions":"46639"},{"ruleId":"45357","severity":2,"message":"45358","line":138,"column":30,"nodeType":"45359","messageId":"45360","endLine":138,"endColumn":33,"suggestions":"46640"},{"ruleId":"45357","severity":2,"message":"45358","line":155,"column":9,"nodeType":"45359","messageId":"45360","endLine":155,"endColumn":12,"suggestions":"46641"},{"ruleId":"45357","severity":2,"message":"45358","line":157,"column":30,"nodeType":"45359","messageId":"45360","endLine":157,"endColumn":33,"suggestions":"46642"},{"ruleId":"45357","severity":2,"message":"45358","line":191,"column":9,"nodeType":"45359","messageId":"45360","endLine":191,"endColumn":12,"suggestions":"46643"},{"ruleId":"45357","severity":2,"message":"45358","line":194,"column":67,"nodeType":"45359","messageId":"45360","endLine":194,"endColumn":70,"suggestions":"46644"},{"ruleId":"45357","severity":2,"message":"45358","line":212,"column":17,"nodeType":"45359","messageId":"45360","endLine":212,"endColumn":20,"suggestions":"46645"},{"ruleId":"45357","severity":2,"message":"45358","line":214,"column":44,"nodeType":"45359","messageId":"45360","endLine":214,"endColumn":47,"suggestions":"46646"},{"ruleId":"45357","severity":2,"message":"45358","line":217,"column":9,"nodeType":"45359","messageId":"45360","endLine":217,"endColumn":12,"suggestions":"46647"},{"ruleId":"45357","severity":2,"message":"45358","line":221,"column":62,"nodeType":"45359","messageId":"45360","endLine":221,"endColumn":65,"suggestions":"46648"},{"ruleId":"45357","severity":2,"message":"45358","line":229,"column":61,"nodeType":"45359","messageId":"45360","endLine":229,"endColumn":64,"suggestions":"46649"},{"ruleId":"45357","severity":2,"message":"45358","line":231,"column":43,"nodeType":"45359","messageId":"45360","endLine":231,"endColumn":46,"suggestions":"46650"},{"ruleId":"45357","severity":2,"message":"45358","line":241,"column":9,"nodeType":"45359","messageId":"45360","endLine":241,"endColumn":12,"suggestions":"46651"},{"ruleId":"45357","severity":2,"message":"45358","line":245,"column":59,"nodeType":"45359","messageId":"45360","endLine":245,"endColumn":62,"suggestions":"46652"},{"ruleId":"45357","severity":2,"message":"45358","line":43,"column":9,"nodeType":"45359","messageId":"45360","endLine":43,"endColumn":12,"suggestions":"46653"},{"ruleId":"45357","severity":2,"message":"45358","line":45,"column":30,"nodeType":"45359","messageId":"45360","endLine":45,"endColumn":33,"suggestions":"46654"},{"ruleId":"45357","severity":2,"message":"45358","line":53,"column":21,"nodeType":"45359","messageId":"45360","endLine":53,"endColumn":24,"suggestions":"46655"},{"ruleId":"45357","severity":2,"message":"45358","line":56,"column":44,"nodeType":"45359","messageId":"45360","endLine":56,"endColumn":47,"suggestions":"46656"},{"ruleId":"45357","severity":2,"message":"45358","line":60,"column":9,"nodeType":"45359","messageId":"45360","endLine":60,"endColumn":12,"suggestions":"46657"},{"ruleId":"45357","severity":2,"message":"45358","line":62,"column":30,"nodeType":"45359","messageId":"45360","endLine":62,"endColumn":33,"suggestions":"46658"},{"ruleId":"45357","severity":2,"message":"45358","line":74,"column":21,"nodeType":"45359","messageId":"45360","endLine":74,"endColumn":24,"suggestions":"46659"},{"ruleId":"45357","severity":2,"message":"45358","line":76,"column":44,"nodeType":"45359","messageId":"45360","endLine":76,"endColumn":47,"suggestions":"46660"},{"ruleId":"45357","severity":2,"message":"45358","line":79,"column":9,"nodeType":"45359","messageId":"45360","endLine":79,"endColumn":12,"suggestions":"46661"},{"ruleId":"45357","severity":2,"message":"45358","line":81,"column":30,"nodeType":"45359","messageId":"45360","endLine":81,"endColumn":33,"suggestions":"46662"},{"ruleId":"45357","severity":2,"message":"45358","line":92,"column":21,"nodeType":"45359","messageId":"45360","endLine":92,"endColumn":24,"suggestions":"46663"},{"ruleId":"45357","severity":2,"message":"45358","line":94,"column":44,"nodeType":"45359","messageId":"45360","endLine":94,"endColumn":47,"suggestions":"46664"},{"ruleId":"45357","severity":2,"message":"45358","line":97,"column":9,"nodeType":"45359","messageId":"45360","endLine":97,"endColumn":12,"suggestions":"46665"},{"ruleId":"45357","severity":2,"message":"45358","line":99,"column":30,"nodeType":"45359","messageId":"45360","endLine":99,"endColumn":33,"suggestions":"46666"},{"ruleId":"45357","severity":2,"message":"45358","line":113,"column":43,"nodeType":"45359","messageId":"45360","endLine":113,"endColumn":46,"suggestions":"46667"},{"ruleId":"45357","severity":2,"message":"45358","line":117,"column":9,"nodeType":"45359","messageId":"45360","endLine":117,"endColumn":12,"suggestions":"46668"},{"ruleId":"45357","severity":2,"message":"45358","line":119,"column":30,"nodeType":"45359","messageId":"45360","endLine":119,"endColumn":33,"suggestions":"46669"},{"ruleId":"45357","severity":2,"message":"45358","line":132,"column":9,"nodeType":"45359","messageId":"45360","endLine":132,"endColumn":12,"suggestions":"46670"},{"ruleId":"45357","severity":2,"message":"45358","line":134,"column":30,"nodeType":"45359","messageId":"45360","endLine":134,"endColumn":33,"suggestions":"46671"},{"ruleId":"45357","severity":2,"message":"45358","line":102,"column":18,"nodeType":"45359","messageId":"45360","endLine":102,"endColumn":21,"suggestions":"46672","suppressions":"46673"},{"ruleId":"45357","severity":2,"message":"45358","line":124,"column":22,"nodeType":"45359","messageId":"45360","endLine":124,"endColumn":25,"suggestions":"46674","suppressions":"46675"},{"ruleId":"45357","severity":2,"message":"45358","line":102,"column":37,"nodeType":"45359","messageId":"45360","endLine":102,"endColumn":40,"suggestions":"46676"},{"ruleId":"45357","severity":2,"message":"45358","line":107,"column":79,"nodeType":"45359","messageId":"45360","endLine":107,"endColumn":82,"suggestions":"46677"},{"ruleId":"45357","severity":2,"message":"45358","line":116,"column":37,"nodeType":"45359","messageId":"45360","endLine":116,"endColumn":40,"suggestions":"46678"},{"ruleId":"45357","severity":2,"message":"45358","line":121,"column":79,"nodeType":"45359","messageId":"45360","endLine":121,"endColumn":82,"suggestions":"46679"},{"ruleId":"45357","severity":2,"message":"45358","line":135,"column":37,"nodeType":"45359","messageId":"45360","endLine":135,"endColumn":40,"suggestions":"46680"},{"ruleId":"45357","severity":2,"message":"45358","line":140,"column":75,"nodeType":"45359","messageId":"45360","endLine":140,"endColumn":78,"suggestions":"46681"},{"ruleId":"45357","severity":2,"message":"45358","line":146,"column":29,"nodeType":"45359","messageId":"45360","endLine":146,"endColumn":32,"suggestions":"46682"},{"ruleId":"45357","severity":2,"message":"45358","line":151,"column":37,"nodeType":"45359","messageId":"45360","endLine":151,"endColumn":40,"suggestions":"46683"},{"ruleId":"45357","severity":2,"message":"45358","line":156,"column":73,"nodeType":"45359","messageId":"45360","endLine":156,"endColumn":76,"suggestions":"46684"},{"ruleId":"45357","severity":2,"message":"45358","line":162,"column":29,"nodeType":"45359","messageId":"45360","endLine":162,"endColumn":32,"suggestions":"46685"},{"ruleId":"45357","severity":2,"message":"45358","line":167,"column":37,"nodeType":"45359","messageId":"45360","endLine":167,"endColumn":40,"suggestions":"46686"},{"ruleId":"45357","severity":2,"message":"45358","line":172,"column":79,"nodeType":"45359","messageId":"45360","endLine":172,"endColumn":82,"suggestions":"46687"},{"ruleId":"45357","severity":2,"message":"45358","line":185,"column":9,"nodeType":"45359","messageId":"45360","endLine":185,"endColumn":12,"suggestions":"46688"},{"ruleId":"45357","severity":2,"message":"45358","line":192,"column":14,"nodeType":"45359","messageId":"45360","endLine":192,"endColumn":17,"suggestions":"46689"},{"ruleId":"45357","severity":2,"message":"45358","line":204,"column":37,"nodeType":"45359","messageId":"45360","endLine":204,"endColumn":40,"suggestions":"46690"},{"ruleId":"45357","severity":2,"message":"45358","line":209,"column":77,"nodeType":"45359","messageId":"45360","endLine":209,"endColumn":80,"suggestions":"46691"},{"ruleId":"45357","severity":2,"message":"45358","line":65,"column":9,"nodeType":"45359","messageId":"45360","endLine":65,"endColumn":12,"suggestions":"46692"},{"ruleId":"45357","severity":2,"message":"45358","line":68,"column":76,"nodeType":"45359","messageId":"45360","endLine":68,"endColumn":79,"suggestions":"46693"},{"ruleId":"45357","severity":2,"message":"45358","line":82,"column":9,"nodeType":"45359","messageId":"45360","endLine":82,"endColumn":12,"suggestions":"46694"},{"ruleId":"45357","severity":2,"message":"45358","line":85,"column":88,"nodeType":"45359","messageId":"45360","endLine":85,"endColumn":91,"suggestions":"46695"},{"ruleId":"45357","severity":2,"message":"45358","line":94,"column":21,"nodeType":"45359","messageId":"45360","endLine":94,"endColumn":24,"suggestions":"46696"},{"ruleId":"45357","severity":2,"message":"45358","line":97,"column":43,"nodeType":"45359","messageId":"45360","endLine":97,"endColumn":46,"suggestions":"46697"},{"ruleId":"45357","severity":2,"message":"45358","line":101,"column":9,"nodeType":"45359","messageId":"45360","endLine":101,"endColumn":12,"suggestions":"46698"},{"ruleId":"45357","severity":2,"message":"45358","line":105,"column":79,"nodeType":"45359","messageId":"45360","endLine":105,"endColumn":82,"suggestions":"46699"},{"ruleId":"45357","severity":2,"message":"45358","line":121,"column":9,"nodeType":"45359","messageId":"45360","endLine":121,"endColumn":12,"suggestions":"46700"},{"ruleId":"45357","severity":2,"message":"45358","line":125,"column":86,"nodeType":"45359","messageId":"45360","endLine":125,"endColumn":89,"suggestions":"46701"},{"ruleId":"45357","severity":2,"message":"45358","line":140,"column":9,"nodeType":"45359","messageId":"45360","endLine":140,"endColumn":12,"suggestions":"46702"},{"ruleId":"45357","severity":2,"message":"45358","line":143,"column":80,"nodeType":"45359","messageId":"45360","endLine":143,"endColumn":83,"suggestions":"46703"},{"ruleId":"45357","severity":2,"message":"45358","line":155,"column":9,"nodeType":"45359","messageId":"45360","endLine":155,"endColumn":12,"suggestions":"46704"},{"ruleId":"45357","severity":2,"message":"45358","line":158,"column":84,"nodeType":"45359","messageId":"45360","endLine":158,"endColumn":87,"suggestions":"46705"},{"ruleId":"45357","severity":2,"message":"45358","line":172,"column":9,"nodeType":"45359","messageId":"45360","endLine":172,"endColumn":12,"suggestions":"46706"},{"ruleId":"45357","severity":2,"message":"45358","line":175,"column":86,"nodeType":"45359","messageId":"45360","endLine":175,"endColumn":89,"suggestions":"46707"},{"ruleId":"45357","severity":2,"message":"45358","line":182,"column":21,"nodeType":"45359","messageId":"45360","endLine":182,"endColumn":24,"suggestions":"46708"},{"ruleId":"45357","severity":2,"message":"45358","line":184,"column":44,"nodeType":"45359","messageId":"45360","endLine":184,"endColumn":47,"suggestions":"46709"},{"ruleId":"45357","severity":2,"message":"45358","line":187,"column":9,"nodeType":"45359","messageId":"45360","endLine":187,"endColumn":12,"suggestions":"46710"},{"ruleId":"45357","severity":2,"message":"45358","line":191,"column":64,"nodeType":"45359","messageId":"45360","endLine":191,"endColumn":67,"suggestions":"46711"},{"ruleId":"45357","severity":2,"message":"45358","line":209,"column":9,"nodeType":"45359","messageId":"45360","endLine":209,"endColumn":12,"suggestions":"46712"},{"ruleId":"45357","severity":2,"message":"45358","line":213,"column":89,"nodeType":"45359","messageId":"45360","endLine":213,"endColumn":92,"suggestions":"46713"},{"ruleId":"45357","severity":2,"message":"45358","line":241,"column":44,"nodeType":"45359","messageId":"45360","endLine":241,"endColumn":47,"suggestions":"46714"},{"ruleId":"45357","severity":2,"message":"45358","line":45,"column":9,"nodeType":"45359","messageId":"45360","endLine":45,"endColumn":12,"suggestions":"46715"},{"ruleId":"45357","severity":2,"message":"45358","line":47,"column":30,"nodeType":"45359","messageId":"45360","endLine":47,"endColumn":33,"suggestions":"46716"},{"ruleId":"45357","severity":2,"message":"45358","line":59,"column":9,"nodeType":"45359","messageId":"45360","endLine":59,"endColumn":12,"suggestions":"46717"},{"ruleId":"45357","severity":2,"message":"45358","line":62,"column":30,"nodeType":"45359","messageId":"45360","endLine":62,"endColumn":33,"suggestions":"46718"},{"ruleId":"45357","severity":2,"message":"45358","line":74,"column":9,"nodeType":"45359","messageId":"45360","endLine":74,"endColumn":12,"suggestions":"46719"},{"ruleId":"45357","severity":2,"message":"45358","line":76,"column":30,"nodeType":"45359","messageId":"45360","endLine":76,"endColumn":33,"suggestions":"46720"},{"ruleId":"45357","severity":2,"message":"45358","line":92,"column":10,"nodeType":"45359","messageId":"45360","endLine":92,"endColumn":13,"suggestions":"46721"},{"ruleId":"45357","severity":2,"message":"45358","line":93,"column":9,"nodeType":"45359","messageId":"45360","endLine":93,"endColumn":12,"suggestions":"46722"},{"ruleId":"45357","severity":2,"message":"45358","line":95,"column":30,"nodeType":"45359","messageId":"45360","endLine":95,"endColumn":33,"suggestions":"46723"},{"ruleId":"45357","severity":2,"message":"45358","line":105,"column":43,"nodeType":"45359","messageId":"45360","endLine":105,"endColumn":46,"suggestions":"46724"},{"ruleId":"45357","severity":2,"message":"45358","line":109,"column":9,"nodeType":"45359","messageId":"45360","endLine":109,"endColumn":12,"suggestions":"46725"},{"ruleId":"45357","severity":2,"message":"45358","line":111,"column":30,"nodeType":"45359","messageId":"45360","endLine":111,"endColumn":33,"suggestions":"46726"},{"ruleId":"45357","severity":2,"message":"45358","line":158,"column":58,"nodeType":"45359","messageId":"45360","endLine":158,"endColumn":61,"suggestions":"46727"},{"ruleId":"45357","severity":2,"message":"45358","line":300,"column":12,"nodeType":"45359","messageId":"45360","endLine":300,"endColumn":15,"suggestions":"46728"},{"ruleId":"45357","severity":2,"message":"45358","line":132,"column":34,"nodeType":"45359","messageId":"45360","endLine":132,"endColumn":37,"suggestions":"46729"},{"ruleId":"45357","severity":2,"message":"45358","line":38,"column":21,"nodeType":"45359","messageId":"45360","endLine":38,"endColumn":24,"suggestions":"46730"},{"ruleId":"45357","severity":2,"message":"45358","line":41,"column":43,"nodeType":"45359","messageId":"45360","endLine":41,"endColumn":46,"suggestions":"46731"},{"ruleId":"45357","severity":2,"message":"45358","line":45,"column":9,"nodeType":"45359","messageId":"45360","endLine":45,"endColumn":12,"suggestions":"46732"},{"ruleId":"45357","severity":2,"message":"45358","line":48,"column":30,"nodeType":"45359","messageId":"45360","endLine":48,"endColumn":33,"suggestions":"46733"},{"ruleId":"45357","severity":2,"message":"45358","line":60,"column":21,"nodeType":"45359","messageId":"45360","endLine":60,"endColumn":24,"suggestions":"46734"},{"ruleId":"45357","severity":2,"message":"45358","line":62,"column":44,"nodeType":"45359","messageId":"45360","endLine":62,"endColumn":47,"suggestions":"46735"},{"ruleId":"45357","severity":2,"message":"45358","line":65,"column":9,"nodeType":"45359","messageId":"45360","endLine":65,"endColumn":12,"suggestions":"46736"},{"ruleId":"45357","severity":2,"message":"45358","line":67,"column":30,"nodeType":"45359","messageId":"45360","endLine":67,"endColumn":33,"suggestions":"46737"},{"ruleId":"45357","severity":2,"message":"45358","line":82,"column":9,"nodeType":"45359","messageId":"45360","endLine":82,"endColumn":12,"suggestions":"46738"},{"ruleId":"45357","severity":2,"message":"45358","line":84,"column":30,"nodeType":"45359","messageId":"45360","endLine":84,"endColumn":33,"suggestions":"46739"},{"ruleId":"45357","severity":2,"message":"45358","line":98,"column":9,"nodeType":"45359","messageId":"45360","endLine":98,"endColumn":12,"suggestions":"46740"},{"ruleId":"45357","severity":2,"message":"45358","line":102,"column":44,"nodeType":"45359","messageId":"45360","endLine":102,"endColumn":47,"suggestions":"46741"},{"ruleId":"45357","severity":2,"message":"45358","line":119,"column":9,"nodeType":"45359","messageId":"45360","endLine":119,"endColumn":12,"suggestions":"46742"},{"ruleId":"45357","severity":2,"message":"45358","line":122,"column":30,"nodeType":"45359","messageId":"45360","endLine":122,"endColumn":33,"suggestions":"46743"},{"ruleId":"45357","severity":2,"message":"45358","line":136,"column":9,"nodeType":"45359","messageId":"45360","endLine":136,"endColumn":12,"suggestions":"46744"},{"ruleId":"45357","severity":2,"message":"45358","line":138,"column":30,"nodeType":"45359","messageId":"45360","endLine":138,"endColumn":33,"suggestions":"46745"},{"ruleId":"45357","severity":2,"message":"45358","line":56,"column":84,"nodeType":"45359","messageId":"45360","endLine":56,"endColumn":87,"suggestions":"46746"},{"ruleId":"45357","severity":2,"message":"45358","line":60,"column":62,"nodeType":"45359","messageId":"45360","endLine":60,"endColumn":65,"suggestions":"46747"},{"ruleId":"45357","severity":2,"message":"45358","line":76,"column":9,"nodeType":"45359","messageId":"45360","endLine":76,"endColumn":12,"suggestions":"46748"},{"ruleId":"45357","severity":2,"message":"45358","line":80,"column":81,"nodeType":"45359","messageId":"45360","endLine":80,"endColumn":84,"suggestions":"46749"},{"ruleId":"45357","severity":2,"message":"45358","line":95,"column":21,"nodeType":"45359","messageId":"45360","endLine":95,"endColumn":24,"suggestions":"46750"},{"ruleId":"45357","severity":2,"message":"45358","line":97,"column":43,"nodeType":"45359","messageId":"45360","endLine":97,"endColumn":46,"suggestions":"46751"},{"ruleId":"45357","severity":2,"message":"45358","line":103,"column":9,"nodeType":"45359","messageId":"45360","endLine":103,"endColumn":12,"suggestions":"46752"},{"ruleId":"45357","severity":2,"message":"45358","line":107,"column":74,"nodeType":"45359","messageId":"45360","endLine":107,"endColumn":77,"suggestions":"46753"},{"ruleId":"45357","severity":2,"message":"45358","line":125,"column":9,"nodeType":"45359","messageId":"45360","endLine":125,"endColumn":12,"suggestions":"46754"},{"ruleId":"45357","severity":2,"message":"45358","line":128,"column":84,"nodeType":"45359","messageId":"45360","endLine":128,"endColumn":87,"suggestions":"46755"},{"ruleId":"45357","severity":2,"message":"45358","line":143,"column":9,"nodeType":"45359","messageId":"45360","endLine":143,"endColumn":12,"suggestions":"46756"},{"ruleId":"45357","severity":2,"message":"45358","line":146,"column":82,"nodeType":"45359","messageId":"45360","endLine":146,"endColumn":85,"suggestions":"46757"},{"ruleId":"45357","severity":2,"message":"45358","line":157,"column":84,"nodeType":"45359","messageId":"45360","endLine":157,"endColumn":87,"suggestions":"46758"},{"ruleId":"45357","severity":2,"message":"45358","line":160,"column":74,"nodeType":"45359","messageId":"45360","endLine":160,"endColumn":77,"suggestions":"46759"},{"ruleId":"45357","severity":2,"message":"45358","line":169,"column":21,"nodeType":"45359","messageId":"45360","endLine":169,"endColumn":24,"suggestions":"46760"},{"ruleId":"45357","severity":2,"message":"45358","line":171,"column":43,"nodeType":"45359","messageId":"45360","endLine":171,"endColumn":46,"suggestions":"46761"},{"ruleId":"45357","severity":2,"message":"45358","line":175,"column":9,"nodeType":"45359","messageId":"45360","endLine":175,"endColumn":12,"suggestions":"46762"},{"ruleId":"45357","severity":2,"message":"45358","line":178,"column":89,"nodeType":"45359","messageId":"45360","endLine":178,"endColumn":92,"suggestions":"46763"},{"ruleId":"45357","severity":2,"message":"45358","line":43,"column":9,"nodeType":"45359","messageId":"45360","endLine":43,"endColumn":12,"suggestions":"46764"},{"ruleId":"45357","severity":2,"message":"45358","line":45,"column":30,"nodeType":"45359","messageId":"45360","endLine":45,"endColumn":33,"suggestions":"46765"},{"ruleId":"45357","severity":2,"message":"45358","line":57,"column":9,"nodeType":"45359","messageId":"45360","endLine":57,"endColumn":12,"suggestions":"46766"},{"ruleId":"45357","severity":2,"message":"45358","line":60,"column":30,"nodeType":"45359","messageId":"45360","endLine":60,"endColumn":33,"suggestions":"46767"},{"ruleId":"45357","severity":2,"message":"45358","line":67,"column":21,"nodeType":"45359","messageId":"45360","endLine":67,"endColumn":24,"suggestions":"46768"},{"ruleId":"45357","severity":2,"message":"45358","line":69,"column":44,"nodeType":"45359","messageId":"45360","endLine":69,"endColumn":47,"suggestions":"46769"},{"ruleId":"45357","severity":2,"message":"45358","line":72,"column":9,"nodeType":"45359","messageId":"45360","endLine":72,"endColumn":12,"suggestions":"46770"},{"ruleId":"45357","severity":2,"message":"45358","line":74,"column":30,"nodeType":"45359","messageId":"45360","endLine":74,"endColumn":33,"suggestions":"46771"},{"ruleId":"45357","severity":2,"message":"45358","line":93,"column":21,"nodeType":"45359","messageId":"45360","endLine":93,"endColumn":24,"suggestions":"46772"},{"ruleId":"45357","severity":2,"message":"45358","line":95,"column":43,"nodeType":"45359","messageId":"45360","endLine":95,"endColumn":46,"suggestions":"46773"},{"ruleId":"45357","severity":2,"message":"45358","line":100,"column":9,"nodeType":"45359","messageId":"45360","endLine":100,"endColumn":12,"suggestions":"46774"},{"ruleId":"45357","severity":2,"message":"45358","line":102,"column":30,"nodeType":"45359","messageId":"45360","endLine":102,"endColumn":33,"suggestions":"46775"},{"ruleId":"45357","severity":2,"message":"45358","line":117,"column":43,"nodeType":"45359","messageId":"45360","endLine":117,"endColumn":46,"suggestions":"46776"},{"ruleId":"45357","severity":2,"message":"45358","line":121,"column":9,"nodeType":"45359","messageId":"45360","endLine":121,"endColumn":12,"suggestions":"46777"},{"ruleId":"45357","severity":2,"message":"45358","line":123,"column":30,"nodeType":"45359","messageId":"45360","endLine":123,"endColumn":33,"suggestions":"46778"},{"ruleId":"45357","severity":2,"message":"45358","line":131,"column":21,"nodeType":"45359","messageId":"45360","endLine":131,"endColumn":24,"suggestions":"46779"},{"ruleId":"45357","severity":2,"message":"45358","line":133,"column":44,"nodeType":"45359","messageId":"45360","endLine":133,"endColumn":47,"suggestions":"46780"},{"ruleId":"45357","severity":2,"message":"45358","line":136,"column":9,"nodeType":"45359","messageId":"45360","endLine":136,"endColumn":12,"suggestions":"46781"},{"ruleId":"45357","severity":2,"message":"45358","line":138,"column":30,"nodeType":"45359","messageId":"45360","endLine":138,"endColumn":33,"suggestions":"46782"},{"ruleId":"45357","severity":2,"message":"45358","line":69,"column":9,"nodeType":"45359","messageId":"45360","endLine":69,"endColumn":12,"suggestions":"46783"},{"ruleId":"45357","severity":2,"message":"45358","line":72,"column":73,"nodeType":"45359","messageId":"45360","endLine":72,"endColumn":76,"suggestions":"46784"},{"ruleId":"45357","severity":2,"message":"45358","line":78,"column":30,"nodeType":"45359","messageId":"45360","endLine":78,"endColumn":33,"suggestions":"46785"},{"ruleId":"45357","severity":2,"message":"45358","line":89,"column":9,"nodeType":"45359","messageId":"45360","endLine":89,"endColumn":12,"suggestions":"46786"},{"ruleId":"45357","severity":2,"message":"45358","line":92,"column":81,"nodeType":"45359","messageId":"45360","endLine":92,"endColumn":84,"suggestions":"46787"},{"ruleId":"45357","severity":2,"message":"45358","line":102,"column":43,"nodeType":"45359","messageId":"45360","endLine":102,"endColumn":46,"suggestions":"46788"},{"ruleId":"45357","severity":2,"message":"45358","line":106,"column":9,"nodeType":"45359","messageId":"45360","endLine":106,"endColumn":12,"suggestions":"46789"},{"ruleId":"45357","severity":2,"message":"45358","line":110,"column":74,"nodeType":"45359","messageId":"45360","endLine":110,"endColumn":77,"suggestions":"46790"},{"ruleId":"45357","severity":2,"message":"45358","line":123,"column":43,"nodeType":"45359","messageId":"45360","endLine":123,"endColumn":46,"suggestions":"46791"},{"ruleId":"45357","severity":2,"message":"45358","line":127,"column":9,"nodeType":"45359","messageId":"45360","endLine":127,"endColumn":12,"suggestions":"46792"},{"ruleId":"45357","severity":2,"message":"45358","line":133,"column":20,"nodeType":"45359","messageId":"45360","endLine":133,"endColumn":23,"suggestions":"46793"},{"ruleId":"45357","severity":2,"message":"45358","line":147,"column":43,"nodeType":"45359","messageId":"45360","endLine":147,"endColumn":46,"suggestions":"46794"},{"ruleId":"45357","severity":2,"message":"45358","line":151,"column":9,"nodeType":"45359","messageId":"45360","endLine":151,"endColumn":12,"suggestions":"46795"},{"ruleId":"45357","severity":2,"message":"45358","line":155,"column":62,"nodeType":"45359","messageId":"45360","endLine":155,"endColumn":65,"suggestions":"46796"},{"ruleId":"45357","severity":2,"message":"45358","line":170,"column":9,"nodeType":"45359","messageId":"45360","endLine":170,"endColumn":12,"suggestions":"46797"},{"ruleId":"45357","severity":2,"message":"45358","line":174,"column":83,"nodeType":"45359","messageId":"45360","endLine":174,"endColumn":86,"suggestions":"46798"},{"ruleId":"45357","severity":2,"message":"45358","line":192,"column":9,"nodeType":"45359","messageId":"45360","endLine":192,"endColumn":12,"suggestions":"46799"},{"ruleId":"45357","severity":2,"message":"45358","line":196,"column":76,"nodeType":"45359","messageId":"45360","endLine":196,"endColumn":79,"suggestions":"46800"},{"ruleId":"45357","severity":2,"message":"45358","line":23,"column":21,"nodeType":"45359","messageId":"45360","endLine":23,"endColumn":24,"suggestions":"46801"},{"ruleId":"45357","severity":2,"message":"45358","line":25,"column":44,"nodeType":"45359","messageId":"45360","endLine":25,"endColumn":47,"suggestions":"46802"},{"ruleId":"45357","severity":2,"message":"45358","line":28,"column":9,"nodeType":"45359","messageId":"45360","endLine":28,"endColumn":12,"suggestions":"46803"},{"ruleId":"45357","severity":2,"message":"45358","line":30,"column":30,"nodeType":"45359","messageId":"45360","endLine":30,"endColumn":33,"suggestions":"46804"},{"ruleId":"45357","severity":2,"message":"45358","line":40,"column":21,"nodeType":"45359","messageId":"45360","endLine":40,"endColumn":24,"suggestions":"46805"},{"ruleId":"45357","severity":2,"message":"45358","line":42,"column":44,"nodeType":"45359","messageId":"45360","endLine":42,"endColumn":47,"suggestions":"46806"},{"ruleId":"45357","severity":2,"message":"45358","line":45,"column":9,"nodeType":"45359","messageId":"45360","endLine":45,"endColumn":12,"suggestions":"46807"},{"ruleId":"45357","severity":2,"message":"45358","line":47,"column":30,"nodeType":"45359","messageId":"45360","endLine":47,"endColumn":33,"suggestions":"46808"},{"ruleId":"45357","severity":2,"message":"45358","line":61,"column":21,"nodeType":"45359","messageId":"45360","endLine":61,"endColumn":24,"suggestions":"46809"},{"ruleId":"45357","severity":2,"message":"45358","line":63,"column":44,"nodeType":"45359","messageId":"45360","endLine":63,"endColumn":47,"suggestions":"46810"},{"ruleId":"45357","severity":2,"message":"45358","line":66,"column":9,"nodeType":"45359","messageId":"45360","endLine":66,"endColumn":12,"suggestions":"46811"},{"ruleId":"45357","severity":2,"message":"45358","line":68,"column":30,"nodeType":"45359","messageId":"45360","endLine":68,"endColumn":33,"suggestions":"46812"},{"ruleId":"45357","severity":2,"message":"45358","line":83,"column":21,"nodeType":"45359","messageId":"45360","endLine":83,"endColumn":24,"suggestions":"46813"},{"ruleId":"45357","severity":2,"message":"45358","line":85,"column":44,"nodeType":"45359","messageId":"45360","endLine":85,"endColumn":47,"suggestions":"46814"},{"ruleId":"45357","severity":2,"message":"45358","line":88,"column":9,"nodeType":"45359","messageId":"45360","endLine":88,"endColumn":12,"suggestions":"46815"},{"ruleId":"45357","severity":2,"message":"45358","line":90,"column":30,"nodeType":"45359","messageId":"45360","endLine":90,"endColumn":33,"suggestions":"46816"},{"ruleId":"45357","severity":2,"message":"45358","line":104,"column":21,"nodeType":"45359","messageId":"45360","endLine":104,"endColumn":24,"suggestions":"46817"},{"ruleId":"45357","severity":2,"message":"45358","line":107,"column":43,"nodeType":"45359","messageId":"45360","endLine":107,"endColumn":46,"suggestions":"46818"},{"ruleId":"45357","severity":2,"message":"45358","line":111,"column":9,"nodeType":"45359","messageId":"45360","endLine":111,"endColumn":12,"suggestions":"46819"},{"ruleId":"45357","severity":2,"message":"45358","line":113,"column":30,"nodeType":"45359","messageId":"45360","endLine":113,"endColumn":33,"suggestions":"46820"},{"ruleId":"45357","severity":2,"message":"45358","line":130,"column":9,"nodeType":"45359","messageId":"45360","endLine":130,"endColumn":12,"suggestions":"46821"},{"ruleId":"45357","severity":2,"message":"45358","line":132,"column":30,"nodeType":"45359","messageId":"45360","endLine":132,"endColumn":33,"suggestions":"46822"},{"ruleId":"45357","severity":2,"message":"45358","line":41,"column":9,"nodeType":"45359","messageId":"45360","endLine":41,"endColumn":12,"suggestions":"46823"},{"ruleId":"45357","severity":2,"message":"45358","line":43,"column":30,"nodeType":"45359","messageId":"45360","endLine":43,"endColumn":33,"suggestions":"46824"},{"ruleId":"45357","severity":2,"message":"45358","line":50,"column":21,"nodeType":"45359","messageId":"45360","endLine":50,"endColumn":24,"suggestions":"46825"},{"ruleId":"45357","severity":2,"message":"45358","line":53,"column":43,"nodeType":"45359","messageId":"45360","endLine":53,"endColumn":46,"suggestions":"46826"},{"ruleId":"45357","severity":2,"message":"45358","line":57,"column":9,"nodeType":"45359","messageId":"45360","endLine":57,"endColumn":12,"suggestions":"46827"},{"ruleId":"45357","severity":2,"message":"45358","line":59,"column":30,"nodeType":"45359","messageId":"45360","endLine":59,"endColumn":33,"suggestions":"46828"},{"ruleId":"45357","severity":2,"message":"45358","line":54,"column":9,"nodeType":"45359","messageId":"45360","endLine":54,"endColumn":12,"suggestions":"46829"},{"ruleId":"45357","severity":2,"message":"45358","line":57,"column":72,"nodeType":"45359","messageId":"45360","endLine":57,"endColumn":75,"suggestions":"46830"},{"ruleId":"45357","severity":2,"message":"45358","line":71,"column":9,"nodeType":"45359","messageId":"45360","endLine":71,"endColumn":12,"suggestions":"46831"},{"ruleId":"45357","severity":2,"message":"45358","line":74,"column":92,"nodeType":"45359","messageId":"45360","endLine":74,"endColumn":95,"suggestions":"46832"},{"ruleId":"45357","severity":2,"message":"45358","line":87,"column":9,"nodeType":"45359","messageId":"45360","endLine":87,"endColumn":12,"suggestions":"46833"},{"ruleId":"45357","severity":2,"message":"45358","line":90,"column":82,"nodeType":"45359","messageId":"45360","endLine":90,"endColumn":85,"suggestions":"46834"},{"ruleId":"45357","severity":2,"message":"45358","line":102,"column":43,"nodeType":"45359","messageId":"45360","endLine":102,"endColumn":46,"suggestions":"46835"},{"ruleId":"45357","severity":2,"message":"45358","line":106,"column":9,"nodeType":"45359","messageId":"45360","endLine":106,"endColumn":12,"suggestions":"46836"},{"ruleId":"45357","severity":2,"message":"45358","line":110,"column":66,"nodeType":"45359","messageId":"45360","endLine":110,"endColumn":69,"suggestions":"46837"},{"ruleId":"45357","severity":2,"message":"45358","line":120,"column":21,"nodeType":"45359","messageId":"45360","endLine":120,"endColumn":24,"suggestions":"46838"},{"ruleId":"45357","severity":2,"message":"45358","line":126,"column":9,"nodeType":"45359","messageId":"45360","endLine":126,"endColumn":12,"suggestions":"46839"},{"ruleId":"45357","severity":2,"message":"45358","line":128,"column":44,"nodeType":"45359","messageId":"45360","endLine":128,"endColumn":47,"suggestions":"46840"},{"ruleId":"45357","severity":2,"message":"45358","line":131,"column":9,"nodeType":"45359","messageId":"45360","endLine":131,"endColumn":12,"suggestions":"46841"},{"ruleId":"45357","severity":2,"message":"45358","line":137,"column":20,"nodeType":"45359","messageId":"45360","endLine":137,"endColumn":23,"suggestions":"46842"},{"ruleId":"45357","severity":2,"message":"45358","line":154,"column":9,"nodeType":"45359","messageId":"45360","endLine":154,"endColumn":12,"suggestions":"46843"},{"ruleId":"45357","severity":2,"message":"45358","line":158,"column":9,"nodeType":"45359","messageId":"45360","endLine":158,"endColumn":12,"suggestions":"46844"},{"ruleId":"45357","severity":2,"message":"45358","line":162,"column":76,"nodeType":"45359","messageId":"45360","endLine":162,"endColumn":79,"suggestions":"46845"},{"ruleId":"45357","severity":2,"message":"45358","line":178,"column":9,"nodeType":"45359","messageId":"45360","endLine":178,"endColumn":12,"suggestions":"46846"},{"ruleId":"45357","severity":2,"message":"45358","line":186,"column":9,"nodeType":"45359","messageId":"45360","endLine":186,"endColumn":12,"suggestions":"46847"},{"ruleId":"45357","severity":2,"message":"45358","line":189,"column":30,"nodeType":"45359","messageId":"45360","endLine":189,"endColumn":33,"suggestions":"46848"},{"ruleId":"45357","severity":2,"message":"45358","line":40,"column":21,"nodeType":"45359","messageId":"45360","endLine":40,"endColumn":24,"suggestions":"46849"},{"ruleId":"45357","severity":2,"message":"45358","line":42,"column":43,"nodeType":"45359","messageId":"45360","endLine":42,"endColumn":46,"suggestions":"46850"},{"ruleId":"45357","severity":2,"message":"45358","line":47,"column":9,"nodeType":"45359","messageId":"45360","endLine":47,"endColumn":12,"suggestions":"46851"},{"ruleId":"45357","severity":2,"message":"45358","line":50,"column":94,"nodeType":"45359","messageId":"45360","endLine":50,"endColumn":97,"suggestions":"46852"},{"ruleId":"45357","severity":2,"message":"45358","line":65,"column":9,"nodeType":"45359","messageId":"45360","endLine":65,"endColumn":12,"suggestions":"46853"},{"ruleId":"45357","severity":2,"message":"45358","line":69,"column":90,"nodeType":"45359","messageId":"45360","endLine":69,"endColumn":93,"suggestions":"46854"},{"ruleId":"45357","severity":2,"message":"45358","line":84,"column":9,"nodeType":"45359","messageId":"45360","endLine":84,"endColumn":12,"suggestions":"46855"},{"ruleId":"45357","severity":2,"message":"45358","line":86,"column":30,"nodeType":"45359","messageId":"45360","endLine":86,"endColumn":33,"suggestions":"46856"},{"ruleId":"45357","severity":2,"message":"45358","line":98,"column":9,"nodeType":"45359","messageId":"45360","endLine":98,"endColumn":12,"suggestions":"46857"},{"ruleId":"45357","severity":2,"message":"45358","line":100,"column":30,"nodeType":"45359","messageId":"45360","endLine":100,"endColumn":33,"suggestions":"46858"},{"ruleId":"45357","severity":2,"message":"45358","line":107,"column":21,"nodeType":"45359","messageId":"45360","endLine":107,"endColumn":24,"suggestions":"46859"},{"ruleId":"45357","severity":2,"message":"45358","line":110,"column":44,"nodeType":"45359","messageId":"45360","endLine":110,"endColumn":47,"suggestions":"46860"},{"ruleId":"45357","severity":2,"message":"45358","line":114,"column":9,"nodeType":"45359","messageId":"45360","endLine":114,"endColumn":12,"suggestions":"46861"},{"ruleId":"45357","severity":2,"message":"45358","line":116,"column":30,"nodeType":"45359","messageId":"45360","endLine":116,"endColumn":33,"suggestions":"46862"},{"ruleId":"45357","severity":2,"message":"45358","line":133,"column":9,"nodeType":"45359","messageId":"45360","endLine":133,"endColumn":12,"suggestions":"46863"},{"ruleId":"45357","severity":2,"message":"45358","line":135,"column":30,"nodeType":"45359","messageId":"45360","endLine":135,"endColumn":33,"suggestions":"46864"},{"ruleId":"45357","severity":2,"message":"45358","line":71,"column":20,"nodeType":"45359","messageId":"45360","endLine":71,"endColumn":23,"suggestions":"46865"},{"ruleId":"45357","severity":2,"message":"45358","line":122,"column":20,"nodeType":"45359","messageId":"45360","endLine":122,"endColumn":23,"suggestions":"46866"},{"ruleId":"45357","severity":2,"message":"45358","line":145,"column":36,"nodeType":"45359","messageId":"45360","endLine":145,"endColumn":39,"suggestions":"46867"},{"ruleId":"45357","severity":2,"message":"45358","line":196,"column":20,"nodeType":"45359","messageId":"45360","endLine":196,"endColumn":23,"suggestions":"46868"},{"ruleId":"45357","severity":2,"message":"45358","line":215,"column":36,"nodeType":"45359","messageId":"45360","endLine":215,"endColumn":39,"suggestions":"46869"},{"ruleId":"45357","severity":2,"message":"45358","line":242,"column":37,"nodeType":"45359","messageId":"45360","endLine":242,"endColumn":40,"suggestions":"46870"},{"ruleId":"45357","severity":2,"message":"45358","line":79,"column":17,"nodeType":"45359","messageId":"45360","endLine":79,"endColumn":20,"suggestions":"46871"},{"ruleId":"45357","severity":2,"message":"45358","line":134,"column":17,"nodeType":"45359","messageId":"45360","endLine":134,"endColumn":20,"suggestions":"46872"},{"ruleId":"45357","severity":2,"message":"45358","line":145,"column":17,"nodeType":"45359","messageId":"45360","endLine":145,"endColumn":20,"suggestions":"46873"},{"ruleId":"45357","severity":2,"message":"45358","line":155,"column":17,"nodeType":"45359","messageId":"45360","endLine":155,"endColumn":20,"suggestions":"46874"},{"ruleId":"45357","severity":2,"message":"45358","line":54,"column":75,"nodeType":"45359","messageId":"45360","endLine":54,"endColumn":78,"suggestions":"46875"},{"ruleId":"45357","severity":2,"message":"45358","line":58,"column":68,"nodeType":"45359","messageId":"45360","endLine":58,"endColumn":71,"suggestions":"46876"},{"ruleId":"45357","severity":2,"message":"45358","line":65,"column":29,"nodeType":"45359","messageId":"45360","endLine":65,"endColumn":32,"suggestions":"46877"},{"ruleId":"45357","severity":2,"message":"45358","line":66,"column":29,"nodeType":"45359","messageId":"45360","endLine":66,"endColumn":32,"suggestions":"46878"},{"ruleId":"45357","severity":2,"message":"45358","line":71,"column":74,"nodeType":"45359","messageId":"45360","endLine":71,"endColumn":77,"suggestions":"46879"},{"ruleId":"45357","severity":2,"message":"45358","line":75,"column":68,"nodeType":"45359","messageId":"45360","endLine":75,"endColumn":71,"suggestions":"46880"},{"ruleId":"45357","severity":2,"message":"45358","line":82,"column":29,"nodeType":"45359","messageId":"45360","endLine":82,"endColumn":32,"suggestions":"46881"},{"ruleId":"45357","severity":2,"message":"45358","line":87,"column":75,"nodeType":"45359","messageId":"45360","endLine":87,"endColumn":78,"suggestions":"46882"},{"ruleId":"45357","severity":2,"message":"45358","line":91,"column":67,"nodeType":"45359","messageId":"45360","endLine":91,"endColumn":70,"suggestions":"46883"},{"ruleId":"45357","severity":2,"message":"45358","line":105,"column":9,"nodeType":"45359","messageId":"45360","endLine":105,"endColumn":12,"suggestions":"46884"},{"ruleId":"45357","severity":2,"message":"45358","line":109,"column":87,"nodeType":"45359","messageId":"45360","endLine":109,"endColumn":90,"suggestions":"46885"},{"ruleId":"45357","severity":2,"message":"45358","line":119,"column":75,"nodeType":"45359","messageId":"45360","endLine":119,"endColumn":78,"suggestions":"46886"},{"ruleId":"45357","severity":2,"message":"45358","line":123,"column":75,"nodeType":"45359","messageId":"45360","endLine":123,"endColumn":78,"suggestions":"46887"},{"ruleId":"45357","severity":2,"message":"45358","line":133,"column":68,"nodeType":"45359","messageId":"45360","endLine":133,"endColumn":71,"suggestions":"46888"},{"ruleId":"45357","severity":2,"message":"45358","line":137,"column":68,"nodeType":"45359","messageId":"45360","endLine":137,"endColumn":71,"suggestions":"46889"},{"ruleId":"45357","severity":2,"message":"45358","line":218,"column":18,"nodeType":"45359","messageId":"45360","endLine":218,"endColumn":21,"suggestions":"46890"},{"ruleId":"45357","severity":2,"message":"45358","line":239,"column":22,"nodeType":"45359","messageId":"45360","endLine":239,"endColumn":25,"suggestions":"46891"},{"ruleId":"45357","severity":2,"message":"45358","line":255,"column":42,"nodeType":"45359","messageId":"45360","endLine":255,"endColumn":45,"suggestions":"46892"},{"ruleId":"45357","severity":2,"message":"45358","line":259,"column":46,"nodeType":"45359","messageId":"45360","endLine":259,"endColumn":49,"suggestions":"46893"},{"ruleId":"45357","severity":2,"message":"45358","line":260,"column":42,"nodeType":"45359","messageId":"45360","endLine":260,"endColumn":45,"suggestions":"46894"},{"ruleId":"45357","severity":2,"message":"45358","line":43,"column":9,"nodeType":"45359","messageId":"45360","endLine":43,"endColumn":12,"suggestions":"46895"},{"ruleId":"45357","severity":2,"message":"45358","line":45,"column":30,"nodeType":"45359","messageId":"45360","endLine":45,"endColumn":33,"suggestions":"46896"},{"ruleId":"45357","severity":2,"message":"45358","line":57,"column":9,"nodeType":"45359","messageId":"45360","endLine":57,"endColumn":12,"suggestions":"46897"},{"ruleId":"45357","severity":2,"message":"45358","line":59,"column":30,"nodeType":"45359","messageId":"45360","endLine":59,"endColumn":33,"suggestions":"46898"},{"ruleId":"45357","severity":2,"message":"45358","line":71,"column":9,"nodeType":"45359","messageId":"45360","endLine":71,"endColumn":12,"suggestions":"46899"},{"ruleId":"45357","severity":2,"message":"45358","line":73,"column":30,"nodeType":"45359","messageId":"45360","endLine":73,"endColumn":33,"suggestions":"46900"},{"ruleId":"45357","severity":2,"message":"45358","line":85,"column":9,"nodeType":"45359","messageId":"45360","endLine":85,"endColumn":12,"suggestions":"46901"},{"ruleId":"45357","severity":2,"message":"45358","line":87,"column":30,"nodeType":"45359","messageId":"45360","endLine":87,"endColumn":33,"suggestions":"46902"},{"ruleId":"45357","severity":2,"message":"45358","line":94,"column":21,"nodeType":"45359","messageId":"45360","endLine":94,"endColumn":24,"suggestions":"46903"},{"ruleId":"45357","severity":2,"message":"45358","line":97,"column":44,"nodeType":"45359","messageId":"45360","endLine":97,"endColumn":47,"suggestions":"46904"},{"ruleId":"45357","severity":2,"message":"45358","line":101,"column":9,"nodeType":"45359","messageId":"45360","endLine":101,"endColumn":12,"suggestions":"46905"},{"ruleId":"45357","severity":2,"message":"45358","line":103,"column":30,"nodeType":"45359","messageId":"45360","endLine":103,"endColumn":33,"suggestions":"46906"},{"ruleId":"45357","severity":2,"message":"45358","line":115,"column":21,"nodeType":"45359","messageId":"45360","endLine":115,"endColumn":24,"suggestions":"46907"},{"ruleId":"45357","severity":2,"message":"45358","line":117,"column":44,"nodeType":"45359","messageId":"45360","endLine":117,"endColumn":47,"suggestions":"46908"},{"ruleId":"45357","severity":2,"message":"45358","line":120,"column":9,"nodeType":"45359","messageId":"45360","endLine":120,"endColumn":12,"suggestions":"46909"},{"ruleId":"45357","severity":2,"message":"45358","line":122,"column":30,"nodeType":"45359","messageId":"45360","endLine":122,"endColumn":33,"suggestions":"46910"},{"ruleId":"45357","severity":2,"message":"45358","line":53,"column":22,"nodeType":"45359","messageId":"45360","endLine":53,"endColumn":25,"suggestions":"46911"},{"ruleId":"45357","severity":2,"message":"45358","line":30,"column":9,"nodeType":"45359","messageId":"45360","endLine":30,"endColumn":12,"suggestions":"46912"},{"ruleId":"45357","severity":2,"message":"45358","line":32,"column":30,"nodeType":"45359","messageId":"45360","endLine":32,"endColumn":33,"suggestions":"46913"},{"ruleId":"45357","severity":2,"message":"45358","line":46,"column":9,"nodeType":"45359","messageId":"45360","endLine":46,"endColumn":12,"suggestions":"46914"},{"ruleId":"45357","severity":2,"message":"45358","line":48,"column":30,"nodeType":"45359","messageId":"45360","endLine":48,"endColumn":33,"suggestions":"46915"},{"ruleId":"45357","severity":2,"message":"45358","line":58,"column":43,"nodeType":"45359","messageId":"45360","endLine":58,"endColumn":46,"suggestions":"46916"},{"ruleId":"45357","severity":2,"message":"45358","line":62,"column":9,"nodeType":"45359","messageId":"45360","endLine":62,"endColumn":12,"suggestions":"46917"},{"ruleId":"45357","severity":2,"message":"45358","line":64,"column":30,"nodeType":"45359","messageId":"45360","endLine":64,"endColumn":33,"suggestions":"46918"},{"ruleId":"45357","severity":2,"message":"45358","line":75,"column":43,"nodeType":"45359","messageId":"45360","endLine":75,"endColumn":46,"suggestions":"46919"},{"ruleId":"45357","severity":2,"message":"45358","line":79,"column":9,"nodeType":"45359","messageId":"45360","endLine":79,"endColumn":12,"suggestions":"46920"},{"ruleId":"45357","severity":2,"message":"45358","line":81,"column":30,"nodeType":"45359","messageId":"45360","endLine":81,"endColumn":33,"suggestions":"46921"},{"ruleId":"45357","severity":2,"message":"45358","line":94,"column":9,"nodeType":"45359","messageId":"45360","endLine":94,"endColumn":12,"suggestions":"46922"},{"ruleId":"45357","severity":2,"message":"45358","line":96,"column":30,"nodeType":"45359","messageId":"45360","endLine":96,"endColumn":33,"suggestions":"46923"},{"ruleId":"45357","severity":2,"message":"45358","line":79,"column":37,"nodeType":"45359","messageId":"45360","endLine":79,"endColumn":40,"suggestions":"46924"},{"ruleId":"45357","severity":2,"message":"45358","line":84,"column":66,"nodeType":"45359","messageId":"45360","endLine":84,"endColumn":69,"suggestions":"46925"},{"ruleId":"45357","severity":2,"message":"45358","line":93,"column":37,"nodeType":"45359","messageId":"45360","endLine":93,"endColumn":40,"suggestions":"46926"},{"ruleId":"45357","severity":2,"message":"45358","line":98,"column":58,"nodeType":"45359","messageId":"45360","endLine":98,"endColumn":61,"suggestions":"46927"},{"ruleId":"45357","severity":2,"message":"45358","line":112,"column":37,"nodeType":"45359","messageId":"45360","endLine":112,"endColumn":40,"suggestions":"46928"},{"ruleId":"45357","severity":2,"message":"45358","line":117,"column":73,"nodeType":"45359","messageId":"45360","endLine":117,"endColumn":76,"suggestions":"46929"},{"ruleId":"45357","severity":2,"message":"45358","line":131,"column":37,"nodeType":"45359","messageId":"45360","endLine":131,"endColumn":40,"suggestions":"46930"},{"ruleId":"45357","severity":2,"message":"45358","line":136,"column":77,"nodeType":"45359","messageId":"45360","endLine":136,"endColumn":80,"suggestions":"46931"},{"ruleId":"45357","severity":2,"message":"45358","line":147,"column":37,"nodeType":"45359","messageId":"45360","endLine":147,"endColumn":40,"suggestions":"46932"},{"ruleId":"45357","severity":2,"message":"45358","line":152,"column":76,"nodeType":"45359","messageId":"45360","endLine":152,"endColumn":79,"suggestions":"46933"},{"ruleId":"45357","severity":2,"message":"45358","line":167,"column":9,"nodeType":"45359","messageId":"45360","endLine":167,"endColumn":12,"suggestions":"46934"},{"ruleId":"45357","severity":2,"message":"45358","line":168,"column":75,"nodeType":"45359","messageId":"45360","endLine":168,"endColumn":78,"suggestions":"46935"},{"ruleId":"45357","severity":2,"message":"45358","line":173,"column":58,"nodeType":"45359","messageId":"45360","endLine":173,"endColumn":61,"suggestions":"46936"},{"ruleId":"45357","severity":2,"message":"45358","line":74,"column":83,"nodeType":"45359","messageId":"45360","endLine":74,"endColumn":86,"suggestions":"46937"},{"ruleId":"45357","severity":2,"message":"45358","line":77,"column":72,"nodeType":"45359","messageId":"45360","endLine":77,"endColumn":75,"suggestions":"46938"},{"ruleId":"45357","severity":2,"message":"45358","line":91,"column":9,"nodeType":"45359","messageId":"45360","endLine":91,"endColumn":12,"suggestions":"46939"},{"ruleId":"45357","severity":2,"message":"45358","line":94,"column":75,"nodeType":"45359","messageId":"45360","endLine":94,"endColumn":78,"suggestions":"46940"},{"ruleId":"45357","severity":2,"message":"45358","line":106,"column":9,"nodeType":"45359","messageId":"45360","endLine":106,"endColumn":12,"suggestions":"46941"},{"ruleId":"45357","severity":2,"message":"45358","line":109,"column":81,"nodeType":"45359","messageId":"45360","endLine":109,"endColumn":84,"suggestions":"46942"},{"ruleId":"45357","severity":2,"message":"45358","line":119,"column":21,"nodeType":"45359","messageId":"45360","endLine":119,"endColumn":24,"suggestions":"46943"},{"ruleId":"45357","severity":2,"message":"45358","line":121,"column":43,"nodeType":"45359","messageId":"45360","endLine":121,"endColumn":46,"suggestions":"46944"},{"ruleId":"45357","severity":2,"message":"45358","line":125,"column":9,"nodeType":"45359","messageId":"45360","endLine":125,"endColumn":12,"suggestions":"46945"},{"ruleId":"45357","severity":2,"message":"45358","line":128,"column":84,"nodeType":"45359","messageId":"45360","endLine":128,"endColumn":87,"suggestions":"46946"},{"ruleId":"45357","severity":2,"message":"45358","line":140,"column":21,"nodeType":"45359","messageId":"45360","endLine":140,"endColumn":24,"suggestions":"46947"},{"ruleId":"45357","severity":2,"message":"45358","line":142,"column":44,"nodeType":"45359","messageId":"45360","endLine":142,"endColumn":47,"suggestions":"46948"},{"ruleId":"45357","severity":2,"message":"45358","line":145,"column":9,"nodeType":"45359","messageId":"45360","endLine":145,"endColumn":12,"suggestions":"46949"},{"ruleId":"45357","severity":2,"message":"45358","line":149,"column":78,"nodeType":"45359","messageId":"45360","endLine":149,"endColumn":81,"suggestions":"46950"},{"ruleId":"45357","severity":2,"message":"45358","line":164,"column":9,"nodeType":"45359","messageId":"45360","endLine":164,"endColumn":12,"suggestions":"46951"},{"ruleId":"45357","severity":2,"message":"45358","line":168,"column":91,"nodeType":"45359","messageId":"45360","endLine":168,"endColumn":94,"suggestions":"46952"},{"ruleId":"45357","severity":2,"message":"45358","line":184,"column":9,"nodeType":"45359","messageId":"45360","endLine":184,"endColumn":12,"suggestions":"46953"},{"ruleId":"45357","severity":2,"message":"45358","line":188,"column":84,"nodeType":"45359","messageId":"45360","endLine":188,"endColumn":87,"suggestions":"46954"},{"ruleId":"45357","severity":2,"message":"45358","line":200,"column":21,"nodeType":"45359","messageId":"45360","endLine":200,"endColumn":24,"suggestions":"46955"},{"ruleId":"45357","severity":2,"message":"45358","line":202,"column":44,"nodeType":"45359","messageId":"45360","endLine":202,"endColumn":47,"suggestions":"46956"},{"ruleId":"45357","severity":2,"message":"45358","line":205,"column":9,"nodeType":"45359","messageId":"45360","endLine":205,"endColumn":12,"suggestions":"46957"},{"ruleId":"45357","severity":2,"message":"45358","line":212,"column":20,"nodeType":"45359","messageId":"45360","endLine":212,"endColumn":23,"suggestions":"46958"},{"ruleId":"45357","severity":2,"message":"45358","line":56,"column":59,"nodeType":"45359","messageId":"45360","endLine":56,"endColumn":62,"suggestions":"46959"},{"ruleId":"45357","severity":2,"message":"45358","line":60,"column":90,"nodeType":"45359","messageId":"45360","endLine":60,"endColumn":93,"suggestions":"46960"},{"ruleId":"45357","severity":2,"message":"45358","line":69,"column":51,"nodeType":"45359","messageId":"45360","endLine":69,"endColumn":54,"suggestions":"46961"},{"ruleId":"45357","severity":2,"message":"45358","line":74,"column":65,"nodeType":"45359","messageId":"45360","endLine":74,"endColumn":68,"suggestions":"46962"},{"ruleId":"45357","severity":2,"message":"45358","line":83,"column":59,"nodeType":"45359","messageId":"45360","endLine":83,"endColumn":62,"suggestions":"46963"},{"ruleId":"45357","severity":2,"message":"45358","line":87,"column":90,"nodeType":"45359","messageId":"45360","endLine":87,"endColumn":93,"suggestions":"46964"},{"ruleId":"45357","severity":2,"message":"45358","line":101,"column":59,"nodeType":"45359","messageId":"45360","endLine":101,"endColumn":62,"suggestions":"46965"},{"ruleId":"45357","severity":2,"message":"45358","line":105,"column":94,"nodeType":"45359","messageId":"45360","endLine":105,"endColumn":97,"suggestions":"46966"},{"ruleId":"45357","severity":2,"message":"45358","line":116,"column":51,"nodeType":"45359","messageId":"45360","endLine":116,"endColumn":54,"suggestions":"46967"},{"ruleId":"45357","severity":2,"message":"45358","line":121,"column":87,"nodeType":"45359","messageId":"45360","endLine":121,"endColumn":90,"suggestions":"46968"},{"ruleId":"45357","severity":2,"message":"45358","line":132,"column":43,"nodeType":"45359","messageId":"45360","endLine":132,"endColumn":46,"suggestions":"46969"},{"ruleId":"45357","severity":2,"message":"45358","line":135,"column":9,"nodeType":"45359","messageId":"45360","endLine":135,"endColumn":12,"suggestions":"46970"},{"ruleId":"45357","severity":2,"message":"45358","line":140,"column":74,"nodeType":"45359","messageId":"45360","endLine":140,"endColumn":77,"suggestions":"46971"},{"ruleId":"45357","severity":2,"message":"45358","line":38,"column":21,"nodeType":"45359","messageId":"45360","endLine":38,"endColumn":24,"suggestions":"46972"},{"ruleId":"45357","severity":2,"message":"45358","line":41,"column":43,"nodeType":"45359","messageId":"45360","endLine":41,"endColumn":46,"suggestions":"46973"},{"ruleId":"45357","severity":2,"message":"45358","line":45,"column":9,"nodeType":"45359","messageId":"45360","endLine":45,"endColumn":12,"suggestions":"46974"},{"ruleId":"45357","severity":2,"message":"45358","line":47,"column":30,"nodeType":"45359","messageId":"45360","endLine":47,"endColumn":33,"suggestions":"46975"},{"ruleId":"45357","severity":2,"message":"45358","line":60,"column":21,"nodeType":"45359","messageId":"45360","endLine":60,"endColumn":24,"suggestions":"46976"},{"ruleId":"45357","severity":2,"message":"45358","line":62,"column":43,"nodeType":"45359","messageId":"45360","endLine":62,"endColumn":46,"suggestions":"46977"},{"ruleId":"45357","severity":2,"message":"45358","line":66,"column":9,"nodeType":"45359","messageId":"45360","endLine":66,"endColumn":12,"suggestions":"46978"},{"ruleId":"45357","severity":2,"message":"45358","line":68,"column":30,"nodeType":"45359","messageId":"45360","endLine":68,"endColumn":33,"suggestions":"46979"},{"ruleId":"45357","severity":2,"message":"45358","line":84,"column":9,"nodeType":"45359","messageId":"45360","endLine":84,"endColumn":12,"suggestions":"46980"},{"ruleId":"45357","severity":2,"message":"45358","line":86,"column":30,"nodeType":"45359","messageId":"45360","endLine":86,"endColumn":33,"suggestions":"46981"},{"ruleId":"45357","severity":2,"message":"45358","line":98,"column":9,"nodeType":"45359","messageId":"45360","endLine":98,"endColumn":12,"suggestions":"46982"},{"ruleId":"45357","severity":2,"message":"45358","line":100,"column":30,"nodeType":"45359","messageId":"45360","endLine":100,"endColumn":33,"suggestions":"46983"},{"ruleId":"45357","severity":2,"message":"45358","line":112,"column":9,"nodeType":"45359","messageId":"45360","endLine":112,"endColumn":12,"suggestions":"46984"},{"ruleId":"45357","severity":2,"message":"45358","line":114,"column":30,"nodeType":"45359","messageId":"45360","endLine":114,"endColumn":33,"suggestions":"46985"},{"ruleId":"45357","severity":2,"message":"45358","line":121,"column":21,"nodeType":"45359","messageId":"45360","endLine":121,"endColumn":24,"suggestions":"46986"},{"ruleId":"45357","severity":2,"message":"45358","line":123,"column":44,"nodeType":"45359","messageId":"45360","endLine":123,"endColumn":47,"suggestions":"46987"},{"ruleId":"45357","severity":2,"message":"45358","line":126,"column":9,"nodeType":"45359","messageId":"45360","endLine":126,"endColumn":12,"suggestions":"46988"},{"ruleId":"45357","severity":2,"message":"45358","line":128,"column":30,"nodeType":"45359","messageId":"45360","endLine":128,"endColumn":33,"suggestions":"46989"},{"ruleId":"45357","severity":2,"message":"45358","line":142,"column":43,"nodeType":"45359","messageId":"45360","endLine":142,"endColumn":46,"suggestions":"46990"},{"ruleId":"45357","severity":2,"message":"45358","line":146,"column":9,"nodeType":"45359","messageId":"45360","endLine":146,"endColumn":12,"suggestions":"46991"},{"ruleId":"45357","severity":2,"message":"45358","line":148,"column":30,"nodeType":"45359","messageId":"45360","endLine":148,"endColumn":33,"suggestions":"46992"},{"ruleId":"45357","severity":2,"message":"45358","line":28,"column":9,"nodeType":"45359","messageId":"45360","endLine":28,"endColumn":12,"suggestions":"46993"},{"ruleId":"45357","severity":2,"message":"45358","line":30,"column":30,"nodeType":"45359","messageId":"45360","endLine":30,"endColumn":33,"suggestions":"46994"},{"ruleId":"45357","severity":2,"message":"45358","line":37,"column":21,"nodeType":"45359","messageId":"45360","endLine":37,"endColumn":24,"suggestions":"46995"},{"ruleId":"45357","severity":2,"message":"45358","line":39,"column":44,"nodeType":"45359","messageId":"45360","endLine":39,"endColumn":47,"suggestions":"46996"},{"ruleId":"45357","severity":2,"message":"45358","line":42,"column":9,"nodeType":"45359","messageId":"45360","endLine":42,"endColumn":12,"suggestions":"46997"},{"ruleId":"45357","severity":2,"message":"45358","line":44,"column":30,"nodeType":"45359","messageId":"45360","endLine":44,"endColumn":33,"suggestions":"46998"},{"ruleId":"45357","severity":2,"message":"45358","line":58,"column":43,"nodeType":"45359","messageId":"45360","endLine":58,"endColumn":46,"suggestions":"46999"},{"ruleId":"45357","severity":2,"message":"45358","line":62,"column":9,"nodeType":"45359","messageId":"45360","endLine":62,"endColumn":12,"suggestions":"47000"},{"ruleId":"45357","severity":2,"message":"45358","line":64,"column":30,"nodeType":"45359","messageId":"45360","endLine":64,"endColumn":33,"suggestions":"47001"},{"ruleId":"45357","severity":2,"message":"45358","line":72,"column":21,"nodeType":"45359","messageId":"45360","endLine":72,"endColumn":24,"suggestions":"47002"},{"ruleId":"45357","severity":2,"message":"45358","line":75,"column":43,"nodeType":"45359","messageId":"45360","endLine":75,"endColumn":46,"suggestions":"47003"},{"ruleId":"45357","severity":2,"message":"45358","line":79,"column":9,"nodeType":"45359","messageId":"45360","endLine":79,"endColumn":12,"suggestions":"47004"},{"ruleId":"45357","severity":2,"message":"45358","line":81,"column":30,"nodeType":"45359","messageId":"45360","endLine":81,"endColumn":33,"suggestions":"47005"},{"ruleId":"45357","severity":2,"message":"45358","line":98,"column":9,"nodeType":"45359","messageId":"45360","endLine":98,"endColumn":12,"suggestions":"47006"},{"ruleId":"45357","severity":2,"message":"45358","line":100,"column":30,"nodeType":"45359","messageId":"45360","endLine":100,"endColumn":33,"suggestions":"47007"},{"ruleId":"45357","severity":2,"message":"45358","line":112,"column":9,"nodeType":"45359","messageId":"45360","endLine":112,"endColumn":12,"suggestions":"47008"},{"ruleId":"45357","severity":2,"message":"45358","line":114,"column":30,"nodeType":"45359","messageId":"45360","endLine":114,"endColumn":33,"suggestions":"47009"},{"ruleId":"45357","severity":2,"message":"45358","line":50,"column":9,"nodeType":"45359","messageId":"45360","endLine":50,"endColumn":12,"suggestions":"47010"},{"ruleId":"45357","severity":2,"message":"45358","line":52,"column":30,"nodeType":"45359","messageId":"45360","endLine":52,"endColumn":33,"suggestions":"47011"},{"ruleId":"45357","severity":2,"message":"45358","line":65,"column":9,"nodeType":"45359","messageId":"45360","endLine":65,"endColumn":12,"suggestions":"47012"},{"ruleId":"45357","severity":2,"message":"45358","line":67,"column":30,"nodeType":"45359","messageId":"45360","endLine":67,"endColumn":33,"suggestions":"47013"},{"ruleId":"45357","severity":2,"message":"45358","line":79,"column":9,"nodeType":"45359","messageId":"45360","endLine":79,"endColumn":12,"suggestions":"47014"},{"ruleId":"45357","severity":2,"message":"45358","line":81,"column":30,"nodeType":"45359","messageId":"45360","endLine":81,"endColumn":33,"suggestions":"47015"},{"ruleId":"45357","severity":2,"message":"45358","line":39,"column":21,"nodeType":"45359","messageId":"45360","endLine":39,"endColumn":24,"suggestions":"47016"},{"ruleId":"45357","severity":2,"message":"45358","line":41,"column":43,"nodeType":"45359","messageId":"45360","endLine":41,"endColumn":46,"suggestions":"47017"},{"ruleId":"45357","severity":2,"message":"45358","line":45,"column":9,"nodeType":"45359","messageId":"45360","endLine":45,"endColumn":12,"suggestions":"47018"},{"ruleId":"45357","severity":2,"message":"45358","line":47,"column":30,"nodeType":"45359","messageId":"45360","endLine":47,"endColumn":33,"suggestions":"47019"},{"ruleId":"45357","severity":2,"message":"45358","line":58,"column":21,"nodeType":"45359","messageId":"45360","endLine":58,"endColumn":24,"suggestions":"47020"},{"ruleId":"45357","severity":2,"message":"45358","line":60,"column":44,"nodeType":"45359","messageId":"45360","endLine":60,"endColumn":47,"suggestions":"47021"},{"ruleId":"45357","severity":2,"message":"45358","line":63,"column":9,"nodeType":"45359","messageId":"45360","endLine":63,"endColumn":12,"suggestions":"47022"},{"ruleId":"45357","severity":2,"message":"45358","line":65,"column":30,"nodeType":"45359","messageId":"45360","endLine":65,"endColumn":33,"suggestions":"47023"},{"ruleId":"45357","severity":2,"message":"45358","line":81,"column":21,"nodeType":"45359","messageId":"45360","endLine":81,"endColumn":24,"suggestions":"47024"},{"ruleId":"45357","severity":2,"message":"45358","line":83,"column":44,"nodeType":"45359","messageId":"45360","endLine":83,"endColumn":47,"suggestions":"47025"},{"ruleId":"45357","severity":2,"message":"45358","line":86,"column":9,"nodeType":"45359","messageId":"45360","endLine":86,"endColumn":12,"suggestions":"47026"},{"ruleId":"45357","severity":2,"message":"45358","line":88,"column":30,"nodeType":"45359","messageId":"45360","endLine":88,"endColumn":33,"suggestions":"47027"},{"ruleId":"45357","severity":2,"message":"45358","line":110,"column":9,"nodeType":"45359","messageId":"45360","endLine":110,"endColumn":12,"suggestions":"47028"},{"ruleId":"45357","severity":2,"message":"45358","line":112,"column":30,"nodeType":"45359","messageId":"45360","endLine":112,"endColumn":33,"suggestions":"47029"},{"ruleId":"45357","severity":2,"message":"45358","line":125,"column":9,"nodeType":"45359","messageId":"45360","endLine":125,"endColumn":12,"suggestions":"47030"},{"ruleId":"45357","severity":2,"message":"45358","line":128,"column":75,"nodeType":"45359","messageId":"45360","endLine":128,"endColumn":78,"suggestions":"47031"},{"ruleId":"45357","severity":2,"message":"45358","line":117,"column":37,"nodeType":"45359","messageId":"45360","endLine":117,"endColumn":40,"suggestions":"47032"},{"ruleId":"45357","severity":2,"message":"45358","line":121,"column":85,"nodeType":"45359","messageId":"45360","endLine":121,"endColumn":88,"suggestions":"47033"},{"ruleId":"45357","severity":2,"message":"45358","line":132,"column":37,"nodeType":"45359","messageId":"45360","endLine":132,"endColumn":40,"suggestions":"47034"},{"ruleId":"45357","severity":2,"message":"45358","line":136,"column":66,"nodeType":"45359","messageId":"45360","endLine":136,"endColumn":69,"suggestions":"47035"},{"ruleId":"45357","severity":2,"message":"45358","line":147,"column":37,"nodeType":"45359","messageId":"45360","endLine":147,"endColumn":40,"suggestions":"47036"},{"ruleId":"45357","severity":2,"message":"45358","line":151,"column":66,"nodeType":"45359","messageId":"45360","endLine":151,"endColumn":69,"suggestions":"47037"},{"ruleId":"45357","severity":2,"message":"45358","line":161,"column":37,"nodeType":"45359","messageId":"45360","endLine":161,"endColumn":40,"suggestions":"47038"},{"ruleId":"45357","severity":2,"message":"45358","line":165,"column":76,"nodeType":"45359","messageId":"45360","endLine":165,"endColumn":79,"suggestions":"47039"},{"ruleId":"45357","severity":2,"message":"45358","line":173,"column":37,"nodeType":"45359","messageId":"45360","endLine":173,"endColumn":40,"suggestions":"47040"},{"ruleId":"45357","severity":2,"message":"45358","line":177,"column":76,"nodeType":"45359","messageId":"45360","endLine":177,"endColumn":79,"suggestions":"47041"},{"ruleId":"45357","severity":2,"message":"45358","line":189,"column":37,"nodeType":"45359","messageId":"45360","endLine":189,"endColumn":40,"suggestions":"47042"},{"ruleId":"45357","severity":2,"message":"45358","line":193,"column":79,"nodeType":"45359","messageId":"45360","endLine":193,"endColumn":82,"suggestions":"47043"},{"ruleId":"45357","severity":2,"message":"45358","line":204,"column":43,"nodeType":"45359","messageId":"45360","endLine":204,"endColumn":46,"suggestions":"47044"},{"ruleId":"45357","severity":2,"message":"45358","line":209,"column":9,"nodeType":"45359","messageId":"45360","endLine":209,"endColumn":12,"suggestions":"47045"},{"ruleId":"45357","severity":2,"message":"45358","line":213,"column":95,"nodeType":"45359","messageId":"45360","endLine":213,"endColumn":98,"suggestions":"47046"},{"ruleId":"45357","severity":2,"message":"45358","line":217,"column":33,"nodeType":"45359","messageId":"45360","endLine":217,"endColumn":36,"suggestions":"47047"},{"ruleId":"45357","severity":2,"message":"45358","line":218,"column":33,"nodeType":"45359","messageId":"45360","endLine":218,"endColumn":36,"suggestions":"47048"},{"ruleId":"45357","severity":2,"message":"45358","line":57,"column":9,"nodeType":"45359","messageId":"45360","endLine":57,"endColumn":12,"suggestions":"47049"},{"ruleId":"45357","severity":2,"message":"45358","line":60,"column":74,"nodeType":"45359","messageId":"45360","endLine":60,"endColumn":77,"suggestions":"47050"},{"ruleId":"45357","severity":2,"message":"45358","line":74,"column":9,"nodeType":"45359","messageId":"45360","endLine":74,"endColumn":12,"suggestions":"47051"},{"ruleId":"45357","severity":2,"message":"45358","line":77,"column":83,"nodeType":"45359","messageId":"45360","endLine":77,"endColumn":86,"suggestions":"47052"},{"ruleId":"45357","severity":2,"message":"45358","line":86,"column":21,"nodeType":"45359","messageId":"45360","endLine":86,"endColumn":24,"suggestions":"47053"},{"ruleId":"45357","severity":2,"message":"45358","line":88,"column":44,"nodeType":"45359","messageId":"45360","endLine":88,"endColumn":47,"suggestions":"47054"},{"ruleId":"45357","severity":2,"message":"45358","line":91,"column":9,"nodeType":"45359","messageId":"45360","endLine":91,"endColumn":12,"suggestions":"47055"},{"ruleId":"45357","severity":2,"message":"45358","line":103,"column":20,"nodeType":"45359","messageId":"45360","endLine":103,"endColumn":23,"suggestions":"47056"},{"ruleId":"45357","severity":2,"message":"45358","line":118,"column":9,"nodeType":"45359","messageId":"45360","endLine":118,"endColumn":12,"suggestions":"47057"},{"ruleId":"45357","severity":2,"message":"45358","line":130,"column":27,"nodeType":"45359","messageId":"45360","endLine":130,"endColumn":30,"suggestions":"47058"},{"ruleId":"45357","severity":2,"message":"45358","line":140,"column":21,"nodeType":"45359","messageId":"45360","endLine":140,"endColumn":24,"suggestions":"47059"},{"ruleId":"45357","severity":2,"message":"45358","line":143,"column":43,"nodeType":"45359","messageId":"45360","endLine":143,"endColumn":46,"suggestions":"47060"},{"ruleId":"45357","severity":2,"message":"45358","line":147,"column":9,"nodeType":"45359","messageId":"45360","endLine":147,"endColumn":12,"suggestions":"47061"},{"ruleId":"45357","severity":2,"message":"45358","line":150,"column":90,"nodeType":"45359","messageId":"45360","endLine":150,"endColumn":93,"suggestions":"47062"},{"ruleId":"45357","severity":2,"message":"45358","line":162,"column":43,"nodeType":"45359","messageId":"45360","endLine":162,"endColumn":46,"suggestions":"47063"},{"ruleId":"45357","severity":2,"message":"45358","line":166,"column":9,"nodeType":"45359","messageId":"45360","endLine":166,"endColumn":12,"suggestions":"47064"},{"ruleId":"45357","severity":2,"message":"45358","line":170,"column":67,"nodeType":"45359","messageId":"45360","endLine":170,"endColumn":70,"suggestions":"47065"},{"ruleId":"45357","severity":2,"message":"45358","line":180,"column":21,"nodeType":"45359","messageId":"45360","endLine":180,"endColumn":24,"suggestions":"47066"},{"ruleId":"45357","severity":2,"message":"45358","line":183,"column":43,"nodeType":"45359","messageId":"45360","endLine":183,"endColumn":46,"suggestions":"47067"},{"ruleId":"45357","severity":2,"message":"45358","line":187,"column":9,"nodeType":"45359","messageId":"45360","endLine":187,"endColumn":12,"suggestions":"47068"},{"ruleId":"45357","severity":2,"message":"45358","line":191,"column":74,"nodeType":"45359","messageId":"45360","endLine":191,"endColumn":77,"suggestions":"47069"},{"ruleId":"45357","severity":2,"message":"45358","line":228,"column":29,"nodeType":"45359","messageId":"45360","endLine":228,"endColumn":32,"suggestions":"47070"},{"ruleId":"45357","severity":2,"message":"45358","line":229,"column":29,"nodeType":"45359","messageId":"45360","endLine":229,"endColumn":32,"suggestions":"47071"},{"ruleId":"45357","severity":2,"message":"45358","line":40,"column":38,"nodeType":"45359","messageId":"45360","endLine":40,"endColumn":41,"suggestions":"47072"},{"ruleId":"45357","severity":2,"message":"45358","line":119,"column":38,"nodeType":"45359","messageId":"45360","endLine":119,"endColumn":41,"suggestions":"47073"},{"ruleId":"45357","severity":2,"message":"45358","line":28,"column":75,"nodeType":"45359","messageId":"45360","endLine":28,"endColumn":78,"suggestions":"47074"},{"ruleId":"45357","severity":2,"message":"45358","line":67,"column":35,"nodeType":"45359","messageId":"45360","endLine":67,"endColumn":38,"suggestions":"47075"},{"ruleId":"45357","severity":2,"message":"45358","line":98,"column":45,"nodeType":"45359","messageId":"45360","endLine":98,"endColumn":48,"suggestions":"47076"},{"ruleId":"45357","severity":2,"message":"45358","line":50,"column":21,"nodeType":"45359","messageId":"45360","endLine":50,"endColumn":24,"suggestions":"47077"},{"ruleId":"45357","severity":2,"message":"45358","line":72,"column":21,"nodeType":"45359","messageId":"45360","endLine":72,"endColumn":24,"suggestions":"47078"},{"ruleId":"45357","severity":2,"message":"45358","line":104,"column":24,"nodeType":"45359","messageId":"45360","endLine":104,"endColumn":27,"suggestions":"47079"},{"ruleId":"45357","severity":2,"message":"45358","line":145,"column":48,"nodeType":"45359","messageId":"45360","endLine":145,"endColumn":51,"suggestions":"47080"},{"ruleId":"45357","severity":2,"message":"45358","line":156,"column":34,"nodeType":"45359","messageId":"45360","endLine":156,"endColumn":37,"suggestions":"47081"},{"ruleId":"45357","severity":2,"message":"45358","line":245,"column":40,"nodeType":"45359","messageId":"45360","endLine":245,"endColumn":43,"suggestions":"47082"},{"ruleId":"45357","severity":2,"message":"45358","line":114,"column":26,"nodeType":"45359","messageId":"45360","endLine":114,"endColumn":29,"suggestions":"47083"},{"ruleId":"45357","severity":2,"message":"45358","line":115,"column":26,"nodeType":"45359","messageId":"45360","endLine":115,"endColumn":29,"suggestions":"47084"},{"ruleId":"45357","severity":2,"message":"45358","line":116,"column":26,"nodeType":"45359","messageId":"45360","endLine":116,"endColumn":29,"suggestions":"47085"},{"ruleId":"45357","severity":2,"message":"45358","line":117,"column":26,"nodeType":"45359","messageId":"45360","endLine":117,"endColumn":29,"suggestions":"47086"},{"ruleId":"45357","severity":2,"message":"45358","line":135,"column":50,"nodeType":"45359","messageId":"45360","endLine":135,"endColumn":53,"suggestions":"47087"},{"ruleId":"45357","severity":2,"message":"45358","line":136,"column":26,"nodeType":"45359","messageId":"45360","endLine":136,"endColumn":29,"suggestions":"47088"},{"ruleId":"45357","severity":2,"message":"45358","line":137,"column":26,"nodeType":"45359","messageId":"45360","endLine":137,"endColumn":29,"suggestions":"47089"},{"ruleId":"45357","severity":2,"message":"45358","line":72,"column":64,"nodeType":"45359","messageId":"45360","endLine":72,"endColumn":67,"suggestions":"47090"},{"ruleId":"45357","severity":2,"message":"45358","line":76,"column":44,"nodeType":"45359","messageId":"45360","endLine":76,"endColumn":47,"suggestions":"47091"},{"ruleId":"45357","severity":2,"message":"45358","line":80,"column":47,"nodeType":"45359","messageId":"45360","endLine":80,"endColumn":50,"suggestions":"47092"},{"ruleId":"45357","severity":2,"message":"45358","line":84,"column":36,"nodeType":"45359","messageId":"45360","endLine":84,"endColumn":39,"suggestions":"47093"},{"ruleId":"45357","severity":2,"message":"45358","line":84,"column":69,"nodeType":"45359","messageId":"45360","endLine":84,"endColumn":72,"suggestions":"47094"},{"ruleId":"45357","severity":2,"message":"45358","line":85,"column":29,"nodeType":"45359","messageId":"45360","endLine":85,"endColumn":32,"suggestions":"47095"},{"ruleId":"45357","severity":2,"message":"45358","line":113,"column":14,"nodeType":"45359","messageId":"45360","endLine":113,"endColumn":17,"suggestions":"47096"},{"ruleId":"45357","severity":2,"message":"45358","line":113,"column":62,"nodeType":"45359","messageId":"45360","endLine":113,"endColumn":65,"suggestions":"47097"},{"ruleId":"45357","severity":2,"message":"45358","line":118,"column":49,"nodeType":"45359","messageId":"45360","endLine":118,"endColumn":52,"suggestions":"47098"},{"ruleId":"45357","severity":2,"message":"45358","line":119,"column":49,"nodeType":"45359","messageId":"45360","endLine":119,"endColumn":52,"suggestions":"47099"},{"ruleId":"45357","severity":2,"message":"45358","line":120,"column":49,"nodeType":"45359","messageId":"45360","endLine":120,"endColumn":52,"suggestions":"47100"},{"ruleId":"45357","severity":2,"message":"45358","line":122,"column":74,"nodeType":"45359","messageId":"45360","endLine":122,"endColumn":77,"suggestions":"47101"},{"ruleId":"45357","severity":2,"message":"45358","line":129,"column":53,"nodeType":"45359","messageId":"45360","endLine":129,"endColumn":56,"suggestions":"47102"},{"ruleId":"45357","severity":2,"message":"45358","line":132,"column":49,"nodeType":"45359","messageId":"45360","endLine":132,"endColumn":52,"suggestions":"47103"},{"ruleId":"45357","severity":2,"message":"45358","line":133,"column":49,"nodeType":"45359","messageId":"45360","endLine":133,"endColumn":52,"suggestions":"47104"},{"ruleId":"45357","severity":2,"message":"45358","line":134,"column":49,"nodeType":"45359","messageId":"45360","endLine":134,"endColumn":52,"suggestions":"47105"},{"ruleId":"45357","severity":2,"message":"45358","line":38,"column":60,"nodeType":"45359","messageId":"45360","endLine":38,"endColumn":63,"suggestions":"47106"},{"ruleId":"45357","severity":2,"message":"45358","line":65,"column":36,"nodeType":"45359","messageId":"45360","endLine":65,"endColumn":39,"suggestions":"47107","suppressions":"47108"},{"ruleId":"45357","severity":2,"message":"45358","line":244,"column":53,"nodeType":"45359","messageId":"45360","endLine":244,"endColumn":56,"suggestions":"47109"},{"ruleId":"45357","severity":2,"message":"45358","line":269,"column":53,"nodeType":"45359","messageId":"45360","endLine":269,"endColumn":56,"suggestions":"47110"},{"ruleId":"45357","severity":2,"message":"45358","line":305,"column":53,"nodeType":"45359","messageId":"45360","endLine":305,"endColumn":56,"suggestions":"47111"},{"ruleId":"45357","severity":2,"message":"45358","line":355,"column":44,"nodeType":"45359","messageId":"45360","endLine":355,"endColumn":47,"suggestions":"47112"},{"ruleId":"45357","severity":2,"message":"45358","line":131,"column":43,"nodeType":"45359","messageId":"45360","endLine":131,"endColumn":46,"suggestions":"47113"},{"ruleId":"45357","severity":2,"message":"45358","line":203,"column":43,"nodeType":"45359","messageId":"45360","endLine":203,"endColumn":46,"suggestions":"47114"},{"ruleId":"45357","severity":2,"message":"45358","line":208,"column":44,"nodeType":"45359","messageId":"45360","endLine":208,"endColumn":47,"suggestions":"47115"},{"ruleId":"45357","severity":2,"message":"45358","line":215,"column":30,"nodeType":"45359","messageId":"45360","endLine":215,"endColumn":33,"suggestions":"47116"},{"ruleId":"45357","severity":2,"message":"45358","line":243,"column":43,"nodeType":"45359","messageId":"45360","endLine":243,"endColumn":46,"suggestions":"47117"},{"ruleId":"45357","severity":2,"message":"45358","line":23,"column":21,"nodeType":"45359","messageId":"45360","endLine":23,"endColumn":24,"suggestions":"47118"},{"ruleId":"45357","severity":2,"message":"45358","line":263,"column":8,"nodeType":"45359","messageId":"45360","endLine":263,"endColumn":11,"suggestions":"47119"},{"ruleId":"45357","severity":2,"message":"45358","line":116,"column":43,"nodeType":"45359","messageId":"45360","endLine":116,"endColumn":46,"suggestions":"47120"},{"ruleId":"45357","severity":2,"message":"45358","line":237,"column":43,"nodeType":"45359","messageId":"45360","endLine":237,"endColumn":46,"suggestions":"47121"},{"ruleId":"45357","severity":2,"message":"45358","line":319,"column":43,"nodeType":"45359","messageId":"45360","endLine":319,"endColumn":46,"suggestions":"47122"},{"ruleId":"45357","severity":2,"message":"45358","line":94,"column":53,"nodeType":"45359","messageId":"45360","endLine":94,"endColumn":56,"suggestions":"47123"},{"ruleId":"45357","severity":2,"message":"45358","line":105,"column":55,"nodeType":"45359","messageId":"45360","endLine":105,"endColumn":58,"suggestions":"47124"},{"ruleId":"45357","severity":2,"message":"45358","line":150,"column":53,"nodeType":"45359","messageId":"45360","endLine":150,"endColumn":56,"suggestions":"47125"},{"ruleId":"45357","severity":2,"message":"45358","line":111,"column":28,"nodeType":"45359","messageId":"45360","endLine":111,"endColumn":31,"suggestions":"47126"},{"ruleId":"45357","severity":2,"message":"45358","line":113,"column":24,"nodeType":"45359","messageId":"45360","endLine":113,"endColumn":27,"suggestions":"47127"},{"ruleId":"45357","severity":2,"message":"45358","line":113,"column":61,"nodeType":"45359","messageId":"45360","endLine":113,"endColumn":64,"suggestions":"47128"},{"ruleId":"45357","severity":2,"message":"45358","line":114,"column":58,"nodeType":"45359","messageId":"45360","endLine":114,"endColumn":61,"suggestions":"47129"},{"ruleId":"45357","severity":2,"message":"45358","line":123,"column":28,"nodeType":"45359","messageId":"45360","endLine":123,"endColumn":31,"suggestions":"47130"},{"ruleId":"45357","severity":2,"message":"45358","line":137,"column":52,"nodeType":"45359","messageId":"45360","endLine":137,"endColumn":55,"suggestions":"47131"},{"ruleId":"45357","severity":2,"message":"45358","line":156,"column":46,"nodeType":"45359","messageId":"45360","endLine":156,"endColumn":49,"suggestions":"47132"},{"ruleId":"45357","severity":2,"message":"45358","line":175,"column":28,"nodeType":"45359","messageId":"45360","endLine":175,"endColumn":31,"suggestions":"47133"},{"ruleId":"45357","severity":2,"message":"45358","line":176,"column":28,"nodeType":"45359","messageId":"45360","endLine":176,"endColumn":31,"suggestions":"47134"},{"ruleId":"45357","severity":2,"message":"45358","line":190,"column":37,"nodeType":"45359","messageId":"45360","endLine":190,"endColumn":40,"suggestions":"47135"},{"ruleId":"45357","severity":2,"message":"45358","line":208,"column":41,"nodeType":"45359","messageId":"45360","endLine":208,"endColumn":44,"suggestions":"47136"},{"ruleId":"45357","severity":2,"message":"45358","line":232,"column":37,"nodeType":"45359","messageId":"45360","endLine":232,"endColumn":40,"suggestions":"47137"},{"ruleId":"45357","severity":2,"message":"45358","line":233,"column":37,"nodeType":"45359","messageId":"45360","endLine":233,"endColumn":40,"suggestions":"47138"},{"ruleId":"45357","severity":2,"message":"45358","line":314,"column":49,"nodeType":"45359","messageId":"45360","endLine":314,"endColumn":52,"suggestions":"47139"},{"ruleId":"45357","severity":2,"message":"45358","line":336,"column":49,"nodeType":"45359","messageId":"45360","endLine":336,"endColumn":52,"suggestions":"47140"},{"ruleId":"45357","severity":2,"message":"45358","line":358,"column":37,"nodeType":"45359","messageId":"45360","endLine":358,"endColumn":40,"suggestions":"47141"},{"ruleId":"45357","severity":2,"message":"45358","line":359,"column":37,"nodeType":"45359","messageId":"45360","endLine":359,"endColumn":40,"suggestions":"47142"},{"ruleId":"45357","severity":2,"message":"45358","line":360,"column":37,"nodeType":"45359","messageId":"45360","endLine":360,"endColumn":40,"suggestions":"47143"},{"ruleId":"45357","severity":2,"message":"45358","line":91,"column":43,"nodeType":"45359","messageId":"45360","endLine":91,"endColumn":46,"suggestions":"47144"},{"ruleId":"45357","severity":2,"message":"45358","line":113,"column":43,"nodeType":"45359","messageId":"45360","endLine":113,"endColumn":46,"suggestions":"47145"},{"ruleId":"45357","severity":2,"message":"45358","line":128,"column":43,"nodeType":"45359","messageId":"45360","endLine":128,"endColumn":46,"suggestions":"47146"},{"ruleId":"45357","severity":2,"message":"45358","line":152,"column":43,"nodeType":"45359","messageId":"45360","endLine":152,"endColumn":46,"suggestions":"47147"},{"ruleId":"45357","severity":2,"message":"45358","line":175,"column":43,"nodeType":"45359","messageId":"45360","endLine":175,"endColumn":46,"suggestions":"47148"},{"ruleId":"45357","severity":2,"message":"45358","line":180,"column":34,"nodeType":"45359","messageId":"45360","endLine":180,"endColumn":37,"suggestions":"47149"},{"ruleId":"45357","severity":2,"message":"45358","line":198,"column":43,"nodeType":"45359","messageId":"45360","endLine":198,"endColumn":46,"suggestions":"47150"},{"ruleId":"45357","severity":2,"message":"45358","line":225,"column":43,"nodeType":"45359","messageId":"45360","endLine":225,"endColumn":46,"suggestions":"47151"},{"ruleId":"45357","severity":2,"message":"45358","line":264,"column":43,"nodeType":"45359","messageId":"45360","endLine":264,"endColumn":46,"suggestions":"47152"},{"ruleId":"45357","severity":2,"message":"45358","line":265,"column":56,"nodeType":"45359","messageId":"45360","endLine":265,"endColumn":59,"suggestions":"47153"},{"ruleId":"45357","severity":2,"message":"45358","line":42,"column":18,"nodeType":"45359","messageId":"45360","endLine":42,"endColumn":21,"suggestions":"47154"},{"ruleId":"45357","severity":2,"message":"45358","line":44,"column":17,"nodeType":"45359","messageId":"45360","endLine":44,"endColumn":20,"suggestions":"47155"},{"ruleId":"45357","severity":2,"message":"45358","line":44,"column":27,"nodeType":"45359","messageId":"45360","endLine":44,"endColumn":30,"suggestions":"47156"},{"ruleId":"45357","severity":2,"message":"45358","line":45,"column":17,"nodeType":"45359","messageId":"45360","endLine":45,"endColumn":20,"suggestions":"47157"},{"ruleId":"45357","severity":2,"message":"45358","line":45,"column":27,"nodeType":"45359","messageId":"45360","endLine":45,"endColumn":30,"suggestions":"47158"},{"ruleId":"45357","severity":2,"message":"45358","line":46,"column":18,"nodeType":"45359","messageId":"45360","endLine":46,"endColumn":21,"suggestions":"47159"},{"ruleId":"45357","severity":2,"message":"45358","line":46,"column":28,"nodeType":"45359","messageId":"45360","endLine":46,"endColumn":31,"suggestions":"47160"},{"ruleId":"45357","severity":2,"message":"45358","line":47,"column":18,"nodeType":"45359","messageId":"45360","endLine":47,"endColumn":21,"suggestions":"47161"},{"ruleId":"45357","severity":2,"message":"45358","line":47,"column":28,"nodeType":"45359","messageId":"45360","endLine":47,"endColumn":31,"suggestions":"47162"},{"ruleId":"45357","severity":2,"message":"45358","line":52,"column":27,"nodeType":"45359","messageId":"45360","endLine":52,"endColumn":30,"suggestions":"47163"},{"ruleId":"45357","severity":2,"message":"45358","line":88,"column":33,"nodeType":"45359","messageId":"45360","endLine":88,"endColumn":36,"suggestions":"47164"},{"ruleId":"45357","severity":2,"message":"45358","line":118,"column":82,"nodeType":"45359","messageId":"45360","endLine":118,"endColumn":85,"suggestions":"47165"},{"ruleId":"45357","severity":2,"message":"45358","line":131,"column":21,"nodeType":"45359","messageId":"45360","endLine":131,"endColumn":24,"suggestions":"47166"},{"ruleId":"45357","severity":2,"message":"45358","line":259,"column":16,"nodeType":"45359","messageId":"45360","endLine":259,"endColumn":19,"suggestions":"47167"},{"ruleId":"45357","severity":2,"message":"45358","line":268,"column":38,"nodeType":"45359","messageId":"45360","endLine":268,"endColumn":41,"suggestions":"47168"},{"ruleId":"45357","severity":2,"message":"45358","line":268,"column":53,"nodeType":"45359","messageId":"45360","endLine":268,"endColumn":56,"suggestions":"47169"},{"ruleId":"45357","severity":2,"message":"45358","line":295,"column":16,"nodeType":"45359","messageId":"45360","endLine":295,"endColumn":19,"suggestions":"47170"},{"ruleId":"45357","severity":2,"message":"45358","line":296,"column":25,"nodeType":"45359","messageId":"45360","endLine":296,"endColumn":28,"suggestions":"47171"},{"ruleId":"45357","severity":2,"message":"45358","line":321,"column":37,"nodeType":"45359","messageId":"45360","endLine":321,"endColumn":40,"suggestions":"47172"},{"ruleId":"45357","severity":2,"message":"45358","line":321,"column":52,"nodeType":"45359","messageId":"45360","endLine":321,"endColumn":55,"suggestions":"47173"},{"ruleId":"45357","severity":2,"message":"45358","line":321,"column":66,"nodeType":"45359","messageId":"45360","endLine":321,"endColumn":69,"suggestions":"47174"},{"ruleId":"45357","severity":2,"message":"45358","line":413,"column":16,"nodeType":"45359","messageId":"45360","endLine":413,"endColumn":19,"suggestions":"47175"},{"ruleId":"45357","severity":2,"message":"45358","line":429,"column":38,"nodeType":"45359","messageId":"45360","endLine":429,"endColumn":41,"suggestions":"47176"},{"ruleId":"45357","severity":2,"message":"45358","line":429,"column":53,"nodeType":"45359","messageId":"45360","endLine":429,"endColumn":56,"suggestions":"47177"},{"ruleId":"45357","severity":2,"message":"45358","line":429,"column":67,"nodeType":"45359","messageId":"45360","endLine":429,"endColumn":70,"suggestions":"47178"},{"ruleId":"45357","severity":2,"message":"45358","line":450,"column":16,"nodeType":"45359","messageId":"45360","endLine":450,"endColumn":19,"suggestions":"47179"},{"ruleId":"45357","severity":2,"message":"45358","line":494,"column":38,"nodeType":"45359","messageId":"45360","endLine":494,"endColumn":41,"suggestions":"47180"},{"ruleId":"45357","severity":2,"message":"45358","line":494,"column":53,"nodeType":"45359","messageId":"45360","endLine":494,"endColumn":56,"suggestions":"47181"},{"ruleId":"45357","severity":2,"message":"45358","line":504,"column":27,"nodeType":"45359","messageId":"45360","endLine":504,"endColumn":30,"suggestions":"47182"},{"ruleId":"45357","severity":2,"message":"45358","line":513,"column":16,"nodeType":"45359","messageId":"45360","endLine":513,"endColumn":19,"suggestions":"47183"},{"ruleId":"45357","severity":2,"message":"45358","line":529,"column":40,"nodeType":"45359","messageId":"45360","endLine":529,"endColumn":43,"suggestions":"47184"},{"ruleId":"45357","severity":2,"message":"45358","line":529,"column":55,"nodeType":"45359","messageId":"45360","endLine":529,"endColumn":58,"suggestions":"47185"},{"ruleId":"45357","severity":2,"message":"45358","line":537,"column":29,"nodeType":"45359","messageId":"45360","endLine":537,"endColumn":32,"suggestions":"47186"},{"ruleId":"45357","severity":2,"message":"45358","line":593,"column":16,"nodeType":"45359","messageId":"45360","endLine":593,"endColumn":19,"suggestions":"47187"},{"ruleId":"45357","severity":2,"message":"45358","line":608,"column":40,"nodeType":"45359","messageId":"45360","endLine":608,"endColumn":43,"suggestions":"47188"},{"ruleId":"45357","severity":2,"message":"45358","line":608,"column":55,"nodeType":"45359","messageId":"45360","endLine":608,"endColumn":58,"suggestions":"47189"},{"ruleId":"45357","severity":2,"message":"45358","line":615,"column":29,"nodeType":"45359","messageId":"45360","endLine":615,"endColumn":32,"suggestions":"47190"},{"ruleId":"45357","severity":2,"message":"45358","line":627,"column":16,"nodeType":"45359","messageId":"45360","endLine":627,"endColumn":19,"suggestions":"47191"},{"ruleId":"45357","severity":2,"message":"45358","line":640,"column":40,"nodeType":"45359","messageId":"45360","endLine":640,"endColumn":43,"suggestions":"47192"},{"ruleId":"45357","severity":2,"message":"45358","line":640,"column":55,"nodeType":"45359","messageId":"45360","endLine":640,"endColumn":58,"suggestions":"47193"},{"ruleId":"45357","severity":2,"message":"45358","line":647,"column":29,"nodeType":"45359","messageId":"45360","endLine":647,"endColumn":32,"suggestions":"47194"},{"ruleId":"45357","severity":2,"message":"45358","line":659,"column":16,"nodeType":"45359","messageId":"45360","endLine":659,"endColumn":19,"suggestions":"47195"},{"ruleId":"45357","severity":2,"message":"45358","line":668,"column":38,"nodeType":"45359","messageId":"45360","endLine":668,"endColumn":41,"suggestions":"47196"},{"ruleId":"45357","severity":2,"message":"45358","line":668,"column":53,"nodeType":"45359","messageId":"45360","endLine":668,"endColumn":56,"suggestions":"47197"},{"ruleId":"45357","severity":2,"message":"45358","line":675,"column":27,"nodeType":"45359","messageId":"45360","endLine":675,"endColumn":30,"suggestions":"47198"},{"ruleId":"45357","severity":2,"message":"45358","line":683,"column":16,"nodeType":"45359","messageId":"45360","endLine":683,"endColumn":19,"suggestions":"47199"},{"ruleId":"45357","severity":2,"message":"45358","line":707,"column":40,"nodeType":"45359","messageId":"45360","endLine":707,"endColumn":43,"suggestions":"47200"},{"ruleId":"45357","severity":2,"message":"45358","line":707,"column":55,"nodeType":"45359","messageId":"45360","endLine":707,"endColumn":58,"suggestions":"47201"},{"ruleId":"45357","severity":2,"message":"45358","line":714,"column":29,"nodeType":"45359","messageId":"45360","endLine":714,"endColumn":32,"suggestions":"47202"},{"ruleId":"45357","severity":2,"message":"45358","line":738,"column":23,"nodeType":"45359","messageId":"45360","endLine":738,"endColumn":26,"suggestions":"47203"},{"ruleId":"45357","severity":2,"message":"45358","line":743,"column":40,"nodeType":"45359","messageId":"45360","endLine":743,"endColumn":43,"suggestions":"47204"},{"ruleId":"45357","severity":2,"message":"45358","line":743,"column":55,"nodeType":"45359","messageId":"45360","endLine":743,"endColumn":58,"suggestions":"47205"},{"ruleId":"45357","severity":2,"message":"45358","line":750,"column":29,"nodeType":"45359","messageId":"45360","endLine":750,"endColumn":32,"suggestions":"47206"},{"ruleId":"45357","severity":2,"message":"45358","line":762,"column":16,"nodeType":"45359","messageId":"45360","endLine":762,"endColumn":19,"suggestions":"47207"},{"ruleId":"45357","severity":2,"message":"45358","line":767,"column":38,"nodeType":"45359","messageId":"45360","endLine":767,"endColumn":41,"suggestions":"47208"},{"ruleId":"45357","severity":2,"message":"45358","line":767,"column":53,"nodeType":"45359","messageId":"45360","endLine":767,"endColumn":56,"suggestions":"47209"},{"ruleId":"45357","severity":2,"message":"45358","line":774,"column":27,"nodeType":"45359","messageId":"45360","endLine":774,"endColumn":30,"suggestions":"47210"},{"ruleId":"45357","severity":2,"message":"45358","line":782,"column":16,"nodeType":"45359","messageId":"45360","endLine":782,"endColumn":19,"suggestions":"47211"},{"ruleId":"45357","severity":2,"message":"45358","line":790,"column":38,"nodeType":"45359","messageId":"45360","endLine":790,"endColumn":41,"suggestions":"47212"},{"ruleId":"45357","severity":2,"message":"45358","line":790,"column":53,"nodeType":"45359","messageId":"45360","endLine":790,"endColumn":56,"suggestions":"47213"},{"ruleId":"45357","severity":2,"message":"45358","line":797,"column":27,"nodeType":"45359","messageId":"45360","endLine":797,"endColumn":30,"suggestions":"47214"},{"ruleId":"45357","severity":2,"message":"45358","line":806,"column":16,"nodeType":"45359","messageId":"45360","endLine":806,"endColumn":19,"suggestions":"47215"},{"ruleId":"45357","severity":2,"message":"45358","line":815,"column":38,"nodeType":"45359","messageId":"45360","endLine":815,"endColumn":41,"suggestions":"47216"},{"ruleId":"45357","severity":2,"message":"45358","line":815,"column":53,"nodeType":"45359","messageId":"45360","endLine":815,"endColumn":56,"suggestions":"47217"},{"ruleId":"45357","severity":2,"message":"45358","line":825,"column":27,"nodeType":"45359","messageId":"45360","endLine":825,"endColumn":30,"suggestions":"47218"},{"ruleId":"45357","severity":2,"message":"45358","line":841,"column":16,"nodeType":"45359","messageId":"45360","endLine":841,"endColumn":19,"suggestions":"47219"},{"ruleId":"45357","severity":2,"message":"45358","line":867,"column":38,"nodeType":"45359","messageId":"45360","endLine":867,"endColumn":41,"suggestions":"47220"},{"ruleId":"45357","severity":2,"message":"45358","line":867,"column":53,"nodeType":"45359","messageId":"45360","endLine":867,"endColumn":56,"suggestions":"47221"},{"ruleId":"45357","severity":2,"message":"45358","line":867,"column":66,"nodeType":"45359","messageId":"45360","endLine":867,"endColumn":69,"suggestions":"47222"},{"ruleId":"45357","severity":2,"message":"45358","line":877,"column":27,"nodeType":"45359","messageId":"45360","endLine":877,"endColumn":30,"suggestions":"47223"},{"ruleId":"45357","severity":2,"message":"45358","line":909,"column":38,"nodeType":"45359","messageId":"45360","endLine":909,"endColumn":41,"suggestions":"47224"},{"ruleId":"45357","severity":2,"message":"45358","line":909,"column":53,"nodeType":"45359","messageId":"45360","endLine":909,"endColumn":56,"suggestions":"47225"},{"ruleId":"45357","severity":2,"message":"45358","line":915,"column":27,"nodeType":"45359","messageId":"45360","endLine":915,"endColumn":30,"suggestions":"47226"},{"ruleId":"45357","severity":2,"message":"45358","line":919,"column":44,"nodeType":"45359","messageId":"45360","endLine":919,"endColumn":47,"suggestions":"47227"},{"ruleId":"45357","severity":2,"message":"45358","line":994,"column":16,"nodeType":"45359","messageId":"45360","endLine":994,"endColumn":19,"suggestions":"47228"},{"ruleId":"45357","severity":2,"message":"45358","line":1006,"column":40,"nodeType":"45359","messageId":"45360","endLine":1006,"endColumn":43,"suggestions":"47229"},{"ruleId":"45357","severity":2,"message":"45358","line":1006,"column":55,"nodeType":"45359","messageId":"45360","endLine":1006,"endColumn":58,"suggestions":"47230"},{"ruleId":"45357","severity":2,"message":"45358","line":1013,"column":29,"nodeType":"45359","messageId":"45360","endLine":1013,"endColumn":32,"suggestions":"47231"},{"ruleId":"45357","severity":2,"message":"45358","line":1024,"column":16,"nodeType":"45359","messageId":"45360","endLine":1024,"endColumn":19,"suggestions":"47232"},{"ruleId":"45357","severity":2,"message":"45358","line":1065,"column":40,"nodeType":"45359","messageId":"45360","endLine":1065,"endColumn":43,"suggestions":"47233"},{"ruleId":"45357","severity":2,"message":"45358","line":1065,"column":55,"nodeType":"45359","messageId":"45360","endLine":1065,"endColumn":58,"suggestions":"47234"},{"ruleId":"45357","severity":2,"message":"45358","line":1072,"column":29,"nodeType":"45359","messageId":"45360","endLine":1072,"endColumn":32,"suggestions":"47235"},{"ruleId":"45357","severity":2,"message":"45358","line":1130,"column":27,"nodeType":"45359","messageId":"45360","endLine":1130,"endColumn":30,"suggestions":"47236"},{"ruleId":"45357","severity":2,"message":"45358","line":1152,"column":27,"nodeType":"45359","messageId":"45360","endLine":1152,"endColumn":30,"suggestions":"47237"},{"ruleId":"45357","severity":2,"message":"45358","line":1158,"column":16,"nodeType":"45359","messageId":"45360","endLine":1158,"endColumn":19,"suggestions":"47238"},{"ruleId":"45357","severity":2,"message":"45358","line":1167,"column":38,"nodeType":"45359","messageId":"45360","endLine":1167,"endColumn":41,"suggestions":"47239"},{"ruleId":"45357","severity":2,"message":"45358","line":1167,"column":53,"nodeType":"45359","messageId":"45360","endLine":1167,"endColumn":56,"suggestions":"47240"},{"ruleId":"45357","severity":2,"message":"45358","line":1183,"column":27,"nodeType":"45359","messageId":"45360","endLine":1183,"endColumn":30,"suggestions":"47241"},{"ruleId":"45357","severity":2,"message":"45358","line":1208,"column":27,"nodeType":"45359","messageId":"45360","endLine":1208,"endColumn":30,"suggestions":"47242"},{"ruleId":"45357","severity":2,"message":"45358","line":1217,"column":16,"nodeType":"45359","messageId":"45360","endLine":1217,"endColumn":19,"suggestions":"47243"},{"ruleId":"45357","severity":2,"message":"45358","line":1226,"column":38,"nodeType":"45359","messageId":"45360","endLine":1226,"endColumn":41,"suggestions":"47244"},{"ruleId":"45357","severity":2,"message":"45358","line":1226,"column":53,"nodeType":"45359","messageId":"45360","endLine":1226,"endColumn":56,"suggestions":"47245"},{"ruleId":"45357","severity":2,"message":"45358","line":1245,"column":27,"nodeType":"45359","messageId":"45360","endLine":1245,"endColumn":30,"suggestions":"47246"},{"ruleId":"45357","severity":2,"message":"45358","line":1264,"column":38,"nodeType":"45359","messageId":"45360","endLine":1264,"endColumn":41,"suggestions":"47247"},{"ruleId":"45357","severity":2,"message":"45358","line":1264,"column":53,"nodeType":"45359","messageId":"45360","endLine":1264,"endColumn":56,"suggestions":"47248"},{"ruleId":"45357","severity":2,"message":"45358","line":1280,"column":27,"nodeType":"45359","messageId":"45360","endLine":1280,"endColumn":30,"suggestions":"47249"},{"ruleId":"45357","severity":2,"message":"45358","line":1284,"column":44,"nodeType":"45359","messageId":"45360","endLine":1284,"endColumn":47,"suggestions":"47250"},{"ruleId":"45357","severity":2,"message":"45358","line":1310,"column":27,"nodeType":"45359","messageId":"45360","endLine":1310,"endColumn":30,"suggestions":"47251"},{"ruleId":"45357","severity":2,"message":"45358","line":1314,"column":44,"nodeType":"45359","messageId":"45360","endLine":1314,"endColumn":47,"suggestions":"47252"},{"ruleId":"45357","severity":2,"message":"45358","line":1342,"column":27,"nodeType":"45359","messageId":"45360","endLine":1342,"endColumn":30,"suggestions":"47253"},{"ruleId":"45357","severity":2,"message":"45358","line":1346,"column":44,"nodeType":"45359","messageId":"45360","endLine":1346,"endColumn":47,"suggestions":"47254"},{"ruleId":"45357","severity":2,"message":"45358","line":1361,"column":16,"nodeType":"45359","messageId":"45360","endLine":1361,"endColumn":19,"suggestions":"47255"},{"ruleId":"45357","severity":2,"message":"45358","line":1371,"column":40,"nodeType":"45359","messageId":"45360","endLine":1371,"endColumn":43,"suggestions":"47256"},{"ruleId":"45357","severity":2,"message":"45358","line":1371,"column":55,"nodeType":"45359","messageId":"45360","endLine":1371,"endColumn":58,"suggestions":"47257"},{"ruleId":"45357","severity":2,"message":"45358","line":1388,"column":29,"nodeType":"45359","messageId":"45360","endLine":1388,"endColumn":32,"suggestions":"47258"},{"ruleId":"45357","severity":2,"message":"45358","line":1410,"column":38,"nodeType":"45359","messageId":"45360","endLine":1410,"endColumn":41,"suggestions":"47259"},{"ruleId":"45357","severity":2,"message":"45358","line":1410,"column":53,"nodeType":"45359","messageId":"45360","endLine":1410,"endColumn":56,"suggestions":"47260"},{"ruleId":"45357","severity":2,"message":"45358","line":1431,"column":27,"nodeType":"45359","messageId":"45360","endLine":1431,"endColumn":30,"suggestions":"47261"},{"ruleId":"45357","severity":2,"message":"45358","line":1435,"column":44,"nodeType":"45359","messageId":"45360","endLine":1435,"endColumn":47,"suggestions":"47262"},{"ruleId":"45357","severity":2,"message":"45358","line":1443,"column":16,"nodeType":"45359","messageId":"45360","endLine":1443,"endColumn":19,"suggestions":"47263"},{"ruleId":"45357","severity":2,"message":"45358","line":1453,"column":38,"nodeType":"45359","messageId":"45360","endLine":1453,"endColumn":41,"suggestions":"47264"},{"ruleId":"45357","severity":2,"message":"45358","line":1453,"column":53,"nodeType":"45359","messageId":"45360","endLine":1453,"endColumn":56,"suggestions":"47265"},{"ruleId":"45357","severity":2,"message":"45358","line":1466,"column":27,"nodeType":"45359","messageId":"45360","endLine":1466,"endColumn":30,"suggestions":"47266"},{"ruleId":"45357","severity":2,"message":"45358","line":1470,"column":44,"nodeType":"45359","messageId":"45360","endLine":1470,"endColumn":47,"suggestions":"47267"},{"ruleId":"45357","severity":2,"message":"45358","line":1478,"column":21,"nodeType":"45359","messageId":"45360","endLine":1478,"endColumn":24,"suggestions":"47268"},{"ruleId":"45357","severity":2,"message":"45358","line":1498,"column":44,"nodeType":"45359","messageId":"45360","endLine":1498,"endColumn":47,"suggestions":"47269"},{"ruleId":"45357","severity":2,"message":"45358","line":1498,"column":59,"nodeType":"45359","messageId":"45360","endLine":1498,"endColumn":62,"suggestions":"47270"},{"ruleId":"45357","severity":2,"message":"45358","line":1508,"column":27,"nodeType":"45359","messageId":"45360","endLine":1508,"endColumn":30,"suggestions":"47271"},{"ruleId":"45357","severity":2,"message":"45358","line":1518,"column":21,"nodeType":"45359","messageId":"45360","endLine":1518,"endColumn":24,"suggestions":"47272"},{"ruleId":"45357","severity":2,"message":"45358","line":1539,"column":44,"nodeType":"45359","messageId":"45360","endLine":1539,"endColumn":47,"suggestions":"47273"},{"ruleId":"45357","severity":2,"message":"45358","line":1539,"column":59,"nodeType":"45359","messageId":"45360","endLine":1539,"endColumn":62,"suggestions":"47274"},{"ruleId":"45357","severity":2,"message":"45358","line":1549,"column":27,"nodeType":"45359","messageId":"45360","endLine":1549,"endColumn":30,"suggestions":"47275"},{"ruleId":"45357","severity":2,"message":"45358","line":1561,"column":16,"nodeType":"45359","messageId":"45360","endLine":1561,"endColumn":19,"suggestions":"47276"},{"ruleId":"45357","severity":2,"message":"45358","line":1576,"column":38,"nodeType":"45359","messageId":"45360","endLine":1576,"endColumn":41,"suggestions":"47277"},{"ruleId":"45357","severity":2,"message":"45358","line":1576,"column":53,"nodeType":"45359","messageId":"45360","endLine":1576,"endColumn":56,"suggestions":"47278"},{"ruleId":"45357","severity":2,"message":"45358","line":1584,"column":27,"nodeType":"45359","messageId":"45360","endLine":1584,"endColumn":30,"suggestions":"47279"},{"ruleId":"45357","severity":2,"message":"45358","line":1588,"column":44,"nodeType":"45359","messageId":"45360","endLine":1588,"endColumn":47,"suggestions":"47280"},{"ruleId":"45357","severity":2,"message":"45358","line":1596,"column":16,"nodeType":"45359","messageId":"45360","endLine":1596,"endColumn":19,"suggestions":"47281"},{"ruleId":"45357","severity":2,"message":"45358","line":1612,"column":38,"nodeType":"45359","messageId":"45360","endLine":1612,"endColumn":41,"suggestions":"47282"},{"ruleId":"45357","severity":2,"message":"45358","line":1612,"column":53,"nodeType":"45359","messageId":"45360","endLine":1612,"endColumn":56,"suggestions":"47283"},{"ruleId":"45357","severity":2,"message":"45358","line":1612,"column":66,"nodeType":"45359","messageId":"45360","endLine":1612,"endColumn":69,"suggestions":"47284"},{"ruleId":"45357","severity":2,"message":"45358","line":1633,"column":27,"nodeType":"45359","messageId":"45360","endLine":1633,"endColumn":30,"suggestions":"47285"},{"ruleId":"45357","severity":2,"message":"45358","line":1637,"column":44,"nodeType":"45359","messageId":"45360","endLine":1637,"endColumn":47,"suggestions":"47286"},{"ruleId":"45357","severity":2,"message":"45358","line":1645,"column":16,"nodeType":"45359","messageId":"45360","endLine":1645,"endColumn":19,"suggestions":"47287"},{"ruleId":"45357","severity":2,"message":"45358","line":1654,"column":38,"nodeType":"45359","messageId":"45360","endLine":1654,"endColumn":41,"suggestions":"47288"},{"ruleId":"45357","severity":2,"message":"45358","line":1654,"column":53,"nodeType":"45359","messageId":"45360","endLine":1654,"endColumn":56,"suggestions":"47289"},{"ruleId":"45357","severity":2,"message":"45358","line":1674,"column":27,"nodeType":"45359","messageId":"45360","endLine":1674,"endColumn":30,"suggestions":"47290"},{"ruleId":"45357","severity":2,"message":"45358","line":1683,"column":16,"nodeType":"45359","messageId":"45360","endLine":1683,"endColumn":19,"suggestions":"47291"},{"ruleId":"45357","severity":2,"message":"45358","line":1692,"column":38,"nodeType":"45359","messageId":"45360","endLine":1692,"endColumn":41,"suggestions":"47292"},{"ruleId":"45357","severity":2,"message":"45358","line":1692,"column":53,"nodeType":"45359","messageId":"45360","endLine":1692,"endColumn":56,"suggestions":"47293"},{"ruleId":"45357","severity":2,"message":"45358","line":1715,"column":27,"nodeType":"45359","messageId":"45360","endLine":1715,"endColumn":30,"suggestions":"47294"},{"ruleId":"45357","severity":2,"message":"45358","line":1719,"column":44,"nodeType":"45359","messageId":"45360","endLine":1719,"endColumn":47,"suggestions":"47295"},{"ruleId":"45357","severity":2,"message":"45358","line":1726,"column":16,"nodeType":"45359","messageId":"45360","endLine":1726,"endColumn":19,"suggestions":"47296"},{"ruleId":"45357","severity":2,"message":"45358","line":1737,"column":40,"nodeType":"45359","messageId":"45360","endLine":1737,"endColumn":43,"suggestions":"47297"},{"ruleId":"45357","severity":2,"message":"45358","line":1737,"column":55,"nodeType":"45359","messageId":"45360","endLine":1737,"endColumn":58,"suggestions":"47298"},{"ruleId":"45357","severity":2,"message":"45358","line":1744,"column":29,"nodeType":"45359","messageId":"45360","endLine":1744,"endColumn":32,"suggestions":"47299"},{"ruleId":"45357","severity":2,"message":"45358","line":1763,"column":16,"nodeType":"45359","messageId":"45360","endLine":1763,"endColumn":19,"suggestions":"47300"},{"ruleId":"45357","severity":2,"message":"45358","line":1771,"column":38,"nodeType":"45359","messageId":"45360","endLine":1771,"endColumn":41,"suggestions":"47301"},{"ruleId":"45357","severity":2,"message":"45358","line":1771,"column":53,"nodeType":"45359","messageId":"45360","endLine":1771,"endColumn":56,"suggestions":"47302"},{"ruleId":"45357","severity":2,"message":"45358","line":1778,"column":27,"nodeType":"45359","messageId":"45360","endLine":1778,"endColumn":30,"suggestions":"47303"},{"ruleId":"45357","severity":2,"message":"45358","line":1787,"column":16,"nodeType":"45359","messageId":"45360","endLine":1787,"endColumn":19,"suggestions":"47304"},{"ruleId":"45357","severity":2,"message":"45358","line":1802,"column":40,"nodeType":"45359","messageId":"45360","endLine":1802,"endColumn":43,"suggestions":"47305"},{"ruleId":"45357","severity":2,"message":"45358","line":1802,"column":55,"nodeType":"45359","messageId":"45360","endLine":1802,"endColumn":58,"suggestions":"47306"},{"ruleId":"45357","severity":2,"message":"45358","line":1810,"column":29,"nodeType":"45359","messageId":"45360","endLine":1810,"endColumn":32,"suggestions":"47307"},{"ruleId":"45357","severity":2,"message":"45358","line":1839,"column":16,"nodeType":"45359","messageId":"45360","endLine":1839,"endColumn":19,"suggestions":"47308"},{"ruleId":"45357","severity":2,"message":"45358","line":1847,"column":38,"nodeType":"45359","messageId":"45360","endLine":1847,"endColumn":41,"suggestions":"47309"},{"ruleId":"45357","severity":2,"message":"45358","line":1847,"column":53,"nodeType":"45359","messageId":"45360","endLine":1847,"endColumn":56,"suggestions":"47310"},{"ruleId":"45357","severity":2,"message":"45358","line":1854,"column":27,"nodeType":"45359","messageId":"45360","endLine":1854,"endColumn":30,"suggestions":"47311"},{"ruleId":"45357","severity":2,"message":"45358","line":1863,"column":16,"nodeType":"45359","messageId":"45360","endLine":1863,"endColumn":19,"suggestions":"47312"},{"ruleId":"45357","severity":2,"message":"45358","line":1871,"column":38,"nodeType":"45359","messageId":"45360","endLine":1871,"endColumn":41,"suggestions":"47313"},{"ruleId":"45357","severity":2,"message":"45358","line":1871,"column":53,"nodeType":"45359","messageId":"45360","endLine":1871,"endColumn":56,"suggestions":"47314"},{"ruleId":"45357","severity":2,"message":"45358","line":1878,"column":27,"nodeType":"45359","messageId":"45360","endLine":1878,"endColumn":30,"suggestions":"47315"},{"ruleId":"45357","severity":2,"message":"45358","line":1894,"column":16,"nodeType":"45359","messageId":"45360","endLine":1894,"endColumn":19,"suggestions":"47316"},{"ruleId":"45357","severity":2,"message":"45358","line":1904,"column":38,"nodeType":"45359","messageId":"45360","endLine":1904,"endColumn":41,"suggestions":"47317"},{"ruleId":"45357","severity":2,"message":"45358","line":1904,"column":53,"nodeType":"45359","messageId":"45360","endLine":1904,"endColumn":56,"suggestions":"47318"},{"ruleId":"45357","severity":2,"message":"45358","line":1911,"column":27,"nodeType":"45359","messageId":"45360","endLine":1911,"endColumn":30,"suggestions":"47319"},{"ruleId":"45357","severity":2,"message":"45358","line":1949,"column":16,"nodeType":"45359","messageId":"45360","endLine":1949,"endColumn":19,"suggestions":"47320"},{"ruleId":"45357","severity":2,"message":"45358","line":1969,"column":38,"nodeType":"45359","messageId":"45360","endLine":1969,"endColumn":41,"suggestions":"47321"},{"ruleId":"45357","severity":2,"message":"45358","line":1969,"column":53,"nodeType":"45359","messageId":"45360","endLine":1969,"endColumn":56,"suggestions":"47322"},{"ruleId":"45357","severity":2,"message":"45358","line":1976,"column":27,"nodeType":"45359","messageId":"45360","endLine":1976,"endColumn":30,"suggestions":"47323"},{"ruleId":"45357","severity":2,"message":"45358","line":2078,"column":16,"nodeType":"45359","messageId":"45360","endLine":2078,"endColumn":19,"suggestions":"47324"},{"ruleId":"45357","severity":2,"message":"45358","line":2094,"column":38,"nodeType":"45359","messageId":"45360","endLine":2094,"endColumn":41,"suggestions":"47325"},{"ruleId":"45357","severity":2,"message":"45358","line":2094,"column":53,"nodeType":"45359","messageId":"45360","endLine":2094,"endColumn":56,"suggestions":"47326"},{"ruleId":"45357","severity":2,"message":"45358","line":2101,"column":27,"nodeType":"45359","messageId":"45360","endLine":2101,"endColumn":30,"suggestions":"47327"},{"ruleId":"45357","severity":2,"message":"45358","line":2145,"column":38,"nodeType":"45359","messageId":"45360","endLine":2145,"endColumn":41,"suggestions":"47328"},{"ruleId":"45357","severity":2,"message":"45358","line":2152,"column":27,"nodeType":"45359","messageId":"45360","endLine":2152,"endColumn":30,"suggestions":"47329"},{"ruleId":"45357","severity":2,"message":"45358","line":2180,"column":16,"nodeType":"45359","messageId":"45360","endLine":2180,"endColumn":19,"suggestions":"47330"},{"ruleId":"45357","severity":2,"message":"45358","line":2198,"column":38,"nodeType":"45359","messageId":"45360","endLine":2198,"endColumn":41,"suggestions":"47331"},{"ruleId":"45357","severity":2,"message":"45358","line":2198,"column":53,"nodeType":"45359","messageId":"45360","endLine":2198,"endColumn":56,"suggestions":"47332"},{"ruleId":"45357","severity":2,"message":"45358","line":2205,"column":27,"nodeType":"45359","messageId":"45360","endLine":2205,"endColumn":30,"suggestions":"47333"},{"ruleId":"45357","severity":2,"message":"45358","line":2224,"column":16,"nodeType":"45359","messageId":"45360","endLine":2224,"endColumn":19,"suggestions":"47334"},{"ruleId":"45357","severity":2,"message":"45358","line":2240,"column":38,"nodeType":"45359","messageId":"45360","endLine":2240,"endColumn":41,"suggestions":"47335"},{"ruleId":"45357","severity":2,"message":"45358","line":2240,"column":53,"nodeType":"45359","messageId":"45360","endLine":2240,"endColumn":56,"suggestions":"47336"},{"ruleId":"45357","severity":2,"message":"45358","line":2247,"column":27,"nodeType":"45359","messageId":"45360","endLine":2247,"endColumn":30,"suggestions":"47337"},{"ruleId":"45357","severity":2,"message":"45358","line":2265,"column":23,"nodeType":"45359","messageId":"45360","endLine":2265,"endColumn":26,"suggestions":"47338"},{"ruleId":"45357","severity":2,"message":"45358","line":2269,"column":38,"nodeType":"45359","messageId":"45360","endLine":2269,"endColumn":41,"suggestions":"47339"},{"ruleId":"45357","severity":2,"message":"45358","line":2269,"column":53,"nodeType":"45359","messageId":"45360","endLine":2269,"endColumn":56,"suggestions":"47340"},{"ruleId":"45357","severity":2,"message":"45358","line":2276,"column":27,"nodeType":"45359","messageId":"45360","endLine":2276,"endColumn":30,"suggestions":"47341"},{"ruleId":"45357","severity":2,"message":"45358","line":2282,"column":21,"nodeType":"45359","messageId":"45360","endLine":2282,"endColumn":24,"suggestions":"47342"},{"ruleId":"45357","severity":2,"message":"45358","line":2287,"column":38,"nodeType":"45359","messageId":"45360","endLine":2287,"endColumn":41,"suggestions":"47343"},{"ruleId":"45357","severity":2,"message":"45358","line":2287,"column":53,"nodeType":"45359","messageId":"45360","endLine":2287,"endColumn":56,"suggestions":"47344"},{"ruleId":"45357","severity":2,"message":"45358","line":2294,"column":27,"nodeType":"45359","messageId":"45360","endLine":2294,"endColumn":30,"suggestions":"47345"},{"ruleId":"45357","severity":2,"message":"45358","line":2315,"column":27,"nodeType":"45359","messageId":"45360","endLine":2315,"endColumn":30,"suggestions":"47346"},{"ruleId":"45357","severity":2,"message":"45358","line":2319,"column":44,"nodeType":"45359","messageId":"45360","endLine":2319,"endColumn":47,"suggestions":"47347"},{"ruleId":"45357","severity":2,"message":"45358","line":2344,"column":27,"nodeType":"45359","messageId":"45360","endLine":2344,"endColumn":30,"suggestions":"47348"},{"ruleId":"45357","severity":2,"message":"45358","line":2355,"column":16,"nodeType":"45359","messageId":"45360","endLine":2355,"endColumn":19,"suggestions":"47349"},{"ruleId":"45357","severity":2,"message":"45358","line":2368,"column":38,"nodeType":"45359","messageId":"45360","endLine":2368,"endColumn":41,"suggestions":"47350"},{"ruleId":"45357","severity":2,"message":"45358","line":2368,"column":53,"nodeType":"45359","messageId":"45360","endLine":2368,"endColumn":56,"suggestions":"47351"},{"ruleId":"45357","severity":2,"message":"45358","line":2375,"column":27,"nodeType":"45359","messageId":"45360","endLine":2375,"endColumn":30,"suggestions":"47352"},{"ruleId":"45357","severity":2,"message":"45358","line":2442,"column":38,"nodeType":"45359","messageId":"45360","endLine":2442,"endColumn":41,"suggestions":"47353"},{"ruleId":"45357","severity":2,"message":"45358","line":2442,"column":53,"nodeType":"45359","messageId":"45360","endLine":2442,"endColumn":56,"suggestions":"47354"},{"ruleId":"45357","severity":2,"message":"45358","line":2442,"column":66,"nodeType":"45359","messageId":"45360","endLine":2442,"endColumn":69,"suggestions":"47355"},{"ruleId":"45357","severity":2,"message":"45358","line":2449,"column":59,"nodeType":"45359","messageId":"45360","endLine":2449,"endColumn":62,"suggestions":"47356"},{"ruleId":"45357","severity":2,"message":"45358","line":2466,"column":16,"nodeType":"45359","messageId":"45360","endLine":2466,"endColumn":19,"suggestions":"47357"},{"ruleId":"45357","severity":2,"message":"45358","line":2475,"column":38,"nodeType":"45359","messageId":"45360","endLine":2475,"endColumn":41,"suggestions":"47358"},{"ruleId":"45357","severity":2,"message":"45358","line":2475,"column":53,"nodeType":"45359","messageId":"45360","endLine":2475,"endColumn":56,"suggestions":"47359"},{"ruleId":"45357","severity":2,"message":"45358","line":2482,"column":27,"nodeType":"45359","messageId":"45360","endLine":2482,"endColumn":30,"suggestions":"47360"},{"ruleId":"45357","severity":2,"message":"45358","line":2491,"column":16,"nodeType":"45359","messageId":"45360","endLine":2491,"endColumn":19,"suggestions":"47361"},{"ruleId":"45357","severity":2,"message":"45358","line":2500,"column":38,"nodeType":"45359","messageId":"45360","endLine":2500,"endColumn":41,"suggestions":"47362"},{"ruleId":"45357","severity":2,"message":"45358","line":2500,"column":53,"nodeType":"45359","messageId":"45360","endLine":2500,"endColumn":56,"suggestions":"47363"},{"ruleId":"45357","severity":2,"message":"45358","line":2507,"column":27,"nodeType":"45359","messageId":"45360","endLine":2507,"endColumn":30,"suggestions":"47364"},{"ruleId":"45357","severity":2,"message":"45358","line":2528,"column":27,"nodeType":"45359","messageId":"45360","endLine":2528,"endColumn":30,"suggestions":"47365"},{"ruleId":"45357","severity":2,"message":"45358","line":2533,"column":26,"nodeType":"45359","messageId":"45360","endLine":2533,"endColumn":29,"suggestions":"47366"},{"ruleId":"45357","severity":2,"message":"45358","line":2557,"column":16,"nodeType":"45359","messageId":"45360","endLine":2557,"endColumn":19,"suggestions":"47367"},{"ruleId":"45357","severity":2,"message":"45358","line":2569,"column":38,"nodeType":"45359","messageId":"45360","endLine":2569,"endColumn":41,"suggestions":"47368"},{"ruleId":"45357","severity":2,"message":"45358","line":2569,"column":53,"nodeType":"45359","messageId":"45360","endLine":2569,"endColumn":56,"suggestions":"47369"},{"ruleId":"45357","severity":2,"message":"45358","line":2579,"column":27,"nodeType":"45359","messageId":"45360","endLine":2579,"endColumn":30,"suggestions":"47370"},{"ruleId":"45357","severity":2,"message":"45358","line":2597,"column":16,"nodeType":"45359","messageId":"45360","endLine":2597,"endColumn":19,"suggestions":"47371"},{"ruleId":"45357","severity":2,"message":"45358","line":2606,"column":38,"nodeType":"45359","messageId":"45360","endLine":2606,"endColumn":41,"suggestions":"47372"},{"ruleId":"45357","severity":2,"message":"45358","line":2606,"column":53,"nodeType":"45359","messageId":"45360","endLine":2606,"endColumn":56,"suggestions":"47373"},{"ruleId":"45357","severity":2,"message":"45358","line":2613,"column":27,"nodeType":"45359","messageId":"45360","endLine":2613,"endColumn":30,"suggestions":"47374"},{"ruleId":"45357","severity":2,"message":"45358","line":2627,"column":16,"nodeType":"45359","messageId":"45360","endLine":2627,"endColumn":19,"suggestions":"47375"},{"ruleId":"45357","severity":2,"message":"45358","line":2640,"column":38,"nodeType":"45359","messageId":"45360","endLine":2640,"endColumn":41,"suggestions":"47376"},{"ruleId":"45357","severity":2,"message":"45358","line":2640,"column":53,"nodeType":"45359","messageId":"45360","endLine":2640,"endColumn":56,"suggestions":"47377"},{"ruleId":"45357","severity":2,"message":"45358","line":2647,"column":27,"nodeType":"45359","messageId":"45360","endLine":2647,"endColumn":30,"suggestions":"47378"},{"ruleId":"45357","severity":2,"message":"45358","line":2656,"column":16,"nodeType":"45359","messageId":"45360","endLine":2656,"endColumn":19,"suggestions":"47379"},{"ruleId":"45357","severity":2,"message":"45358","line":2670,"column":38,"nodeType":"45359","messageId":"45360","endLine":2670,"endColumn":41,"suggestions":"47380"},{"ruleId":"45357","severity":2,"message":"45358","line":2670,"column":53,"nodeType":"45359","messageId":"45360","endLine":2670,"endColumn":56,"suggestions":"47381"},{"ruleId":"45357","severity":2,"message":"45358","line":2677,"column":27,"nodeType":"45359","messageId":"45360","endLine":2677,"endColumn":30,"suggestions":"47382"},{"ruleId":"45357","severity":2,"message":"45358","line":2694,"column":16,"nodeType":"45359","messageId":"45360","endLine":2694,"endColumn":19,"suggestions":"47383"},{"ruleId":"45357","severity":2,"message":"45358","line":2711,"column":38,"nodeType":"45359","messageId":"45360","endLine":2711,"endColumn":41,"suggestions":"47384"},{"ruleId":"45357","severity":2,"message":"45358","line":2711,"column":53,"nodeType":"45359","messageId":"45360","endLine":2711,"endColumn":56,"suggestions":"47385"},{"ruleId":"45357","severity":2,"message":"45358","line":2733,"column":27,"nodeType":"45359","messageId":"45360","endLine":2733,"endColumn":30,"suggestions":"47386"},{"ruleId":"45357","severity":2,"message":"45358","line":2737,"column":44,"nodeType":"45359","messageId":"45360","endLine":2737,"endColumn":47,"suggestions":"47387"},{"ruleId":"45357","severity":2,"message":"45358","line":2764,"column":27,"nodeType":"45359","messageId":"45360","endLine":2764,"endColumn":30,"suggestions":"47388"},{"ruleId":"45357","severity":2,"message":"45358","line":2793,"column":27,"nodeType":"45359","messageId":"45360","endLine":2793,"endColumn":30,"suggestions":"47389"},{"ruleId":"45357","severity":2,"message":"45358","line":2817,"column":27,"nodeType":"45359","messageId":"45360","endLine":2817,"endColumn":30,"suggestions":"47390"},{"ruleId":"45357","severity":2,"message":"45358","line":2841,"column":27,"nodeType":"45359","messageId":"45360","endLine":2841,"endColumn":30,"suggestions":"47391"},{"ruleId":"45357","severity":2,"message":"45358","line":2848,"column":44,"nodeType":"45359","messageId":"45360","endLine":2848,"endColumn":47,"suggestions":"47392"},{"ruleId":"45357","severity":2,"message":"45358","line":2873,"column":27,"nodeType":"45359","messageId":"45360","endLine":2873,"endColumn":30,"suggestions":"47393"},{"ruleId":"45357","severity":2,"message":"45358","line":2882,"column":16,"nodeType":"45359","messageId":"45360","endLine":2882,"endColumn":19,"suggestions":"47394"},{"ruleId":"45357","severity":2,"message":"45358","line":2893,"column":38,"nodeType":"45359","messageId":"45360","endLine":2893,"endColumn":41,"suggestions":"47395"},{"ruleId":"45357","severity":2,"message":"45358","line":2893,"column":53,"nodeType":"45359","messageId":"45360","endLine":2893,"endColumn":56,"suggestions":"47396"},{"ruleId":"45357","severity":2,"message":"45358","line":2902,"column":27,"nodeType":"45359","messageId":"45360","endLine":2902,"endColumn":30,"suggestions":"47397"},{"ruleId":"45357","severity":2,"message":"45358","line":2911,"column":16,"nodeType":"45359","messageId":"45360","endLine":2911,"endColumn":19,"suggestions":"47398"},{"ruleId":"45357","severity":2,"message":"45358","line":2921,"column":38,"nodeType":"45359","messageId":"45360","endLine":2921,"endColumn":41,"suggestions":"47399"},{"ruleId":"45357","severity":2,"message":"45358","line":2921,"column":53,"nodeType":"45359","messageId":"45360","endLine":2921,"endColumn":56,"suggestions":"47400"},{"ruleId":"45357","severity":2,"message":"45358","line":2937,"column":27,"nodeType":"45359","messageId":"45360","endLine":2937,"endColumn":30,"suggestions":"47401"},{"ruleId":"45357","severity":2,"message":"45358","line":2962,"column":27,"nodeType":"45359","messageId":"45360","endLine":2962,"endColumn":30,"suggestions":"47402"},{"ruleId":"45357","severity":2,"message":"45358","line":2966,"column":44,"nodeType":"45359","messageId":"45360","endLine":2966,"endColumn":47,"suggestions":"47403"},{"ruleId":"45357","severity":2,"message":"45358","line":2989,"column":27,"nodeType":"45359","messageId":"45360","endLine":2989,"endColumn":30,"suggestions":"47404"},{"ruleId":"45357","severity":2,"message":"45358","line":2993,"column":44,"nodeType":"45359","messageId":"45360","endLine":2993,"endColumn":47,"suggestions":"47405"},{"ruleId":"45357","severity":2,"message":"45358","line":3000,"column":16,"nodeType":"45359","messageId":"45360","endLine":3000,"endColumn":19,"suggestions":"47406"},{"ruleId":"45357","severity":2,"message":"45358","line":3010,"column":38,"nodeType":"45359","messageId":"45360","endLine":3010,"endColumn":41,"suggestions":"47407"},{"ruleId":"45357","severity":2,"message":"45358","line":3010,"column":53,"nodeType":"45359","messageId":"45360","endLine":3010,"endColumn":56,"suggestions":"47408"},{"ruleId":"45357","severity":2,"message":"45358","line":3028,"column":27,"nodeType":"45359","messageId":"45360","endLine":3028,"endColumn":30,"suggestions":"47409"},{"ruleId":"45357","severity":2,"message":"45358","line":3032,"column":44,"nodeType":"45359","messageId":"45360","endLine":3032,"endColumn":47,"suggestions":"47410"},{"ruleId":"45357","severity":2,"message":"45358","line":3041,"column":16,"nodeType":"45359","messageId":"45360","endLine":3041,"endColumn":19,"suggestions":"47411"},{"ruleId":"45357","severity":2,"message":"45358","line":3053,"column":38,"nodeType":"45359","messageId":"45360","endLine":3053,"endColumn":41,"suggestions":"47412"},{"ruleId":"45357","severity":2,"message":"45358","line":3053,"column":53,"nodeType":"45359","messageId":"45360","endLine":3053,"endColumn":56,"suggestions":"47413"},{"ruleId":"45357","severity":2,"message":"45358","line":3070,"column":27,"nodeType":"45359","messageId":"45360","endLine":3070,"endColumn":30,"suggestions":"47414"},{"ruleId":"45357","severity":2,"message":"45358","line":3074,"column":44,"nodeType":"45359","messageId":"45360","endLine":3074,"endColumn":47,"suggestions":"47415"},{"ruleId":"45357","severity":2,"message":"45358","line":3081,"column":16,"nodeType":"45359","messageId":"45360","endLine":3081,"endColumn":19,"suggestions":"47416"},{"ruleId":"45357","severity":2,"message":"45358","line":3091,"column":38,"nodeType":"45359","messageId":"45360","endLine":3091,"endColumn":41,"suggestions":"47417"},{"ruleId":"45357","severity":2,"message":"45358","line":3091,"column":53,"nodeType":"45359","messageId":"45360","endLine":3091,"endColumn":56,"suggestions":"47418"},{"ruleId":"45357","severity":2,"message":"45358","line":3103,"column":27,"nodeType":"45359","messageId":"45360","endLine":3103,"endColumn":30,"suggestions":"47419"},{"ruleId":"45357","severity":2,"message":"45358","line":3107,"column":44,"nodeType":"45359","messageId":"45360","endLine":3107,"endColumn":47,"suggestions":"47420"},{"ruleId":"45357","severity":2,"message":"45358","line":104,"column":43,"nodeType":"45359","messageId":"45360","endLine":104,"endColumn":46,"suggestions":"47421"},{"ruleId":"45357","severity":2,"message":"45358","line":38,"column":17,"nodeType":"45359","messageId":"45360","endLine":38,"endColumn":20,"suggestions":"47422","suppressions":"47423"},{"ruleId":"45357","severity":2,"message":"45358","line":38,"column":27,"nodeType":"45359","messageId":"45360","endLine":38,"endColumn":30,"suggestions":"47424","suppressions":"47425"},{"ruleId":"45357","severity":2,"message":"45358","line":39,"column":17,"nodeType":"45359","messageId":"45360","endLine":39,"endColumn":20,"suggestions":"47426","suppressions":"47427"},{"ruleId":"45357","severity":2,"message":"45358","line":39,"column":27,"nodeType":"45359","messageId":"45360","endLine":39,"endColumn":30,"suggestions":"47428","suppressions":"47429"},{"ruleId":"45357","severity":2,"message":"45358","line":40,"column":18,"nodeType":"45359","messageId":"45360","endLine":40,"endColumn":21,"suggestions":"47430","suppressions":"47431"},{"ruleId":"45357","severity":2,"message":"45358","line":40,"column":28,"nodeType":"45359","messageId":"45360","endLine":40,"endColumn":31,"suggestions":"47432","suppressions":"47433"},{"ruleId":"45357","severity":2,"message":"45358","line":41,"column":18,"nodeType":"45359","messageId":"45360","endLine":41,"endColumn":21,"suggestions":"47434","suppressions":"47435"},{"ruleId":"45357","severity":2,"message":"45358","line":41,"column":28,"nodeType":"45359","messageId":"45360","endLine":41,"endColumn":31,"suggestions":"47436","suppressions":"47437"},{"ruleId":"45357","severity":2,"message":"45358","line":52,"column":21,"nodeType":"45359","messageId":"45360","endLine":52,"endColumn":24,"suggestions":"47438","suppressions":"47439"},{"ruleId":"45357","severity":2,"message":"45358","line":162,"column":20,"nodeType":"45359","messageId":"45360","endLine":162,"endColumn":23,"suggestions":"47440","suppressions":"47441"},{"ruleId":"45357","severity":2,"message":"45358","line":263,"column":20,"nodeType":"45359","messageId":"45360","endLine":263,"endColumn":23,"suggestions":"47442","suppressions":"47443"},{"ruleId":"45357","severity":2,"message":"45358","line":364,"column":20,"nodeType":"45359","messageId":"45360","endLine":364,"endColumn":23,"suggestions":"47444","suppressions":"47445"},{"ruleId":"45357","severity":2,"message":"45358","line":25,"column":18,"nodeType":"45359","messageId":"45360","endLine":25,"endColumn":21,"suggestions":"47446"},{"ruleId":"45357","severity":2,"message":"45358","line":27,"column":17,"nodeType":"45359","messageId":"45360","endLine":27,"endColumn":20,"suggestions":"47447"},{"ruleId":"45357","severity":2,"message":"45358","line":27,"column":27,"nodeType":"45359","messageId":"45360","endLine":27,"endColumn":30,"suggestions":"47448"},{"ruleId":"45357","severity":2,"message":"45358","line":28,"column":17,"nodeType":"45359","messageId":"45360","endLine":28,"endColumn":20,"suggestions":"47449"},{"ruleId":"45357","severity":2,"message":"45358","line":28,"column":27,"nodeType":"45359","messageId":"45360","endLine":28,"endColumn":30,"suggestions":"47450"},{"ruleId":"45357","severity":2,"message":"45358","line":29,"column":18,"nodeType":"45359","messageId":"45360","endLine":29,"endColumn":21,"suggestions":"47451"},{"ruleId":"45357","severity":2,"message":"45358","line":29,"column":28,"nodeType":"45359","messageId":"45360","endLine":29,"endColumn":31,"suggestions":"47452"},{"ruleId":"45357","severity":2,"message":"45358","line":30,"column":18,"nodeType":"45359","messageId":"45360","endLine":30,"endColumn":21,"suggestions":"47453"},{"ruleId":"45357","severity":2,"message":"45358","line":30,"column":28,"nodeType":"45359","messageId":"45360","endLine":30,"endColumn":31,"suggestions":"47454"},{"ruleId":"45357","severity":2,"message":"45358","line":35,"column":27,"nodeType":"45359","messageId":"45360","endLine":35,"endColumn":30,"suggestions":"47455"},{"ruleId":"45357","severity":2,"message":"45358","line":61,"column":21,"nodeType":"45359","messageId":"45360","endLine":61,"endColumn":24,"suggestions":"47456"},{"ruleId":"45357","severity":2,"message":"45358","line":98,"column":43,"nodeType":"45359","messageId":"45360","endLine":98,"endColumn":46,"suggestions":"47457"},{"ruleId":"45357","severity":2,"message":"45358","line":111,"column":47,"nodeType":"45359","messageId":"45360","endLine":111,"endColumn":50,"suggestions":"47458"},{"ruleId":"45357","severity":2,"message":"45358","line":115,"column":29,"nodeType":"45359","messageId":"45360","endLine":115,"endColumn":32,"suggestions":"47459"},{"ruleId":"45357","severity":2,"message":"45358","line":146,"column":51,"nodeType":"45359","messageId":"45360","endLine":146,"endColumn":54,"suggestions":"47460"},{"ruleId":"45357","severity":2,"message":"45358","line":162,"column":47,"nodeType":"45359","messageId":"45360","endLine":162,"endColumn":50,"suggestions":"47461"},{"ruleId":"45357","severity":2,"message":"45358","line":166,"column":29,"nodeType":"45359","messageId":"45360","endLine":166,"endColumn":32,"suggestions":"47462"},{"ruleId":"45357","severity":2,"message":"45358","line":29,"column":18,"nodeType":"45359","messageId":"45360","endLine":29,"endColumn":21,"suggestions":"47463"},{"ruleId":"45357","severity":2,"message":"45358","line":31,"column":17,"nodeType":"45359","messageId":"45360","endLine":31,"endColumn":20,"suggestions":"47464"},{"ruleId":"45357","severity":2,"message":"45358","line":31,"column":27,"nodeType":"45359","messageId":"45360","endLine":31,"endColumn":30,"suggestions":"47465"},{"ruleId":"45357","severity":2,"message":"45358","line":32,"column":17,"nodeType":"45359","messageId":"45360","endLine":32,"endColumn":20,"suggestions":"47466"},{"ruleId":"45357","severity":2,"message":"45358","line":32,"column":27,"nodeType":"45359","messageId":"45360","endLine":32,"endColumn":30,"suggestions":"47467"},{"ruleId":"45357","severity":2,"message":"45358","line":33,"column":18,"nodeType":"45359","messageId":"45360","endLine":33,"endColumn":21,"suggestions":"47468"},{"ruleId":"45357","severity":2,"message":"45358","line":33,"column":28,"nodeType":"45359","messageId":"45360","endLine":33,"endColumn":31,"suggestions":"47469"},{"ruleId":"45357","severity":2,"message":"45358","line":34,"column":18,"nodeType":"45359","messageId":"45360","endLine":34,"endColumn":21,"suggestions":"47470"},{"ruleId":"45357","severity":2,"message":"45358","line":34,"column":28,"nodeType":"45359","messageId":"45360","endLine":34,"endColumn":31,"suggestions":"47471"},{"ruleId":"45357","severity":2,"message":"45358","line":39,"column":27,"nodeType":"45359","messageId":"45360","endLine":39,"endColumn":30,"suggestions":"47472"},{"ruleId":"45357","severity":2,"message":"45358","line":60,"column":21,"nodeType":"45359","messageId":"45360","endLine":60,"endColumn":24,"suggestions":"47473"},{"ruleId":"45357","severity":2,"message":"45358","line":108,"column":38,"nodeType":"45359","messageId":"45360","endLine":108,"endColumn":41,"suggestions":"47474"},{"ruleId":"45357","severity":2,"message":"45358","line":133,"column":38,"nodeType":"45359","messageId":"45360","endLine":133,"endColumn":41,"suggestions":"47475"},{"ruleId":"45357","severity":2,"message":"45358","line":160,"column":38,"nodeType":"45359","messageId":"45360","endLine":160,"endColumn":41,"suggestions":"47476"},{"ruleId":"45357","severity":2,"message":"45358","line":184,"column":38,"nodeType":"45359","messageId":"45360","endLine":184,"endColumn":41,"suggestions":"47477"},{"ruleId":"45357","severity":2,"message":"45358","line":224,"column":38,"nodeType":"45359","messageId":"45360","endLine":224,"endColumn":41,"suggestions":"47478"},{"ruleId":"45357","severity":2,"message":"45358","line":260,"column":38,"nodeType":"45359","messageId":"45360","endLine":260,"endColumn":41,"suggestions":"47479"},{"ruleId":"45357","severity":2,"message":"45358","line":284,"column":38,"nodeType":"45359","messageId":"45360","endLine":284,"endColumn":41,"suggestions":"47480"},{"ruleId":"45357","severity":2,"message":"45358","line":313,"column":40,"nodeType":"45359","messageId":"45360","endLine":313,"endColumn":43,"suggestions":"47481"},{"ruleId":"45357","severity":2,"message":"45358","line":351,"column":40,"nodeType":"45359","messageId":"45360","endLine":351,"endColumn":43,"suggestions":"47482"},{"ruleId":"45357","severity":2,"message":"45358","line":378,"column":40,"nodeType":"45359","messageId":"45360","endLine":378,"endColumn":43,"suggestions":"47483"},{"ruleId":"45357","severity":2,"message":"45358","line":414,"column":42,"nodeType":"45359","messageId":"45360","endLine":414,"endColumn":45,"suggestions":"47484"},{"ruleId":"45357","severity":2,"message":"45358","line":448,"column":38,"nodeType":"45359","messageId":"45360","endLine":448,"endColumn":41,"suggestions":"47485"},{"ruleId":"45357","severity":2,"message":"45358","line":482,"column":42,"nodeType":"45359","messageId":"45360","endLine":482,"endColumn":45,"suggestions":"47486"},{"ruleId":"45357","severity":2,"message":"45358","line":516,"column":38,"nodeType":"45359","messageId":"45360","endLine":516,"endColumn":41,"suggestions":"47487"},{"ruleId":"45357","severity":2,"message":"45358","line":543,"column":38,"nodeType":"45359","messageId":"45360","endLine":543,"endColumn":41,"suggestions":"47488"},{"ruleId":"45357","severity":2,"message":"45358","line":589,"column":38,"nodeType":"45359","messageId":"45360","endLine":589,"endColumn":41,"suggestions":"47489"},{"ruleId":"45357","severity":2,"message":"45358","line":620,"column":38,"nodeType":"45359","messageId":"45360","endLine":620,"endColumn":41,"suggestions":"47490"},{"ruleId":"45357","severity":2,"message":"45358","line":651,"column":38,"nodeType":"45359","messageId":"45360","endLine":651,"endColumn":41,"suggestions":"47491"},{"ruleId":"45357","severity":2,"message":"45358","line":688,"column":38,"nodeType":"45359","messageId":"45360","endLine":688,"endColumn":41,"suggestions":"47492"},{"ruleId":"45357","severity":2,"message":"45358","line":747,"column":38,"nodeType":"45359","messageId":"45360","endLine":747,"endColumn":41,"suggestions":"47493"},{"ruleId":"45357","severity":2,"message":"45358","line":771,"column":38,"nodeType":"45359","messageId":"45360","endLine":771,"endColumn":41,"suggestions":"47494"},{"ruleId":"45357","severity":2,"message":"45358","line":817,"column":53,"nodeType":"45359","messageId":"45360","endLine":817,"endColumn":56,"suggestions":"47495"},{"ruleId":"45357","severity":2,"message":"45358","line":22,"column":18,"nodeType":"45359","messageId":"45360","endLine":22,"endColumn":21,"suggestions":"47496"},{"ruleId":"45357","severity":2,"message":"45358","line":24,"column":17,"nodeType":"45359","messageId":"45360","endLine":24,"endColumn":20,"suggestions":"47497"},{"ruleId":"45357","severity":2,"message":"45358","line":24,"column":27,"nodeType":"45359","messageId":"45360","endLine":24,"endColumn":30,"suggestions":"47498"},{"ruleId":"45357","severity":2,"message":"45358","line":25,"column":17,"nodeType":"45359","messageId":"45360","endLine":25,"endColumn":20,"suggestions":"47499"},{"ruleId":"45357","severity":2,"message":"45358","line":25,"column":27,"nodeType":"45359","messageId":"45360","endLine":25,"endColumn":30,"suggestions":"47500"},{"ruleId":"45357","severity":2,"message":"45358","line":26,"column":18,"nodeType":"45359","messageId":"45360","endLine":26,"endColumn":21,"suggestions":"47501"},{"ruleId":"45357","severity":2,"message":"45358","line":26,"column":28,"nodeType":"45359","messageId":"45360","endLine":26,"endColumn":31,"suggestions":"47502"},{"ruleId":"45357","severity":2,"message":"45358","line":27,"column":18,"nodeType":"45359","messageId":"45360","endLine":27,"endColumn":21,"suggestions":"47503"},{"ruleId":"45357","severity":2,"message":"45358","line":27,"column":28,"nodeType":"45359","messageId":"45360","endLine":27,"endColumn":31,"suggestions":"47504"},{"ruleId":"45357","severity":2,"message":"45358","line":476,"column":38,"nodeType":"45359","messageId":"45360","endLine":476,"endColumn":41,"suggestions":"47505"},{"ruleId":"45357","severity":2,"message":"45358","line":487,"column":27,"nodeType":"45359","messageId":"45360","endLine":487,"endColumn":30,"suggestions":"47506"},{"ruleId":"45357","severity":2,"message":"45358","line":518,"column":38,"nodeType":"45359","messageId":"45360","endLine":518,"endColumn":41,"suggestions":"47507"},{"ruleId":"45357","severity":2,"message":"45358","line":526,"column":27,"nodeType":"45359","messageId":"45360","endLine":526,"endColumn":30,"suggestions":"47508"},{"ruleId":"45357","severity":2,"message":"45358","line":552,"column":38,"nodeType":"45359","messageId":"45360","endLine":552,"endColumn":41,"suggestions":"47509"},{"ruleId":"45357","severity":2,"message":"45358","line":563,"column":27,"nodeType":"45359","messageId":"45360","endLine":563,"endColumn":30,"suggestions":"47510"},{"ruleId":"45357","severity":2,"message":"45358","line":590,"column":38,"nodeType":"45359","messageId":"45360","endLine":590,"endColumn":41,"suggestions":"47511"},{"ruleId":"45357","severity":2,"message":"45358","line":601,"column":27,"nodeType":"45359","messageId":"45360","endLine":601,"endColumn":30,"suggestions":"47512"},{"ruleId":"45357","severity":2,"message":"45358","line":85,"column":61,"nodeType":"45359","messageId":"45360","endLine":85,"endColumn":64,"suggestions":"47513"},{"ruleId":"45357","severity":2,"message":"45358","line":90,"column":57,"nodeType":"45359","messageId":"45360","endLine":90,"endColumn":60,"suggestions":"47514"},{"ruleId":"45357","severity":2,"message":"45358","line":131,"column":43,"nodeType":"45359","messageId":"45360","endLine":131,"endColumn":46,"suggestions":"47515"},{"ruleId":"45357","severity":2,"message":"45358","line":174,"column":43,"nodeType":"45359","messageId":"45360","endLine":174,"endColumn":46,"suggestions":"47516"},{"ruleId":"45357","severity":2,"message":"45358","line":214,"column":43,"nodeType":"45359","messageId":"45360","endLine":214,"endColumn":46,"suggestions":"47517"},{"ruleId":"45357","severity":2,"message":"45358","line":239,"column":43,"nodeType":"45359","messageId":"45360","endLine":239,"endColumn":46,"suggestions":"47518"},{"ruleId":"45357","severity":2,"message":"45358","line":295,"column":43,"nodeType":"45359","messageId":"45360","endLine":295,"endColumn":46,"suggestions":"47519"},{"ruleId":"45357","severity":2,"message":"45358","line":354,"column":43,"nodeType":"45359","messageId":"45360","endLine":354,"endColumn":46,"suggestions":"47520"},{"ruleId":"45357","severity":2,"message":"45358","line":377,"column":53,"nodeType":"45359","messageId":"45360","endLine":377,"endColumn":56,"suggestions":"47521"},{"ruleId":"45357","severity":2,"message":"45358","line":437,"column":43,"nodeType":"45359","messageId":"45360","endLine":437,"endColumn":46,"suggestions":"47522"},{"ruleId":"45357","severity":2,"message":"45358","line":59,"column":43,"nodeType":"45359","messageId":"45360","endLine":59,"endColumn":46,"suggestions":"47523"},{"ruleId":"45357","severity":2,"message":"45358","line":85,"column":43,"nodeType":"45359","messageId":"45360","endLine":85,"endColumn":46,"suggestions":"47524"},{"ruleId":"45357","severity":2,"message":"45358","line":111,"column":43,"nodeType":"45359","messageId":"45360","endLine":111,"endColumn":46,"suggestions":"47525"},{"ruleId":"45357","severity":2,"message":"45358","line":137,"column":43,"nodeType":"45359","messageId":"45360","endLine":137,"endColumn":46,"suggestions":"47526"},{"ruleId":"45357","severity":2,"message":"45358","line":21,"column":71,"nodeType":"45359","messageId":"45360","endLine":21,"endColumn":74,"suggestions":"47527"},{"ruleId":"45357","severity":2,"message":"45358","line":39,"column":34,"nodeType":"45359","messageId":"45360","endLine":39,"endColumn":37,"suggestions":"47528"},{"ruleId":"45357","severity":2,"message":"45358","line":39,"column":45,"nodeType":"45359","messageId":"45360","endLine":39,"endColumn":48,"suggestions":"47529"},{"ruleId":"45357","severity":2,"message":"45358","line":63,"column":46,"nodeType":"45359","messageId":"45360","endLine":63,"endColumn":49,"suggestions":"47530"},{"ruleId":"45357","severity":2,"message":"45358","line":236,"column":90,"nodeType":"45359","messageId":"45360","endLine":236,"endColumn":93,"suggestions":"47531"},{"ruleId":"45357","severity":2,"message":"45358","line":237,"column":85,"nodeType":"45359","messageId":"45360","endLine":237,"endColumn":88,"suggestions":"47532"},{"ruleId":"45357","severity":2,"message":"45358","line":238,"column":87,"nodeType":"45359","messageId":"45360","endLine":238,"endColumn":90,"suggestions":"47533"},{"ruleId":"45357","severity":2,"message":"45358","line":240,"column":72,"nodeType":"45359","messageId":"45360","endLine":240,"endColumn":75,"suggestions":"47534"},{"ruleId":"45357","severity":2,"message":"45358","line":242,"column":94,"nodeType":"45359","messageId":"45360","endLine":242,"endColumn":97,"suggestions":"47535"},{"ruleId":"45357","severity":2,"message":"45358","line":33,"column":45,"nodeType":"45359","messageId":"45360","endLine":33,"endColumn":48,"suggestions":"47536"},{"ruleId":"45357","severity":2,"message":"45358","line":55,"column":12,"nodeType":"45359","messageId":"45360","endLine":55,"endColumn":15,"suggestions":"47537"},{"ruleId":"45357","severity":2,"message":"45358","line":76,"column":12,"nodeType":"45359","messageId":"45360","endLine":76,"endColumn":15,"suggestions":"47538"},{"ruleId":"45357","severity":2,"message":"45358","line":67,"column":58,"nodeType":"45359","messageId":"45360","endLine":67,"endColumn":61,"suggestions":"47539"},{"ruleId":"45357","severity":2,"message":"45358","line":71,"column":59,"nodeType":"45359","messageId":"45360","endLine":71,"endColumn":62,"suggestions":"47540"},{"ruleId":"45357","severity":2,"message":"45358","line":75,"column":64,"nodeType":"45359","messageId":"45360","endLine":75,"endColumn":67,"suggestions":"47541"},{"ruleId":"45357","severity":2,"message":"45358","line":79,"column":63,"nodeType":"45359","messageId":"45360","endLine":79,"endColumn":66,"suggestions":"47542"},{"ruleId":"45357","severity":2,"message":"45358","line":83,"column":78,"nodeType":"45359","messageId":"45360","endLine":83,"endColumn":81,"suggestions":"47543"},{"ruleId":"45357","severity":2,"message":"45358","line":87,"column":84,"nodeType":"45359","messageId":"45360","endLine":87,"endColumn":87,"suggestions":"47544"},{"ruleId":"45357","severity":2,"message":"45358","line":93,"column":80,"nodeType":"45359","messageId":"45360","endLine":93,"endColumn":83,"suggestions":"47545"},{"ruleId":"45357","severity":2,"message":"45358","line":98,"column":79,"nodeType":"45359","messageId":"45360","endLine":98,"endColumn":82,"suggestions":"47546"},{"ruleId":"45357","severity":2,"message":"45358","line":102,"column":68,"nodeType":"45359","messageId":"45360","endLine":102,"endColumn":71,"suggestions":"47547"},{"ruleId":"45357","severity":2,"message":"45358","line":106,"column":65,"nodeType":"45359","messageId":"45360","endLine":106,"endColumn":68,"suggestions":"47548"},{"ruleId":"45357","severity":2,"message":"45358","line":125,"column":10,"nodeType":"45359","messageId":"45360","endLine":125,"endColumn":13,"suggestions":"47549"},{"ruleId":"45357","severity":2,"message":"45358","line":137,"column":10,"nodeType":"45359","messageId":"45360","endLine":137,"endColumn":13,"suggestions":"47550"},{"ruleId":"45357","severity":2,"message":"45358","line":142,"column":58,"nodeType":"45359","messageId":"45360","endLine":142,"endColumn":61,"suggestions":"47551"},{"ruleId":"45357","severity":2,"message":"45358","line":148,"column":59,"nodeType":"45359","messageId":"45360","endLine":148,"endColumn":62,"suggestions":"47552"},{"ruleId":"45357","severity":2,"message":"45358","line":162,"column":10,"nodeType":"45359","messageId":"45360","endLine":162,"endColumn":13,"suggestions":"47553"},{"ruleId":"45357","severity":2,"message":"45358","line":182,"column":10,"nodeType":"45359","messageId":"45360","endLine":182,"endColumn":13,"suggestions":"47554"},{"ruleId":"45357","severity":2,"message":"45358","line":34,"column":77,"nodeType":"45359","messageId":"45360","endLine":34,"endColumn":80,"suggestions":"47555"},{"ruleId":"45357","severity":2,"message":"45358","line":73,"column":13,"nodeType":"45359","messageId":"45360","endLine":73,"endColumn":16,"suggestions":"47556","suppressions":"47557"},{"ruleId":"45357","severity":2,"message":"45358","line":84,"column":85,"nodeType":"45359","messageId":"45360","endLine":84,"endColumn":88,"suggestions":"47558","suppressions":"47559"},{"ruleId":"45357","severity":2,"message":"45358","line":101,"column":13,"nodeType":"45359","messageId":"45360","endLine":101,"endColumn":16,"suggestions":"47560","suppressions":"47561"},{"ruleId":"45357","severity":2,"message":"45358","line":137,"column":44,"nodeType":"45359","messageId":"45360","endLine":137,"endColumn":47,"suggestions":"47562"},{"ruleId":"45357","severity":2,"message":"45358","line":137,"column":58,"nodeType":"45359","messageId":"45360","endLine":137,"endColumn":61,"suggestions":"47563"},{"ruleId":"45357","severity":2,"message":"45358","line":166,"column":42,"nodeType":"45359","messageId":"45360","endLine":166,"endColumn":45,"suggestions":"47564"},{"ruleId":"45357","severity":2,"message":"45358","line":166,"column":65,"nodeType":"45359","messageId":"45360","endLine":166,"endColumn":68,"suggestions":"47565"},{"ruleId":"45357","severity":2,"message":"45358","line":168,"column":57,"nodeType":"45359","messageId":"45360","endLine":168,"endColumn":60,"suggestions":"47566"},{"ruleId":"45357","severity":2,"message":"45358","line":195,"column":42,"nodeType":"45359","messageId":"45360","endLine":195,"endColumn":45,"suggestions":"47567"},{"ruleId":"45357","severity":2,"message":"45358","line":196,"column":9,"nodeType":"45359","messageId":"45360","endLine":196,"endColumn":12,"suggestions":"47568"},{"ruleId":"45357","severity":2,"message":"45358","line":216,"column":24,"nodeType":"45359","messageId":"45360","endLine":216,"endColumn":27,"suggestions":"47569"},{"ruleId":"45357","severity":2,"message":"45358","line":330,"column":44,"nodeType":"45359","messageId":"45360","endLine":330,"endColumn":47,"suggestions":"47570"},{"ruleId":"45357","severity":2,"message":"45358","line":331,"column":9,"nodeType":"45359","messageId":"45360","endLine":331,"endColumn":12,"suggestions":"47571"},{"ruleId":"45357","severity":2,"message":"45358","line":31,"column":29,"nodeType":"45359","messageId":"45360","endLine":31,"endColumn":32,"suggestions":"47572"},{"ruleId":"45357","severity":2,"message":"45358","line":53,"column":29,"nodeType":"45359","messageId":"45360","endLine":53,"endColumn":32,"suggestions":"47573"},{"ruleId":"45357","severity":2,"message":"45358","line":82,"column":26,"nodeType":"45359","messageId":"45360","endLine":82,"endColumn":29,"suggestions":"47574"},{"ruleId":"45357","severity":2,"message":"45358","line":83,"column":16,"nodeType":"45359","messageId":"45360","endLine":83,"endColumn":19,"suggestions":"47575"},{"ruleId":"45357","severity":2,"message":"45358","line":83,"column":46,"nodeType":"45359","messageId":"45360","endLine":83,"endColumn":49,"suggestions":"47576"},{"ruleId":"45357","severity":2,"message":"45358","line":55,"column":17,"nodeType":"45359","messageId":"45360","endLine":55,"endColumn":20,"suggestions":"47577"},{"ruleId":"45357","severity":2,"message":"45358","line":91,"column":17,"nodeType":"45359","messageId":"45360","endLine":91,"endColumn":20,"suggestions":"47578"},{"ruleId":"45357","severity":2,"message":"45358","line":124,"column":17,"nodeType":"45359","messageId":"45360","endLine":124,"endColumn":20,"suggestions":"47579"},{"ruleId":"45357","severity":2,"message":"45358","line":166,"column":17,"nodeType":"45359","messageId":"45360","endLine":166,"endColumn":20,"suggestions":"47580"},{"ruleId":"45357","severity":2,"message":"45358","line":22,"column":32,"nodeType":"45359","messageId":"45360","endLine":22,"endColumn":35,"suggestions":"47581","suppressions":"47582"},{"ruleId":"45357","severity":2,"message":"45358","line":62,"column":27,"nodeType":"45359","messageId":"45360","endLine":62,"endColumn":30,"suggestions":"47583","suppressions":"47584"},{"ruleId":"45357","severity":2,"message":"45358","line":46,"column":37,"nodeType":"45359","messageId":"45360","endLine":46,"endColumn":40,"suggestions":"47585"},{"ruleId":"45357","severity":2,"message":"45358","line":152,"column":43,"nodeType":"45359","messageId":"45360","endLine":152,"endColumn":46,"suggestions":"47586"},{"ruleId":"45357","severity":2,"message":"45358","line":171,"column":43,"nodeType":"45359","messageId":"45360","endLine":171,"endColumn":46,"suggestions":"47587"},{"ruleId":"45357","severity":2,"message":"45358","line":187,"column":52,"nodeType":"45359","messageId":"45360","endLine":187,"endColumn":55,"suggestions":"47588"},{"ruleId":"45357","severity":2,"message":"45358","line":200,"column":52,"nodeType":"45359","messageId":"45360","endLine":200,"endColumn":55,"suggestions":"47589"},{"ruleId":"45357","severity":2,"message":"45358","line":219,"column":52,"nodeType":"45359","messageId":"45360","endLine":219,"endColumn":55,"suggestions":"47590"},{"ruleId":"45357","severity":2,"message":"45358","line":232,"column":52,"nodeType":"45359","messageId":"45360","endLine":232,"endColumn":55,"suggestions":"47591"},{"ruleId":"45357","severity":2,"message":"45358","line":382,"column":12,"nodeType":"45359","messageId":"45360","endLine":382,"endColumn":15,"suggestions":"47592","suppressions":"47593"},{"ruleId":"45357","severity":2,"message":"45358","line":388,"column":14,"nodeType":"45359","messageId":"45360","endLine":388,"endColumn":17,"suggestions":"47594","suppressions":"47595"},{"ruleId":"45357","severity":2,"message":"45358","line":24,"column":21,"nodeType":"45359","messageId":"45360","endLine":24,"endColumn":24,"suggestions":"47596"},{"ruleId":"45357","severity":2,"message":"45358","line":24,"column":21,"nodeType":"45359","messageId":"45360","endLine":24,"endColumn":24,"suggestions":"47597"},{"ruleId":"45357","severity":2,"message":"45358","line":22,"column":21,"nodeType":"45359","messageId":"45360","endLine":22,"endColumn":24,"suggestions":"47598"},{"ruleId":"45357","severity":2,"message":"45358","line":22,"column":21,"nodeType":"45359","messageId":"45360","endLine":22,"endColumn":24,"suggestions":"47599"},{"ruleId":"45357","severity":2,"message":"45358","line":61,"column":58,"nodeType":"45359","messageId":"45360","endLine":61,"endColumn":61,"suggestions":"47600"},{"ruleId":"45357","severity":2,"message":"45358","line":123,"column":56,"nodeType":"45359","messageId":"45360","endLine":123,"endColumn":59,"suggestions":"47601"},{"ruleId":"45357","severity":2,"message":"45358","line":135,"column":58,"nodeType":"45359","messageId":"45360","endLine":135,"endColumn":61,"suggestions":"47602"},{"ruleId":"45357","severity":2,"message":"45358","line":162,"column":57,"nodeType":"45359","messageId":"45360","endLine":162,"endColumn":60,"suggestions":"47603"},{"ruleId":"45357","severity":2,"message":"45358","line":163,"column":55,"nodeType":"45359","messageId":"45360","endLine":163,"endColumn":58,"suggestions":"47604"},{"ruleId":"45357","severity":2,"message":"45358","line":164,"column":55,"nodeType":"45359","messageId":"45360","endLine":164,"endColumn":58,"suggestions":"47605"},{"ruleId":"45357","severity":2,"message":"45358","line":174,"column":53,"nodeType":"45359","messageId":"45360","endLine":174,"endColumn":56,"suggestions":"47606"},{"ruleId":"45357","severity":2,"message":"45358","line":175,"column":54,"nodeType":"45359","messageId":"45360","endLine":175,"endColumn":57,"suggestions":"47607"},{"ruleId":"45357","severity":2,"message":"45358","line":14,"column":24,"nodeType":"45359","messageId":"45360","endLine":14,"endColumn":27,"suggestions":"47608"},{"ruleId":"45357","severity":2,"message":"45358","line":15,"column":22,"nodeType":"45359","messageId":"45360","endLine":15,"endColumn":25,"suggestions":"47609"},{"ruleId":"45357","severity":2,"message":"45358","line":18,"column":25,"nodeType":"45359","messageId":"45360","endLine":18,"endColumn":28,"suggestions":"47610"},{"ruleId":"45357","severity":2,"message":"45358","line":86,"column":25,"nodeType":"45359","messageId":"45360","endLine":86,"endColumn":28,"suggestions":"47611"},{"ruleId":"45357","severity":2,"message":"45358","line":168,"column":70,"nodeType":"45359","messageId":"45360","endLine":168,"endColumn":73,"suggestions":"47612"},{"ruleId":"45357","severity":2,"message":"45358","line":98,"column":23,"nodeType":"45359","messageId":"45360","endLine":98,"endColumn":26,"suggestions":"47613"},{"ruleId":"45357","severity":2,"message":"45358","line":99,"column":14,"nodeType":"45359","messageId":"45360","endLine":99,"endColumn":17,"suggestions":"47614"},{"ruleId":"45357","severity":2,"message":"45358","line":99,"column":32,"nodeType":"45359","messageId":"45360","endLine":99,"endColumn":35,"suggestions":"47615"},{"ruleId":"45357","severity":2,"message":"45358","line":103,"column":14,"nodeType":"45359","messageId":"45360","endLine":103,"endColumn":17,"suggestions":"47616"},{"ruleId":"45357","severity":2,"message":"45358","line":103,"column":33,"nodeType":"45359","messageId":"45360","endLine":103,"endColumn":36,"suggestions":"47617"},{"ruleId":"45357","severity":2,"message":"45358","line":109,"column":14,"nodeType":"45359","messageId":"45360","endLine":109,"endColumn":17,"suggestions":"47618"},{"ruleId":"45357","severity":2,"message":"45358","line":109,"column":43,"nodeType":"45359","messageId":"45360","endLine":109,"endColumn":46,"suggestions":"47619"},{"ruleId":"45357","severity":2,"message":"45358","line":35,"column":24,"nodeType":"45359","messageId":"45360","endLine":35,"endColumn":27,"suggestions":"47620"},{"ruleId":"45357","severity":2,"message":"45358","line":36,"column":22,"nodeType":"45359","messageId":"45360","endLine":36,"endColumn":25,"suggestions":"47621"},{"ruleId":"45357","severity":2,"message":"45358","line":39,"column":25,"nodeType":"45359","messageId":"45360","endLine":39,"endColumn":28,"suggestions":"47622"},{"ruleId":"45357","severity":2,"message":"45358","line":79,"column":11,"nodeType":"45359","messageId":"45360","endLine":79,"endColumn":14,"suggestions":"47623"},{"ruleId":"45357","severity":2,"message":"45358","line":35,"column":21,"nodeType":"45359","messageId":"45360","endLine":35,"endColumn":24,"suggestions":"47624"},{"ruleId":"45357","severity":2,"message":"45358","line":151,"column":42,"nodeType":"45359","messageId":"45360","endLine":151,"endColumn":45,"suggestions":"47625"},{"ruleId":"45357","severity":2,"message":"45358","line":152,"column":24,"nodeType":"45359","messageId":"45360","endLine":152,"endColumn":27,"suggestions":"47626"},{"ruleId":"45357","severity":2,"message":"45358","line":153,"column":28,"nodeType":"45359","messageId":"45360","endLine":153,"endColumn":31,"suggestions":"47627"},{"ruleId":"45357","severity":2,"message":"45358","line":60,"column":35,"nodeType":"45359","messageId":"45360","endLine":60,"endColumn":38,"suggestions":"47628"},{"ruleId":"45357","severity":2,"message":"45358","line":215,"column":31,"nodeType":"45359","messageId":"45360","endLine":215,"endColumn":34,"suggestions":"47629"},{"ruleId":"45357","severity":2,"message":"45358","line":216,"column":31,"nodeType":"45359","messageId":"45360","endLine":216,"endColumn":34,"suggestions":"47630"},{"ruleId":"45357","severity":2,"message":"45358","line":227,"column":31,"nodeType":"45359","messageId":"45360","endLine":227,"endColumn":34,"suggestions":"47631"},{"ruleId":"45357","severity":2,"message":"45358","line":345,"column":29,"nodeType":"45359","messageId":"45360","endLine":345,"endColumn":32,"suggestions":"47632"},{"ruleId":"45357","severity":2,"message":"45358","line":48,"column":21,"nodeType":"45359","messageId":"45360","endLine":48,"endColumn":24,"suggestions":"47633"},{"ruleId":"45357","severity":2,"message":"45358","line":75,"column":86,"nodeType":"45359","messageId":"45360","endLine":75,"endColumn":89,"suggestions":"47634"},{"ruleId":"45357","severity":2,"message":"45358","line":76,"column":85,"nodeType":"45359","messageId":"45360","endLine":76,"endColumn":88,"suggestions":"47635"},{"ruleId":"45357","severity":2,"message":"45358","line":78,"column":82,"nodeType":"45359","messageId":"45360","endLine":78,"endColumn":85,"suggestions":"47636"},{"ruleId":"45357","severity":2,"message":"45358","line":108,"column":86,"nodeType":"45359","messageId":"45360","endLine":108,"endColumn":89,"suggestions":"47637"},{"ruleId":"45357","severity":2,"message":"45358","line":109,"column":85,"nodeType":"45359","messageId":"45360","endLine":109,"endColumn":88,"suggestions":"47638"},{"ruleId":"45357","severity":2,"message":"45358","line":111,"column":79,"nodeType":"45359","messageId":"45360","endLine":111,"endColumn":82,"suggestions":"47639"},{"ruleId":"45357","severity":2,"message":"45358","line":115,"column":82,"nodeType":"45359","messageId":"45360","endLine":115,"endColumn":85,"suggestions":"47640"},{"ruleId":"45357","severity":2,"message":"45358","line":119,"column":80,"nodeType":"45359","messageId":"45360","endLine":119,"endColumn":83,"suggestions":"47641"},{"ruleId":"45357","severity":2,"message":"45358","line":126,"column":35,"nodeType":"45359","messageId":"45360","endLine":126,"endColumn":38,"suggestions":"47642"},{"ruleId":"45357","severity":2,"message":"45358","line":210,"column":81,"nodeType":"45359","messageId":"45360","endLine":210,"endColumn":84,"suggestions":"47643"},{"ruleId":"45357","severity":2,"message":"45358","line":213,"column":80,"nodeType":"45359","messageId":"45360","endLine":213,"endColumn":83,"suggestions":"47644"},{"ruleId":"45357","severity":2,"message":"45358","line":291,"column":86,"nodeType":"45359","messageId":"45360","endLine":291,"endColumn":89,"suggestions":"47645"},{"ruleId":"45357","severity":2,"message":"45358","line":292,"column":85,"nodeType":"45359","messageId":"45360","endLine":292,"endColumn":88,"suggestions":"47646"},{"ruleId":"45357","severity":2,"message":"45358","line":294,"column":79,"nodeType":"45359","messageId":"45360","endLine":294,"endColumn":82,"suggestions":"47647"},{"ruleId":"45357","severity":2,"message":"45358","line":298,"column":82,"nodeType":"45359","messageId":"45360","endLine":298,"endColumn":85,"suggestions":"47648"},{"ruleId":"45357","severity":2,"message":"45358","line":302,"column":80,"nodeType":"45359","messageId":"45360","endLine":302,"endColumn":83,"suggestions":"47649"},{"ruleId":"45357","severity":2,"message":"45358","line":309,"column":35,"nodeType":"45359","messageId":"45360","endLine":309,"endColumn":38,"suggestions":"47650"},{"ruleId":"45357","severity":2,"message":"45358","line":322,"column":86,"nodeType":"45359","messageId":"45360","endLine":322,"endColumn":89,"suggestions":"47651"},{"ruleId":"45357","severity":2,"message":"45358","line":323,"column":85,"nodeType":"45359","messageId":"45360","endLine":323,"endColumn":88,"suggestions":"47652"},{"ruleId":"45357","severity":2,"message":"45358","line":325,"column":79,"nodeType":"45359","messageId":"45360","endLine":325,"endColumn":82,"suggestions":"47653"},{"ruleId":"45357","severity":2,"message":"45358","line":329,"column":82,"nodeType":"45359","messageId":"45360","endLine":329,"endColumn":85,"suggestions":"47654"},{"ruleId":"45357","severity":2,"message":"45358","line":333,"column":80,"nodeType":"45359","messageId":"45360","endLine":333,"endColumn":83,"suggestions":"47655"},{"ruleId":"45357","severity":2,"message":"45358","line":352,"column":84,"nodeType":"45359","messageId":"45360","endLine":352,"endColumn":87,"suggestions":"47656"},{"ruleId":"45357","severity":2,"message":"45358","line":375,"column":29,"nodeType":"45359","messageId":"45360","endLine":375,"endColumn":32,"suggestions":"47657"},{"ruleId":"45357","severity":2,"message":"45358","line":383,"column":26,"nodeType":"45359","messageId":"45360","endLine":383,"endColumn":29,"suggestions":"47658"},{"ruleId":"45357","severity":2,"message":"45358","line":383,"column":38,"nodeType":"45359","messageId":"45360","endLine":383,"endColumn":41,"suggestions":"47659"},{"ruleId":"45357","severity":2,"message":"45358","line":415,"column":69,"nodeType":"45359","messageId":"45360","endLine":415,"endColumn":72,"suggestions":"47660"},{"ruleId":"45357","severity":2,"message":"45358","line":418,"column":94,"nodeType":"45359","messageId":"45360","endLine":418,"endColumn":97,"suggestions":"47661"},{"ruleId":"45357","severity":2,"message":"45358","line":428,"column":28,"nodeType":"45359","messageId":"45360","endLine":428,"endColumn":31,"suggestions":"47662"},{"ruleId":"45357","severity":2,"message":"45358","line":70,"column":43,"nodeType":"45359","messageId":"45360","endLine":70,"endColumn":46,"suggestions":"47663"},{"ruleId":"45357","severity":2,"message":"45358","line":82,"column":43,"nodeType":"45359","messageId":"45360","endLine":82,"endColumn":46,"suggestions":"47664"},{"ruleId":"45357","severity":2,"message":"45358","line":87,"column":86,"nodeType":"45359","messageId":"45360","endLine":87,"endColumn":89,"suggestions":"47665"},{"ruleId":"45357","severity":2,"message":"45358","line":88,"column":85,"nodeType":"45359","messageId":"45360","endLine":88,"endColumn":88,"suggestions":"47666"},{"ruleId":"45357","severity":2,"message":"45358","line":97,"column":43,"nodeType":"45359","messageId":"45360","endLine":97,"endColumn":46,"suggestions":"47667"},{"ruleId":"45357","severity":2,"message":"45358","line":102,"column":86,"nodeType":"45359","messageId":"45360","endLine":102,"endColumn":89,"suggestions":"47668"},{"ruleId":"45357","severity":2,"message":"45358","line":103,"column":85,"nodeType":"45359","messageId":"45360","endLine":103,"endColumn":88,"suggestions":"47669"},{"ruleId":"45357","severity":2,"message":"45358","line":24,"column":21,"nodeType":"45359","messageId":"45360","endLine":24,"endColumn":24,"suggestions":"47670"},{"ruleId":"45357","severity":2,"message":"45358","line":24,"column":21,"nodeType":"45359","messageId":"45360","endLine":24,"endColumn":24,"suggestions":"47671"},{"ruleId":"45357","severity":2,"message":"45358","line":34,"column":48,"nodeType":"45359","messageId":"45360","endLine":34,"endColumn":51,"suggestions":"47672"},{"ruleId":"45357","severity":2,"message":"45358","line":40,"column":9,"nodeType":"45359","messageId":"45360","endLine":40,"endColumn":12,"suggestions":"47673"},{"ruleId":"45357","severity":2,"message":"45358","line":240,"column":26,"nodeType":"45359","messageId":"45360","endLine":240,"endColumn":29,"suggestions":"47674"},{"ruleId":"45357","severity":2,"message":"45358","line":248,"column":26,"nodeType":"45359","messageId":"45360","endLine":248,"endColumn":29,"suggestions":"47675"},{"ruleId":"45357","severity":2,"message":"45358","line":416,"column":28,"nodeType":"45359","messageId":"45360","endLine":416,"endColumn":31,"suggestions":"47676"},{"ruleId":"45357","severity":2,"message":"45358","line":796,"column":33,"nodeType":"45359","messageId":"45360","endLine":796,"endColumn":36,"suggestions":"47677"},{"ruleId":"45357","severity":2,"message":"45358","line":864,"column":33,"nodeType":"45359","messageId":"45360","endLine":864,"endColumn":36,"suggestions":"47678"},{"ruleId":"45357","severity":2,"message":"45358","line":930,"column":33,"nodeType":"45359","messageId":"45360","endLine":930,"endColumn":36,"suggestions":"47679"},{"ruleId":"45357","severity":2,"message":"45358","line":1051,"column":33,"nodeType":"45359","messageId":"45360","endLine":1051,"endColumn":36,"suggestions":"47680"},{"ruleId":"45357","severity":2,"message":"45358","line":1125,"column":33,"nodeType":"45359","messageId":"45360","endLine":1125,"endColumn":36,"suggestions":"47681"},{"ruleId":"45357","severity":2,"message":"45358","line":1195,"column":33,"nodeType":"45359","messageId":"45360","endLine":1195,"endColumn":36,"suggestions":"47682"},{"ruleId":"45357","severity":2,"message":"45358","line":1268,"column":33,"nodeType":"45359","messageId":"45360","endLine":1268,"endColumn":36,"suggestions":"47683"},{"ruleId":"45357","severity":2,"message":"45358","line":22,"column":21,"nodeType":"45359","messageId":"45360","endLine":22,"endColumn":24,"suggestions":"47684"},{"ruleId":"45357","severity":2,"message":"45358","line":22,"column":21,"nodeType":"45359","messageId":"45360","endLine":22,"endColumn":24,"suggestions":"47685"},{"ruleId":"45357","severity":2,"message":"45358","line":100,"column":41,"nodeType":"45359","messageId":"45360","endLine":100,"endColumn":44,"suggestions":"47686"},{"ruleId":"45357","severity":2,"message":"45358","line":15,"column":24,"nodeType":"45359","messageId":"45360","endLine":15,"endColumn":27,"suggestions":"47687"},{"ruleId":"45357","severity":2,"message":"45358","line":16,"column":22,"nodeType":"45359","messageId":"45360","endLine":16,"endColumn":25,"suggestions":"47688"},{"ruleId":"45357","severity":2,"message":"45358","line":19,"column":25,"nodeType":"45359","messageId":"45360","endLine":19,"endColumn":28,"suggestions":"47689"},{"ruleId":"45357","severity":2,"message":"45358","line":45,"column":66,"nodeType":"45359","messageId":"45360","endLine":45,"endColumn":69,"suggestions":"47690"},{"ruleId":"45357","severity":2,"message":"45358","line":46,"column":61,"nodeType":"45359","messageId":"45360","endLine":46,"endColumn":64,"suggestions":"47691"},{"ruleId":"45357","severity":2,"message":"45358","line":24,"column":21,"nodeType":"45359","messageId":"45360","endLine":24,"endColumn":24,"suggestions":"47692"},{"ruleId":"45357","severity":2,"message":"45358","line":32,"column":19,"nodeType":"45359","messageId":"45360","endLine":32,"endColumn":22,"suggestions":"47693"},{"ruleId":"45357","severity":2,"message":"45358","line":22,"column":21,"nodeType":"45359","messageId":"45360","endLine":22,"endColumn":24,"suggestions":"47694"},{"ruleId":"45357","severity":2,"message":"45358","line":167,"column":67,"nodeType":"45359","messageId":"45360","endLine":167,"endColumn":70,"suggestions":"47695"},{"ruleId":"45357","severity":2,"message":"45358","line":224,"column":72,"nodeType":"45359","messageId":"45360","endLine":224,"endColumn":75,"suggestions":"47696"},{"ruleId":"45357","severity":2,"message":"45358","line":232,"column":28,"nodeType":"45359","messageId":"45360","endLine":232,"endColumn":31,"suggestions":"47697"},{"ruleId":"45357","severity":2,"message":"45358","line":267,"column":70,"nodeType":"45359","messageId":"45360","endLine":267,"endColumn":73,"suggestions":"47698"},{"ruleId":"45357","severity":2,"message":"45358","line":306,"column":70,"nodeType":"45359","messageId":"45360","endLine":306,"endColumn":73,"suggestions":"47699"},{"ruleId":"45357","severity":2,"message":"45358","line":306,"column":85,"nodeType":"45359","messageId":"45360","endLine":306,"endColumn":88,"suggestions":"47700"},{"ruleId":"45357","severity":2,"message":"45358","line":309,"column":66,"nodeType":"45359","messageId":"45360","endLine":309,"endColumn":69,"suggestions":"47701"},{"ruleId":"45357","severity":2,"message":"45358","line":310,"column":66,"nodeType":"45359","messageId":"45360","endLine":310,"endColumn":69,"suggestions":"47702"},{"ruleId":"45357","severity":2,"message":"45358","line":311,"column":71,"nodeType":"45359","messageId":"45360","endLine":311,"endColumn":74,"suggestions":"47703"},{"ruleId":"45357","severity":2,"message":"45358","line":334,"column":71,"nodeType":"45359","messageId":"45360","endLine":334,"endColumn":74,"suggestions":"47704"},{"ruleId":"45357","severity":2,"message":"45358","line":339,"column":71,"nodeType":"45359","messageId":"45360","endLine":339,"endColumn":74,"suggestions":"47705"},{"ruleId":"45357","severity":2,"message":"45358","line":347,"column":73,"nodeType":"45359","messageId":"45360","endLine":347,"endColumn":76,"suggestions":"47706"},{"ruleId":"45357","severity":2,"message":"45358","line":349,"column":69,"nodeType":"45359","messageId":"45360","endLine":349,"endColumn":72,"suggestions":"47707"},{"ruleId":"45357","severity":2,"message":"45358","line":361,"column":58,"nodeType":"45359","messageId":"45360","endLine":361,"endColumn":61,"suggestions":"47708"},{"ruleId":"45357","severity":2,"message":"45358","line":363,"column":67,"nodeType":"45359","messageId":"45360","endLine":363,"endColumn":70,"suggestions":"47709"},{"ruleId":"45357","severity":2,"message":"45358","line":371,"column":58,"nodeType":"45359","messageId":"45360","endLine":371,"endColumn":61,"suggestions":"47710"},{"ruleId":"45357","severity":2,"message":"45358","line":373,"column":67,"nodeType":"45359","messageId":"45360","endLine":373,"endColumn":70,"suggestions":"47711"},{"ruleId":"45357","severity":2,"message":"45358","line":23,"column":21,"nodeType":"45359","messageId":"45360","endLine":23,"endColumn":24,"suggestions":"47712"},{"ruleId":"45357","severity":2,"message":"45358","line":137,"column":20,"nodeType":"45359","messageId":"45360","endLine":137,"endColumn":23,"suggestions":"47713"},{"ruleId":"45357","severity":2,"message":"45358","line":140,"column":60,"nodeType":"45359","messageId":"45360","endLine":140,"endColumn":63,"suggestions":"47714"},{"ruleId":"45357","severity":2,"message":"45358","line":146,"column":20,"nodeType":"45359","messageId":"45360","endLine":146,"endColumn":23,"suggestions":"47715"},{"ruleId":"45357","severity":2,"message":"45358","line":254,"column":79,"nodeType":"45359","messageId":"45360","endLine":254,"endColumn":82,"suggestions":"47716"},{"ruleId":"45357","severity":2,"message":"45358","line":264,"column":76,"nodeType":"45359","messageId":"45360","endLine":264,"endColumn":79,"suggestions":"47717"},{"ruleId":"45357","severity":2,"message":"45358","line":30,"column":19,"nodeType":"45359","messageId":"45360","endLine":30,"endColumn":22,"suggestions":"47718"},{"ruleId":"45357","severity":2,"message":"45358","line":33,"column":19,"nodeType":"45359","messageId":"45360","endLine":33,"endColumn":22,"suggestions":"47719"},{"ruleId":"45357","severity":2,"message":"45358","line":29,"column":21,"nodeType":"45359","messageId":"45360","endLine":29,"endColumn":24,"suggestions":"47720"},{"ruleId":"45357","severity":2,"message":"45358","line":65,"column":46,"nodeType":"45359","messageId":"45360","endLine":65,"endColumn":49,"suggestions":"47721"},{"ruleId":"45357","severity":2,"message":"45358","line":94,"column":64,"nodeType":"45359","messageId":"45360","endLine":94,"endColumn":67,"suggestions":"47722"},{"ruleId":"45357","severity":2,"message":"45358","line":140,"column":67,"nodeType":"45359","messageId":"45360","endLine":140,"endColumn":70,"suggestions":"47723"},{"ruleId":"45357","severity":2,"message":"45358","line":155,"column":67,"nodeType":"45359","messageId":"45360","endLine":155,"endColumn":70,"suggestions":"47724"},{"ruleId":"45357","severity":2,"message":"45358","line":164,"column":69,"nodeType":"45359","messageId":"45360","endLine":164,"endColumn":72,"suggestions":"47725"},{"ruleId":"45357","severity":2,"message":"45358","line":177,"column":70,"nodeType":"45359","messageId":"45360","endLine":177,"endColumn":73,"suggestions":"47726"},{"ruleId":"45357","severity":2,"message":"45358","line":190,"column":9,"nodeType":"45359","messageId":"45360","endLine":190,"endColumn":12,"suggestions":"47727"},{"ruleId":"45357","severity":2,"message":"45358","line":206,"column":9,"nodeType":"45359","messageId":"45360","endLine":206,"endColumn":12,"suggestions":"47728"},{"ruleId":"45357","severity":2,"message":"45358","line":22,"column":21,"nodeType":"45359","messageId":"45360","endLine":22,"endColumn":24,"suggestions":"47729"},{"ruleId":"45357","severity":2,"message":"45358","line":27,"column":21,"nodeType":"45359","messageId":"45360","endLine":27,"endColumn":24,"suggestions":"47730"},{"ruleId":"45357","severity":2,"message":"45358","line":494,"column":20,"nodeType":"45359","messageId":"45360","endLine":494,"endColumn":23,"suggestions":"47731"},{"ruleId":"45357","severity":2,"message":"45358","line":522,"column":86,"nodeType":"45359","messageId":"45360","endLine":522,"endColumn":89,"suggestions":"47732"},{"ruleId":"45357","severity":2,"message":"45358","line":534,"column":84,"nodeType":"45359","messageId":"45360","endLine":534,"endColumn":87,"suggestions":"47733"},{"ruleId":"45357","severity":2,"message":"45358","line":539,"column":59,"nodeType":"45359","messageId":"45360","endLine":539,"endColumn":62,"suggestions":"47734"},{"ruleId":"45357","severity":2,"message":"45358","line":545,"column":81,"nodeType":"45359","messageId":"45360","endLine":545,"endColumn":84,"suggestions":"47735"},{"ruleId":"45357","severity":2,"message":"45358","line":550,"column":62,"nodeType":"45359","messageId":"45360","endLine":550,"endColumn":65,"suggestions":"47736"},{"ruleId":"45357","severity":2,"message":"45358","line":553,"column":84,"nodeType":"45359","messageId":"45360","endLine":553,"endColumn":87,"suggestions":"47737"},{"ruleId":"45357","severity":2,"message":"45358","line":568,"column":20,"nodeType":"45359","messageId":"45360","endLine":568,"endColumn":23,"suggestions":"47738"},{"ruleId":"45357","severity":2,"message":"45358","line":582,"column":48,"nodeType":"45359","messageId":"45360","endLine":582,"endColumn":51,"suggestions":"47739"},{"ruleId":"45357","severity":2,"message":"45358","line":582,"column":63,"nodeType":"45359","messageId":"45360","endLine":582,"endColumn":66,"suggestions":"47740"},{"ruleId":"45357","severity":2,"message":"45358","line":589,"column":78,"nodeType":"45359","messageId":"45360","endLine":589,"endColumn":81,"suggestions":"47741"},{"ruleId":"45357","severity":2,"message":"45358","line":606,"column":25,"nodeType":"45359","messageId":"45360","endLine":606,"endColumn":28,"suggestions":"47742"},{"ruleId":"45357","severity":2,"message":"45358","line":613,"column":56,"nodeType":"45359","messageId":"45360","endLine":613,"endColumn":59,"suggestions":"47743"},{"ruleId":"45357","severity":2,"message":"45358","line":619,"column":78,"nodeType":"45359","messageId":"45360","endLine":619,"endColumn":81,"suggestions":"47744"},{"ruleId":"45357","severity":2,"message":"45358","line":652,"column":28,"nodeType":"45359","messageId":"45360","endLine":652,"endColumn":31,"suggestions":"47745"},{"ruleId":"45357","severity":2,"message":"45358","line":656,"column":33,"nodeType":"45359","messageId":"45360","endLine":656,"endColumn":36,"suggestions":"47746"},{"ruleId":"45357","severity":2,"message":"45358","line":658,"column":62,"nodeType":"45359","messageId":"45360","endLine":658,"endColumn":65,"suggestions":"47747"},{"ruleId":"45357","severity":2,"message":"45358","line":669,"column":84,"nodeType":"45359","messageId":"45360","endLine":669,"endColumn":87,"suggestions":"47748"},{"ruleId":"45357","severity":2,"message":"45358","line":671,"column":28,"nodeType":"45359","messageId":"45360","endLine":671,"endColumn":31,"suggestions":"47749"},{"ruleId":"45357","severity":2,"message":"45358","line":15,"column":24,"nodeType":"45359","messageId":"45360","endLine":15,"endColumn":27,"suggestions":"47750"},{"ruleId":"45357","severity":2,"message":"45358","line":16,"column":22,"nodeType":"45359","messageId":"45360","endLine":16,"endColumn":25,"suggestions":"47751"},{"ruleId":"45357","severity":2,"message":"45358","line":19,"column":25,"nodeType":"45359","messageId":"45360","endLine":19,"endColumn":28,"suggestions":"47752"},{"ruleId":"45357","severity":2,"message":"45358","line":51,"column":27,"nodeType":"45359","messageId":"45360","endLine":51,"endColumn":30,"suggestions":"47753"},{"ruleId":"45357","severity":2,"message":"45358","line":58,"column":27,"nodeType":"45359","messageId":"45360","endLine":58,"endColumn":30,"suggestions":"47754"},{"ruleId":"45357","severity":2,"message":"45358","line":59,"column":27,"nodeType":"45359","messageId":"45360","endLine":59,"endColumn":30,"suggestions":"47755"},{"ruleId":"45357","severity":2,"message":"45358","line":60,"column":27,"nodeType":"45359","messageId":"45360","endLine":60,"endColumn":30,"suggestions":"47756"},{"ruleId":"45357","severity":2,"message":"45358","line":44,"column":17,"nodeType":"45359","messageId":"45360","endLine":44,"endColumn":20,"suggestions":"47757","suppressions":"47758"},{"ruleId":"45357","severity":2,"message":"45358","line":83,"column":26,"nodeType":"45359","messageId":"45360","endLine":83,"endColumn":29,"suggestions":"47759"},{"ruleId":"45357","severity":2,"message":"45358","line":84,"column":26,"nodeType":"45359","messageId":"45360","endLine":84,"endColumn":29,"suggestions":"47760"},{"ruleId":"45357","severity":2,"message":"45358","line":112,"column":26,"nodeType":"45359","messageId":"45360","endLine":112,"endColumn":29,"suggestions":"47761"},{"ruleId":"45357","severity":2,"message":"45358","line":113,"column":26,"nodeType":"45359","messageId":"45360","endLine":113,"endColumn":29,"suggestions":"47762"},{"ruleId":"45357","severity":2,"message":"45358","line":147,"column":26,"nodeType":"45359","messageId":"45360","endLine":147,"endColumn":29,"suggestions":"47763"},{"ruleId":"45357","severity":2,"message":"45358","line":148,"column":32,"nodeType":"45359","messageId":"45360","endLine":148,"endColumn":35,"suggestions":"47764"},{"ruleId":"45357","severity":2,"message":"45358","line":148,"column":56,"nodeType":"45359","messageId":"45360","endLine":148,"endColumn":59,"suggestions":"47765"},{"ruleId":"45357","severity":2,"message":"45358","line":179,"column":26,"nodeType":"45359","messageId":"45360","endLine":179,"endColumn":29,"suggestions":"47766"},{"ruleId":"45357","severity":2,"message":"45358","line":27,"column":8,"nodeType":"45359","messageId":"45360","endLine":27,"endColumn":11,"suggestions":"47767"},{"ruleId":"45357","severity":2,"message":"45358","line":64,"column":18,"nodeType":"45359","messageId":"45360","endLine":64,"endColumn":21,"suggestions":"47768"},{"ruleId":"45357","severity":2,"message":"45358","line":93,"column":18,"nodeType":"45359","messageId":"45360","endLine":93,"endColumn":21,"suggestions":"47769"},{"ruleId":"45357","severity":2,"message":"45358","line":122,"column":18,"nodeType":"45359","messageId":"45360","endLine":122,"endColumn":21,"suggestions":"47770"},{"ruleId":"45357","severity":2,"message":"45358","line":129,"column":43,"nodeType":"45359","messageId":"45360","endLine":129,"endColumn":46,"suggestions":"47771"},{"ruleId":"45357","severity":2,"message":"45358","line":144,"column":43,"nodeType":"45359","messageId":"45360","endLine":144,"endColumn":46,"suggestions":"47772"},{"ruleId":"45357","severity":2,"message":"45358","line":156,"column":43,"nodeType":"45359","messageId":"45360","endLine":156,"endColumn":46,"suggestions":"47773"},{"ruleId":"45357","severity":2,"message":"45358","line":166,"column":43,"nodeType":"45359","messageId":"45360","endLine":166,"endColumn":46,"suggestions":"47774"},{"ruleId":"45357","severity":2,"message":"45358","line":40,"column":21,"nodeType":"45359","messageId":"45360","endLine":40,"endColumn":24,"suggestions":"47775"},{"ruleId":"45357","severity":2,"message":"45358","line":24,"column":21,"nodeType":"45359","messageId":"45360","endLine":24,"endColumn":24,"suggestions":"47776"},{"ruleId":"45357","severity":2,"message":"45358","line":99,"column":28,"nodeType":"45359","messageId":"45360","endLine":99,"endColumn":31,"suggestions":"47777"},{"ruleId":"45357","severity":2,"message":"45358","line":109,"column":10,"nodeType":"45359","messageId":"45360","endLine":109,"endColumn":13,"suggestions":"47778"},{"ruleId":"45357","severity":2,"message":"45358","line":23,"column":21,"nodeType":"45359","messageId":"45360","endLine":23,"endColumn":24,"suggestions":"47779"},{"ruleId":"45357","severity":2,"message":"45358","line":22,"column":21,"nodeType":"45359","messageId":"45360","endLine":22,"endColumn":24,"suggestions":"47780"},{"ruleId":"45357","severity":2,"message":"45358","line":48,"column":12,"nodeType":"45359","messageId":"45360","endLine":48,"endColumn":15,"suggestions":"47781"},{"ruleId":"45357","severity":2,"message":"45358","line":66,"column":14,"nodeType":"45359","messageId":"45360","endLine":66,"endColumn":17,"suggestions":"47782"},{"ruleId":"45357","severity":2,"message":"45358","line":84,"column":14,"nodeType":"45359","messageId":"45360","endLine":84,"endColumn":17,"suggestions":"47783"},{"ruleId":"45357","severity":2,"message":"45358","line":148,"column":12,"nodeType":"45359","messageId":"45360","endLine":148,"endColumn":15,"suggestions":"47784"},{"ruleId":"45357","severity":2,"message":"45358","line":163,"column":14,"nodeType":"45359","messageId":"45360","endLine":163,"endColumn":17,"suggestions":"47785"},{"ruleId":"45357","severity":2,"message":"45358","line":171,"column":14,"nodeType":"45359","messageId":"45360","endLine":171,"endColumn":17,"suggestions":"47786"},{"ruleId":"45357","severity":2,"message":"45358","line":189,"column":14,"nodeType":"45359","messageId":"45360","endLine":189,"endColumn":17,"suggestions":"47787"},{"ruleId":"45357","severity":2,"message":"45358","line":206,"column":12,"nodeType":"45359","messageId":"45360","endLine":206,"endColumn":15,"suggestions":"47788"},{"ruleId":"45357","severity":2,"message":"45358","line":442,"column":9,"nodeType":"45359","messageId":"45360","endLine":442,"endColumn":12,"suggestions":"47789"},{"ruleId":"45357","severity":2,"message":"45358","line":444,"column":21,"nodeType":"45359","messageId":"45360","endLine":444,"endColumn":24,"suggestions":"47790"},{"ruleId":"45357","severity":2,"message":"45358","line":62,"column":63,"nodeType":"45359","messageId":"45360","endLine":62,"endColumn":66,"suggestions":"47791"},{"ruleId":"45357","severity":2,"message":"45358","line":21,"column":31,"nodeType":"45359","messageId":"45360","endLine":21,"endColumn":34,"suggestions":"47792"},{"ruleId":"45357","severity":2,"message":"45358","line":38,"column":31,"nodeType":"45359","messageId":"45360","endLine":38,"endColumn":34,"suggestions":"47793"},{"ruleId":"45357","severity":2,"message":"45358","line":59,"column":31,"nodeType":"45359","messageId":"45360","endLine":59,"endColumn":34,"suggestions":"47794"},{"ruleId":"45357","severity":2,"message":"45358","line":84,"column":31,"nodeType":"45359","messageId":"45360","endLine":84,"endColumn":34,"suggestions":"47795"},{"ruleId":"45357","severity":2,"message":"45358","line":109,"column":30,"nodeType":"45359","messageId":"45360","endLine":109,"endColumn":33,"suggestions":"47796"},{"ruleId":"45357","severity":2,"message":"45358","line":128,"column":30,"nodeType":"45359","messageId":"45360","endLine":128,"endColumn":33,"suggestions":"47797"},{"ruleId":"45357","severity":2,"message":"45358","line":151,"column":30,"nodeType":"45359","messageId":"45360","endLine":151,"endColumn":33,"suggestions":"47798"},{"ruleId":"45357","severity":2,"message":"45358","line":177,"column":30,"nodeType":"45359","messageId":"45360","endLine":177,"endColumn":33,"suggestions":"47799"},{"ruleId":"45357","severity":2,"message":"45358","line":36,"column":21,"nodeType":"45359","messageId":"45360","endLine":36,"endColumn":24,"suggestions":"47800"},{"ruleId":"45357","severity":2,"message":"45358","line":69,"column":43,"nodeType":"45359","messageId":"45360","endLine":69,"endColumn":46,"suggestions":"47801"},{"ruleId":"45357","severity":2,"message":"45358","line":207,"column":31,"nodeType":"45359","messageId":"45360","endLine":207,"endColumn":34,"suggestions":"47802"},{"ruleId":"45357","severity":2,"message":"45358","line":62,"column":38,"nodeType":"45359","messageId":"45360","endLine":62,"endColumn":41,"suggestions":"47803"},{"ruleId":"45357","severity":2,"message":"45358","line":71,"column":38,"nodeType":"45359","messageId":"45360","endLine":71,"endColumn":41,"suggestions":"47804"},{"ruleId":"45357","severity":2,"message":"45358","line":86,"column":38,"nodeType":"45359","messageId":"45360","endLine":86,"endColumn":41,"suggestions":"47805"},{"ruleId":"45357","severity":2,"message":"45358","line":110,"column":38,"nodeType":"45359","messageId":"45360","endLine":110,"endColumn":41,"suggestions":"47806"},{"ruleId":"45357","severity":2,"message":"45358","line":123,"column":38,"nodeType":"45359","messageId":"45360","endLine":123,"endColumn":41,"suggestions":"47807"},{"ruleId":"45357","severity":2,"message":"45358","line":133,"column":38,"nodeType":"45359","messageId":"45360","endLine":133,"endColumn":41,"suggestions":"47808"},{"ruleId":"45357","severity":2,"message":"45358","line":147,"column":38,"nodeType":"45359","messageId":"45360","endLine":147,"endColumn":41,"suggestions":"47809"},{"ruleId":"45357","severity":2,"message":"45358","line":161,"column":38,"nodeType":"45359","messageId":"45360","endLine":161,"endColumn":41,"suggestions":"47810"},{"ruleId":"45357","severity":2,"message":"45358","line":278,"column":49,"nodeType":"45359","messageId":"45360","endLine":278,"endColumn":52,"suggestions":"47811"},{"ruleId":"45357","severity":2,"message":"45358","line":286,"column":49,"nodeType":"45359","messageId":"45360","endLine":286,"endColumn":52,"suggestions":"47812"},{"ruleId":"45357","severity":2,"message":"45358","line":301,"column":49,"nodeType":"45359","messageId":"45360","endLine":301,"endColumn":52,"suggestions":"47813"},{"ruleId":"45357","severity":2,"message":"45358","line":311,"column":49,"nodeType":"45359","messageId":"45360","endLine":311,"endColumn":52,"suggestions":"47814"},{"ruleId":"45357","severity":2,"message":"45358","line":330,"column":42,"nodeType":"45359","messageId":"45360","endLine":330,"endColumn":45,"suggestions":"47815"},{"ruleId":"45357","severity":2,"message":"45358","line":338,"column":44,"nodeType":"45359","messageId":"45360","endLine":338,"endColumn":47,"suggestions":"47816"},{"ruleId":"45357","severity":2,"message":"45358","line":341,"column":42,"nodeType":"45359","messageId":"45360","endLine":341,"endColumn":45,"suggestions":"47817"},{"ruleId":"45357","severity":2,"message":"45358","line":356,"column":58,"nodeType":"45359","messageId":"45360","endLine":356,"endColumn":61,"suggestions":"47818"},{"ruleId":"45357","severity":2,"message":"45358","line":364,"column":58,"nodeType":"45359","messageId":"45360","endLine":364,"endColumn":61,"suggestions":"47819"},{"ruleId":"45357","severity":2,"message":"45358","line":436,"column":58,"nodeType":"45359","messageId":"45360","endLine":436,"endColumn":61,"suggestions":"47820"},{"ruleId":"45357","severity":2,"message":"45358","line":450,"column":38,"nodeType":"45359","messageId":"45360","endLine":450,"endColumn":41,"suggestions":"47821"},{"ruleId":"45357","severity":2,"message":"45358","line":7,"column":28,"nodeType":"45359","messageId":"45360","endLine":7,"endColumn":31,"suggestions":"47822"},{"ruleId":"45357","severity":2,"message":"45358","line":37,"column":55,"nodeType":"45359","messageId":"45360","endLine":37,"endColumn":58,"suggestions":"47823"},{"ruleId":"45357","severity":2,"message":"45358","line":37,"column":78,"nodeType":"45359","messageId":"45360","endLine":37,"endColumn":81,"suggestions":"47824"},{"ruleId":"45357","severity":2,"message":"45358","line":127,"column":87,"nodeType":"45359","messageId":"45360","endLine":127,"endColumn":90,"suggestions":"47825"},{"ruleId":"45357","severity":2,"message":"45358","line":133,"column":87,"nodeType":"45359","messageId":"45360","endLine":133,"endColumn":90,"suggestions":"47826"},{"ruleId":"45357","severity":2,"message":"45358","line":139,"column":87,"nodeType":"45359","messageId":"45360","endLine":139,"endColumn":90,"suggestions":"47827"},{"ruleId":"45357","severity":2,"message":"45358","line":204,"column":33,"nodeType":"45359","messageId":"45360","endLine":204,"endColumn":36,"suggestions":"47828"},{"ruleId":"45357","severity":2,"message":"45358","line":205,"column":33,"nodeType":"45359","messageId":"45360","endLine":205,"endColumn":36,"suggestions":"47829"},{"ruleId":"45357","severity":2,"message":"45358","line":211,"column":39,"nodeType":"45359","messageId":"45360","endLine":211,"endColumn":42,"suggestions":"47830"},{"ruleId":"45357","severity":2,"message":"45358","line":82,"column":94,"nodeType":"45359","messageId":"45360","endLine":82,"endColumn":97,"suggestions":"47831"},{"ruleId":"45357","severity":2,"message":"45358","line":83,"column":28,"nodeType":"45359","messageId":"45360","endLine":83,"endColumn":31,"suggestions":"47832"},{"ruleId":"45357","severity":2,"message":"45358","line":107,"column":11,"nodeType":"45359","messageId":"45360","endLine":107,"endColumn":14,"suggestions":"47833"},{"ruleId":"45357","severity":2,"message":"45358","line":108,"column":8,"nodeType":"45359","messageId":"45360","endLine":108,"endColumn":11,"suggestions":"47834"},{"ruleId":"45357","severity":2,"message":"45358","line":691,"column":18,"nodeType":"45359","messageId":"45360","endLine":691,"endColumn":21,"suggestions":"47835"},{"ruleId":"45357","severity":2,"message":"45358","line":692,"column":17,"nodeType":"45359","messageId":"45360","endLine":692,"endColumn":20,"suggestions":"47836"},{"ruleId":"45357","severity":2,"message":"45358","line":836,"column":41,"nodeType":"45359","messageId":"45360","endLine":836,"endColumn":44,"suggestions":"47837"},{"ruleId":"45357","severity":2,"message":"45358","line":837,"column":41,"nodeType":"45359","messageId":"45360","endLine":837,"endColumn":44,"suggestions":"47838"},{"ruleId":"45357","severity":2,"message":"45358","line":840,"column":41,"nodeType":"45359","messageId":"45360","endLine":840,"endColumn":44,"suggestions":"47839"},{"ruleId":"45357","severity":2,"message":"45358","line":842,"column":37,"nodeType":"45359","messageId":"45360","endLine":842,"endColumn":40,"suggestions":"47840"},{"ruleId":"45357","severity":2,"message":"45358","line":843,"column":37,"nodeType":"45359","messageId":"45360","endLine":843,"endColumn":40,"suggestions":"47841"},{"ruleId":"45357","severity":2,"message":"45358","line":844,"column":37,"nodeType":"45359","messageId":"45360","endLine":844,"endColumn":40,"suggestions":"47842"},{"ruleId":"45357","severity":2,"message":"45358","line":846,"column":41,"nodeType":"45359","messageId":"45360","endLine":846,"endColumn":44,"suggestions":"47843"},{"ruleId":"45357","severity":2,"message":"45358","line":847,"column":37,"nodeType":"45359","messageId":"45360","endLine":847,"endColumn":40,"suggestions":"47844"},{"ruleId":"45357","severity":2,"message":"45358","line":857,"column":31,"nodeType":"45359","messageId":"45360","endLine":857,"endColumn":34,"suggestions":"47845"},{"ruleId":"45357","severity":2,"message":"45358","line":858,"column":25,"nodeType":"45359","messageId":"45360","endLine":858,"endColumn":28,"suggestions":"47846"},{"ruleId":"45357","severity":2,"message":"45358","line":875,"column":35,"nodeType":"45359","messageId":"45360","endLine":875,"endColumn":38,"suggestions":"47847"},{"ruleId":"45357","severity":2,"message":"45358","line":876,"column":36,"nodeType":"45359","messageId":"45360","endLine":876,"endColumn":39,"suggestions":"47848"},{"ruleId":"45357","severity":2,"message":"45358","line":881,"column":43,"nodeType":"45359","messageId":"45360","endLine":881,"endColumn":46,"suggestions":"47849"},{"ruleId":"45357","severity":2,"message":"45358","line":931,"column":39,"nodeType":"45359","messageId":"45360","endLine":931,"endColumn":42,"suggestions":"47850"},{"ruleId":"45357","severity":2,"message":"45358","line":932,"column":42,"nodeType":"45359","messageId":"45360","endLine":932,"endColumn":45,"suggestions":"47851"},{"ruleId":"45357","severity":2,"message":"45358","line":943,"column":27,"nodeType":"45359","messageId":"45360","endLine":943,"endColumn":30,"suggestions":"47852"},{"ruleId":"45357","severity":2,"message":"45358","line":944,"column":31,"nodeType":"45359","messageId":"45360","endLine":944,"endColumn":34,"suggestions":"47853"},{"ruleId":"45357","severity":2,"message":"45358","line":945,"column":25,"nodeType":"45359","messageId":"45360","endLine":945,"endColumn":28,"suggestions":"47854"},{"ruleId":"45357","severity":2,"message":"45358","line":954,"column":29,"nodeType":"45359","messageId":"45360","endLine":954,"endColumn":32,"suggestions":"47855"},{"ruleId":"45357","severity":2,"message":"45358","line":959,"column":33,"nodeType":"45359","messageId":"45360","endLine":959,"endColumn":36,"suggestions":"47856"},{"ruleId":"45357","severity":2,"message":"45358","line":964,"column":34,"nodeType":"45359","messageId":"45360","endLine":964,"endColumn":37,"suggestions":"47857"},{"ruleId":"45357","severity":2,"message":"45358","line":970,"column":26,"nodeType":"45359","messageId":"45360","endLine":970,"endColumn":29,"suggestions":"47858"},{"ruleId":"45357","severity":2,"message":"45358","line":998,"column":36,"nodeType":"45359","messageId":"45360","endLine":998,"endColumn":39,"suggestions":"47859"},{"ruleId":"45357","severity":2,"message":"45358","line":999,"column":29,"nodeType":"45359","messageId":"45360","endLine":999,"endColumn":32,"suggestions":"47860"},{"ruleId":"45357","severity":2,"message":"45358","line":1024,"column":9,"nodeType":"45359","messageId":"45360","endLine":1024,"endColumn":12,"suggestions":"47861"},{"ruleId":"45357","severity":2,"message":"45358","line":1036,"column":25,"nodeType":"45359","messageId":"45360","endLine":1036,"endColumn":28,"suggestions":"47862"},{"ruleId":"45357","severity":2,"message":"45358","line":1056,"column":9,"nodeType":"45359","messageId":"45360","endLine":1056,"endColumn":12,"suggestions":"47863"},{"ruleId":"45357","severity":2,"message":"45358","line":1078,"column":74,"nodeType":"45359","messageId":"45360","endLine":1078,"endColumn":77,"suggestions":"47864"},{"ruleId":"45357","severity":2,"message":"45358","line":1096,"column":9,"nodeType":"45359","messageId":"45360","endLine":1096,"endColumn":12,"suggestions":"47865"},{"ruleId":"45357","severity":2,"message":"45358","line":1112,"column":31,"nodeType":"45359","messageId":"45360","endLine":1112,"endColumn":34,"suggestions":"47866"},{"ruleId":"45357","severity":2,"message":"45358","line":1113,"column":14,"nodeType":"45359","messageId":"45360","endLine":1113,"endColumn":17,"suggestions":"47867"},{"ruleId":"45357","severity":2,"message":"45358","line":1113,"column":40,"nodeType":"45359","messageId":"45360","endLine":1113,"endColumn":43,"suggestions":"47868"},{"ruleId":"45357","severity":2,"message":"45358","line":1114,"column":14,"nodeType":"45359","messageId":"45360","endLine":1114,"endColumn":17,"suggestions":"47869"},{"ruleId":"45357","severity":2,"message":"45358","line":1114,"column":44,"nodeType":"45359","messageId":"45360","endLine":1114,"endColumn":47,"suggestions":"47870"},{"ruleId":"45357","severity":2,"message":"45358","line":1128,"column":35,"nodeType":"45359","messageId":"45360","endLine":1128,"endColumn":38,"suggestions":"47871"},{"ruleId":"45357","severity":2,"message":"45358","line":1129,"column":35,"nodeType":"45359","messageId":"45360","endLine":1129,"endColumn":38,"suggestions":"47872"},{"ruleId":"45357","severity":2,"message":"45358","line":1130,"column":39,"nodeType":"45359","messageId":"45360","endLine":1130,"endColumn":42,"suggestions":"47873"},{"ruleId":"45357","severity":2,"message":"45358","line":1293,"column":16,"nodeType":"45359","messageId":"45360","endLine":1293,"endColumn":19,"suggestions":"47874"},{"ruleId":"45357","severity":2,"message":"45358","line":1293,"column":54,"nodeType":"45359","messageId":"45360","endLine":1293,"endColumn":57,"suggestions":"47875"},{"ruleId":"45357","severity":2,"message":"45358","line":1294,"column":45,"nodeType":"45359","messageId":"45360","endLine":1294,"endColumn":48,"suggestions":"47876"},{"ruleId":"45357","severity":2,"message":"45358","line":18,"column":16,"nodeType":"45359","messageId":"45360","endLine":18,"endColumn":19,"suggestions":"47877"},{"ruleId":"45357","severity":2,"message":"45358","line":20,"column":35,"nodeType":"45359","messageId":"45360","endLine":20,"endColumn":38,"suggestions":"47878"},{"ruleId":"45357","severity":2,"message":"45358","line":20,"column":49,"nodeType":"45359","messageId":"45360","endLine":20,"endColumn":52,"suggestions":"47879"},{"ruleId":"45357","severity":2,"message":"45358","line":29,"column":10,"nodeType":"45359","messageId":"45360","endLine":29,"endColumn":13,"suggestions":"47880"},{"ruleId":"45357","severity":2,"message":"45358","line":30,"column":9,"nodeType":"45359","messageId":"45360","endLine":30,"endColumn":12,"suggestions":"47881"},{"ruleId":"45357","severity":2,"message":"45358","line":200,"column":49,"nodeType":"45359","messageId":"45360","endLine":200,"endColumn":52,"suggestions":"47882"},{"ruleId":"45357","severity":2,"message":"45358","line":202,"column":41,"nodeType":"45359","messageId":"45360","endLine":202,"endColumn":44,"suggestions":"47883"},{"ruleId":"45357","severity":2,"message":"45358","line":75,"column":52,"nodeType":"45359","messageId":"45360","endLine":75,"endColumn":55,"suggestions":"47884"},{"ruleId":"45357","severity":2,"message":"45358","line":134,"column":52,"nodeType":"45359","messageId":"45360","endLine":134,"endColumn":55,"suggestions":"47885"},{"ruleId":"45357","severity":2,"message":"45358","line":209,"column":52,"nodeType":"45359","messageId":"45360","endLine":209,"endColumn":55,"suggestions":"47886"},{"ruleId":"45357","severity":2,"message":"45358","line":257,"column":52,"nodeType":"45359","messageId":"45360","endLine":257,"endColumn":55,"suggestions":"47887"},{"ruleId":"45357","severity":2,"message":"45358","line":87,"column":52,"nodeType":"45359","messageId":"45360","endLine":87,"endColumn":55,"suggestions":"47888"},{"ruleId":"45357","severity":2,"message":"45358","line":144,"column":52,"nodeType":"45359","messageId":"45360","endLine":144,"endColumn":55,"suggestions":"47889"},{"ruleId":"45357","severity":2,"message":"45358","line":51,"column":13,"nodeType":"45359","messageId":"45360","endLine":51,"endColumn":16,"suggestions":"47890"},{"ruleId":"45357","severity":2,"message":"45358","line":63,"column":17,"nodeType":"45359","messageId":"45360","endLine":63,"endColumn":20,"suggestions":"47891"},{"ruleId":"45357","severity":2,"message":"45358","line":79,"column":13,"nodeType":"45359","messageId":"45360","endLine":79,"endColumn":16,"suggestions":"47892"},{"ruleId":"45357","severity":2,"message":"45358","line":91,"column":17,"nodeType":"45359","messageId":"45360","endLine":91,"endColumn":20,"suggestions":"47893"},{"ruleId":"45357","severity":2,"message":"45358","line":9,"column":39,"nodeType":"45359","messageId":"45360","endLine":9,"endColumn":42,"suggestions":"47894"},{"ruleId":"45357","severity":2,"message":"45358","line":64,"column":37,"nodeType":"45359","messageId":"45360","endLine":64,"endColumn":40,"suggestions":"47895"},{"ruleId":"45357","severity":2,"message":"45358","line":64,"column":48,"nodeType":"45359","messageId":"45360","endLine":64,"endColumn":51,"suggestions":"47896"},{"ruleId":"45357","severity":2,"message":"45358","line":71,"column":11,"nodeType":"45359","messageId":"45360","endLine":71,"endColumn":14,"suggestions":"47897"},{"ruleId":"45357","severity":2,"message":"45358","line":80,"column":10,"nodeType":"45359","messageId":"45360","endLine":80,"endColumn":13,"suggestions":"47898"},{"ruleId":"45357","severity":2,"message":"45358","line":102,"column":52,"nodeType":"45359","messageId":"45360","endLine":102,"endColumn":55,"suggestions":"47899"},{"ruleId":"45357","severity":2,"message":"45358","line":107,"column":37,"nodeType":"45359","messageId":"45360","endLine":107,"endColumn":40,"suggestions":"47900"},{"ruleId":"45357","severity":2,"message":"45358","line":107,"column":48,"nodeType":"45359","messageId":"45360","endLine":107,"endColumn":51,"suggestions":"47901"},{"ruleId":"45357","severity":2,"message":"45358","line":113,"column":11,"nodeType":"45359","messageId":"45360","endLine":113,"endColumn":14,"suggestions":"47902"},{"ruleId":"45357","severity":2,"message":"45358","line":123,"column":10,"nodeType":"45359","messageId":"45360","endLine":123,"endColumn":13,"suggestions":"47903"},{"ruleId":"45357","severity":2,"message":"45358","line":136,"column":37,"nodeType":"45359","messageId":"45360","endLine":136,"endColumn":40,"suggestions":"47904"},{"ruleId":"45357","severity":2,"message":"45358","line":136,"column":48,"nodeType":"45359","messageId":"45360","endLine":136,"endColumn":51,"suggestions":"47905"},{"ruleId":"45357","severity":2,"message":"45358","line":142,"column":11,"nodeType":"45359","messageId":"45360","endLine":142,"endColumn":14,"suggestions":"47906"},{"ruleId":"45357","severity":2,"message":"45358","line":151,"column":10,"nodeType":"45359","messageId":"45360","endLine":151,"endColumn":13,"suggestions":"47907"},{"ruleId":"45357","severity":2,"message":"45358","line":160,"column":37,"nodeType":"45359","messageId":"45360","endLine":160,"endColumn":40,"suggestions":"47908"},{"ruleId":"45357","severity":2,"message":"45358","line":160,"column":48,"nodeType":"45359","messageId":"45360","endLine":160,"endColumn":51,"suggestions":"47909"},{"ruleId":"45357","severity":2,"message":"45358","line":166,"column":11,"nodeType":"45359","messageId":"45360","endLine":166,"endColumn":14,"suggestions":"47910"},{"ruleId":"45357","severity":2,"message":"45358","line":175,"column":10,"nodeType":"45359","messageId":"45360","endLine":175,"endColumn":13,"suggestions":"47911"},{"ruleId":"45357","severity":2,"message":"45358","line":187,"column":37,"nodeType":"45359","messageId":"45360","endLine":187,"endColumn":40,"suggestions":"47912"},{"ruleId":"45357","severity":2,"message":"45358","line":194,"column":11,"nodeType":"45359","messageId":"45360","endLine":194,"endColumn":14,"suggestions":"47913"},{"ruleId":"45357","severity":2,"message":"45358","line":203,"column":10,"nodeType":"45359","messageId":"45360","endLine":203,"endColumn":13,"suggestions":"47914"},{"ruleId":"45357","severity":2,"message":"45358","line":205,"column":52,"nodeType":"45359","messageId":"45360","endLine":205,"endColumn":55,"suggestions":"47915"},{"ruleId":"45357","severity":2,"message":"45358","line":214,"column":37,"nodeType":"45359","messageId":"45360","endLine":214,"endColumn":40,"suggestions":"47916"},{"ruleId":"45357","severity":2,"message":"45358","line":217,"column":11,"nodeType":"45359","messageId":"45360","endLine":217,"endColumn":14,"suggestions":"47917"},{"ruleId":"45357","severity":2,"message":"45358","line":226,"column":10,"nodeType":"45359","messageId":"45360","endLine":226,"endColumn":13,"suggestions":"47918"},{"ruleId":"45357","severity":2,"message":"45358","line":229,"column":52,"nodeType":"45359","messageId":"45360","endLine":229,"endColumn":55,"suggestions":"47919"},{"ruleId":"45357","severity":2,"message":"45358","line":236,"column":37,"nodeType":"45359","messageId":"45360","endLine":236,"endColumn":40,"suggestions":"47920"},{"ruleId":"45357","severity":2,"message":"45358","line":242,"column":11,"nodeType":"45359","messageId":"45360","endLine":242,"endColumn":14,"suggestions":"47921"},{"ruleId":"45357","severity":2,"message":"45358","line":251,"column":10,"nodeType":"45359","messageId":"45360","endLine":251,"endColumn":13,"suggestions":"47922"},{"ruleId":"45357","severity":2,"message":"45358","line":261,"column":37,"nodeType":"45359","messageId":"45360","endLine":261,"endColumn":40,"suggestions":"47923"},{"ruleId":"45357","severity":2,"message":"45358","line":261,"column":48,"nodeType":"45359","messageId":"45360","endLine":261,"endColumn":51,"suggestions":"47924"},{"ruleId":"45357","severity":2,"message":"45358","line":267,"column":11,"nodeType":"45359","messageId":"45360","endLine":267,"endColumn":14,"suggestions":"47925"},{"ruleId":"45357","severity":2,"message":"45358","line":276,"column":10,"nodeType":"45359","messageId":"45360","endLine":276,"endColumn":13,"suggestions":"47926"},{"ruleId":"45357","severity":2,"message":"45358","line":283,"column":35,"nodeType":"45359","messageId":"45360","endLine":283,"endColumn":38,"suggestions":"47927"},{"ruleId":"45357","severity":2,"message":"45358","line":290,"column":41,"nodeType":"45359","messageId":"45360","endLine":290,"endColumn":44,"suggestions":"47928"},{"ruleId":"45357","severity":2,"message":"45358","line":316,"column":47,"nodeType":"45359","messageId":"45360","endLine":316,"endColumn":50,"suggestions":"47929"},{"ruleId":"45357","severity":2,"message":"45358","line":357,"column":37,"nodeType":"45359","messageId":"45360","endLine":357,"endColumn":40,"suggestions":"47930"},{"ruleId":"45357","severity":2,"message":"45358","line":357,"column":48,"nodeType":"45359","messageId":"45360","endLine":357,"endColumn":51,"suggestions":"47931"},{"ruleId":"45357","severity":2,"message":"45358","line":363,"column":11,"nodeType":"45359","messageId":"45360","endLine":363,"endColumn":14,"suggestions":"47932"},{"ruleId":"45357","severity":2,"message":"45358","line":372,"column":10,"nodeType":"45359","messageId":"45360","endLine":372,"endColumn":13,"suggestions":"47933"},{"ruleId":"45357","severity":2,"message":"45358","line":67,"column":30,"nodeType":"45359","messageId":"45360","endLine":67,"endColumn":33,"suggestions":"47934"},{"ruleId":"45357","severity":2,"message":"45358","line":68,"column":18,"nodeType":"45359","messageId":"45360","endLine":68,"endColumn":21,"suggestions":"47935"},{"ruleId":"45357","severity":2,"message":"45358","line":68,"column":39,"nodeType":"45359","messageId":"45360","endLine":68,"endColumn":42,"suggestions":"47936"},{"ruleId":"45357","severity":2,"message":"45358","line":69,"column":18,"nodeType":"45359","messageId":"45360","endLine":69,"endColumn":21,"suggestions":"47937"},{"ruleId":"45357","severity":2,"message":"45358","line":69,"column":39,"nodeType":"45359","messageId":"45360","endLine":69,"endColumn":42,"suggestions":"47938"},{"ruleId":"45357","severity":2,"message":"45358","line":94,"column":30,"nodeType":"45359","messageId":"45360","endLine":94,"endColumn":33,"suggestions":"47939"},{"ruleId":"45357","severity":2,"message":"45358","line":95,"column":30,"nodeType":"45359","messageId":"45360","endLine":95,"endColumn":33,"suggestions":"47940"},{"ruleId":"45418","severity":2,"message":"45419","line":3,"column":1,"nodeType":"45420","messageId":"45421","endLine":3,"endColumn":76},{"ruleId":"45357","severity":2,"message":"45358","line":7,"column":11,"nodeType":"45359","messageId":"45360","endLine":7,"endColumn":14,"suggestions":"47941"},{"ruleId":"45357","severity":2,"message":"45358","line":131,"column":34,"nodeType":"45359","messageId":"45360","endLine":131,"endColumn":37,"suggestions":"47942"},{"ruleId":"45357","severity":2,"message":"45358","line":131,"column":52,"nodeType":"45359","messageId":"45360","endLine":131,"endColumn":55,"suggestions":"47943"},{"ruleId":"45357","severity":2,"message":"45358","line":139,"column":38,"nodeType":"45359","messageId":"45360","endLine":139,"endColumn":41,"suggestions":"47944"},{"ruleId":"45357","severity":2,"message":"45358","line":139,"column":56,"nodeType":"45359","messageId":"45360","endLine":139,"endColumn":59,"suggestions":"47945"},{"ruleId":"45357","severity":2,"message":"45358","line":53,"column":19,"nodeType":"45359","messageId":"45360","endLine":53,"endColumn":22,"suggestions":"47946"},{"ruleId":"45357","severity":2,"message":"45358","line":143,"column":26,"nodeType":"45359","messageId":"45360","endLine":143,"endColumn":29,"suggestions":"47947"},{"ruleId":"45357","severity":2,"message":"45358","line":167,"column":16,"nodeType":"45359","messageId":"45360","endLine":167,"endColumn":19,"suggestions":"47948"},{"ruleId":"45357","severity":2,"message":"45358","line":167,"column":35,"nodeType":"45359","messageId":"45360","endLine":167,"endColumn":38,"suggestions":"47949"},{"ruleId":"45357","severity":2,"message":"45358","line":276,"column":58,"nodeType":"45359","messageId":"45360","endLine":276,"endColumn":61,"suggestions":"47950"},{"ruleId":"45357","severity":2,"message":"45358","line":278,"column":77,"nodeType":"45359","messageId":"45360","endLine":278,"endColumn":80,"suggestions":"47951"},{"ruleId":"45357","severity":2,"message":"45358","line":282,"column":78,"nodeType":"45359","messageId":"45360","endLine":282,"endColumn":81,"suggestions":"47952"},{"ruleId":"45357","severity":2,"message":"45358","line":339,"column":60,"nodeType":"45359","messageId":"45360","endLine":339,"endColumn":63,"suggestions":"47953"},{"ruleId":"45357","severity":2,"message":"45358","line":361,"column":56,"nodeType":"45359","messageId":"45360","endLine":361,"endColumn":59,"suggestions":"47954"},{"ruleId":"45357","severity":2,"message":"45358","line":367,"column":72,"nodeType":"45359","messageId":"45360","endLine":367,"endColumn":75,"suggestions":"47955"},{"ruleId":"45357","severity":2,"message":"45358","line":467,"column":48,"nodeType":"45359","messageId":"45360","endLine":467,"endColumn":51,"suggestions":"47956"},{"ruleId":"45357","severity":2,"message":"45358","line":491,"column":48,"nodeType":"45359","messageId":"45360","endLine":491,"endColumn":51,"suggestions":"47957"},{"ruleId":"45357","severity":2,"message":"45358","line":512,"column":48,"nodeType":"45359","messageId":"45360","endLine":512,"endColumn":51,"suggestions":"47958"},{"ruleId":"45357","severity":2,"message":"45358","line":534,"column":48,"nodeType":"45359","messageId":"45360","endLine":534,"endColumn":51,"suggestions":"47959"},{"ruleId":"45357","severity":2,"message":"45358","line":552,"column":65,"nodeType":"45359","messageId":"45360","endLine":552,"endColumn":68,"suggestions":"47960"},{"ruleId":"45357","severity":2,"message":"45358","line":563,"column":61,"nodeType":"45359","messageId":"45360","endLine":563,"endColumn":64,"suggestions":"47961"},{"ruleId":"45357","severity":2,"message":"45358","line":580,"column":55,"nodeType":"45359","messageId":"45360","endLine":580,"endColumn":58,"suggestions":"47962"},{"ruleId":"45357","severity":2,"message":"45358","line":597,"column":65,"nodeType":"45359","messageId":"45360","endLine":597,"endColumn":68,"suggestions":"47963"},{"ruleId":"45357","severity":2,"message":"45358","line":621,"column":65,"nodeType":"45359","messageId":"45360","endLine":621,"endColumn":68,"suggestions":"47964"},{"ruleId":"45357","severity":2,"message":"45358","line":647,"column":57,"nodeType":"45359","messageId":"45360","endLine":647,"endColumn":60,"suggestions":"47965"},{"ruleId":"45357","severity":2,"message":"45358","line":17,"column":75,"nodeType":"45359","messageId":"45360","endLine":17,"endColumn":78,"suggestions":"47966"},{"ruleId":"45357","severity":2,"message":"45358","line":32,"column":34,"nodeType":"45359","messageId":"45360","endLine":32,"endColumn":37,"suggestions":"47967"},{"ruleId":"45357","severity":2,"message":"45358","line":74,"column":38,"nodeType":"45359","messageId":"45360","endLine":74,"endColumn":41,"suggestions":"47968"},{"ruleId":"45357","severity":2,"message":"45358","line":75,"column":38,"nodeType":"45359","messageId":"45360","endLine":75,"endColumn":41,"suggestions":"47969"},{"ruleId":"45357","severity":2,"message":"45358","line":26,"column":27,"nodeType":"45359","messageId":"45360","endLine":26,"endColumn":30,"suggestions":"47970"},{"ruleId":"45357","severity":2,"message":"45358","line":27,"column":27,"nodeType":"45359","messageId":"45360","endLine":27,"endColumn":30,"suggestions":"47971"},{"ruleId":"45357","severity":2,"message":"45358","line":47,"column":25,"nodeType":"45359","messageId":"45360","endLine":47,"endColumn":28,"suggestions":"47972"},{"ruleId":"45357","severity":2,"message":"45358","line":16,"column":64,"nodeType":"45359","messageId":"45360","endLine":16,"endColumn":67,"suggestions":"47973"},{"ruleId":"45357","severity":2,"message":"45358","line":17,"column":20,"nodeType":"45359","messageId":"45360","endLine":17,"endColumn":23,"suggestions":"47974"},{"ruleId":"45357","severity":2,"message":"45358","line":34,"column":50,"nodeType":"45359","messageId":"45360","endLine":34,"endColumn":53,"suggestions":"47975"},{"ruleId":"45357","severity":2,"message":"45358","line":49,"column":50,"nodeType":"45359","messageId":"45360","endLine":49,"endColumn":53,"suggestions":"47976"},{"ruleId":"45357","severity":2,"message":"45358","line":73,"column":12,"nodeType":"45359","messageId":"45360","endLine":73,"endColumn":15,"suggestions":"47977"},{"ruleId":"45357","severity":2,"message":"45358","line":96,"column":10,"nodeType":"45359","messageId":"45360","endLine":96,"endColumn":13,"suggestions":"47978"},{"ruleId":"45357","severity":2,"message":"45358","line":129,"column":11,"nodeType":"45359","messageId":"45360","endLine":129,"endColumn":14,"suggestions":"47979"},{"ruleId":"45357","severity":2,"message":"45358","line":171,"column":20,"nodeType":"45359","messageId":"45360","endLine":171,"endColumn":23,"suggestions":"47980"},{"ruleId":"45357","severity":2,"message":"45358","line":226,"column":52,"nodeType":"45359","messageId":"45360","endLine":226,"endColumn":55,"suggestions":"47981"},{"ruleId":"45357","severity":2,"message":"45358","line":262,"column":50,"nodeType":"45359","messageId":"45360","endLine":262,"endColumn":53,"suggestions":"47982"},{"ruleId":"45357","severity":2,"message":"45358","line":31,"column":27,"nodeType":"45359","messageId":"45360","endLine":31,"endColumn":30,"suggestions":"47983"},{"ruleId":"45357","severity":2,"message":"45358","line":41,"column":27,"nodeType":"45359","messageId":"45360","endLine":41,"endColumn":30,"suggestions":"47984"},{"ruleId":"45357","severity":2,"message":"45358","line":52,"column":16,"nodeType":"45359","messageId":"45360","endLine":52,"endColumn":19,"suggestions":"47985"},{"ruleId":"45357","severity":2,"message":"45358","line":66,"column":16,"nodeType":"45359","messageId":"45360","endLine":66,"endColumn":19,"suggestions":"47986"},{"ruleId":"45357","severity":2,"message":"45358","line":79,"column":27,"nodeType":"45359","messageId":"45360","endLine":79,"endColumn":30,"suggestions":"47987"},{"ruleId":"45357","severity":2,"message":"45358","line":80,"column":27,"nodeType":"45359","messageId":"45360","endLine":80,"endColumn":30,"suggestions":"47988"},{"ruleId":"45357","severity":2,"message":"45358","line":93,"column":27,"nodeType":"45359","messageId":"45360","endLine":93,"endColumn":30,"suggestions":"47989"},{"ruleId":"45357","severity":2,"message":"45358","line":104,"column":27,"nodeType":"45359","messageId":"45360","endLine":104,"endColumn":30,"suggestions":"47990"},{"ruleId":"45357","severity":2,"message":"45358","line":115,"column":27,"nodeType":"45359","messageId":"45360","endLine":115,"endColumn":30,"suggestions":"47991"},{"ruleId":"45357","severity":2,"message":"45358","line":57,"column":10,"nodeType":"45359","messageId":"45360","endLine":57,"endColumn":13,"suggestions":"47992"},{"ruleId":"45357","severity":2,"message":"45358","line":62,"column":45,"nodeType":"45359","messageId":"45360","endLine":62,"endColumn":48,"suggestions":"47993"},{"ruleId":"45357","severity":2,"message":"45358","line":67,"column":52,"nodeType":"45359","messageId":"45360","endLine":67,"endColumn":55,"suggestions":"47994"},{"ruleId":"45357","severity":2,"message":"45358","line":104,"column":10,"nodeType":"45359","messageId":"45360","endLine":104,"endColumn":13,"suggestions":"47995"},{"ruleId":"45357","severity":2,"message":"45358","line":135,"column":10,"nodeType":"45359","messageId":"45360","endLine":135,"endColumn":13,"suggestions":"47996"},{"ruleId":"45357","severity":2,"message":"45358","line":137,"column":52,"nodeType":"45359","messageId":"45360","endLine":137,"endColumn":55,"suggestions":"47997"},{"ruleId":"45357","severity":2,"message":"45358","line":43,"column":41,"nodeType":"45359","messageId":"45360","endLine":43,"endColumn":44,"suggestions":"47998"},{"ruleId":"45357","severity":2,"message":"45358","line":74,"column":45,"nodeType":"45359","messageId":"45360","endLine":74,"endColumn":48,"suggestions":"47999"},{"ruleId":"45357","severity":2,"message":"45358","line":216,"column":9,"nodeType":"45359","messageId":"45360","endLine":216,"endColumn":12,"suggestions":"48000"},{"ruleId":"45357","severity":2,"message":"45358","line":219,"column":25,"nodeType":"45359","messageId":"45360","endLine":219,"endColumn":28,"suggestions":"48001"},{"ruleId":"45357","severity":2,"message":"45358","line":231,"column":9,"nodeType":"45359","messageId":"45360","endLine":231,"endColumn":12,"suggestions":"48002"},{"ruleId":"45357","severity":2,"message":"45358","line":234,"column":25,"nodeType":"45359","messageId":"45360","endLine":234,"endColumn":28,"suggestions":"48003"},{"ruleId":"45357","severity":2,"message":"45358","line":249,"column":9,"nodeType":"45359","messageId":"45360","endLine":249,"endColumn":12,"suggestions":"48004"},{"ruleId":"45357","severity":2,"message":"45358","line":252,"column":32,"nodeType":"45359","messageId":"45360","endLine":252,"endColumn":35,"suggestions":"48005"},{"ruleId":"45357","severity":2,"message":"45358","line":253,"column":32,"nodeType":"45359","messageId":"45360","endLine":253,"endColumn":35,"suggestions":"48006"},{"ruleId":"45357","severity":2,"message":"45358","line":268,"column":38,"nodeType":"45359","messageId":"45360","endLine":268,"endColumn":41,"suggestions":"48007"},{"ruleId":"45357","severity":2,"message":"45358","line":268,"column":52,"nodeType":"45359","messageId":"45360","endLine":268,"endColumn":55,"suggestions":"48008"},{"ruleId":"45357","severity":2,"message":"45358","line":338,"column":38,"nodeType":"45359","messageId":"45360","endLine":338,"endColumn":41,"suggestions":"48009"},{"ruleId":"45357","severity":2,"message":"45358","line":338,"column":52,"nodeType":"45359","messageId":"45360","endLine":338,"endColumn":55,"suggestions":"48010"},{"ruleId":"45357","severity":2,"message":"45358","line":390,"column":43,"nodeType":"45359","messageId":"45360","endLine":390,"endColumn":46,"suggestions":"48011"},{"ruleId":"45357","severity":2,"message":"45358","line":390,"column":57,"nodeType":"45359","messageId":"45360","endLine":390,"endColumn":60,"suggestions":"48012"},{"ruleId":"45357","severity":2,"message":"45358","line":587,"column":43,"nodeType":"45359","messageId":"45360","endLine":587,"endColumn":46,"suggestions":"48013"},{"ruleId":"45357","severity":2,"message":"45358","line":587,"column":57,"nodeType":"45359","messageId":"45360","endLine":587,"endColumn":60,"suggestions":"48014"},{"ruleId":"45357","severity":2,"message":"45358","line":661,"column":8,"nodeType":"45359","messageId":"45360","endLine":661,"endColumn":11,"suggestions":"48015"},{"ruleId":"45357","severity":2,"message":"45358","line":663,"column":25,"nodeType":"45359","messageId":"45360","endLine":663,"endColumn":28,"suggestions":"48016"},{"ruleId":"45357","severity":2,"message":"45358","line":679,"column":8,"nodeType":"45359","messageId":"45360","endLine":679,"endColumn":11,"suggestions":"48017"},{"ruleId":"45357","severity":2,"message":"45358","line":696,"column":8,"nodeType":"45359","messageId":"45360","endLine":696,"endColumn":11,"suggestions":"48018"},{"ruleId":"45357","severity":2,"message":"45358","line":260,"column":45,"nodeType":"45359","messageId":"45360","endLine":260,"endColumn":48,"suggestions":"48019"},{"ruleId":"45357","severity":2,"message":"45358","line":292,"column":45,"nodeType":"45359","messageId":"45360","endLine":292,"endColumn":48,"suggestions":"48020"},{"ruleId":"45357","severity":2,"message":"45358","line":429,"column":45,"nodeType":"45359","messageId":"45360","endLine":429,"endColumn":48,"suggestions":"48021"},{"ruleId":"45357","severity":2,"message":"45358","line":112,"column":52,"nodeType":"45359","messageId":"45360","endLine":112,"endColumn":55,"suggestions":"48022"},{"ruleId":"45357","severity":2,"message":"45358","line":146,"column":52,"nodeType":"45359","messageId":"45360","endLine":146,"endColumn":55,"suggestions":"48023"},{"ruleId":"45357","severity":2,"message":"45358","line":179,"column":52,"nodeType":"45359","messageId":"45360","endLine":179,"endColumn":55,"suggestions":"48024"},{"ruleId":"45357","severity":2,"message":"45358","line":227,"column":52,"nodeType":"45359","messageId":"45360","endLine":227,"endColumn":55,"suggestions":"48025"},{"ruleId":"45357","severity":2,"message":"45358","line":259,"column":52,"nodeType":"45359","messageId":"45360","endLine":259,"endColumn":55,"suggestions":"48026"},{"ruleId":"45357","severity":2,"message":"45358","line":292,"column":52,"nodeType":"45359","messageId":"45360","endLine":292,"endColumn":55,"suggestions":"48027"},{"ruleId":"45357","severity":2,"message":"45358","line":337,"column":52,"nodeType":"45359","messageId":"45360","endLine":337,"endColumn":55,"suggestions":"48028"},{"ruleId":"45357","severity":2,"message":"45358","line":386,"column":52,"nodeType":"45359","messageId":"45360","endLine":386,"endColumn":55,"suggestions":"48029"},{"ruleId":"45357","severity":2,"message":"45358","line":454,"column":52,"nodeType":"45359","messageId":"45360","endLine":454,"endColumn":55,"suggestions":"48030"},{"ruleId":"45357","severity":2,"message":"45358","line":518,"column":52,"nodeType":"45359","messageId":"45360","endLine":518,"endColumn":55,"suggestions":"48031"},{"ruleId":"45357","severity":2,"message":"45358","line":581,"column":52,"nodeType":"45359","messageId":"45360","endLine":581,"endColumn":55,"suggestions":"48032"},{"ruleId":"45357","severity":2,"message":"45358","line":646,"column":52,"nodeType":"45359","messageId":"45360","endLine":646,"endColumn":55,"suggestions":"48033"},{"ruleId":"45357","severity":2,"message":"45358","line":699,"column":52,"nodeType":"45359","messageId":"45360","endLine":699,"endColumn":55,"suggestions":"48034"},{"ruleId":"45357","severity":2,"message":"45358","line":807,"column":52,"nodeType":"45359","messageId":"45360","endLine":807,"endColumn":55,"suggestions":"48035"},{"ruleId":"45357","severity":2,"message":"45358","line":859,"column":52,"nodeType":"45359","messageId":"45360","endLine":859,"endColumn":55,"suggestions":"48036"},{"ruleId":"45357","severity":2,"message":"45358","line":924,"column":52,"nodeType":"45359","messageId":"45360","endLine":924,"endColumn":55,"suggestions":"48037"},{"ruleId":"45357","severity":2,"message":"45358","line":972,"column":52,"nodeType":"45359","messageId":"45360","endLine":972,"endColumn":55,"suggestions":"48038"},{"ruleId":"45357","severity":2,"message":"45358","line":1027,"column":52,"nodeType":"45359","messageId":"45360","endLine":1027,"endColumn":55,"suggestions":"48039"},{"ruleId":"45357","severity":2,"message":"45358","line":1058,"column":52,"nodeType":"45359","messageId":"45360","endLine":1058,"endColumn":55,"suggestions":"48040"},{"ruleId":"45357","severity":2,"message":"45358","line":1087,"column":52,"nodeType":"45359","messageId":"45360","endLine":1087,"endColumn":55,"suggestions":"48041"},{"ruleId":"45357","severity":2,"message":"45358","line":1864,"column":54,"nodeType":"45359","messageId":"45360","endLine":1864,"endColumn":57,"suggestions":"48042"},{"ruleId":"45357","severity":2,"message":"45358","line":2165,"column":52,"nodeType":"45359","messageId":"45360","endLine":2165,"endColumn":55,"suggestions":"48043"},{"ruleId":"45357","severity":2,"message":"45358","line":2186,"column":52,"nodeType":"45359","messageId":"45360","endLine":2186,"endColumn":55,"suggestions":"48044"},{"ruleId":"45357","severity":2,"message":"45358","line":2219,"column":52,"nodeType":"45359","messageId":"45360","endLine":2219,"endColumn":55,"suggestions":"48045"},{"ruleId":"45357","severity":2,"message":"45358","line":2403,"column":30,"nodeType":"45359","messageId":"45360","endLine":2403,"endColumn":33,"suggestions":"48046"},{"ruleId":"45357","severity":2,"message":"45358","line":20,"column":40,"nodeType":"45359","messageId":"45360","endLine":20,"endColumn":43,"suggestions":"48047"},{"ruleId":"45357","severity":2,"message":"45358","line":38,"column":40,"nodeType":"45359","messageId":"45360","endLine":38,"endColumn":43,"suggestions":"48048"},{"ruleId":"45357","severity":2,"message":"45358","line":46,"column":75,"nodeType":"45359","messageId":"45360","endLine":46,"endColumn":78,"suggestions":"48049"},{"ruleId":"45357","severity":2,"message":"45358","line":48,"column":23,"nodeType":"45359","messageId":"45360","endLine":48,"endColumn":26,"suggestions":"48050"},{"ruleId":"45357","severity":2,"message":"45358","line":58,"column":25,"nodeType":"45359","messageId":"45360","endLine":58,"endColumn":28,"suggestions":"48051"},{"ruleId":"45357","severity":2,"message":"45358","line":72,"column":25,"nodeType":"45359","messageId":"45360","endLine":72,"endColumn":28,"suggestions":"48052"},{"ruleId":"45357","severity":2,"message":"45358","line":88,"column":25,"nodeType":"45359","messageId":"45360","endLine":88,"endColumn":28,"suggestions":"48053"},{"ruleId":"45357","severity":2,"message":"45358","line":40,"column":39,"nodeType":"45359","messageId":"45360","endLine":40,"endColumn":42,"suggestions":"48054"},{"ruleId":"45357","severity":2,"message":"45358","line":186,"column":37,"nodeType":"45359","messageId":"45360","endLine":186,"endColumn":40,"suggestions":"48055","suppressions":"48056"},{"ruleId":"45357","severity":2,"message":"45358","line":25,"column":32,"nodeType":"45359","messageId":"45360","endLine":25,"endColumn":35,"suggestions":"48057"},{"ruleId":"45357","severity":2,"message":"45358","line":130,"column":82,"nodeType":"45359","messageId":"45360","endLine":130,"endColumn":85,"suggestions":"48058"},{"ruleId":"45357","severity":2,"message":"45358","line":131,"column":78,"nodeType":"45359","messageId":"45360","endLine":131,"endColumn":81,"suggestions":"48059"},{"ruleId":"45357","severity":2,"message":"45358","line":132,"column":79,"nodeType":"45359","messageId":"45360","endLine":132,"endColumn":82,"suggestions":"48060"},{"ruleId":"45357","severity":2,"message":"45358","line":133,"column":88,"nodeType":"45359","messageId":"45360","endLine":133,"endColumn":91,"suggestions":"48061"},{"ruleId":"45357","severity":2,"message":"45358","line":134,"column":78,"nodeType":"45359","messageId":"45360","endLine":134,"endColumn":81,"suggestions":"48062"},{"ruleId":"45357","severity":2,"message":"45358","line":135,"column":83,"nodeType":"45359","messageId":"45360","endLine":135,"endColumn":86,"suggestions":"48063"},{"ruleId":"45357","severity":2,"message":"45358","line":150,"column":81,"nodeType":"45359","messageId":"45360","endLine":150,"endColumn":84,"suggestions":"48064"},{"ruleId":"45357","severity":2,"message":"45358","line":162,"column":84,"nodeType":"45359","messageId":"45360","endLine":162,"endColumn":87,"suggestions":"48065"},{"ruleId":"45357","severity":2,"message":"45358","line":202,"column":78,"nodeType":"45359","messageId":"45360","endLine":202,"endColumn":81,"suggestions":"48066"},{"ruleId":"45357","severity":2,"message":"45358","line":203,"column":79,"nodeType":"45359","messageId":"45360","endLine":203,"endColumn":82,"suggestions":"48067"},{"ruleId":"45357","severity":2,"message":"45358","line":212,"column":78,"nodeType":"45359","messageId":"45360","endLine":212,"endColumn":81,"suggestions":"48068"},{"ruleId":"45357","severity":2,"message":"45358","line":213,"column":79,"nodeType":"45359","messageId":"45360","endLine":213,"endColumn":82,"suggestions":"48069"},{"ruleId":"45357","severity":2,"message":"45358","line":45,"column":43,"nodeType":"45359","messageId":"45360","endLine":45,"endColumn":46,"suggestions":"48070"},{"ruleId":"45357","severity":2,"message":"45358","line":67,"column":43,"nodeType":"45359","messageId":"45360","endLine":67,"endColumn":46,"suggestions":"48071"},{"ruleId":"45357","severity":2,"message":"45358","line":88,"column":43,"nodeType":"45359","messageId":"45360","endLine":88,"endColumn":46,"suggestions":"48072"},{"ruleId":"45357","severity":2,"message":"45358","line":109,"column":43,"nodeType":"45359","messageId":"45360","endLine":109,"endColumn":46,"suggestions":"48073"},{"ruleId":"45357","severity":2,"message":"45358","line":124,"column":43,"nodeType":"45359","messageId":"45360","endLine":124,"endColumn":46,"suggestions":"48074"},{"ruleId":"45357","severity":2,"message":"45358","line":139,"column":43,"nodeType":"45359","messageId":"45360","endLine":139,"endColumn":46,"suggestions":"48075"},{"ruleId":"45357","severity":2,"message":"45358","line":157,"column":43,"nodeType":"45359","messageId":"45360","endLine":157,"endColumn":46,"suggestions":"48076"},{"ruleId":"45357","severity":2,"message":"45358","line":182,"column":43,"nodeType":"45359","messageId":"45360","endLine":182,"endColumn":46,"suggestions":"48077"},{"ruleId":"45357","severity":2,"message":"45358","line":204,"column":43,"nodeType":"45359","messageId":"45360","endLine":204,"endColumn":46,"suggestions":"48078"},{"ruleId":"45357","severity":2,"message":"45358","line":226,"column":43,"nodeType":"45359","messageId":"45360","endLine":226,"endColumn":46,"suggestions":"48079"},{"ruleId":"45357","severity":2,"message":"45358","line":86,"column":20,"nodeType":"45359","messageId":"45360","endLine":86,"endColumn":23,"suggestions":"48080"},{"ruleId":"45357","severity":2,"message":"45358","line":112,"column":28,"nodeType":"45359","messageId":"45360","endLine":112,"endColumn":31,"suggestions":"48081"},{"ruleId":"45357","severity":2,"message":"45358","line":113,"column":20,"nodeType":"45359","messageId":"45360","endLine":113,"endColumn":23,"suggestions":"48082"},{"ruleId":"45357","severity":2,"message":"45358","line":140,"column":20,"nodeType":"45359","messageId":"45360","endLine":140,"endColumn":23,"suggestions":"48083"},{"ruleId":"45357","severity":2,"message":"45358","line":20,"column":24,"nodeType":"45359","messageId":"45360","endLine":20,"endColumn":27,"suggestions":"48084"},{"ruleId":"45357","severity":2,"message":"45358","line":32,"column":93,"nodeType":"45359","messageId":"45360","endLine":32,"endColumn":96,"suggestions":"48085"},{"ruleId":"45357","severity":2,"message":"45358","line":72,"column":95,"nodeType":"45359","messageId":"45360","endLine":72,"endColumn":98,"suggestions":"48086"},{"ruleId":"45357","severity":2,"message":"45358","line":87,"column":39,"nodeType":"45359","messageId":"45360","endLine":87,"endColumn":42,"suggestions":"48087"},{"ruleId":"45357","severity":2,"message":"45358","line":27,"column":24,"nodeType":"45359","messageId":"45360","endLine":27,"endColumn":27,"suggestions":"48088"},{"ruleId":"45357","severity":2,"message":"45358","line":68,"column":43,"nodeType":"45359","messageId":"45360","endLine":68,"endColumn":46,"suggestions":"48089"},{"ruleId":"45357","severity":2,"message":"45358","line":87,"column":43,"nodeType":"45359","messageId":"45360","endLine":87,"endColumn":46,"suggestions":"48090"},{"ruleId":"45357","severity":2,"message":"45358","line":23,"column":21,"nodeType":"45359","messageId":"45360","endLine":23,"endColumn":24,"suggestions":"48091"},{"ruleId":"45357","severity":2,"message":"45358","line":22,"column":21,"nodeType":"45359","messageId":"45360","endLine":22,"endColumn":24,"suggestions":"48092"},{"ruleId":"45357","severity":2,"message":"45358","line":56,"column":78,"nodeType":"45359","messageId":"45360","endLine":56,"endColumn":81,"suggestions":"48093"},{"ruleId":"45357","severity":2,"message":"45358","line":37,"column":34,"nodeType":"45359","messageId":"45360","endLine":37,"endColumn":37,"suggestions":"48094"},{"ruleId":"45357","severity":2,"message":"45358","line":43,"column":34,"nodeType":"45359","messageId":"45360","endLine":43,"endColumn":37,"suggestions":"48095"},{"ruleId":"45357","severity":2,"message":"45358","line":48,"column":34,"nodeType":"45359","messageId":"45360","endLine":48,"endColumn":37,"suggestions":"48096"},{"ruleId":"45357","severity":2,"message":"45358","line":53,"column":33,"nodeType":"45359","messageId":"45360","endLine":53,"endColumn":36,"suggestions":"48097"},{"ruleId":"45357","severity":2,"message":"45358","line":62,"column":33,"nodeType":"45359","messageId":"45360","endLine":62,"endColumn":36,"suggestions":"48098"},{"ruleId":"45357","severity":2,"message":"45358","line":74,"column":33,"nodeType":"45359","messageId":"45360","endLine":74,"endColumn":36,"suggestions":"48099"},{"ruleId":"45357","severity":2,"message":"45358","line":89,"column":33,"nodeType":"45359","messageId":"45360","endLine":89,"endColumn":36,"suggestions":"48100"},{"ruleId":"45357","severity":2,"message":"45358","line":94,"column":46,"nodeType":"45359","messageId":"45360","endLine":94,"endColumn":49,"suggestions":"48101"},{"ruleId":"45357","severity":2,"message":"45358","line":100,"column":33,"nodeType":"45359","messageId":"45360","endLine":100,"endColumn":36,"suggestions":"48102"},{"ruleId":"45357","severity":2,"message":"45358","line":112,"column":19,"nodeType":"45359","messageId":"45360","endLine":112,"endColumn":22,"suggestions":"48103"},{"ruleId":"45357","severity":2,"message":"45358","line":113,"column":16,"nodeType":"45359","messageId":"45360","endLine":113,"endColumn":19,"suggestions":"48104"},{"ruleId":"45357","severity":2,"message":"45358","line":120,"column":33,"nodeType":"45359","messageId":"45360","endLine":120,"endColumn":36,"suggestions":"48105"},{"ruleId":"45357","severity":2,"message":"45358","line":132,"column":11,"nodeType":"45359","messageId":"45360","endLine":132,"endColumn":14,"suggestions":"48106"},{"ruleId":"45357","severity":2,"message":"45358","line":141,"column":33,"nodeType":"45359","messageId":"45360","endLine":141,"endColumn":36,"suggestions":"48107"},{"ruleId":"45357","severity":2,"message":"45358","line":146,"column":35,"nodeType":"45359","messageId":"45360","endLine":146,"endColumn":38,"suggestions":"48108"},{"ruleId":"45357","severity":2,"message":"45358","line":147,"column":35,"nodeType":"45359","messageId":"45360","endLine":147,"endColumn":38,"suggestions":"48109"},{"ruleId":"45357","severity":2,"message":"45358","line":163,"column":35,"nodeType":"45359","messageId":"45360","endLine":163,"endColumn":38,"suggestions":"48110"},{"ruleId":"45357","severity":2,"message":"45358","line":181,"column":35,"nodeType":"45359","messageId":"45360","endLine":181,"endColumn":38,"suggestions":"48111"},{"ruleId":"45357","severity":2,"message":"45358","line":187,"column":35,"nodeType":"45359","messageId":"45360","endLine":187,"endColumn":38,"suggestions":"48112"},{"ruleId":"45357","severity":2,"message":"45358","line":198,"column":31,"nodeType":"45359","messageId":"45360","endLine":198,"endColumn":34,"suggestions":"48113"},{"ruleId":"45357","severity":2,"message":"45358","line":204,"column":31,"nodeType":"45359","messageId":"45360","endLine":204,"endColumn":34,"suggestions":"48114"},{"ruleId":"45357","severity":2,"message":"45358","line":206,"column":18,"nodeType":"45359","messageId":"45360","endLine":206,"endColumn":21,"suggestions":"48115"},{"ruleId":"45357","severity":2,"message":"45358","line":212,"column":31,"nodeType":"45359","messageId":"45360","endLine":212,"endColumn":34,"suggestions":"48116"},{"ruleId":"45357","severity":2,"message":"45358","line":214,"column":18,"nodeType":"45359","messageId":"45360","endLine":214,"endColumn":21,"suggestions":"48117"},{"ruleId":"45357","severity":2,"message":"45358","line":222,"column":58,"nodeType":"45359","messageId":"45360","endLine":222,"endColumn":61,"suggestions":"48118"},{"ruleId":"45357","severity":2,"message":"45358","line":232,"column":58,"nodeType":"45359","messageId":"45360","endLine":232,"endColumn":61,"suggestions":"48119"},{"ruleId":"45357","severity":2,"message":"45358","line":270,"column":30,"nodeType":"45359","messageId":"45360","endLine":270,"endColumn":33,"suggestions":"48120"},{"ruleId":"45357","severity":2,"message":"45358","line":279,"column":18,"nodeType":"45359","messageId":"45360","endLine":279,"endColumn":21,"suggestions":"48121"},{"ruleId":"45357","severity":2,"message":"45358","line":292,"column":18,"nodeType":"45359","messageId":"45360","endLine":292,"endColumn":21,"suggestions":"48122"},{"ruleId":"45357","severity":2,"message":"45358","line":294,"column":51,"nodeType":"45359","messageId":"45360","endLine":294,"endColumn":54,"suggestions":"48123"},{"ruleId":"45357","severity":2,"message":"45358","line":301,"column":36,"nodeType":"45359","messageId":"45360","endLine":301,"endColumn":39,"suggestions":"48124"},{"ruleId":"45357","severity":2,"message":"45358","line":302,"column":18,"nodeType":"45359","messageId":"45360","endLine":302,"endColumn":21,"suggestions":"48125"},{"ruleId":"45357","severity":2,"message":"45358","line":303,"column":37,"nodeType":"45359","messageId":"45360","endLine":303,"endColumn":40,"suggestions":"48126"},{"ruleId":"45357","severity":2,"message":"45358","line":308,"column":37,"nodeType":"45359","messageId":"45360","endLine":308,"endColumn":40,"suggestions":"48127"},{"ruleId":"45357","severity":2,"message":"45358","line":309,"column":18,"nodeType":"45359","messageId":"45360","endLine":309,"endColumn":21,"suggestions":"48128"},{"ruleId":"45357","severity":2,"message":"45358","line":319,"column":51,"nodeType":"45359","messageId":"45360","endLine":319,"endColumn":54,"suggestions":"48129"},{"ruleId":"45357","severity":2,"message":"45358","line":337,"column":18,"nodeType":"45359","messageId":"45360","endLine":337,"endColumn":21,"suggestions":"48130"},{"ruleId":"45357","severity":2,"message":"45358","line":341,"column":18,"nodeType":"45359","messageId":"45360","endLine":341,"endColumn":21,"suggestions":"48131"},{"ruleId":"45357","severity":2,"message":"45358","line":350,"column":51,"nodeType":"45359","messageId":"45360","endLine":350,"endColumn":54,"suggestions":"48132"},{"ruleId":"45357","severity":2,"message":"45358","line":358,"column":18,"nodeType":"45359","messageId":"45360","endLine":358,"endColumn":21,"suggestions":"48133"},{"ruleId":"45357","severity":2,"message":"45358","line":361,"column":18,"nodeType":"45359","messageId":"45360","endLine":361,"endColumn":21,"suggestions":"48134"},{"ruleId":"45357","severity":2,"message":"45358","line":369,"column":37,"nodeType":"45359","messageId":"45360","endLine":369,"endColumn":40,"suggestions":"48135"},{"ruleId":"45357","severity":2,"message":"45358","line":375,"column":37,"nodeType":"45359","messageId":"45360","endLine":375,"endColumn":40,"suggestions":"48136"},{"ruleId":"45357","severity":2,"message":"45358","line":389,"column":39,"nodeType":"45359","messageId":"45360","endLine":389,"endColumn":42,"suggestions":"48137"},{"ruleId":"45357","severity":2,"message":"45358","line":400,"column":18,"nodeType":"45359","messageId":"45360","endLine":400,"endColumn":21,"suggestions":"48138"},{"ruleId":"45357","severity":2,"message":"45358","line":403,"column":18,"nodeType":"45359","messageId":"45360","endLine":403,"endColumn":21,"suggestions":"48139"},{"ruleId":"45357","severity":2,"message":"45358","line":420,"column":51,"nodeType":"45359","messageId":"45360","endLine":420,"endColumn":54,"suggestions":"48140"},{"ruleId":"45357","severity":2,"message":"45358","line":429,"column":18,"nodeType":"45359","messageId":"45360","endLine":429,"endColumn":21,"suggestions":"48141"},{"ruleId":"45357","severity":2,"message":"45358","line":432,"column":18,"nodeType":"45359","messageId":"45360","endLine":432,"endColumn":21,"suggestions":"48142"},{"ruleId":"45357","severity":2,"message":"45358","line":440,"column":51,"nodeType":"45359","messageId":"45360","endLine":440,"endColumn":54,"suggestions":"48143"},{"ruleId":"45357","severity":2,"message":"45358","line":447,"column":18,"nodeType":"45359","messageId":"45360","endLine":447,"endColumn":21,"suggestions":"48144"},{"ruleId":"45357","severity":2,"message":"45358","line":450,"column":18,"nodeType":"45359","messageId":"45360","endLine":450,"endColumn":21,"suggestions":"48145"},{"ruleId":"45357","severity":2,"message":"45358","line":458,"column":51,"nodeType":"45359","messageId":"45360","endLine":458,"endColumn":54,"suggestions":"48146"},{"ruleId":"45357","severity":2,"message":"45358","line":465,"column":18,"nodeType":"45359","messageId":"45360","endLine":465,"endColumn":21,"suggestions":"48147"},{"ruleId":"45357","severity":2,"message":"45358","line":469,"column":18,"nodeType":"45359","messageId":"45360","endLine":469,"endColumn":21,"suggestions":"48148"},{"ruleId":"45357","severity":2,"message":"45358","line":476,"column":37,"nodeType":"45359","messageId":"45360","endLine":476,"endColumn":40,"suggestions":"48149"},{"ruleId":"45357","severity":2,"message":"45358","line":478,"column":18,"nodeType":"45359","messageId":"45360","endLine":478,"endColumn":21,"suggestions":"48150"},{"ruleId":"45357","severity":2,"message":"45358","line":485,"column":37,"nodeType":"45359","messageId":"45360","endLine":485,"endColumn":40,"suggestions":"48151"},{"ruleId":"45357","severity":2,"message":"45358","line":13,"column":17,"nodeType":"45359","messageId":"45360","endLine":13,"endColumn":20,"suggestions":"48152"},{"ruleId":"45357","severity":2,"message":"45358","line":15,"column":34,"nodeType":"45359","messageId":"45360","endLine":15,"endColumn":37,"suggestions":"48153"},{"ruleId":"45357","severity":2,"message":"45358","line":15,"column":48,"nodeType":"45359","messageId":"45360","endLine":15,"endColumn":51,"suggestions":"48154"},{"ruleId":"45357","severity":2,"message":"45358","line":38,"column":39,"nodeType":"45359","messageId":"45360","endLine":38,"endColumn":42,"suggestions":"48155"},{"ruleId":"45357","severity":2,"message":"45358","line":73,"column":48,"nodeType":"45359","messageId":"45360","endLine":73,"endColumn":51,"suggestions":"48156"},{"ruleId":"45357","severity":2,"message":"45358","line":96,"column":48,"nodeType":"45359","messageId":"45360","endLine":96,"endColumn":51,"suggestions":"48157"},{"ruleId":"45357","severity":2,"message":"45358","line":43,"column":43,"nodeType":"45359","messageId":"45360","endLine":43,"endColumn":46,"suggestions":"48158"},{"ruleId":"45357","severity":2,"message":"45358","line":57,"column":43,"nodeType":"45359","messageId":"45360","endLine":57,"endColumn":46,"suggestions":"48159"},{"ruleId":"45357","severity":2,"message":"45358","line":78,"column":65,"nodeType":"45359","messageId":"45360","endLine":78,"endColumn":68,"suggestions":"48160"},{"ruleId":"45357","severity":2,"message":"45358","line":79,"column":59,"nodeType":"45359","messageId":"45360","endLine":79,"endColumn":62,"suggestions":"48161"},{"ruleId":"45357","severity":2,"message":"45358","line":94,"column":43,"nodeType":"45359","messageId":"45360","endLine":94,"endColumn":46,"suggestions":"48162"},{"ruleId":"45357","severity":2,"message":"45358","line":109,"column":43,"nodeType":"45359","messageId":"45360","endLine":109,"endColumn":46,"suggestions":"48163"},{"ruleId":"45357","severity":2,"message":"45358","line":65,"column":43,"nodeType":"45359","messageId":"45360","endLine":65,"endColumn":46,"suggestions":"48164"},{"ruleId":"45357","severity":2,"message":"45358","line":81,"column":45,"nodeType":"45359","messageId":"45360","endLine":81,"endColumn":48,"suggestions":"48165"},{"ruleId":"45357","severity":2,"message":"45358","line":101,"column":43,"nodeType":"45359","messageId":"45360","endLine":101,"endColumn":46,"suggestions":"48166"},{"ruleId":"45357","severity":2,"message":"45358","line":116,"column":43,"nodeType":"45359","messageId":"45360","endLine":116,"endColumn":46,"suggestions":"48167"},{"ruleId":"45357","severity":2,"message":"45358","line":35,"column":60,"nodeType":"45359","messageId":"45360","endLine":35,"endColumn":63,"suggestions":"48168"},{"ruleId":"45357","severity":2,"message":"45358","line":35,"column":79,"nodeType":"45359","messageId":"45360","endLine":35,"endColumn":82,"suggestions":"48169"},{"ruleId":"45357","severity":2,"message":"45358","line":155,"column":20,"nodeType":"45359","messageId":"45360","endLine":155,"endColumn":23,"suggestions":"48170"},{"ruleId":"45357","severity":2,"message":"45358","line":188,"column":10,"nodeType":"45359","messageId":"45360","endLine":188,"endColumn":13,"suggestions":"48171"},{"ruleId":"45357","severity":2,"message":"45358","line":94,"column":45,"nodeType":"45359","messageId":"45360","endLine":94,"endColumn":48,"suggestions":"48172"},{"ruleId":"45357","severity":2,"message":"45358","line":139,"column":45,"nodeType":"45359","messageId":"45360","endLine":139,"endColumn":48,"suggestions":"48173"},{"ruleId":"45357","severity":2,"message":"45358","line":171,"column":43,"nodeType":"45359","messageId":"45360","endLine":171,"endColumn":46,"suggestions":"48174"},{"ruleId":"45357","severity":2,"message":"45358","line":219,"column":43,"nodeType":"45359","messageId":"45360","endLine":219,"endColumn":46,"suggestions":"48175"},{"ruleId":"45357","severity":2,"message":"45358","line":256,"column":43,"nodeType":"45359","messageId":"45360","endLine":256,"endColumn":46,"suggestions":"48176"},{"ruleId":"45357","severity":2,"message":"45358","line":295,"column":43,"nodeType":"45359","messageId":"45360","endLine":295,"endColumn":46,"suggestions":"48177"},{"ruleId":"45357","severity":2,"message":"45358","line":340,"column":43,"nodeType":"45359","messageId":"45360","endLine":340,"endColumn":46,"suggestions":"48178"},{"ruleId":"45357","severity":2,"message":"45358","line":396,"column":43,"nodeType":"45359","messageId":"45360","endLine":396,"endColumn":46,"suggestions":"48179"},{"ruleId":"45357","severity":2,"message":"45358","line":457,"column":43,"nodeType":"45359","messageId":"45360","endLine":457,"endColumn":46,"suggestions":"48180"},{"ruleId":"45357","severity":2,"message":"45358","line":506,"column":43,"nodeType":"45359","messageId":"45360","endLine":506,"endColumn":46,"suggestions":"48181"},{"ruleId":"45357","severity":2,"message":"45358","line":578,"column":43,"nodeType":"45359","messageId":"45360","endLine":578,"endColumn":46,"suggestions":"48182"},{"ruleId":"45357","severity":2,"message":"45358","line":642,"column":43,"nodeType":"45359","messageId":"45360","endLine":642,"endColumn":46,"suggestions":"48183"},{"ruleId":"45357","severity":2,"message":"45358","line":721,"column":43,"nodeType":"45359","messageId":"45360","endLine":721,"endColumn":46,"suggestions":"48184"},{"ruleId":"45357","severity":2,"message":"45358","line":802,"column":43,"nodeType":"45359","messageId":"45360","endLine":802,"endColumn":46,"suggestions":"48185"},{"ruleId":"45357","severity":2,"message":"45358","line":854,"column":43,"nodeType":"45359","messageId":"45360","endLine":854,"endColumn":46,"suggestions":"48186"},{"ruleId":"45357","severity":2,"message":"45358","line":919,"column":43,"nodeType":"45359","messageId":"45360","endLine":919,"endColumn":46,"suggestions":"48187"},{"ruleId":"45357","severity":2,"message":"45358","line":24,"column":21,"nodeType":"45359","messageId":"45360","endLine":24,"endColumn":24,"suggestions":"48188"},{"ruleId":"45357","severity":2,"message":"45358","line":92,"column":65,"nodeType":"45359","messageId":"45360","endLine":92,"endColumn":68,"suggestions":"48189"},{"ruleId":"45357","severity":2,"message":"45358","line":93,"column":59,"nodeType":"45359","messageId":"45360","endLine":93,"endColumn":62,"suggestions":"48190"},{"ruleId":"45357","severity":2,"message":"45358","line":141,"column":43,"nodeType":"45359","messageId":"45360","endLine":141,"endColumn":46,"suggestions":"48191"},{"ruleId":"45357","severity":2,"message":"45358","line":89,"column":43,"nodeType":"45359","messageId":"45360","endLine":89,"endColumn":46,"suggestions":"48192"},{"ruleId":"45357","severity":2,"message":"45358","line":120,"column":43,"nodeType":"45359","messageId":"45360","endLine":120,"endColumn":46,"suggestions":"48193"},{"ruleId":"45357","severity":2,"message":"45358","line":166,"column":43,"nodeType":"45359","messageId":"45360","endLine":166,"endColumn":46,"suggestions":"48194"},{"ruleId":"45357","severity":2,"message":"45358","line":177,"column":43,"nodeType":"45359","messageId":"45360","endLine":177,"endColumn":46,"suggestions":"48195"},{"ruleId":"45357","severity":2,"message":"45358","line":192,"column":45,"nodeType":"45359","messageId":"45360","endLine":192,"endColumn":48,"suggestions":"48196"},{"ruleId":"45357","severity":2,"message":"45358","line":221,"column":41,"nodeType":"45359","messageId":"45360","endLine":221,"endColumn":44,"suggestions":"48197"},{"ruleId":"45357","severity":2,"message":"45358","line":227,"column":57,"nodeType":"45359","messageId":"45360","endLine":227,"endColumn":60,"suggestions":"48198"},{"ruleId":"45357","severity":2,"message":"45358","line":236,"column":37,"nodeType":"45359","messageId":"45360","endLine":236,"endColumn":40,"suggestions":"48199"},{"ruleId":"45357","severity":2,"message":"45358","line":242,"column":56,"nodeType":"45359","messageId":"45360","endLine":242,"endColumn":59,"suggestions":"48200"},{"ruleId":"45357","severity":2,"message":"45358","line":278,"column":43,"nodeType":"45359","messageId":"45360","endLine":278,"endColumn":46,"suggestions":"48201"},{"ruleId":"45357","severity":2,"message":"45358","line":287,"column":34,"nodeType":"45359","messageId":"45360","endLine":287,"endColumn":37,"suggestions":"48202"},{"ruleId":"45357","severity":2,"message":"45358","line":287,"column":71,"nodeType":"45359","messageId":"45360","endLine":287,"endColumn":74,"suggestions":"48203"},{"ruleId":"45357","severity":2,"message":"45358","line":298,"column":42,"nodeType":"45359","messageId":"45360","endLine":298,"endColumn":45,"suggestions":"48204"},{"ruleId":"45357","severity":2,"message":"45358","line":310,"column":43,"nodeType":"45359","messageId":"45360","endLine":310,"endColumn":46,"suggestions":"48205"},{"ruleId":"45357","severity":2,"message":"45358","line":315,"column":43,"nodeType":"45359","messageId":"45360","endLine":315,"endColumn":46,"suggestions":"48206"},{"ruleId":"45357","severity":2,"message":"45358","line":377,"column":45,"nodeType":"45359","messageId":"45360","endLine":377,"endColumn":48,"suggestions":"48207"},{"ruleId":"45357","severity":2,"message":"45358","line":430,"column":42,"nodeType":"45359","messageId":"45360","endLine":430,"endColumn":45,"suggestions":"48208"},{"ruleId":"45357","severity":2,"message":"45358","line":435,"column":45,"nodeType":"45359","messageId":"45360","endLine":435,"endColumn":48,"suggestions":"48209"},{"ruleId":"45357","severity":2,"message":"45358","line":457,"column":43,"nodeType":"45359","messageId":"45360","endLine":457,"endColumn":46,"suggestions":"48210"},{"ruleId":"45357","severity":2,"message":"45358","line":508,"column":45,"nodeType":"45359","messageId":"45360","endLine":508,"endColumn":48,"suggestions":"48211"},{"ruleId":"45357","severity":2,"message":"45358","line":559,"column":45,"nodeType":"45359","messageId":"45360","endLine":559,"endColumn":48,"suggestions":"48212"},{"ruleId":"45357","severity":2,"message":"45358","line":582,"column":43,"nodeType":"45359","messageId":"45360","endLine":582,"endColumn":46,"suggestions":"48213"},{"ruleId":"45357","severity":2,"message":"45358","line":603,"column":43,"nodeType":"45359","messageId":"45360","endLine":603,"endColumn":46,"suggestions":"48214"},{"ruleId":"45357","severity":2,"message":"45358","line":630,"column":43,"nodeType":"45359","messageId":"45360","endLine":630,"endColumn":46,"suggestions":"48215"},{"ruleId":"45357","severity":2,"message":"45358","line":663,"column":43,"nodeType":"45359","messageId":"45360","endLine":663,"endColumn":46,"suggestions":"48216"},{"ruleId":"45357","severity":2,"message":"45358","line":692,"column":43,"nodeType":"45359","messageId":"45360","endLine":692,"endColumn":46,"suggestions":"48217"},{"ruleId":"45357","severity":2,"message":"45358","line":739,"column":43,"nodeType":"45359","messageId":"45360","endLine":739,"endColumn":46,"suggestions":"48218"},{"ruleId":"45357","severity":2,"message":"45358","line":754,"column":17,"nodeType":"45359","messageId":"45360","endLine":754,"endColumn":20,"suggestions":"48219"},{"ruleId":"45357","severity":2,"message":"45358","line":755,"column":20,"nodeType":"45359","messageId":"45360","endLine":755,"endColumn":23,"suggestions":"48220"},{"ruleId":"45357","severity":2,"message":"45358","line":784,"column":43,"nodeType":"45359","messageId":"45360","endLine":784,"endColumn":46,"suggestions":"48221"},{"ruleId":"45357","severity":2,"message":"45358","line":804,"column":85,"nodeType":"45359","messageId":"45360","endLine":804,"endColumn":88,"suggestions":"48222"},{"ruleId":"45357","severity":2,"message":"45358","line":816,"column":43,"nodeType":"45359","messageId":"45360","endLine":816,"endColumn":46,"suggestions":"48223"},{"ruleId":"45357","severity":2,"message":"45358","line":832,"column":90,"nodeType":"45359","messageId":"45360","endLine":832,"endColumn":93,"suggestions":"48224"},{"ruleId":"45357","severity":2,"message":"45358","line":845,"column":43,"nodeType":"45359","messageId":"45360","endLine":845,"endColumn":46,"suggestions":"48225"},{"ruleId":"45357","severity":2,"message":"45358","line":902,"column":22,"nodeType":"45359","messageId":"45360","endLine":902,"endColumn":25,"suggestions":"48226"},{"ruleId":"45357","severity":2,"message":"45358","line":916,"column":22,"nodeType":"45359","messageId":"45360","endLine":916,"endColumn":25,"suggestions":"48227"},{"ruleId":"45357","severity":2,"message":"45358","line":928,"column":91,"nodeType":"45359","messageId":"45360","endLine":928,"endColumn":94,"suggestions":"48228"},{"ruleId":"45357","severity":2,"message":"45358","line":955,"column":45,"nodeType":"45359","messageId":"45360","endLine":955,"endColumn":48,"suggestions":"48229"},{"ruleId":"45357","severity":2,"message":"45358","line":964,"column":37,"nodeType":"45359","messageId":"45360","endLine":964,"endColumn":40,"suggestions":"48230"},{"ruleId":"45357","severity":2,"message":"45358","line":987,"column":43,"nodeType":"45359","messageId":"45360","endLine":987,"endColumn":46,"suggestions":"48231"},{"ruleId":"45357","severity":2,"message":"45358","line":991,"column":51,"nodeType":"45359","messageId":"45360","endLine":991,"endColumn":54,"suggestions":"48232"},{"ruleId":"45357","severity":2,"message":"45358","line":992,"column":49,"nodeType":"45359","messageId":"45360","endLine":992,"endColumn":52,"suggestions":"48233"},{"ruleId":"45357","severity":2,"message":"45358","line":993,"column":49,"nodeType":"45359","messageId":"45360","endLine":993,"endColumn":52,"suggestions":"48234"},{"ruleId":"45357","severity":2,"message":"45358","line":994,"column":62,"nodeType":"45359","messageId":"45360","endLine":994,"endColumn":65,"suggestions":"48235"},{"ruleId":"45357","severity":2,"message":"45358","line":995,"column":51,"nodeType":"45359","messageId":"45360","endLine":995,"endColumn":54,"suggestions":"48236"},{"ruleId":"45357","severity":2,"message":"45358","line":996,"column":52,"nodeType":"45359","messageId":"45360","endLine":996,"endColumn":55,"suggestions":"48237"},{"ruleId":"45357","severity":2,"message":"45358","line":997,"column":58,"nodeType":"45359","messageId":"45360","endLine":997,"endColumn":61,"suggestions":"48238"},{"ruleId":"45357","severity":2,"message":"45358","line":1006,"column":86,"nodeType":"45359","messageId":"45360","endLine":1006,"endColumn":89,"suggestions":"48239"},{"ruleId":"45357","severity":2,"message":"45358","line":1026,"column":43,"nodeType":"45359","messageId":"45360","endLine":1026,"endColumn":46,"suggestions":"48240"},{"ruleId":"45357","severity":2,"message":"45358","line":1074,"column":43,"nodeType":"45359","messageId":"45360","endLine":1074,"endColumn":46,"suggestions":"48241"},{"ruleId":"45357","severity":2,"message":"45358","line":1104,"column":43,"nodeType":"45359","messageId":"45360","endLine":1104,"endColumn":46,"suggestions":"48242"},{"ruleId":"45357","severity":2,"message":"45358","line":1108,"column":29,"nodeType":"45359","messageId":"45360","endLine":1108,"endColumn":32,"suggestions":"48243"},{"ruleId":"45357","severity":2,"message":"45358","line":1109,"column":14,"nodeType":"45359","messageId":"45360","endLine":1109,"endColumn":17,"suggestions":"48244"},{"ruleId":"45357","severity":2,"message":"45358","line":1109,"column":56,"nodeType":"45359","messageId":"45360","endLine":1109,"endColumn":59,"suggestions":"48245"},{"ruleId":"45357","severity":2,"message":"45358","line":1110,"column":14,"nodeType":"45359","messageId":"45360","endLine":1110,"endColumn":17,"suggestions":"48246"},{"ruleId":"45357","severity":2,"message":"45358","line":1110,"column":52,"nodeType":"45359","messageId":"45360","endLine":1110,"endColumn":55,"suggestions":"48247"},{"ruleId":"45357","severity":2,"message":"45358","line":1111,"column":40,"nodeType":"45359","messageId":"45360","endLine":1111,"endColumn":43,"suggestions":"48248"},{"ruleId":"45357","severity":2,"message":"45358","line":1112,"column":14,"nodeType":"45359","messageId":"45360","endLine":1112,"endColumn":17,"suggestions":"48249"},{"ruleId":"45357","severity":2,"message":"45358","line":1112,"column":65,"nodeType":"45359","messageId":"45360","endLine":1112,"endColumn":68,"suggestions":"48250"},{"ruleId":"45357","severity":2,"message":"45358","line":1113,"column":56,"nodeType":"45359","messageId":"45360","endLine":1113,"endColumn":59,"suggestions":"48251"},{"ruleId":"45357","severity":2,"message":"45358","line":1138,"column":45,"nodeType":"45359","messageId":"45360","endLine":1138,"endColumn":48,"suggestions":"48252"},{"ruleId":"45357","severity":2,"message":"45358","line":1199,"column":43,"nodeType":"45359","messageId":"45360","endLine":1199,"endColumn":46,"suggestions":"48253"},{"ruleId":"45357","severity":2,"message":"45358","line":1247,"column":45,"nodeType":"45359","messageId":"45360","endLine":1247,"endColumn":48,"suggestions":"48254"},{"ruleId":"45357","severity":2,"message":"45358","line":1266,"column":43,"nodeType":"45359","messageId":"45360","endLine":1266,"endColumn":46,"suggestions":"48255"},{"ruleId":"45357","severity":2,"message":"45358","line":1320,"column":45,"nodeType":"45359","messageId":"45360","endLine":1320,"endColumn":48,"suggestions":"48256"},{"ruleId":"45357","severity":2,"message":"45358","line":1369,"column":45,"nodeType":"45359","messageId":"45360","endLine":1369,"endColumn":48,"suggestions":"48257"},{"ruleId":"45357","severity":2,"message":"45358","line":1397,"column":43,"nodeType":"45359","messageId":"45360","endLine":1397,"endColumn":46,"suggestions":"48258"},{"ruleId":"45357","severity":2,"message":"45358","line":1434,"column":43,"nodeType":"45359","messageId":"45360","endLine":1434,"endColumn":46,"suggestions":"48259"},{"ruleId":"45357","severity":2,"message":"45358","line":1464,"column":43,"nodeType":"45359","messageId":"45360","endLine":1464,"endColumn":46,"suggestions":"48260"},{"ruleId":"45357","severity":2,"message":"45358","line":1488,"column":43,"nodeType":"45359","messageId":"45360","endLine":1488,"endColumn":46,"suggestions":"48261"},{"ruleId":"45357","severity":2,"message":"45358","line":1515,"column":90,"nodeType":"45359","messageId":"45360","endLine":1515,"endColumn":93,"suggestions":"48262"},{"ruleId":"45357","severity":2,"message":"45358","line":1527,"column":43,"nodeType":"45359","messageId":"45360","endLine":1527,"endColumn":46,"suggestions":"48263"},{"ruleId":"45357","severity":2,"message":"45358","line":1546,"column":40,"nodeType":"45359","messageId":"45360","endLine":1546,"endColumn":43,"suggestions":"48264"},{"ruleId":"45357","severity":2,"message":"45358","line":1551,"column":43,"nodeType":"45359","messageId":"45360","endLine":1551,"endColumn":46,"suggestions":"48265"},{"ruleId":"45357","severity":2,"message":"45358","line":1579,"column":43,"nodeType":"45359","messageId":"45360","endLine":1579,"endColumn":46,"suggestions":"48266"},{"ruleId":"45357","severity":2,"message":"45358","line":1598,"column":43,"nodeType":"45359","messageId":"45360","endLine":1598,"endColumn":46,"suggestions":"48267"},{"ruleId":"45357","severity":2,"message":"45358","line":1599,"column":46,"nodeType":"45359","messageId":"45360","endLine":1599,"endColumn":49,"suggestions":"48268"},{"ruleId":"45357","severity":2,"message":"45358","line":1621,"column":43,"nodeType":"45359","messageId":"45360","endLine":1621,"endColumn":46,"suggestions":"48269"},{"ruleId":"45357","severity":2,"message":"45358","line":1622,"column":46,"nodeType":"45359","messageId":"45360","endLine":1622,"endColumn":49,"suggestions":"48270"},{"ruleId":"45357","severity":2,"message":"45358","line":133,"column":24,"nodeType":"45359","messageId":"45360","endLine":133,"endColumn":27,"suggestions":"48271"},{"ruleId":"45357","severity":2,"message":"45358","line":134,"column":15,"nodeType":"45359","messageId":"45360","endLine":134,"endColumn":18,"suggestions":"48272"},{"ruleId":"45357","severity":2,"message":"45358","line":35,"column":17,"nodeType":"45359","messageId":"45360","endLine":35,"endColumn":20,"suggestions":"48273"},{"ruleId":"45357","severity":2,"message":"45358","line":36,"column":34,"nodeType":"45359","messageId":"45360","endLine":36,"endColumn":37,"suggestions":"48274"},{"ruleId":"45357","severity":2,"message":"45358","line":36,"column":48,"nodeType":"45359","messageId":"45360","endLine":36,"endColumn":51,"suggestions":"48275"},{"ruleId":"45357","severity":2,"message":"45358","line":56,"column":46,"nodeType":"45359","messageId":"45360","endLine":56,"endColumn":49,"suggestions":"48276"},{"ruleId":"45357","severity":2,"message":"45358","line":67,"column":46,"nodeType":"45359","messageId":"45360","endLine":67,"endColumn":49,"suggestions":"48277"},{"ruleId":"45357","severity":2,"message":"45358","line":78,"column":46,"nodeType":"45359","messageId":"45360","endLine":78,"endColumn":49,"suggestions":"48278"},{"ruleId":"45357","severity":2,"message":"45358","line":148,"column":46,"nodeType":"45359","messageId":"45360","endLine":148,"endColumn":49,"suggestions":"48279"},{"ruleId":"45357","severity":2,"message":"45358","line":88,"column":49,"nodeType":"45359","messageId":"45360","endLine":88,"endColumn":52,"suggestions":"48280"},{"ruleId":"45357","severity":2,"message":"45358","line":96,"column":47,"nodeType":"45359","messageId":"45360","endLine":96,"endColumn":50,"suggestions":"48281"},{"ruleId":"45357","severity":2,"message":"45358","line":216,"column":17,"nodeType":"45359","messageId":"45360","endLine":216,"endColumn":20,"suggestions":"48282"},{"ruleId":"45357","severity":2,"message":"45358","line":226,"column":38,"nodeType":"45359","messageId":"45360","endLine":226,"endColumn":41,"suggestions":"48283"},{"ruleId":"45357","severity":2,"message":"45358","line":229,"column":18,"nodeType":"45359","messageId":"45360","endLine":229,"endColumn":21,"suggestions":"48284"},{"ruleId":"45357","severity":2,"message":"45358","line":48,"column":61,"nodeType":"45359","messageId":"45360","endLine":48,"endColumn":64,"suggestions":"48285"},{"ruleId":"45357","severity":2,"message":"45358","line":110,"column":16,"nodeType":"45359","messageId":"45360","endLine":110,"endColumn":19,"suggestions":"48286"},{"ruleId":"45357","severity":2,"message":"45358","line":551,"column":18,"nodeType":"45359","messageId":"45360","endLine":551,"endColumn":21,"suggestions":"48287"},{"ruleId":"45357","severity":2,"message":"45358","line":569,"column":18,"nodeType":"45359","messageId":"45360","endLine":569,"endColumn":21,"suggestions":"48288"},{"ruleId":"45357","severity":2,"message":"45358","line":156,"column":22,"nodeType":"45359","messageId":"45360","endLine":156,"endColumn":25,"suggestions":"48289"},{"ruleId":"45357","severity":2,"message":"45358","line":81,"column":43,"nodeType":"45359","messageId":"45360","endLine":81,"endColumn":46,"suggestions":"48290"},{"ruleId":"45357","severity":2,"message":"45358","line":102,"column":46,"nodeType":"45359","messageId":"45360","endLine":102,"endColumn":49,"suggestions":"48291"},{"ruleId":"45357","severity":2,"message":"45358","line":113,"column":46,"nodeType":"45359","messageId":"45360","endLine":113,"endColumn":49,"suggestions":"48292"},{"ruleId":"45357","severity":2,"message":"45358","line":124,"column":46,"nodeType":"45359","messageId":"45360","endLine":124,"endColumn":49,"suggestions":"48293"},{"ruleId":"45357","severity":2,"message":"45358","line":131,"column":17,"nodeType":"45359","messageId":"45360","endLine":131,"endColumn":20,"suggestions":"48294"},{"ruleId":"45357","severity":2,"message":"45358","line":132,"column":34,"nodeType":"45359","messageId":"45360","endLine":132,"endColumn":37,"suggestions":"48295"},{"ruleId":"45357","severity":2,"message":"45358","line":132,"column":48,"nodeType":"45359","messageId":"45360","endLine":132,"endColumn":51,"suggestions":"48296"},{"ruleId":"45357","severity":2,"message":"45358","line":183,"column":46,"nodeType":"45359","messageId":"45360","endLine":183,"endColumn":49,"suggestions":"48297"},{"ruleId":"45357","severity":2,"message":"45358","line":22,"column":9,"nodeType":"45359","messageId":"45360","endLine":22,"endColumn":12,"suggestions":"48298"},{"ruleId":"45357","severity":2,"message":"45358","line":44,"column":9,"nodeType":"45359","messageId":"45360","endLine":44,"endColumn":12,"suggestions":"48299"},{"ruleId":"45357","severity":2,"message":"45358","line":68,"column":9,"nodeType":"45359","messageId":"45360","endLine":68,"endColumn":12,"suggestions":"48300"},{"ruleId":"45357","severity":2,"message":"45358","line":92,"column":9,"nodeType":"45359","messageId":"45360","endLine":92,"endColumn":12,"suggestions":"48301"},{"ruleId":"45357","severity":2,"message":"45358","line":53,"column":14,"nodeType":"45359","messageId":"45360","endLine":53,"endColumn":17,"suggestions":"48302"},{"ruleId":"45357","severity":2,"message":"45358","line":13,"column":12,"nodeType":"45359","messageId":"45360","endLine":13,"endColumn":15,"suggestions":"48303"},{"ruleId":"45357","severity":2,"message":"45358","line":14,"column":29,"nodeType":"45359","messageId":"45360","endLine":14,"endColumn":32,"suggestions":"48304"},{"ruleId":"45357","severity":2,"message":"45358","line":19,"column":75,"nodeType":"45359","messageId":"45360","endLine":19,"endColumn":78,"suggestions":"48305"},{"ruleId":"45357","severity":2,"message":"45358","line":40,"column":75,"nodeType":"45359","messageId":"45360","endLine":40,"endColumn":78,"suggestions":"48306"},{"ruleId":"45357","severity":2,"message":"45358","line":68,"column":15,"nodeType":"45359","messageId":"45360","endLine":68,"endColumn":18,"suggestions":"48307"},{"ruleId":"45357","severity":2,"message":"45358","line":69,"column":20,"nodeType":"45359","messageId":"45360","endLine":69,"endColumn":23,"suggestions":"48308"},{"ruleId":"45357","severity":2,"message":"45358","line":70,"column":80,"nodeType":"45359","messageId":"45360","endLine":70,"endColumn":83,"suggestions":"48309"},{"ruleId":"45357","severity":2,"message":"45358","line":72,"column":75,"nodeType":"45359","messageId":"45360","endLine":72,"endColumn":78,"suggestions":"48310"},{"ruleId":"45357","severity":2,"message":"45358","line":10,"column":46,"nodeType":"45359","messageId":"45360","endLine":10,"endColumn":49,"suggestions":"48311"},{"ruleId":"45357","severity":2,"message":"45358","line":90,"column":11,"nodeType":"45359","messageId":"45360","endLine":90,"endColumn":14,"suggestions":"48312"},{"ruleId":"45357","severity":2,"message":"45358","line":92,"column":43,"nodeType":"45359","messageId":"45360","endLine":92,"endColumn":46,"suggestions":"48313"},{"ruleId":"45357","severity":2,"message":"45358","line":113,"column":10,"nodeType":"45359","messageId":"45360","endLine":113,"endColumn":13,"suggestions":"48314"},{"ruleId":"45357","severity":2,"message":"45358","line":115,"column":43,"nodeType":"45359","messageId":"45360","endLine":115,"endColumn":46,"suggestions":"48315"},{"ruleId":"45357","severity":2,"message":"45358","line":148,"column":10,"nodeType":"45359","messageId":"45360","endLine":148,"endColumn":13,"suggestions":"48316"},{"ruleId":"45357","severity":2,"message":"45358","line":150,"column":43,"nodeType":"45359","messageId":"45360","endLine":150,"endColumn":46,"suggestions":"48317"},{"ruleId":"45357","severity":2,"message":"45358","line":50,"column":11,"nodeType":"45359","messageId":"45360","endLine":50,"endColumn":14,"suggestions":"48318"},{"ruleId":"45357","severity":2,"message":"45358","line":72,"column":8,"nodeType":"45359","messageId":"45360","endLine":72,"endColumn":11,"suggestions":"48319"},{"ruleId":"45357","severity":2,"message":"45358","line":91,"column":39,"nodeType":"45359","messageId":"45360","endLine":91,"endColumn":42,"suggestions":"48320"},{"ruleId":"45357","severity":2,"message":"45358","line":128,"column":35,"nodeType":"45359","messageId":"45360","endLine":128,"endColumn":38,"suggestions":"48321"},{"ruleId":"45357","severity":2,"message":"45358","line":157,"column":35,"nodeType":"45359","messageId":"45360","endLine":157,"endColumn":38,"suggestions":"48322"},{"ruleId":"45357","severity":2,"message":"45358","line":194,"column":22,"nodeType":"45359","messageId":"45360","endLine":194,"endColumn":25,"suggestions":"48323"},{"ruleId":"45357","severity":2,"message":"45358","line":226,"column":26,"nodeType":"45359","messageId":"45360","endLine":226,"endColumn":29,"suggestions":"48324"},{"ruleId":"45357","severity":2,"message":"45358","line":212,"column":26,"nodeType":"45359","messageId":"45360","endLine":212,"endColumn":29,"suggestions":"48325"},{"ruleId":"45357","severity":2,"message":"45358","line":66,"column":47,"nodeType":"45359","messageId":"45360","endLine":66,"endColumn":50,"suggestions":"48326"},{"ruleId":"45357","severity":2,"message":"45358","line":108,"column":43,"nodeType":"45359","messageId":"45360","endLine":108,"endColumn":46,"suggestions":"48327"},{"ruleId":"45357","severity":2,"message":"45358","line":110,"column":42,"nodeType":"45359","messageId":"45360","endLine":110,"endColumn":45,"suggestions":"48328"},{"ruleId":"45357","severity":2,"message":"45358","line":117,"column":40,"nodeType":"45359","messageId":"45360","endLine":117,"endColumn":43,"suggestions":"48329"},{"ruleId":"45357","severity":2,"message":"45358","line":21,"column":35,"nodeType":"45359","messageId":"45360","endLine":21,"endColumn":38,"suggestions":"48330"},{"ruleId":"45357","severity":2,"message":"45358","line":38,"column":35,"nodeType":"45359","messageId":"45360","endLine":38,"endColumn":38,"suggestions":"48331"},{"ruleId":"45357","severity":2,"message":"45358","line":59,"column":30,"nodeType":"45359","messageId":"45360","endLine":59,"endColumn":33,"suggestions":"48332"},{"ruleId":"45357","severity":2,"message":"45358","line":77,"column":30,"nodeType":"45359","messageId":"45360","endLine":77,"endColumn":33,"suggestions":"48333"},{"ruleId":"45357","severity":2,"message":"45358","line":62,"column":43,"nodeType":"45359","messageId":"45360","endLine":62,"endColumn":46,"suggestions":"48334"},{"ruleId":"45357","severity":2,"message":"45358","line":88,"column":65,"nodeType":"45359","messageId":"45360","endLine":88,"endColumn":68,"suggestions":"48335"},{"ruleId":"45357","severity":2,"message":"45358","line":89,"column":59,"nodeType":"45359","messageId":"45360","endLine":89,"endColumn":62,"suggestions":"48336"},{"ruleId":"45357","severity":2,"message":"45358","line":90,"column":61,"nodeType":"45359","messageId":"45360","endLine":90,"endColumn":64,"suggestions":"48337"},{"ruleId":"45357","severity":2,"message":"45358","line":143,"column":43,"nodeType":"45359","messageId":"45360","endLine":143,"endColumn":46,"suggestions":"48338"},{"ruleId":"45357","severity":2,"message":"45358","line":175,"column":57,"nodeType":"45359","messageId":"45360","endLine":175,"endColumn":60,"suggestions":"48339"},{"ruleId":"45357","severity":2,"message":"45358","line":176,"column":61,"nodeType":"45359","messageId":"45360","endLine":176,"endColumn":64,"suggestions":"48340"},{"ruleId":"45357","severity":2,"message":"45358","line":74,"column":37,"nodeType":"45359","messageId":"45360","endLine":74,"endColumn":40,"suggestions":"48341"},{"ruleId":"45357","severity":2,"message":"45358","line":77,"column":28,"nodeType":"45359","messageId":"45360","endLine":77,"endColumn":31,"suggestions":"48342"},{"ruleId":"45357","severity":2,"message":"45358","line":94,"column":10,"nodeType":"45359","messageId":"45360","endLine":94,"endColumn":13,"suggestions":"48343"},{"ruleId":"45357","severity":2,"message":"45358","line":142,"column":10,"nodeType":"45359","messageId":"45360","endLine":142,"endColumn":13,"suggestions":"48344"},{"ruleId":"45357","severity":2,"message":"45358","line":58,"column":19,"nodeType":"45359","messageId":"45360","endLine":58,"endColumn":22,"suggestions":"48345"},{"ruleId":"45357","severity":2,"message":"45358","line":88,"column":22,"nodeType":"45359","messageId":"45360","endLine":88,"endColumn":25,"suggestions":"48346"},{"ruleId":"45357","severity":2,"message":"45358","line":93,"column":32,"nodeType":"45359","messageId":"45360","endLine":93,"endColumn":35,"suggestions":"48347"},{"ruleId":"45357","severity":2,"message":"45358","line":93,"column":60,"nodeType":"45359","messageId":"45360","endLine":93,"endColumn":63,"suggestions":"48348"},{"ruleId":"45357","severity":2,"message":"45358","line":124,"column":46,"nodeType":"45359","messageId":"45360","endLine":124,"endColumn":49,"suggestions":"48349"},{"ruleId":"45357","severity":2,"message":"45358","line":131,"column":27,"nodeType":"45359","messageId":"45360","endLine":131,"endColumn":30,"suggestions":"48350"},{"ruleId":"45357","severity":2,"message":"45358","line":132,"column":24,"nodeType":"45359","messageId":"45360","endLine":132,"endColumn":27,"suggestions":"48351"},{"ruleId":"45357","severity":2,"message":"45358","line":76,"column":25,"nodeType":"45359","messageId":"45360","endLine":76,"endColumn":28,"suggestions":"48352"},{"ruleId":"45357","severity":2,"message":"45358","line":77,"column":25,"nodeType":"45359","messageId":"45360","endLine":77,"endColumn":28,"suggestions":"48353"},{"ruleId":"45357","severity":2,"message":"45358","line":78,"column":36,"nodeType":"45359","messageId":"45360","endLine":78,"endColumn":39,"suggestions":"48354"},{"ruleId":"45357","severity":2,"message":"45358","line":79,"column":22,"nodeType":"45359","messageId":"45360","endLine":79,"endColumn":25,"suggestions":"48355"},{"ruleId":"45357","severity":2,"message":"45358","line":104,"column":28,"nodeType":"45359","messageId":"45360","endLine":104,"endColumn":31,"suggestions":"48356"},{"ruleId":"45357","severity":2,"message":"45358","line":105,"column":28,"nodeType":"45359","messageId":"45360","endLine":105,"endColumn":31,"suggestions":"48357"},{"ruleId":"45357","severity":2,"message":"45358","line":114,"column":32,"nodeType":"45359","messageId":"45360","endLine":114,"endColumn":35,"suggestions":"48358"},{"ruleId":"45357","severity":2,"message":"45358","line":406,"column":31,"nodeType":"45359","messageId":"45360","endLine":406,"endColumn":34,"suggestions":"48359"},{"ruleId":"45357","severity":2,"message":"45358","line":407,"column":31,"nodeType":"45359","messageId":"45360","endLine":407,"endColumn":34,"suggestions":"48360"},{"ruleId":"45357","severity":2,"message":"45358","line":408,"column":14,"nodeType":"45359","messageId":"45360","endLine":408,"endColumn":17,"suggestions":"48361"},{"ruleId":"45357","severity":2,"message":"45358","line":408,"column":40,"nodeType":"45359","messageId":"45360","endLine":408,"endColumn":43,"suggestions":"48362"},{"ruleId":"45357","severity":2,"message":"45358","line":409,"column":14,"nodeType":"45359","messageId":"45360","endLine":409,"endColumn":17,"suggestions":"48363"},{"ruleId":"45357","severity":2,"message":"45358","line":410,"column":20,"nodeType":"45359","messageId":"45360","endLine":410,"endColumn":23,"suggestions":"48364"},{"ruleId":"45357","severity":2,"message":"45358","line":413,"column":31,"nodeType":"45359","messageId":"45360","endLine":413,"endColumn":34,"suggestions":"48365"},{"ruleId":"45357","severity":2,"message":"45358","line":414,"column":32,"nodeType":"45359","messageId":"45360","endLine":414,"endColumn":35,"suggestions":"48366"},{"ruleId":"45357","severity":2,"message":"45358","line":414,"column":70,"nodeType":"45359","messageId":"45360","endLine":414,"endColumn":73,"suggestions":"48367"},{"ruleId":"45357","severity":2,"message":"45358","line":415,"column":32,"nodeType":"45359","messageId":"45360","endLine":415,"endColumn":35,"suggestions":"48368"},{"ruleId":"45357","severity":2,"message":"45358","line":415,"column":46,"nodeType":"45359","messageId":"45360","endLine":415,"endColumn":49,"suggestions":"48369"},{"ruleId":"45357","severity":2,"message":"45358","line":416,"column":31,"nodeType":"45359","messageId":"45360","endLine":416,"endColumn":34,"suggestions":"48370"},{"ruleId":"45357","severity":2,"message":"45358","line":417,"column":31,"nodeType":"45359","messageId":"45360","endLine":417,"endColumn":34,"suggestions":"48371"},{"ruleId":"45357","severity":2,"message":"45358","line":243,"column":63,"nodeType":"45359","messageId":"45360","endLine":243,"endColumn":66,"suggestions":"48372"},{"ruleId":"45357","severity":2,"message":"45358","line":91,"column":47,"nodeType":"45359","messageId":"45360","endLine":91,"endColumn":50,"suggestions":"48373"},{"ruleId":"45357","severity":2,"message":"45358","line":95,"column":47,"nodeType":"45359","messageId":"45360","endLine":95,"endColumn":50,"suggestions":"48374"},{"ruleId":"45357","severity":2,"message":"45358","line":100,"column":34,"nodeType":"45359","messageId":"45360","endLine":100,"endColumn":37,"suggestions":"48375"},{"ruleId":"45357","severity":2,"message":"45358","line":128,"column":47,"nodeType":"45359","messageId":"45360","endLine":128,"endColumn":50,"suggestions":"48376"},{"ruleId":"45357","severity":2,"message":"45358","line":132,"column":47,"nodeType":"45359","messageId":"45360","endLine":132,"endColumn":50,"suggestions":"48377"},{"ruleId":"45357","severity":2,"message":"45358","line":137,"column":34,"nodeType":"45359","messageId":"45360","endLine":137,"endColumn":37,"suggestions":"48378"},{"ruleId":"45357","severity":2,"message":"45358","line":156,"column":48,"nodeType":"45359","messageId":"45360","endLine":156,"endColumn":51,"suggestions":"48379"},{"ruleId":"45357","severity":2,"message":"45358","line":159,"column":48,"nodeType":"45359","messageId":"45360","endLine":159,"endColumn":51,"suggestions":"48380"},{"ruleId":"45357","severity":2,"message":"45358","line":176,"column":45,"nodeType":"45359","messageId":"45360","endLine":176,"endColumn":48,"suggestions":"48381"},{"ruleId":"45357","severity":2,"message":"45358","line":383,"column":32,"nodeType":"45359","messageId":"45360","endLine":383,"endColumn":35,"suggestions":"48382"},{"ruleId":"45357","severity":2,"message":"45358","line":13,"column":15,"nodeType":"45359","messageId":"45360","endLine":13,"endColumn":18,"suggestions":"48383"},{"ruleId":"45357","severity":2,"message":"45358","line":22,"column":15,"nodeType":"45359","messageId":"45360","endLine":22,"endColumn":18,"suggestions":"48384"},{"ruleId":"45357","severity":2,"message":"45358","line":32,"column":15,"nodeType":"45359","messageId":"45360","endLine":32,"endColumn":18,"suggestions":"48385"},{"ruleId":"45357","severity":2,"message":"45358","line":9,"column":75,"nodeType":"45359","messageId":"45360","endLine":9,"endColumn":78,"suggestions":"48386"},{"ruleId":"45357","severity":2,"message":"45358","line":241,"column":48,"nodeType":"45359","messageId":"45360","endLine":241,"endColumn":51,"suggestions":"48387"},{"ruleId":"45357","severity":2,"message":"45358","line":271,"column":48,"nodeType":"45359","messageId":"45360","endLine":271,"endColumn":51,"suggestions":"48388"},{"ruleId":"45357","severity":2,"message":"45358","line":29,"column":25,"nodeType":"45359","messageId":"45360","endLine":29,"endColumn":28,"suggestions":"48389"},{"ruleId":"45357","severity":2,"message":"45358","line":25,"column":21,"nodeType":"45359","messageId":"45360","endLine":25,"endColumn":24,"suggestions":"48390"},{"ruleId":"45357","severity":2,"message":"45358","line":65,"column":77,"nodeType":"45359","messageId":"45360","endLine":65,"endColumn":80,"suggestions":"48391"},{"ruleId":"45357","severity":2,"message":"45358","line":87,"column":61,"nodeType":"45359","messageId":"45360","endLine":87,"endColumn":64,"suggestions":"48392"},{"ruleId":"45357","severity":2,"message":"45358","line":91,"column":77,"nodeType":"45359","messageId":"45360","endLine":91,"endColumn":80,"suggestions":"48393"},{"ruleId":"45357","severity":2,"message":"45358","line":114,"column":61,"nodeType":"45359","messageId":"45360","endLine":114,"endColumn":64,"suggestions":"48394"},{"ruleId":"45357","severity":2,"message":"45358","line":118,"column":77,"nodeType":"45359","messageId":"45360","endLine":118,"endColumn":80,"suggestions":"48395"},{"ruleId":"45357","severity":2,"message":"45358","line":23,"column":21,"nodeType":"45359","messageId":"45360","endLine":23,"endColumn":24,"suggestions":"48396"},{"ruleId":"45357","severity":2,"message":"45358","line":92,"column":39,"nodeType":"45359","messageId":"45360","endLine":92,"endColumn":42,"suggestions":"48397"},{"ruleId":"45357","severity":2,"message":"45358","line":144,"column":39,"nodeType":"45359","messageId":"45360","endLine":144,"endColumn":42,"suggestions":"48398"},{"ruleId":"45357","severity":2,"message":"45358","line":184,"column":39,"nodeType":"45359","messageId":"45360","endLine":184,"endColumn":42,"suggestions":"48399"},{"ruleId":"45357","severity":2,"message":"45358","line":15,"column":67,"nodeType":"45359","messageId":"45360","endLine":15,"endColumn":70,"suggestions":"48400"},{"ruleId":"45357","severity":2,"message":"45358","line":27,"column":66,"nodeType":"45359","messageId":"45360","endLine":27,"endColumn":69,"suggestions":"48401"},{"ruleId":"45357","severity":2,"message":"45358","line":40,"column":56,"nodeType":"45359","messageId":"45360","endLine":40,"endColumn":59,"suggestions":"48402"},{"ruleId":"45357","severity":2,"message":"45358","line":147,"column":43,"nodeType":"45359","messageId":"45360","endLine":147,"endColumn":46,"suggestions":"48403"},{"ruleId":"45357","severity":2,"message":"45358","line":163,"column":43,"nodeType":"45359","messageId":"45360","endLine":163,"endColumn":46,"suggestions":"48404"},{"ruleId":"45357","severity":2,"message":"45358","line":186,"column":43,"nodeType":"45359","messageId":"45360","endLine":186,"endColumn":46,"suggestions":"48405"},{"ruleId":"45357","severity":2,"message":"45358","line":202,"column":43,"nodeType":"45359","messageId":"45360","endLine":202,"endColumn":46,"suggestions":"48406"},{"ruleId":"45357","severity":2,"message":"45358","line":99,"column":43,"nodeType":"45359","messageId":"45360","endLine":99,"endColumn":46,"suggestions":"48407"},{"ruleId":"45357","severity":2,"message":"45358","line":106,"column":35,"nodeType":"45359","messageId":"45360","endLine":106,"endColumn":38,"suggestions":"48408"},{"ruleId":"45357","severity":2,"message":"45358","line":116,"column":43,"nodeType":"45359","messageId":"45360","endLine":116,"endColumn":46,"suggestions":"48409"},{"ruleId":"45357","severity":2,"message":"45358","line":219,"column":43,"nodeType":"45359","messageId":"45360","endLine":219,"endColumn":46,"suggestions":"48410"},{"ruleId":"45357","severity":2,"message":"45358","line":248,"column":43,"nodeType":"45359","messageId":"45360","endLine":248,"endColumn":46,"suggestions":"48411"},{"ruleId":"45357","severity":2,"message":"45358","line":286,"column":43,"nodeType":"45359","messageId":"45360","endLine":286,"endColumn":46,"suggestions":"48412"},{"ruleId":"45357","severity":2,"message":"45358","line":324,"column":43,"nodeType":"45359","messageId":"45360","endLine":324,"endColumn":46,"suggestions":"48413"},{"ruleId":"45357","severity":2,"message":"45358","line":348,"column":43,"nodeType":"45359","messageId":"45360","endLine":348,"endColumn":46,"suggestions":"48414"},{"ruleId":"45357","severity":2,"message":"45358","line":377,"column":43,"nodeType":"45359","messageId":"45360","endLine":377,"endColumn":46,"suggestions":"48415"},{"ruleId":"45357","severity":2,"message":"45358","line":419,"column":43,"nodeType":"45359","messageId":"45360","endLine":419,"endColumn":46,"suggestions":"48416"},{"ruleId":"45357","severity":2,"message":"45358","line":437,"column":43,"nodeType":"45359","messageId":"45360","endLine":437,"endColumn":46,"suggestions":"48417"},{"ruleId":"45357","severity":2,"message":"45358","line":458,"column":43,"nodeType":"45359","messageId":"45360","endLine":458,"endColumn":46,"suggestions":"48418"},{"ruleId":"45357","severity":2,"message":"45358","line":475,"column":43,"nodeType":"45359","messageId":"45360","endLine":475,"endColumn":46,"suggestions":"48419"},{"ruleId":"45357","severity":2,"message":"45358","line":516,"column":59,"nodeType":"45359","messageId":"45360","endLine":516,"endColumn":62,"suggestions":"48420"},{"ruleId":"45357","severity":2,"message":"45358","line":518,"column":59,"nodeType":"45359","messageId":"45360","endLine":518,"endColumn":62,"suggestions":"48421"},{"ruleId":"45357","severity":2,"message":"45358","line":539,"column":43,"nodeType":"45359","messageId":"45360","endLine":539,"endColumn":46,"suggestions":"48422"},{"ruleId":"45357","severity":2,"message":"45358","line":570,"column":43,"nodeType":"45359","messageId":"45360","endLine":570,"endColumn":46,"suggestions":"48423"},{"ruleId":"45357","severity":2,"message":"45358","line":601,"column":55,"nodeType":"45359","messageId":"45360","endLine":601,"endColumn":58,"suggestions":"48424"},{"ruleId":"45357","severity":2,"message":"45358","line":602,"column":51,"nodeType":"45359","messageId":"45360","endLine":602,"endColumn":54,"suggestions":"48425"},{"ruleId":"45357","severity":2,"message":"45358","line":641,"column":48,"nodeType":"45359","messageId":"45360","endLine":641,"endColumn":51,"suggestions":"48426"},{"ruleId":"45357","severity":2,"message":"45358","line":642,"column":50,"nodeType":"45359","messageId":"45360","endLine":642,"endColumn":53,"suggestions":"48427"},{"ruleId":"45357","severity":2,"message":"45358","line":658,"column":67,"nodeType":"45359","messageId":"45360","endLine":658,"endColumn":70,"suggestions":"48428"},{"ruleId":"45357","severity":2,"message":"45358","line":670,"column":43,"nodeType":"45359","messageId":"45360","endLine":670,"endColumn":46,"suggestions":"48429"},{"ruleId":"45357","severity":2,"message":"45358","line":691,"column":43,"nodeType":"45359","messageId":"45360","endLine":691,"endColumn":46,"suggestions":"48430"},{"ruleId":"45357","severity":2,"message":"45358","line":713,"column":43,"nodeType":"45359","messageId":"45360","endLine":713,"endColumn":46,"suggestions":"48431"},{"ruleId":"45357","severity":2,"message":"45358","line":733,"column":43,"nodeType":"45359","messageId":"45360","endLine":733,"endColumn":46,"suggestions":"48432"},{"ruleId":"45357","severity":2,"message":"45358","line":750,"column":43,"nodeType":"45359","messageId":"45360","endLine":750,"endColumn":46,"suggestions":"48433"},{"ruleId":"45357","severity":2,"message":"45358","line":780,"column":53,"nodeType":"45359","messageId":"45360","endLine":780,"endColumn":56,"suggestions":"48434"},{"ruleId":"45357","severity":2,"message":"45358","line":796,"column":55,"nodeType":"45359","messageId":"45360","endLine":796,"endColumn":58,"suggestions":"48435"},{"ruleId":"45357","severity":2,"message":"45358","line":819,"column":43,"nodeType":"45359","messageId":"45360","endLine":819,"endColumn":46,"suggestions":"48436"},{"ruleId":"45357","severity":2,"message":"45358","line":843,"column":43,"nodeType":"45359","messageId":"45360","endLine":843,"endColumn":46,"suggestions":"48437"},{"ruleId":"45357","severity":2,"message":"45358","line":873,"column":43,"nodeType":"45359","messageId":"45360","endLine":873,"endColumn":46,"suggestions":"48438"},{"ruleId":"45357","severity":2,"message":"45358","line":905,"column":43,"nodeType":"45359","messageId":"45360","endLine":905,"endColumn":46,"suggestions":"48439"},{"ruleId":"45357","severity":2,"message":"45358","line":970,"column":43,"nodeType":"45359","messageId":"45360","endLine":970,"endColumn":46,"suggestions":"48440"},{"ruleId":"45357","severity":2,"message":"45358","line":1041,"column":43,"nodeType":"45359","messageId":"45360","endLine":1041,"endColumn":46,"suggestions":"48441"},{"ruleId":"45357","severity":2,"message":"45358","line":1076,"column":43,"nodeType":"45359","messageId":"45360","endLine":1076,"endColumn":46,"suggestions":"48442"},{"ruleId":"45357","severity":2,"message":"45358","line":1130,"column":43,"nodeType":"45359","messageId":"45360","endLine":1130,"endColumn":46,"suggestions":"48443"},{"ruleId":"45357","severity":2,"message":"45358","line":1197,"column":43,"nodeType":"45359","messageId":"45360","endLine":1197,"endColumn":46,"suggestions":"48444"},{"ruleId":"45357","severity":2,"message":"45358","line":1228,"column":43,"nodeType":"45359","messageId":"45360","endLine":1228,"endColumn":46,"suggestions":"48445"},{"ruleId":"45357","severity":2,"message":"45358","line":1246,"column":43,"nodeType":"45359","messageId":"45360","endLine":1246,"endColumn":46,"suggestions":"48446"},{"ruleId":"45357","severity":2,"message":"45358","line":1265,"column":43,"nodeType":"45359","messageId":"45360","endLine":1265,"endColumn":46,"suggestions":"48447"},{"ruleId":"45357","severity":2,"message":"45358","line":1285,"column":43,"nodeType":"45359","messageId":"45360","endLine":1285,"endColumn":46,"suggestions":"48448"},{"ruleId":"45357","severity":2,"message":"45358","line":1316,"column":43,"nodeType":"45359","messageId":"45360","endLine":1316,"endColumn":46,"suggestions":"48449"},{"ruleId":"45357","severity":2,"message":"45358","line":1357,"column":43,"nodeType":"45359","messageId":"45360","endLine":1357,"endColumn":46,"suggestions":"48450"},{"ruleId":"45357","severity":2,"message":"45358","line":1395,"column":43,"nodeType":"45359","messageId":"45360","endLine":1395,"endColumn":46,"suggestions":"48451"},{"ruleId":"45357","severity":2,"message":"45358","line":1432,"column":43,"nodeType":"45359","messageId":"45360","endLine":1432,"endColumn":46,"suggestions":"48452"},{"ruleId":"45357","severity":2,"message":"45358","line":1498,"column":43,"nodeType":"45359","messageId":"45360","endLine":1498,"endColumn":46,"suggestions":"48453"},{"ruleId":"45357","severity":2,"message":"45358","line":1552,"column":43,"nodeType":"45359","messageId":"45360","endLine":1552,"endColumn":46,"suggestions":"48454"},{"ruleId":"45357","severity":2,"message":"45358","line":1598,"column":43,"nodeType":"45359","messageId":"45360","endLine":1598,"endColumn":46,"suggestions":"48455"},{"ruleId":"45357","severity":2,"message":"45358","line":1639,"column":43,"nodeType":"45359","messageId":"45360","endLine":1639,"endColumn":46,"suggestions":"48456"},{"ruleId":"45357","severity":2,"message":"45358","line":1671,"column":43,"nodeType":"45359","messageId":"45360","endLine":1671,"endColumn":46,"suggestions":"48457"},{"ruleId":"45357","severity":2,"message":"45358","line":1694,"column":43,"nodeType":"45359","messageId":"45360","endLine":1694,"endColumn":46,"suggestions":"48458"},{"ruleId":"45357","severity":2,"message":"45358","line":1729,"column":43,"nodeType":"45359","messageId":"45360","endLine":1729,"endColumn":46,"suggestions":"48459"},{"ruleId":"45357","severity":2,"message":"45358","line":1778,"column":43,"nodeType":"45359","messageId":"45360","endLine":1778,"endColumn":46,"suggestions":"48460"},{"ruleId":"45357","severity":2,"message":"45358","line":52,"column":43,"nodeType":"45359","messageId":"45360","endLine":52,"endColumn":46,"suggestions":"48461"},{"ruleId":"45357","severity":2,"message":"45358","line":74,"column":43,"nodeType":"45359","messageId":"45360","endLine":74,"endColumn":46,"suggestions":"48462"},{"ruleId":"45357","severity":2,"message":"45358","line":110,"column":27,"nodeType":"45359","messageId":"45360","endLine":110,"endColumn":30,"suggestions":"48463"},{"ruleId":"45357","severity":2,"message":"45358","line":125,"column":43,"nodeType":"45359","messageId":"45360","endLine":125,"endColumn":46,"suggestions":"48464"},{"ruleId":"45357","severity":2,"message":"45358","line":141,"column":43,"nodeType":"45359","messageId":"45360","endLine":141,"endColumn":46,"suggestions":"48465"},{"ruleId":"45357","severity":2,"message":"45358","line":156,"column":52,"nodeType":"45359","messageId":"45360","endLine":156,"endColumn":55,"suggestions":"48466"},{"ruleId":"45357","severity":2,"message":"45358","line":170,"column":52,"nodeType":"45359","messageId":"45360","endLine":170,"endColumn":55,"suggestions":"48467"},{"ruleId":"45357","severity":2,"message":"45358","line":186,"column":52,"nodeType":"45359","messageId":"45360","endLine":186,"endColumn":55,"suggestions":"48468"},{"ruleId":"45357","severity":2,"message":"45358","line":200,"column":52,"nodeType":"45359","messageId":"45360","endLine":200,"endColumn":55,"suggestions":"48469"},{"ruleId":"45357","severity":2,"message":"45358","line":66,"column":43,"nodeType":"45359","messageId":"45360","endLine":66,"endColumn":46,"suggestions":"48470"},{"ruleId":"45357","severity":2,"message":"45358","line":89,"column":53,"nodeType":"45359","messageId":"45360","endLine":89,"endColumn":56,"suggestions":"48471"},{"ruleId":"45357","severity":2,"message":"45358","line":90,"column":49,"nodeType":"45359","messageId":"45360","endLine":90,"endColumn":52,"suggestions":"48472"},{"ruleId":"45357","severity":2,"message":"45358","line":115,"column":43,"nodeType":"45359","messageId":"45360","endLine":115,"endColumn":46,"suggestions":"48473"},{"ruleId":"45357","severity":2,"message":"45358","line":138,"column":43,"nodeType":"45359","messageId":"45360","endLine":138,"endColumn":46,"suggestions":"48474"},{"ruleId":"45357","severity":2,"message":"45358","line":156,"column":43,"nodeType":"45359","messageId":"45360","endLine":156,"endColumn":46,"suggestions":"48475"},{"ruleId":"45357","severity":2,"message":"45358","line":178,"column":43,"nodeType":"45359","messageId":"45360","endLine":178,"endColumn":46,"suggestions":"48476"},{"ruleId":"45357","severity":2,"message":"45358","line":197,"column":43,"nodeType":"45359","messageId":"45360","endLine":197,"endColumn":46,"suggestions":"48477"},{"ruleId":"45357","severity":2,"message":"45358","line":217,"column":43,"nodeType":"45359","messageId":"45360","endLine":217,"endColumn":46,"suggestions":"48478"},{"ruleId":"45357","severity":2,"message":"45358","line":238,"column":43,"nodeType":"45359","messageId":"45360","endLine":238,"endColumn":46,"suggestions":"48479"},{"ruleId":"45357","severity":2,"message":"45358","line":258,"column":43,"nodeType":"45359","messageId":"45360","endLine":258,"endColumn":46,"suggestions":"48480"},{"ruleId":"45357","severity":2,"message":"45358","line":295,"column":43,"nodeType":"45359","messageId":"45360","endLine":295,"endColumn":46,"suggestions":"48481"},{"ruleId":"45357","severity":2,"message":"45358","line":329,"column":43,"nodeType":"45359","messageId":"45360","endLine":329,"endColumn":46,"suggestions":"48482"},{"ruleId":"45357","severity":2,"message":"45358","line":35,"column":39,"nodeType":"45359","messageId":"45360","endLine":35,"endColumn":42,"suggestions":"48483"},{"ruleId":"45357","severity":2,"message":"45358","line":40,"column":34,"nodeType":"45359","messageId":"45360","endLine":40,"endColumn":37,"suggestions":"48484"},{"ruleId":"45357","severity":2,"message":"45358","line":40,"column":45,"nodeType":"45359","messageId":"45360","endLine":40,"endColumn":48,"suggestions":"48485"},{"ruleId":"45357","severity":2,"message":"45358","line":72,"column":38,"nodeType":"45359","messageId":"45360","endLine":72,"endColumn":41,"suggestions":"48486"},{"ruleId":"45357","severity":2,"message":"45358","line":96,"column":38,"nodeType":"45359","messageId":"45360","endLine":96,"endColumn":41,"suggestions":"48487"},{"ruleId":"45357","severity":2,"message":"45358","line":116,"column":38,"nodeType":"45359","messageId":"45360","endLine":116,"endColumn":41,"suggestions":"48488"},{"ruleId":"45357","severity":2,"message":"45358","line":132,"column":38,"nodeType":"45359","messageId":"45360","endLine":132,"endColumn":41,"suggestions":"48489"},{"ruleId":"45357","severity":2,"message":"45358","line":243,"column":38,"nodeType":"45359","messageId":"45360","endLine":243,"endColumn":41,"suggestions":"48490"},{"ruleId":"45357","severity":2,"message":"45358","line":116,"column":8,"nodeType":"45359","messageId":"45360","endLine":116,"endColumn":11,"suggestions":"48491"},{"ruleId":"45357","severity":2,"message":"45358","line":182,"column":10,"nodeType":"45359","messageId":"45360","endLine":182,"endColumn":13,"suggestions":"48492"},{"ruleId":"45357","severity":2,"message":"45358","line":235,"column":8,"nodeType":"45359","messageId":"45360","endLine":235,"endColumn":11,"suggestions":"48493"},{"ruleId":"45357","severity":2,"message":"45358","line":302,"column":8,"nodeType":"45359","messageId":"45360","endLine":302,"endColumn":11,"suggestions":"48494"},{"ruleId":"45357","severity":2,"message":"45358","line":379,"column":8,"nodeType":"45359","messageId":"45360","endLine":379,"endColumn":11,"suggestions":"48495"},{"ruleId":"45357","severity":2,"message":"45358","line":462,"column":8,"nodeType":"45359","messageId":"45360","endLine":462,"endColumn":11,"suggestions":"48496"},{"ruleId":"45357","severity":2,"message":"45358","line":141,"column":22,"nodeType":"45359","messageId":"45360","endLine":141,"endColumn":25,"suggestions":"48497"},{"ruleId":"45357","severity":2,"message":"45358","line":151,"column":21,"nodeType":"45359","messageId":"45360","endLine":151,"endColumn":24,"suggestions":"48498"},{"ruleId":"45357","severity":2,"message":"45358","line":162,"column":89,"nodeType":"45359","messageId":"45360","endLine":162,"endColumn":92,"suggestions":"48499"},{"ruleId":"45357","severity":2,"message":"45358","line":171,"column":34,"nodeType":"45359","messageId":"45360","endLine":171,"endColumn":37,"suggestions":"48500"},{"ruleId":"45357","severity":2,"message":"45358","line":194,"column":34,"nodeType":"45359","messageId":"45360","endLine":194,"endColumn":37,"suggestions":"48501"},{"ruleId":"45357","severity":2,"message":"45358","line":194,"column":45,"nodeType":"45359","messageId":"45360","endLine":194,"endColumn":48,"suggestions":"48502"},{"ruleId":"45357","severity":2,"message":"45358","line":15,"column":34,"nodeType":"45359","messageId":"45360","endLine":15,"endColumn":37,"suggestions":"48503"},{"ruleId":"45357","severity":2,"message":"45358","line":423,"column":48,"nodeType":"45359","messageId":"45360","endLine":423,"endColumn":51,"suggestions":"48504"},{"ruleId":"45357","severity":2,"message":"45358","line":470,"column":53,"nodeType":"45359","messageId":"45360","endLine":470,"endColumn":56,"suggestions":"48505"},{"ruleId":"45357","severity":2,"message":"45358","line":476,"column":49,"nodeType":"45359","messageId":"45360","endLine":476,"endColumn":52,"suggestions":"48506"},{"ruleId":"45357","severity":2,"message":"45358","line":517,"column":41,"nodeType":"45359","messageId":"45360","endLine":517,"endColumn":44,"suggestions":"48507"},{"ruleId":"45357","severity":2,"message":"45358","line":49,"column":43,"nodeType":"45359","messageId":"45360","endLine":49,"endColumn":46,"suggestions":"48508"},{"ruleId":"45357","severity":2,"message":"45358","line":110,"column":45,"nodeType":"45359","messageId":"45360","endLine":110,"endColumn":48,"suggestions":"48509"},{"ruleId":"45357","severity":2,"message":"45358","line":259,"column":45,"nodeType":"45359","messageId":"45360","endLine":259,"endColumn":48,"suggestions":"48510"},{"ruleId":"45357","severity":2,"message":"45358","line":296,"column":45,"nodeType":"45359","messageId":"45360","endLine":296,"endColumn":48,"suggestions":"48511"},{"ruleId":"45357","severity":2,"message":"45358","line":17,"column":43,"nodeType":"45359","messageId":"45360","endLine":17,"endColumn":46,"suggestions":"48512"},{"ruleId":"45357","severity":2,"message":"45358","line":18,"column":29,"nodeType":"45359","messageId":"45360","endLine":18,"endColumn":32,"suggestions":"48513"},{"ruleId":"45357","severity":2,"message":"45358","line":22,"column":33,"nodeType":"45359","messageId":"45360","endLine":22,"endColumn":36,"suggestions":"48514"},{"ruleId":"45357","severity":2,"message":"45358","line":22,"column":49,"nodeType":"45359","messageId":"45360","endLine":22,"endColumn":52,"suggestions":"48515"},{"ruleId":"45357","severity":2,"message":"45358","line":23,"column":30,"nodeType":"45359","messageId":"45360","endLine":23,"endColumn":33,"suggestions":"48516"},{"ruleId":"45357","severity":2,"message":"45358","line":23,"column":46,"nodeType":"45359","messageId":"45360","endLine":23,"endColumn":49,"suggestions":"48517"},{"ruleId":"45357","severity":2,"message":"45358","line":24,"column":33,"nodeType":"45359","messageId":"45360","endLine":24,"endColumn":36,"suggestions":"48518"},{"ruleId":"45357","severity":2,"message":"45358","line":27,"column":88,"nodeType":"45359","messageId":"45360","endLine":27,"endColumn":91,"suggestions":"48519"},{"ruleId":"45357","severity":2,"message":"45358","line":143,"column":45,"nodeType":"45359","messageId":"45360","endLine":143,"endColumn":48,"suggestions":"48520"},{"ruleId":"45357","severity":2,"message":"45358","line":166,"column":45,"nodeType":"45359","messageId":"45360","endLine":166,"endColumn":48,"suggestions":"48521"},{"ruleId":"45357","severity":2,"message":"45358","line":146,"column":49,"nodeType":"45359","messageId":"45360","endLine":146,"endColumn":52,"suggestions":"48522"},{"ruleId":"45357","severity":2,"message":"45358","line":106,"column":49,"nodeType":"45359","messageId":"45360","endLine":106,"endColumn":52,"suggestions":"48523"},{"ruleId":"45357","severity":2,"message":"45358","line":175,"column":48,"nodeType":"45359","messageId":"45360","endLine":175,"endColumn":51,"suggestions":"48524"},{"ruleId":"45357","severity":2,"message":"45358","line":181,"column":60,"nodeType":"45359","messageId":"45360","endLine":181,"endColumn":63,"suggestions":"48525"},{"ruleId":"45357","severity":2,"message":"45358","line":190,"column":46,"nodeType":"45359","messageId":"45360","endLine":190,"endColumn":49,"suggestions":"48526"},{"ruleId":"45357","severity":2,"message":"45358","line":210,"column":56,"nodeType":"45359","messageId":"45360","endLine":210,"endColumn":59,"suggestions":"48527"},{"ruleId":"45357","severity":2,"message":"45358","line":232,"column":52,"nodeType":"45359","messageId":"45360","endLine":232,"endColumn":55,"suggestions":"48528"},{"ruleId":"45357","severity":2,"message":"45358","line":268,"column":60,"nodeType":"45359","messageId":"45360","endLine":268,"endColumn":63,"suggestions":"48529"},{"ruleId":"45357","severity":2,"message":"45358","line":372,"column":48,"nodeType":"45359","messageId":"45360","endLine":372,"endColumn":51,"suggestions":"48530"},{"ruleId":"45357","severity":2,"message":"45358","line":422,"column":48,"nodeType":"45359","messageId":"45360","endLine":422,"endColumn":51,"suggestions":"48531"},{"ruleId":"45357","severity":2,"message":"45358","line":443,"column":49,"nodeType":"45359","messageId":"45360","endLine":443,"endColumn":52,"suggestions":"48532"},{"ruleId":"45357","severity":2,"message":"45358","line":455,"column":49,"nodeType":"45359","messageId":"45360","endLine":455,"endColumn":52,"suggestions":"48533"},{"ruleId":"45357","severity":2,"message":"45358","line":493,"column":66,"nodeType":"45359","messageId":"45360","endLine":493,"endColumn":69,"suggestions":"48534"},{"ruleId":"45357","severity":2,"message":"45358","line":539,"column":48,"nodeType":"45359","messageId":"45360","endLine":539,"endColumn":51,"suggestions":"48535"},{"ruleId":"45357","severity":2,"message":"45358","line":562,"column":53,"nodeType":"45359","messageId":"45360","endLine":562,"endColumn":56,"suggestions":"48536"},{"ruleId":"45357","severity":2,"message":"45358","line":590,"column":52,"nodeType":"45359","messageId":"45360","endLine":590,"endColumn":55,"suggestions":"48537"},{"ruleId":"45357","severity":2,"message":"45358","line":618,"column":44,"nodeType":"45359","messageId":"45360","endLine":618,"endColumn":47,"suggestions":"48538"},{"ruleId":"45357","severity":2,"message":"45358","line":632,"column":49,"nodeType":"45359","messageId":"45360","endLine":632,"endColumn":52,"suggestions":"48539"},{"ruleId":"45357","severity":2,"message":"45358","line":638,"column":51,"nodeType":"45359","messageId":"45360","endLine":638,"endColumn":54,"suggestions":"48540"},{"ruleId":"45357","severity":2,"message":"45358","line":717,"column":44,"nodeType":"45359","messageId":"45360","endLine":717,"endColumn":47,"suggestions":"48541"},{"ruleId":"45357","severity":2,"message":"45358","line":738,"column":55,"nodeType":"45359","messageId":"45360","endLine":738,"endColumn":58,"suggestions":"48542"},{"ruleId":"45357","severity":2,"message":"45358","line":775,"column":61,"nodeType":"45359","messageId":"45360","endLine":775,"endColumn":64,"suggestions":"48543"},{"ruleId":"45357","severity":2,"message":"45358","line":791,"column":53,"nodeType":"45359","messageId":"45360","endLine":791,"endColumn":56,"suggestions":"48544"},{"ruleId":"45357","severity":2,"message":"45358","line":154,"column":84,"nodeType":"45359","messageId":"45360","endLine":154,"endColumn":87,"suggestions":"48545"},{"ruleId":"45357","severity":2,"message":"45358","line":48,"column":30,"nodeType":"45359","messageId":"45360","endLine":48,"endColumn":33,"suggestions":"48546"},{"ruleId":"45357","severity":2,"message":"45358","line":49,"column":18,"nodeType":"45359","messageId":"45360","endLine":49,"endColumn":21,"suggestions":"48547"},{"ruleId":"45357","severity":2,"message":"45358","line":49,"column":39,"nodeType":"45359","messageId":"45360","endLine":49,"endColumn":42,"suggestions":"48548"},{"ruleId":"45357","severity":2,"message":"45358","line":74,"column":26,"nodeType":"45359","messageId":"45360","endLine":74,"endColumn":29,"suggestions":"48549"},{"ruleId":"45357","severity":2,"message":"45358","line":145,"column":53,"nodeType":"45359","messageId":"45360","endLine":145,"endColumn":56,"suggestions":"48550"},{"ruleId":"45357","severity":2,"message":"45358","line":165,"column":58,"nodeType":"45359","messageId":"45360","endLine":165,"endColumn":61,"suggestions":"48551"},{"ruleId":"45357","severity":2,"message":"45358","line":167,"column":72,"nodeType":"45359","messageId":"45360","endLine":167,"endColumn":75,"suggestions":"48552"},{"ruleId":"45357","severity":2,"message":"45358","line":168,"column":29,"nodeType":"45359","messageId":"45360","endLine":168,"endColumn":32,"suggestions":"48553"},{"ruleId":"45357","severity":2,"message":"45358","line":169,"column":29,"nodeType":"45359","messageId":"45360","endLine":169,"endColumn":32,"suggestions":"48554"},{"ruleId":"45357","severity":2,"message":"45358","line":170,"column":29,"nodeType":"45359","messageId":"45360","endLine":170,"endColumn":32,"suggestions":"48555"},{"ruleId":"45357","severity":2,"message":"45358","line":193,"column":53,"nodeType":"45359","messageId":"45360","endLine":193,"endColumn":56,"suggestions":"48556"},{"ruleId":"45357","severity":2,"message":"45358","line":203,"column":72,"nodeType":"45359","messageId":"45360","endLine":203,"endColumn":75,"suggestions":"48557"},{"ruleId":"45357","severity":2,"message":"45358","line":204,"column":29,"nodeType":"45359","messageId":"45360","endLine":204,"endColumn":32,"suggestions":"48558"},{"ruleId":"45357","severity":2,"message":"45358","line":205,"column":29,"nodeType":"45359","messageId":"45360","endLine":205,"endColumn":32,"suggestions":"48559"},{"ruleId":"45357","severity":2,"message":"45358","line":206,"column":29,"nodeType":"45359","messageId":"45360","endLine":206,"endColumn":32,"suggestions":"48560"},{"ruleId":"45357","severity":2,"message":"45358","line":226,"column":29,"nodeType":"45359","messageId":"45360","endLine":226,"endColumn":32,"suggestions":"48561"},{"ruleId":"45357","severity":2,"message":"45358","line":227,"column":29,"nodeType":"45359","messageId":"45360","endLine":227,"endColumn":32,"suggestions":"48562"},{"ruleId":"45357","severity":2,"message":"45358","line":241,"column":29,"nodeType":"45359","messageId":"45360","endLine":241,"endColumn":32,"suggestions":"48563"},{"ruleId":"45357","severity":2,"message":"45358","line":263,"column":29,"nodeType":"45359","messageId":"45360","endLine":263,"endColumn":32,"suggestions":"48564"},{"ruleId":"45357","severity":2,"message":"45358","line":286,"column":18,"nodeType":"45359","messageId":"45360","endLine":286,"endColumn":21,"suggestions":"48565"},{"ruleId":"45357","severity":2,"message":"45358","line":307,"column":27,"nodeType":"45359","messageId":"45360","endLine":307,"endColumn":30,"suggestions":"48566"},{"ruleId":"45357","severity":2,"message":"45358","line":340,"column":29,"nodeType":"45359","messageId":"45360","endLine":340,"endColumn":32,"suggestions":"48567"},{"ruleId":"45357","severity":2,"message":"45358","line":341,"column":29,"nodeType":"45359","messageId":"45360","endLine":341,"endColumn":32,"suggestions":"48568"},{"ruleId":"45357","severity":2,"message":"45358","line":342,"column":29,"nodeType":"45359","messageId":"45360","endLine":342,"endColumn":32,"suggestions":"48569"},{"ruleId":"45357","severity":2,"message":"45358","line":361,"column":58,"nodeType":"45359","messageId":"45360","endLine":361,"endColumn":61,"suggestions":"48570"},{"ruleId":"45357","severity":2,"message":"45358","line":365,"column":72,"nodeType":"45359","messageId":"45360","endLine":365,"endColumn":75,"suggestions":"48571"},{"ruleId":"45357","severity":2,"message":"45358","line":367,"column":29,"nodeType":"45359","messageId":"45360","endLine":367,"endColumn":32,"suggestions":"48572"},{"ruleId":"45357","severity":2,"message":"45358","line":368,"column":29,"nodeType":"45359","messageId":"45360","endLine":368,"endColumn":32,"suggestions":"48573"},{"ruleId":"45357","severity":2,"message":"45358","line":393,"column":71,"nodeType":"45359","messageId":"45360","endLine":393,"endColumn":74,"suggestions":"48574"},{"ruleId":"45357","severity":2,"message":"45358","line":395,"column":90,"nodeType":"45359","messageId":"45360","endLine":395,"endColumn":93,"suggestions":"48575"},{"ruleId":"45357","severity":2,"message":"45358","line":399,"column":92,"nodeType":"45359","messageId":"45360","endLine":399,"endColumn":95,"suggestions":"48576"},{"ruleId":"45357","severity":2,"message":"45358","line":401,"column":42,"nodeType":"45359","messageId":"45360","endLine":401,"endColumn":45,"suggestions":"48577"},{"ruleId":"45357","severity":2,"message":"45358","line":403,"column":85,"nodeType":"45359","messageId":"45360","endLine":403,"endColumn":88,"suggestions":"48578"},{"ruleId":"45357","severity":2,"message":"45358","line":406,"column":29,"nodeType":"45359","messageId":"45360","endLine":406,"endColumn":32,"suggestions":"48579"},{"ruleId":"45357","severity":2,"message":"45358","line":409,"column":27,"nodeType":"45359","messageId":"45360","endLine":409,"endColumn":30,"suggestions":"48580"},{"ruleId":"45357","severity":2,"message":"45358","line":414,"column":84,"nodeType":"45359","messageId":"45360","endLine":414,"endColumn":87,"suggestions":"48581"},{"ruleId":"45357","severity":2,"message":"45358","line":417,"column":28,"nodeType":"45359","messageId":"45360","endLine":417,"endColumn":31,"suggestions":"48582"},{"ruleId":"45357","severity":2,"message":"45358","line":419,"column":92,"nodeType":"45359","messageId":"45360","endLine":419,"endColumn":95,"suggestions":"48583"},{"ruleId":"45357","severity":2,"message":"45358","line":421,"column":42,"nodeType":"45359","messageId":"45360","endLine":421,"endColumn":45,"suggestions":"48584"},{"ruleId":"45357","severity":2,"message":"45358","line":453,"column":84,"nodeType":"45359","messageId":"45360","endLine":453,"endColumn":87,"suggestions":"48585"},{"ruleId":"45357","severity":2,"message":"45358","line":456,"column":41,"nodeType":"45359","messageId":"45360","endLine":456,"endColumn":44,"suggestions":"48586"},{"ruleId":"45357","severity":2,"message":"45358","line":459,"column":78,"nodeType":"45359","messageId":"45360","endLine":459,"endColumn":81,"suggestions":"48587"},{"ruleId":"45357","severity":2,"message":"45358","line":462,"column":29,"nodeType":"45359","messageId":"45360","endLine":462,"endColumn":32,"suggestions":"48588"},{"ruleId":"45357","severity":2,"message":"45358","line":464,"column":86,"nodeType":"45359","messageId":"45360","endLine":464,"endColumn":89,"suggestions":"48589"},{"ruleId":"45357","severity":2,"message":"45358","line":469,"column":77,"nodeType":"45359","messageId":"45360","endLine":469,"endColumn":80,"suggestions":"48590"},{"ruleId":"45357","severity":2,"message":"45358","line":472,"column":28,"nodeType":"45359","messageId":"45360","endLine":472,"endColumn":31,"suggestions":"48591"},{"ruleId":"45357","severity":2,"message":"45358","line":474,"column":85,"nodeType":"45359","messageId":"45360","endLine":474,"endColumn":88,"suggestions":"48592"},{"ruleId":"45357","severity":2,"message":"45358","line":476,"column":42,"nodeType":"45359","messageId":"45360","endLine":476,"endColumn":45,"suggestions":"48593"},{"ruleId":"45357","severity":2,"message":"45358","line":489,"column":77,"nodeType":"45359","messageId":"45360","endLine":489,"endColumn":80,"suggestions":"48594"},{"ruleId":"45357","severity":2,"message":"45358","line":493,"column":78,"nodeType":"45359","messageId":"45360","endLine":493,"endColumn":81,"suggestions":"48595"},{"ruleId":"45357","severity":2,"message":"45358","line":495,"column":28,"nodeType":"45359","messageId":"45360","endLine":495,"endColumn":31,"suggestions":"48596"},{"ruleId":"45357","severity":2,"message":"45358","line":496,"column":28,"nodeType":"45359","messageId":"45360","endLine":496,"endColumn":31,"suggestions":"48597"},{"ruleId":"45357","severity":2,"message":"45358","line":497,"column":28,"nodeType":"45359","messageId":"45360","endLine":497,"endColumn":31,"suggestions":"48598"},{"ruleId":"45357","severity":2,"message":"45358","line":498,"column":28,"nodeType":"45359","messageId":"45360","endLine":498,"endColumn":31,"suggestions":"48599"},{"ruleId":"45357","severity":2,"message":"45358","line":63,"column":29,"nodeType":"45359","messageId":"45360","endLine":63,"endColumn":32,"suggestions":"48600"},{"ruleId":"45357","severity":2,"message":"45358","line":64,"column":29,"nodeType":"45359","messageId":"45360","endLine":64,"endColumn":32,"suggestions":"48601"},{"ruleId":"45357","severity":2,"message":"45358","line":94,"column":29,"nodeType":"45359","messageId":"45360","endLine":94,"endColumn":32,"suggestions":"48602"},{"ruleId":"45357","severity":2,"message":"45358","line":232,"column":46,"nodeType":"45359","messageId":"45360","endLine":232,"endColumn":49,"suggestions":"48603"},{"ruleId":"45357","severity":2,"message":"45358","line":332,"column":38,"nodeType":"45359","messageId":"45360","endLine":332,"endColumn":41,"suggestions":"48604"},{"ruleId":"45357","severity":2,"message":"45358","line":334,"column":48,"nodeType":"45359","messageId":"45360","endLine":334,"endColumn":51,"suggestions":"48605"},{"ruleId":"45357","severity":2,"message":"45358","line":25,"column":44,"nodeType":"45359","messageId":"45360","endLine":25,"endColumn":47,"suggestions":"48606"},{"ruleId":"45357","severity":2,"message":"45358","line":44,"column":44,"nodeType":"45359","messageId":"45360","endLine":44,"endColumn":47,"suggestions":"48607"},{"ruleId":"45357","severity":2,"message":"45358","line":90,"column":48,"nodeType":"45359","messageId":"45360","endLine":90,"endColumn":51,"suggestions":"48608"},{"ruleId":"45357","severity":2,"message":"45358","line":43,"column":41,"nodeType":"45359","messageId":"45360","endLine":43,"endColumn":44,"suggestions":"48609"},{"ruleId":"45357","severity":2,"message":"45358","line":44,"column":40,"nodeType":"45359","messageId":"45360","endLine":44,"endColumn":43,"suggestions":"48610"},{"ruleId":"45357","severity":2,"message":"45358","line":50,"column":20,"nodeType":"45359","messageId":"45360","endLine":50,"endColumn":23,"suggestions":"48611"},{"ruleId":"45357","severity":2,"message":"45358","line":50,"column":55,"nodeType":"45359","messageId":"45360","endLine":50,"endColumn":58,"suggestions":"48612"},{"ruleId":"45357","severity":2,"message":"45358","line":55,"column":19,"nodeType":"45359","messageId":"45360","endLine":55,"endColumn":22,"suggestions":"48613"},{"ruleId":"45357","severity":2,"message":"45358","line":55,"column":53,"nodeType":"45359","messageId":"45360","endLine":55,"endColumn":56,"suggestions":"48614"},{"ruleId":"45357","severity":2,"message":"45358","line":9,"column":32,"nodeType":"45359","messageId":"45360","endLine":9,"endColumn":35,"suggestions":"48615"},{"ruleId":"45357","severity":2,"message":"45358","line":10,"column":32,"nodeType":"45359","messageId":"45360","endLine":10,"endColumn":35,"suggestions":"48616"},{"ruleId":"45357","severity":2,"message":"45358","line":62,"column":19,"nodeType":"45359","messageId":"45360","endLine":62,"endColumn":22,"suggestions":"48617","suppressions":"48618"},{"ruleId":"45357","severity":2,"message":"45358","line":90,"column":19,"nodeType":"45359","messageId":"45360","endLine":90,"endColumn":22,"suggestions":"48619","suppressions":"48620"},{"ruleId":"45357","severity":2,"message":"45358","line":37,"column":19,"nodeType":"45359","messageId":"45360","endLine":37,"endColumn":22,"suggestions":"48621"},{"ruleId":"45357","severity":2,"message":"45358","line":36,"column":19,"nodeType":"45359","messageId":"45360","endLine":36,"endColumn":22,"suggestions":"48622"},{"ruleId":"45357","severity":2,"message":"45358","line":128,"column":30,"nodeType":"45359","messageId":"45360","endLine":128,"endColumn":33,"suggestions":"48623"},{"ruleId":"45357","severity":2,"message":"45358","line":37,"column":19,"nodeType":"45359","messageId":"45360","endLine":37,"endColumn":22,"suggestions":"48624"},{"ruleId":"45357","severity":2,"message":"45358","line":42,"column":19,"nodeType":"45359","messageId":"45360","endLine":42,"endColumn":22,"suggestions":"48625"},{"ruleId":"45357","severity":2,"message":"45358","line":65,"column":22,"nodeType":"45359","messageId":"45360","endLine":65,"endColumn":25,"suggestions":"48626"},{"ruleId":"45357","severity":2,"message":"45358","line":35,"column":19,"nodeType":"45359","messageId":"45360","endLine":35,"endColumn":22,"suggestions":"48627"},{"ruleId":"45357","severity":2,"message":"45358","line":71,"column":21,"nodeType":"45359","messageId":"45360","endLine":71,"endColumn":24,"suggestions":"48628"},{"ruleId":"45357","severity":2,"message":"45358","line":72,"column":21,"nodeType":"45359","messageId":"45360","endLine":72,"endColumn":24,"suggestions":"48629"},{"ruleId":"45357","severity":2,"message":"45358","line":101,"column":21,"nodeType":"45359","messageId":"45360","endLine":101,"endColumn":24,"suggestions":"48630"},{"ruleId":"45357","severity":2,"message":"45358","line":102,"column":21,"nodeType":"45359","messageId":"45360","endLine":102,"endColumn":24,"suggestions":"48631"},{"ruleId":"45357","severity":2,"message":"45358","line":131,"column":21,"nodeType":"45359","messageId":"45360","endLine":131,"endColumn":24,"suggestions":"48632"},{"ruleId":"45357","severity":2,"message":"45358","line":132,"column":21,"nodeType":"45359","messageId":"45360","endLine":132,"endColumn":24,"suggestions":"48633"},{"ruleId":"45357","severity":2,"message":"45358","line":163,"column":21,"nodeType":"45359","messageId":"45360","endLine":163,"endColumn":24,"suggestions":"48634"},{"ruleId":"45357","severity":2,"message":"45358","line":164,"column":21,"nodeType":"45359","messageId":"45360","endLine":164,"endColumn":24,"suggestions":"48635"},{"ruleId":"45357","severity":2,"message":"45358","line":35,"column":35,"nodeType":"45359","messageId":"45360","endLine":35,"endColumn":38,"suggestions":"48636"},{"ruleId":"45357","severity":2,"message":"45358","line":26,"column":60,"nodeType":"45359","messageId":"45360","endLine":26,"endColumn":63,"suggestions":"48637"},{"ruleId":"45357","severity":2,"message":"45358","line":26,"column":79,"nodeType":"45359","messageId":"45360","endLine":26,"endColumn":82,"suggestions":"48638"},{"ruleId":"45357","severity":2,"message":"45358","line":96,"column":18,"nodeType":"45359","messageId":"45360","endLine":96,"endColumn":21,"suggestions":"48639"},{"ruleId":"45357","severity":2,"message":"45358","line":132,"column":18,"nodeType":"45359","messageId":"45360","endLine":132,"endColumn":21,"suggestions":"48640"},{"ruleId":"45357","severity":2,"message":"45358","line":16,"column":62,"nodeType":"45359","messageId":"45360","endLine":16,"endColumn":65,"suggestions":"48641"},{"ruleId":"45357","severity":2,"message":"45358","line":39,"column":64,"nodeType":"45359","messageId":"45360","endLine":39,"endColumn":67,"suggestions":"48642"},{"ruleId":"45357","severity":2,"message":"45358","line":44,"column":22,"nodeType":"45359","messageId":"45360","endLine":44,"endColumn":25,"suggestions":"48643"},{"ruleId":"45357","severity":2,"message":"45358","line":47,"column":17,"nodeType":"45359","messageId":"45360","endLine":47,"endColumn":20,"suggestions":"48644"},{"ruleId":"45357","severity":2,"message":"45358","line":107,"column":18,"nodeType":"45359","messageId":"45360","endLine":107,"endColumn":21,"suggestions":"48645"},{"ruleId":"45357","severity":2,"message":"45358","line":152,"column":18,"nodeType":"45359","messageId":"45360","endLine":152,"endColumn":21,"suggestions":"48646"},{"ruleId":"45357","severity":2,"message":"45358","line":202,"column":18,"nodeType":"45359","messageId":"45360","endLine":202,"endColumn":21,"suggestions":"48647"},{"ruleId":"45357","severity":2,"message":"45358","line":96,"column":35,"nodeType":"45359","messageId":"45360","endLine":96,"endColumn":38,"suggestions":"48648"},{"ruleId":"45357","severity":2,"message":"45358","line":98,"column":27,"nodeType":"45359","messageId":"45360","endLine":98,"endColumn":30,"suggestions":"48649"},{"ruleId":"45357","severity":2,"message":"45358","line":101,"column":48,"nodeType":"45359","messageId":"45360","endLine":101,"endColumn":51,"suggestions":"48650"},{"ruleId":"45357","severity":2,"message":"45358","line":106,"column":35,"nodeType":"45359","messageId":"45360","endLine":106,"endColumn":38,"suggestions":"48651"},{"ruleId":"45357","severity":2,"message":"45358","line":108,"column":20,"nodeType":"45359","messageId":"45360","endLine":108,"endColumn":23,"suggestions":"48652"},{"ruleId":"45357","severity":2,"message":"45358","line":110,"column":20,"nodeType":"45359","messageId":"45360","endLine":110,"endColumn":23,"suggestions":"48653"},{"ruleId":"45357","severity":2,"message":"45358","line":113,"column":55,"nodeType":"45359","messageId":"45360","endLine":113,"endColumn":58,"suggestions":"48654"},{"ruleId":"45357","severity":2,"message":"45358","line":114,"column":25,"nodeType":"45359","messageId":"45360","endLine":114,"endColumn":28,"suggestions":"48655"},{"ruleId":"45357","severity":2,"message":"45358","line":59,"column":58,"nodeType":"45359","messageId":"45360","endLine":59,"endColumn":61,"suggestions":"48656"},{"ruleId":"45357","severity":2,"message":"45358","line":61,"column":72,"nodeType":"45359","messageId":"45360","endLine":61,"endColumn":75,"suggestions":"48657"},{"ruleId":"45357","severity":2,"message":"45358","line":63,"column":29,"nodeType":"45359","messageId":"45360","endLine":63,"endColumn":32,"suggestions":"48658"},{"ruleId":"45357","severity":2,"message":"45358","line":83,"column":72,"nodeType":"45359","messageId":"45360","endLine":83,"endColumn":75,"suggestions":"48659"},{"ruleId":"45357","severity":2,"message":"45358","line":85,"column":29,"nodeType":"45359","messageId":"45360","endLine":85,"endColumn":32,"suggestions":"48660"},{"ruleId":"45357","severity":2,"message":"45358","line":105,"column":72,"nodeType":"45359","messageId":"45360","endLine":105,"endColumn":75,"suggestions":"48661"},{"ruleId":"45357","severity":2,"message":"45358","line":107,"column":29,"nodeType":"45359","messageId":"45360","endLine":107,"endColumn":32,"suggestions":"48662"},{"ruleId":"45357","severity":2,"message":"45358","line":118,"column":27,"nodeType":"45359","messageId":"45360","endLine":118,"endColumn":30,"suggestions":"48663"},{"ruleId":"45357","severity":2,"message":"45358","line":140,"column":29,"nodeType":"45359","messageId":"45360","endLine":140,"endColumn":32,"suggestions":"48664"},{"ruleId":"45357","severity":2,"message":"45358","line":141,"column":29,"nodeType":"45359","messageId":"45360","endLine":141,"endColumn":32,"suggestions":"48665"},{"ruleId":"45357","severity":2,"message":"45358","line":87,"column":30,"nodeType":"45359","messageId":"45360","endLine":87,"endColumn":33,"suggestions":"48666"},{"ruleId":"45357","severity":2,"message":"45358","line":88,"column":30,"nodeType":"45359","messageId":"45360","endLine":88,"endColumn":33,"suggestions":"48667"},{"ruleId":"45357","severity":2,"message":"45358","line":89,"column":14,"nodeType":"45359","messageId":"45360","endLine":89,"endColumn":17,"suggestions":"48668"},{"ruleId":"45357","severity":2,"message":"45358","line":90,"column":19,"nodeType":"45359","messageId":"45360","endLine":90,"endColumn":22,"suggestions":"48669"},{"ruleId":"45357","severity":2,"message":"45358","line":93,"column":30,"nodeType":"45359","messageId":"45360","endLine":93,"endColumn":33,"suggestions":"48670"},{"ruleId":"45357","severity":2,"message":"45358","line":94,"column":14,"nodeType":"45359","messageId":"45360","endLine":94,"endColumn":17,"suggestions":"48671"},{"ruleId":"45357","severity":2,"message":"45358","line":94,"column":43,"nodeType":"45359","messageId":"45360","endLine":94,"endColumn":46,"suggestions":"48672"},{"ruleId":"45357","severity":2,"message":"45358","line":95,"column":34,"nodeType":"45359","messageId":"45360","endLine":95,"endColumn":37,"suggestions":"48673"},{"ruleId":"45357","severity":2,"message":"45358","line":114,"column":30,"nodeType":"45359","messageId":"45360","endLine":114,"endColumn":33,"suggestions":"48674"},{"ruleId":"45357","severity":2,"message":"45358","line":115,"column":30,"nodeType":"45359","messageId":"45360","endLine":115,"endColumn":33,"suggestions":"48675"},{"ruleId":"45357","severity":2,"message":"45358","line":134,"column":31,"nodeType":"45359","messageId":"45360","endLine":134,"endColumn":34,"suggestions":"48676"},{"ruleId":"45357","severity":2,"message":"45358","line":134,"column":58,"nodeType":"45359","messageId":"45360","endLine":134,"endColumn":61,"suggestions":"48677"},{"ruleId":"45357","severity":2,"message":"45358","line":135,"column":30,"nodeType":"45359","messageId":"45360","endLine":135,"endColumn":33,"suggestions":"48678"},{"ruleId":"45357","severity":2,"message":"45358","line":156,"column":20,"nodeType":"45359","messageId":"45360","endLine":156,"endColumn":23,"suggestions":"48679"},{"ruleId":"45357","severity":2,"message":"45358","line":156,"column":47,"nodeType":"45359","messageId":"45360","endLine":156,"endColumn":50,"suggestions":"48680"},{"ruleId":"45357","severity":2,"message":"45358","line":159,"column":30,"nodeType":"45359","messageId":"45360","endLine":159,"endColumn":33,"suggestions":"48681"},{"ruleId":"45357","severity":2,"message":"45358","line":174,"column":34,"nodeType":"45359","messageId":"45360","endLine":174,"endColumn":37,"suggestions":"48682"},{"ruleId":"45357","severity":2,"message":"45358","line":198,"column":30,"nodeType":"45359","messageId":"45360","endLine":198,"endColumn":33,"suggestions":"48683"},{"ruleId":"45357","severity":2,"message":"45358","line":199,"column":30,"nodeType":"45359","messageId":"45360","endLine":199,"endColumn":33,"suggestions":"48684"},{"ruleId":"45357","severity":2,"message":"45358","line":200,"column":34,"nodeType":"45359","messageId":"45360","endLine":200,"endColumn":37,"suggestions":"48685"},{"ruleId":"45357","severity":2,"message":"45358","line":220,"column":30,"nodeType":"45359","messageId":"45360","endLine":220,"endColumn":33,"suggestions":"48686"},{"ruleId":"45357","severity":2,"message":"45358","line":221,"column":30,"nodeType":"45359","messageId":"45360","endLine":221,"endColumn":33,"suggestions":"48687"},{"ruleId":"45357","severity":2,"message":"45358","line":241,"column":30,"nodeType":"45359","messageId":"45360","endLine":241,"endColumn":33,"suggestions":"48688"},{"ruleId":"45357","severity":2,"message":"45358","line":258,"column":30,"nodeType":"45359","messageId":"45360","endLine":258,"endColumn":33,"suggestions":"48689"},{"ruleId":"45357","severity":2,"message":"45358","line":259,"column":30,"nodeType":"45359","messageId":"45360","endLine":259,"endColumn":33,"suggestions":"48690"},{"ruleId":"45357","severity":2,"message":"45358","line":277,"column":30,"nodeType":"45359","messageId":"45360","endLine":277,"endColumn":33,"suggestions":"48691"},{"ruleId":"45357","severity":2,"message":"45358","line":278,"column":30,"nodeType":"45359","messageId":"45360","endLine":278,"endColumn":33,"suggestions":"48692"},{"ruleId":"45357","severity":2,"message":"45358","line":279,"column":34,"nodeType":"45359","messageId":"45360","endLine":279,"endColumn":37,"suggestions":"48693"},{"ruleId":"45357","severity":2,"message":"45358","line":283,"column":19,"nodeType":"45359","messageId":"45360","endLine":283,"endColumn":22,"suggestions":"48694"},{"ruleId":"45357","severity":2,"message":"45358","line":305,"column":30,"nodeType":"45359","messageId":"45360","endLine":305,"endColumn":33,"suggestions":"48695"},{"ruleId":"45357","severity":2,"message":"45358","line":343,"column":30,"nodeType":"45359","messageId":"45360","endLine":343,"endColumn":33,"suggestions":"48696"},{"ruleId":"45357","severity":2,"message":"45358","line":344,"column":30,"nodeType":"45359","messageId":"45360","endLine":344,"endColumn":33,"suggestions":"48697"},{"ruleId":"45357","severity":2,"message":"45358","line":345,"column":30,"nodeType":"45359","messageId":"45360","endLine":345,"endColumn":33,"suggestions":"48698"},{"ruleId":"45357","severity":2,"message":"45358","line":346,"column":14,"nodeType":"45359","messageId":"45360","endLine":346,"endColumn":17,"suggestions":"48699"},{"ruleId":"45357","severity":2,"message":"45358","line":346,"column":39,"nodeType":"45359","messageId":"45360","endLine":346,"endColumn":42,"suggestions":"48700"},{"ruleId":"45357","severity":2,"message":"45358","line":347,"column":14,"nodeType":"45359","messageId":"45360","endLine":347,"endColumn":17,"suggestions":"48701"},{"ruleId":"45357","severity":2,"message":"45358","line":347,"column":39,"nodeType":"45359","messageId":"45360","endLine":347,"endColumn":42,"suggestions":"48702"},{"ruleId":"45357","severity":2,"message":"45358","line":348,"column":14,"nodeType":"45359","messageId":"45360","endLine":348,"endColumn":17,"suggestions":"48703"},{"ruleId":"45357","severity":2,"message":"45358","line":348,"column":39,"nodeType":"45359","messageId":"45360","endLine":348,"endColumn":42,"suggestions":"48704"},{"ruleId":"45357","severity":2,"message":"45358","line":349,"column":30,"nodeType":"45359","messageId":"45360","endLine":349,"endColumn":33,"suggestions":"48705"},{"ruleId":"45357","severity":2,"message":"45358","line":350,"column":31,"nodeType":"45359","messageId":"45360","endLine":350,"endColumn":34,"suggestions":"48706"},{"ruleId":"45357","severity":2,"message":"45358","line":350,"column":45,"nodeType":"45359","messageId":"45360","endLine":350,"endColumn":48,"suggestions":"48707"},{"ruleId":"45357","severity":2,"message":"45358","line":351,"column":30,"nodeType":"45359","messageId":"45360","endLine":351,"endColumn":33,"suggestions":"48708"},{"ruleId":"45357","severity":2,"message":"45358","line":352,"column":30,"nodeType":"45359","messageId":"45360","endLine":352,"endColumn":33,"suggestions":"48709"},{"ruleId":"45357","severity":2,"message":"45358","line":361,"column":9,"nodeType":"45359","messageId":"45360","endLine":361,"endColumn":12,"suggestions":"48710"},{"ruleId":"45357","severity":2,"message":"45358","line":379,"column":9,"nodeType":"45359","messageId":"45360","endLine":379,"endColumn":12,"suggestions":"48711"},{"ruleId":"45357","severity":2,"message":"45358","line":415,"column":30,"nodeType":"45359","messageId":"45360","endLine":415,"endColumn":33,"suggestions":"48712"},{"ruleId":"45357","severity":2,"message":"45358","line":416,"column":31,"nodeType":"45359","messageId":"45360","endLine":416,"endColumn":34,"suggestions":"48713"},{"ruleId":"45357","severity":2,"message":"45358","line":416,"column":49,"nodeType":"45359","messageId":"45360","endLine":416,"endColumn":52,"suggestions":"48714"},{"ruleId":"45357","severity":2,"message":"45358","line":417,"column":30,"nodeType":"45359","messageId":"45360","endLine":417,"endColumn":33,"suggestions":"48715"},{"ruleId":"45357","severity":2,"message":"45358","line":418,"column":30,"nodeType":"45359","messageId":"45360","endLine":418,"endColumn":33,"suggestions":"48716"},{"ruleId":"45357","severity":2,"message":"45358","line":419,"column":30,"nodeType":"45359","messageId":"45360","endLine":419,"endColumn":33,"suggestions":"48717"},{"ruleId":"45357","severity":2,"message":"45358","line":420,"column":14,"nodeType":"45359","messageId":"45360","endLine":420,"endColumn":17,"suggestions":"48718"},{"ruleId":"45357","severity":2,"message":"45358","line":420,"column":39,"nodeType":"45359","messageId":"45360","endLine":420,"endColumn":42,"suggestions":"48719"},{"ruleId":"45357","severity":2,"message":"45358","line":421,"column":30,"nodeType":"45359","messageId":"45360","endLine":421,"endColumn":33,"suggestions":"48720"},{"ruleId":"45357","severity":2,"message":"45358","line":422,"column":30,"nodeType":"45359","messageId":"45360","endLine":422,"endColumn":33,"suggestions":"48721"},{"ruleId":"45357","severity":2,"message":"45358","line":423,"column":30,"nodeType":"45359","messageId":"45360","endLine":423,"endColumn":33,"suggestions":"48722"},{"ruleId":"45357","severity":2,"message":"45358","line":488,"column":30,"nodeType":"45359","messageId":"45360","endLine":488,"endColumn":33,"suggestions":"48723"},{"ruleId":"45357","severity":2,"message":"45358","line":489,"column":34,"nodeType":"45359","messageId":"45360","endLine":489,"endColumn":37,"suggestions":"48724"},{"ruleId":"45357","severity":2,"message":"45358","line":506,"column":30,"nodeType":"45359","messageId":"45360","endLine":506,"endColumn":33,"suggestions":"48725"},{"ruleId":"45357","severity":2,"message":"45358","line":507,"column":30,"nodeType":"45359","messageId":"45360","endLine":507,"endColumn":33,"suggestions":"48726"},{"ruleId":"45357","severity":2,"message":"45358","line":521,"column":30,"nodeType":"45359","messageId":"45360","endLine":521,"endColumn":33,"suggestions":"48727"},{"ruleId":"45357","severity":2,"message":"45358","line":522,"column":30,"nodeType":"45359","messageId":"45360","endLine":522,"endColumn":33,"suggestions":"48728"},{"ruleId":"45357","severity":2,"message":"45358","line":548,"column":30,"nodeType":"45359","messageId":"45360","endLine":548,"endColumn":33,"suggestions":"48729"},{"ruleId":"45357","severity":2,"message":"45358","line":549,"column":30,"nodeType":"45359","messageId":"45360","endLine":549,"endColumn":33,"suggestions":"48730"},{"ruleId":"45357","severity":2,"message":"45358","line":550,"column":30,"nodeType":"45359","messageId":"45360","endLine":550,"endColumn":33,"suggestions":"48731"},{"ruleId":"45357","severity":2,"message":"45358","line":565,"column":30,"nodeType":"45359","messageId":"45360","endLine":565,"endColumn":33,"suggestions":"48732"},{"ruleId":"45357","severity":2,"message":"45358","line":566,"column":40,"nodeType":"45359","messageId":"45360","endLine":566,"endColumn":43,"suggestions":"48733"},{"ruleId":"45357","severity":2,"message":"45358","line":597,"column":33,"nodeType":"45359","messageId":"45360","endLine":597,"endColumn":36,"suggestions":"48734"},{"ruleId":"45357","severity":2,"message":"45358","line":622,"column":33,"nodeType":"45359","messageId":"45360","endLine":622,"endColumn":36,"suggestions":"48735"},{"ruleId":"45357","severity":2,"message":"45358","line":642,"column":33,"nodeType":"45359","messageId":"45360","endLine":642,"endColumn":36,"suggestions":"48736"},{"ruleId":"45357","severity":2,"message":"45358","line":686,"column":9,"nodeType":"45359","messageId":"45360","endLine":686,"endColumn":12,"suggestions":"48737"},{"ruleId":"45357","severity":2,"message":"45358","line":717,"column":9,"nodeType":"45359","messageId":"45360","endLine":717,"endColumn":12,"suggestions":"48738"},{"ruleId":"45357","severity":2,"message":"45358","line":744,"column":9,"nodeType":"45359","messageId":"45360","endLine":744,"endColumn":12,"suggestions":"48739"},{"ruleId":"45357","severity":2,"message":"45358","line":773,"column":9,"nodeType":"45359","messageId":"45360","endLine":773,"endColumn":12,"suggestions":"48740"},{"ruleId":"45357","severity":2,"message":"45358","line":791,"column":9,"nodeType":"45359","messageId":"45360","endLine":791,"endColumn":12,"suggestions":"48741"},{"ruleId":"45357","severity":2,"message":"45358","line":808,"column":9,"nodeType":"45359","messageId":"45360","endLine":808,"endColumn":12,"suggestions":"48742"},{"ruleId":"45357","severity":2,"message":"45358","line":825,"column":9,"nodeType":"45359","messageId":"45360","endLine":825,"endColumn":12,"suggestions":"48743"},{"ruleId":"45357","severity":2,"message":"45358","line":842,"column":9,"nodeType":"45359","messageId":"45360","endLine":842,"endColumn":12,"suggestions":"48744"},{"ruleId":"45357","severity":2,"message":"45358","line":857,"column":9,"nodeType":"45359","messageId":"45360","endLine":857,"endColumn":12,"suggestions":"48745"},{"ruleId":"45357","severity":2,"message":"45358","line":868,"column":9,"nodeType":"45359","messageId":"45360","endLine":868,"endColumn":12,"suggestions":"48746"},{"ruleId":"45357","severity":2,"message":"45358","line":879,"column":9,"nodeType":"45359","messageId":"45360","endLine":879,"endColumn":12,"suggestions":"48747"},{"ruleId":"45357","severity":2,"message":"45358","line":890,"column":9,"nodeType":"45359","messageId":"45360","endLine":890,"endColumn":12,"suggestions":"48748"},{"ruleId":"45357","severity":2,"message":"45358","line":21,"column":41,"nodeType":"45359","messageId":"45360","endLine":21,"endColumn":44,"suggestions":"48749"},{"ruleId":"45357","severity":2,"message":"45358","line":21,"column":56,"nodeType":"45359","messageId":"45360","endLine":21,"endColumn":59,"suggestions":"48750"},{"ruleId":"45357","severity":2,"message":"45358","line":47,"column":41,"nodeType":"45359","messageId":"45360","endLine":47,"endColumn":44,"suggestions":"48751"},{"ruleId":"45357","severity":2,"message":"45358","line":47,"column":56,"nodeType":"45359","messageId":"45360","endLine":47,"endColumn":59,"suggestions":"48752"},{"ruleId":"45357","severity":2,"message":"45358","line":188,"column":37,"nodeType":"45359","messageId":"45360","endLine":188,"endColumn":40,"suggestions":"48753"},{"ruleId":"45357","severity":2,"message":"45358","line":188,"column":48,"nodeType":"45359","messageId":"45360","endLine":188,"endColumn":51,"suggestions":"48754"},{"ruleId":"45357","severity":2,"message":"45358","line":23,"column":31,"nodeType":"45359","messageId":"45360","endLine":23,"endColumn":34,"suggestions":"48755"},{"ruleId":"45357","severity":2,"message":"45358","line":36,"column":36,"nodeType":"45359","messageId":"45360","endLine":36,"endColumn":39,"suggestions":"48756"},{"ruleId":"45357","severity":2,"message":"45358","line":55,"column":30,"nodeType":"45359","messageId":"45360","endLine":55,"endColumn":33,"suggestions":"48757"},{"ruleId":"45357","severity":2,"message":"45358","line":70,"column":27,"nodeType":"45359","messageId":"45360","endLine":70,"endColumn":30,"suggestions":"48758"},{"ruleId":"45357","severity":2,"message":"45358","line":71,"column":27,"nodeType":"45359","messageId":"45360","endLine":71,"endColumn":30,"suggestions":"48759"},{"ruleId":"45357","severity":2,"message":"45358","line":72,"column":27,"nodeType":"45359","messageId":"45360","endLine":72,"endColumn":30,"suggestions":"48760"},{"ruleId":"45357","severity":2,"message":"45358","line":73,"column":31,"nodeType":"45359","messageId":"45360","endLine":73,"endColumn":34,"suggestions":"48761"},{"ruleId":"45357","severity":2,"message":"45358","line":86,"column":27,"nodeType":"45359","messageId":"45360","endLine":86,"endColumn":30,"suggestions":"48762"},{"ruleId":"45357","severity":2,"message":"45358","line":87,"column":27,"nodeType":"45359","messageId":"45360","endLine":87,"endColumn":30,"suggestions":"48763"},{"ruleId":"45357","severity":2,"message":"45358","line":88,"column":31,"nodeType":"45359","messageId":"45360","endLine":88,"endColumn":34,"suggestions":"48764"},{"ruleId":"45357","severity":2,"message":"45358","line":99,"column":27,"nodeType":"45359","messageId":"45360","endLine":99,"endColumn":30,"suggestions":"48765"},{"ruleId":"45357","severity":2,"message":"45358","line":100,"column":27,"nodeType":"45359","messageId":"45360","endLine":100,"endColumn":30,"suggestions":"48766"},{"ruleId":"45357","severity":2,"message":"45358","line":101,"column":27,"nodeType":"45359","messageId":"45360","endLine":101,"endColumn":30,"suggestions":"48767"},{"ruleId":"45357","severity":2,"message":"45358","line":222,"column":30,"nodeType":"45359","messageId":"45360","endLine":222,"endColumn":33,"suggestions":"48768"},{"ruleId":"45357","severity":2,"message":"45358","line":243,"column":31,"nodeType":"45359","messageId":"45360","endLine":243,"endColumn":34,"suggestions":"48769"},{"ruleId":"45357","severity":2,"message":"45358","line":261,"column":31,"nodeType":"45359","messageId":"45360","endLine":261,"endColumn":34,"suggestions":"48770"},{"ruleId":"45357","severity":2,"message":"45358","line":279,"column":30,"nodeType":"45359","messageId":"45360","endLine":279,"endColumn":33,"suggestions":"48771"},{"ruleId":"45357","severity":2,"message":"45358","line":297,"column":31,"nodeType":"45359","messageId":"45360","endLine":297,"endColumn":34,"suggestions":"48772"},{"ruleId":"45357","severity":2,"message":"45358","line":312,"column":14,"nodeType":"45359","messageId":"45360","endLine":312,"endColumn":17,"suggestions":"48773"},{"ruleId":"45357","severity":2,"message":"45358","line":312,"column":40,"nodeType":"45359","messageId":"45360","endLine":312,"endColumn":43,"suggestions":"48774"},{"ruleId":"45357","severity":2,"message":"45358","line":326,"column":14,"nodeType":"45359","messageId":"45360","endLine":326,"endColumn":17,"suggestions":"48775"},{"ruleId":"45357","severity":2,"message":"45358","line":326,"column":40,"nodeType":"45359","messageId":"45360","endLine":326,"endColumn":43,"suggestions":"48776"},{"ruleId":"45357","severity":2,"message":"45358","line":335,"column":27,"nodeType":"45359","messageId":"45360","endLine":335,"endColumn":30,"suggestions":"48777"},{"ruleId":"45357","severity":2,"message":"45358","line":345,"column":27,"nodeType":"45359","messageId":"45360","endLine":345,"endColumn":30,"suggestions":"48778"},{"ruleId":"45357","severity":2,"message":"45358","line":356,"column":22,"nodeType":"45359","messageId":"45360","endLine":356,"endColumn":25,"suggestions":"48779"},{"ruleId":"45357","severity":2,"message":"45358","line":373,"column":22,"nodeType":"45359","messageId":"45360","endLine":373,"endColumn":25,"suggestions":"48780"},{"ruleId":"45357","severity":2,"message":"45358","line":385,"column":22,"nodeType":"45359","messageId":"45360","endLine":385,"endColumn":25,"suggestions":"48781"},{"ruleId":"45357","severity":2,"message":"45358","line":397,"column":22,"nodeType":"45359","messageId":"45360","endLine":397,"endColumn":25,"suggestions":"48782"},{"ruleId":"45357","severity":2,"message":"45358","line":410,"column":35,"nodeType":"45359","messageId":"45360","endLine":410,"endColumn":38,"suggestions":"48783"},{"ruleId":"45357","severity":2,"message":"45358","line":433,"column":33,"nodeType":"45359","messageId":"45360","endLine":433,"endColumn":36,"suggestions":"48784"},{"ruleId":"45357","severity":2,"message":"45358","line":446,"column":27,"nodeType":"45359","messageId":"45360","endLine":446,"endColumn":30,"suggestions":"48785"},{"ruleId":"45357","severity":2,"message":"45358","line":447,"column":27,"nodeType":"45359","messageId":"45360","endLine":447,"endColumn":30,"suggestions":"48786"},{"ruleId":"45357","severity":2,"message":"45358","line":463,"column":29,"nodeType":"45359","messageId":"45360","endLine":463,"endColumn":32,"suggestions":"48787"},{"ruleId":"45357","severity":2,"message":"45358","line":484,"column":31,"nodeType":"45359","messageId":"45360","endLine":484,"endColumn":34,"suggestions":"48788"},{"ruleId":"45357","severity":2,"message":"45358","line":488,"column":29,"nodeType":"45359","messageId":"45360","endLine":488,"endColumn":32,"suggestions":"48789"},{"ruleId":"45357","severity":2,"message":"45358","line":168,"column":51,"nodeType":"45359","messageId":"45360","endLine":168,"endColumn":54,"suggestions":"48790"},{"ruleId":"45357","severity":2,"message":"45358","line":178,"column":67,"nodeType":"45359","messageId":"45360","endLine":178,"endColumn":70,"suggestions":"48791"},{"ruleId":"45357","severity":2,"message":"45358","line":179,"column":61,"nodeType":"45359","messageId":"45360","endLine":179,"endColumn":64,"suggestions":"48792"},{"ruleId":"45357","severity":2,"message":"45358","line":180,"column":47,"nodeType":"45359","messageId":"45360","endLine":180,"endColumn":50,"suggestions":"48793"},{"ruleId":"45357","severity":2,"message":"45358","line":224,"column":53,"nodeType":"45359","messageId":"45360","endLine":224,"endColumn":56,"suggestions":"48794"},{"ruleId":"45357","severity":2,"message":"45358","line":323,"column":57,"nodeType":"45359","messageId":"45360","endLine":323,"endColumn":60,"suggestions":"48795"},{"ruleId":"45357","severity":2,"message":"45358","line":324,"column":60,"nodeType":"45359","messageId":"45360","endLine":324,"endColumn":63,"suggestions":"48796"},{"ruleId":"45357","severity":2,"message":"45358","line":325,"column":51,"nodeType":"45359","messageId":"45360","endLine":325,"endColumn":54,"suggestions":"48797"},{"ruleId":"45357","severity":2,"message":"45358","line":326,"column":53,"nodeType":"45359","messageId":"45360","endLine":326,"endColumn":56,"suggestions":"48798"},{"ruleId":"45357","severity":2,"message":"45358","line":327,"column":57,"nodeType":"45359","messageId":"45360","endLine":327,"endColumn":60,"suggestions":"48799"},{"ruleId":"45357","severity":2,"message":"45358","line":328,"column":52,"nodeType":"45359","messageId":"45360","endLine":328,"endColumn":55,"suggestions":"48800"},{"ruleId":"45357","severity":2,"message":"45358","line":329,"column":55,"nodeType":"45359","messageId":"45360","endLine":329,"endColumn":58,"suggestions":"48801"},{"ruleId":"45357","severity":2,"message":"45358","line":330,"column":73,"nodeType":"45359","messageId":"45360","endLine":330,"endColumn":76,"suggestions":"48802"},{"ruleId":"45357","severity":2,"message":"45358","line":331,"column":95,"nodeType":"45359","messageId":"45360","endLine":331,"endColumn":98,"suggestions":"48803"},{"ruleId":"45357","severity":2,"message":"45358","line":332,"column":49,"nodeType":"45359","messageId":"45360","endLine":332,"endColumn":52,"suggestions":"48804"},{"ruleId":"45357","severity":2,"message":"45358","line":333,"column":71,"nodeType":"45359","messageId":"45360","endLine":333,"endColumn":74,"suggestions":"48805"},{"ruleId":"45357","severity":2,"message":"45358","line":334,"column":59,"nodeType":"45359","messageId":"45360","endLine":334,"endColumn":62,"suggestions":"48806"},{"ruleId":"45357","severity":2,"message":"45358","line":415,"column":53,"nodeType":"45359","messageId":"45360","endLine":415,"endColumn":56,"suggestions":"48807"},{"ruleId":"45357","severity":2,"message":"45358","line":416,"column":60,"nodeType":"45359","messageId":"45360","endLine":416,"endColumn":63,"suggestions":"48808"},{"ruleId":"45357","severity":2,"message":"45358","line":417,"column":56,"nodeType":"45359","messageId":"45360","endLine":417,"endColumn":59,"suggestions":"48809"},{"ruleId":"45357","severity":2,"message":"45358","line":418,"column":64,"nodeType":"45359","messageId":"45360","endLine":418,"endColumn":67,"suggestions":"48810"},{"ruleId":"45357","severity":2,"message":"45358","line":419,"column":60,"nodeType":"45359","messageId":"45360","endLine":419,"endColumn":63,"suggestions":"48811"},{"ruleId":"45357","severity":2,"message":"45358","line":456,"column":63,"nodeType":"45359","messageId":"45360","endLine":456,"endColumn":66,"suggestions":"48812"},{"ruleId":"45357","severity":2,"message":"45358","line":480,"column":61,"nodeType":"45359","messageId":"45360","endLine":480,"endColumn":64,"suggestions":"48813"},{"ruleId":"45357","severity":2,"message":"45358","line":481,"column":59,"nodeType":"45359","messageId":"45360","endLine":481,"endColumn":62,"suggestions":"48814"},{"ruleId":"45357","severity":2,"message":"45358","line":503,"column":60,"nodeType":"45359","messageId":"45360","endLine":503,"endColumn":63,"suggestions":"48815"},{"ruleId":"45357","severity":2,"message":"45358","line":516,"column":54,"nodeType":"45359","messageId":"45360","endLine":516,"endColumn":57,"suggestions":"48816"},{"ruleId":"45357","severity":2,"message":"45358","line":551,"column":47,"nodeType":"45359","messageId":"45360","endLine":551,"endColumn":50,"suggestions":"48817"},{"ruleId":"45357","severity":2,"message":"45358","line":583,"column":47,"nodeType":"45359","messageId":"45360","endLine":583,"endColumn":50,"suggestions":"48818"},{"ruleId":"45357","severity":2,"message":"45358","line":628,"column":53,"nodeType":"45359","messageId":"45360","endLine":628,"endColumn":56,"suggestions":"48819"},{"ruleId":"45357","severity":2,"message":"45358","line":690,"column":65,"nodeType":"45359","messageId":"45360","endLine":690,"endColumn":68,"suggestions":"48820"},{"ruleId":"45357","severity":2,"message":"45358","line":691,"column":59,"nodeType":"45359","messageId":"45360","endLine":691,"endColumn":62,"suggestions":"48821"},{"ruleId":"45357","severity":2,"message":"45358","line":692,"column":53,"nodeType":"45359","messageId":"45360","endLine":692,"endColumn":56,"suggestions":"48822"},{"ruleId":"45357","severity":2,"message":"45358","line":693,"column":43,"nodeType":"45359","messageId":"45360","endLine":693,"endColumn":46,"suggestions":"48823"},{"ruleId":"45357","severity":2,"message":"45358","line":694,"column":53,"nodeType":"45359","messageId":"45360","endLine":694,"endColumn":56,"suggestions":"48824"},{"ruleId":"45357","severity":2,"message":"45358","line":695,"column":55,"nodeType":"45359","messageId":"45360","endLine":695,"endColumn":58,"suggestions":"48825"},{"ruleId":"45357","severity":2,"message":"45358","line":696,"column":67,"nodeType":"45359","messageId":"45360","endLine":696,"endColumn":70,"suggestions":"48826"},{"ruleId":"45357","severity":2,"message":"45358","line":697,"column":59,"nodeType":"45359","messageId":"45360","endLine":697,"endColumn":62,"suggestions":"48827"},{"ruleId":"45357","severity":2,"message":"45358","line":698,"column":49,"nodeType":"45359","messageId":"45360","endLine":698,"endColumn":52,"suggestions":"48828"},{"ruleId":"45357","severity":2,"message":"45358","line":699,"column":61,"nodeType":"45359","messageId":"45360","endLine":699,"endColumn":64,"suggestions":"48829"},{"ruleId":"45357","severity":2,"message":"45358","line":700,"column":63,"nodeType":"45359","messageId":"45360","endLine":700,"endColumn":66,"suggestions":"48830"},{"ruleId":"45357","severity":2,"message":"45358","line":701,"column":59,"nodeType":"45359","messageId":"45360","endLine":701,"endColumn":62,"suggestions":"48831"},{"ruleId":"45357","severity":2,"message":"45358","line":744,"column":49,"nodeType":"45359","messageId":"45360","endLine":744,"endColumn":52,"suggestions":"48832"},{"ruleId":"45357","severity":2,"message":"45358","line":767,"column":57,"nodeType":"45359","messageId":"45360","endLine":767,"endColumn":60,"suggestions":"48833"},{"ruleId":"45357","severity":2,"message":"45358","line":768,"column":69,"nodeType":"45359","messageId":"45360","endLine":768,"endColumn":72,"suggestions":"48834"},{"ruleId":"45357","severity":2,"message":"45358","line":769,"column":59,"nodeType":"45359","messageId":"45360","endLine":769,"endColumn":62,"suggestions":"48835"},{"ruleId":"45357","severity":2,"message":"45358","line":818,"column":71,"nodeType":"45359","messageId":"45360","endLine":818,"endColumn":74,"suggestions":"48836"},{"ruleId":"45357","severity":2,"message":"45358","line":819,"column":63,"nodeType":"45359","messageId":"45360","endLine":819,"endColumn":66,"suggestions":"48837"},{"ruleId":"45357","severity":2,"message":"45358","line":897,"column":45,"nodeType":"45359","messageId":"45360","endLine":897,"endColumn":48,"suggestions":"48838"},{"ruleId":"45357","severity":2,"message":"45358","line":920,"column":49,"nodeType":"45359","messageId":"45360","endLine":920,"endColumn":52,"suggestions":"48839"},{"ruleId":"45357","severity":2,"message":"45358","line":937,"column":49,"nodeType":"45359","messageId":"45360","endLine":937,"endColumn":52,"suggestions":"48840"},{"ruleId":"45357","severity":2,"message":"45358","line":983,"column":55,"nodeType":"45359","messageId":"45360","endLine":983,"endColumn":58,"suggestions":"48841"},{"ruleId":"45357","severity":2,"message":"45358","line":1012,"column":53,"nodeType":"45359","messageId":"45360","endLine":1012,"endColumn":56,"suggestions":"48842"},{"ruleId":"45357","severity":2,"message":"45358","line":1034,"column":45,"nodeType":"45359","messageId":"45360","endLine":1034,"endColumn":48,"suggestions":"48843"},{"ruleId":"45357","severity":2,"message":"45358","line":1075,"column":43,"nodeType":"45359","messageId":"45360","endLine":1075,"endColumn":46,"suggestions":"48844"},{"ruleId":"45357","severity":2,"message":"45358","line":1144,"column":65,"nodeType":"45359","messageId":"45360","endLine":1144,"endColumn":68,"suggestions":"48845"},{"ruleId":"45357","severity":2,"message":"45358","line":1231,"column":57,"nodeType":"45359","messageId":"45360","endLine":1231,"endColumn":60,"suggestions":"48846"},{"ruleId":"45357","severity":2,"message":"45358","line":61,"column":30,"nodeType":"45359","messageId":"45360","endLine":61,"endColumn":33,"suggestions":"48847"},{"ruleId":"45357","severity":2,"message":"45358","line":62,"column":18,"nodeType":"45359","messageId":"45360","endLine":62,"endColumn":21,"suggestions":"48848"},{"ruleId":"45357","severity":2,"message":"45358","line":62,"column":39,"nodeType":"45359","messageId":"45360","endLine":62,"endColumn":42,"suggestions":"48849"},{"ruleId":"45357","severity":2,"message":"45358","line":63,"column":18,"nodeType":"45359","messageId":"45360","endLine":63,"endColumn":21,"suggestions":"48850"},{"ruleId":"45357","severity":2,"message":"45358","line":63,"column":39,"nodeType":"45359","messageId":"45360","endLine":63,"endColumn":42,"suggestions":"48851"},{"ruleId":"45357","severity":2,"message":"45358","line":84,"column":30,"nodeType":"45359","messageId":"45360","endLine":84,"endColumn":33,"suggestions":"48852"},{"ruleId":"45357","severity":2,"message":"45358","line":85,"column":30,"nodeType":"45359","messageId":"45360","endLine":85,"endColumn":33,"suggestions":"48853"},{"ruleId":"45357","severity":2,"message":"45358","line":86,"column":30,"nodeType":"45359","messageId":"45360","endLine":86,"endColumn":33,"suggestions":"48854"},{"ruleId":"45357","severity":2,"message":"45358","line":107,"column":30,"nodeType":"45359","messageId":"45360","endLine":107,"endColumn":33,"suggestions":"48855"},{"ruleId":"45357","severity":2,"message":"45358","line":28,"column":33,"nodeType":"45359","messageId":"45360","endLine":28,"endColumn":36,"suggestions":"48856"},{"ruleId":"45357","severity":2,"message":"45358","line":29,"column":14,"nodeType":"45359","messageId":"45360","endLine":29,"endColumn":17,"suggestions":"48857"},{"ruleId":"45357","severity":2,"message":"45358","line":29,"column":42,"nodeType":"45359","messageId":"45360","endLine":29,"endColumn":45,"suggestions":"48858"},{"ruleId":"45357","severity":2,"message":"45358","line":30,"column":14,"nodeType":"45359","messageId":"45360","endLine":30,"endColumn":17,"suggestions":"48859"},{"ruleId":"45357","severity":2,"message":"45358","line":30,"column":42,"nodeType":"45359","messageId":"45360","endLine":30,"endColumn":45,"suggestions":"48860"},{"ruleId":"45357","severity":2,"message":"45358","line":41,"column":14,"nodeType":"45359","messageId":"45360","endLine":41,"endColumn":17,"suggestions":"48861"},{"ruleId":"45357","severity":2,"message":"45358","line":41,"column":42,"nodeType":"45359","messageId":"45360","endLine":41,"endColumn":45,"suggestions":"48862"},{"ruleId":"45357","severity":2,"message":"45358","line":42,"column":33,"nodeType":"45359","messageId":"45360","endLine":42,"endColumn":36,"suggestions":"48863"},{"ruleId":"45357","severity":2,"message":"45358","line":82,"column":27,"nodeType":"45359","messageId":"45360","endLine":82,"endColumn":30,"suggestions":"48864"},{"ruleId":"45357","severity":2,"message":"45358","line":91,"column":27,"nodeType":"45359","messageId":"45360","endLine":91,"endColumn":30,"suggestions":"48865"},{"ruleId":"45357","severity":2,"message":"45358","line":97,"column":27,"nodeType":"45359","messageId":"45360","endLine":97,"endColumn":30,"suggestions":"48866"},{"ruleId":"45357","severity":2,"message":"45358","line":106,"column":27,"nodeType":"45359","messageId":"45360","endLine":106,"endColumn":30,"suggestions":"48867"},{"ruleId":"45357","severity":2,"message":"45358","line":50,"column":43,"nodeType":"45359","messageId":"45360","endLine":50,"endColumn":46,"suggestions":"48868"},{"ruleId":"45357","severity":2,"message":"45358","line":113,"column":45,"nodeType":"45359","messageId":"45360","endLine":113,"endColumn":48,"suggestions":"48869"},{"ruleId":"45357","severity":2,"message":"45358","line":246,"column":45,"nodeType":"45359","messageId":"45360","endLine":246,"endColumn":48,"suggestions":"48870"},{"ruleId":"45357","severity":2,"message":"45358","line":303,"column":45,"nodeType":"45359","messageId":"45360","endLine":303,"endColumn":48,"suggestions":"48871"},{"ruleId":"45357","severity":2,"message":"45358","line":351,"column":45,"nodeType":"45359","messageId":"45360","endLine":351,"endColumn":48,"suggestions":"48872"},{"ruleId":"45357","severity":2,"message":"45358","line":406,"column":45,"nodeType":"45359","messageId":"45360","endLine":406,"endColumn":48,"suggestions":"48873"},{"ruleId":"45357","severity":2,"message":"45358","line":452,"column":45,"nodeType":"45359","messageId":"45360","endLine":452,"endColumn":48,"suggestions":"48874"},{"ruleId":"45357","severity":2,"message":"45358","line":20,"column":24,"nodeType":"45359","messageId":"45360","endLine":20,"endColumn":27,"suggestions":"48875"},{"ruleId":"45357","severity":2,"message":"45358","line":30,"column":24,"nodeType":"45359","messageId":"45360","endLine":30,"endColumn":27,"suggestions":"48876"},{"ruleId":"45357","severity":2,"message":"45358","line":39,"column":24,"nodeType":"45359","messageId":"45360","endLine":39,"endColumn":27,"suggestions":"48877"},{"ruleId":"45357","severity":2,"message":"45358","line":45,"column":25,"nodeType":"45359","messageId":"45360","endLine":45,"endColumn":28,"suggestions":"48878"},{"ruleId":"45357","severity":2,"message":"45358","line":49,"column":26,"nodeType":"45359","messageId":"45360","endLine":49,"endColumn":29,"suggestions":"48879"},{"ruleId":"45357","severity":2,"message":"45358","line":34,"column":63,"nodeType":"45359","messageId":"45360","endLine":34,"endColumn":66,"suggestions":"48880"},{"ruleId":"45357","severity":2,"message":"45358","line":101,"column":50,"nodeType":"45359","messageId":"45360","endLine":101,"endColumn":53,"suggestions":"48881"},{"ruleId":"45357","severity":2,"message":"45358","line":42,"column":57,"nodeType":"45359","messageId":"45360","endLine":42,"endColumn":60,"suggestions":"48882"},{"ruleId":"45357","severity":2,"message":"45358","line":48,"column":63,"nodeType":"45359","messageId":"45360","endLine":48,"endColumn":66,"suggestions":"48883"},{"ruleId":"45357","severity":2,"message":"45358","line":62,"column":73,"nodeType":"45359","messageId":"45360","endLine":62,"endColumn":76,"suggestions":"48884"},{"ruleId":"45357","severity":2,"message":"45358","line":115,"column":33,"nodeType":"45359","messageId":"45360","endLine":115,"endColumn":36,"suggestions":"48885"},{"ruleId":"45357","severity":2,"message":"45358","line":133,"column":33,"nodeType":"45359","messageId":"45360","endLine":133,"endColumn":36,"suggestions":"48886"},{"ruleId":"45357","severity":2,"message":"45358","line":157,"column":33,"nodeType":"45359","messageId":"45360","endLine":157,"endColumn":36,"suggestions":"48887"},{"ruleId":"45357","severity":2,"message":"45358","line":184,"column":33,"nodeType":"45359","messageId":"45360","endLine":184,"endColumn":36,"suggestions":"48888"},{"ruleId":"45357","severity":2,"message":"45358","line":204,"column":33,"nodeType":"45359","messageId":"45360","endLine":204,"endColumn":36,"suggestions":"48889"},{"ruleId":"45357","severity":2,"message":"45358","line":225,"column":33,"nodeType":"45359","messageId":"45360","endLine":225,"endColumn":36,"suggestions":"48890"},{"ruleId":"45357","severity":2,"message":"45358","line":247,"column":33,"nodeType":"45359","messageId":"45360","endLine":247,"endColumn":36,"suggestions":"48891"},{"ruleId":"45357","severity":2,"message":"45358","line":233,"column":61,"nodeType":"45359","messageId":"45360","endLine":233,"endColumn":64,"suggestions":"48892"},{"ruleId":"45357","severity":2,"message":"45358","line":14,"column":26,"nodeType":"45359","messageId":"45360","endLine":14,"endColumn":29,"suggestions":"48893"},{"ruleId":"45357","severity":2,"message":"45358","line":15,"column":35,"nodeType":"45359","messageId":"45360","endLine":15,"endColumn":38,"suggestions":"48894"},{"ruleId":"45357","severity":2,"message":"45358","line":18,"column":34,"nodeType":"45359","messageId":"45360","endLine":18,"endColumn":37,"suggestions":"48895"},{"ruleId":"45357","severity":2,"message":"45358","line":56,"column":86,"nodeType":"45359","messageId":"45360","endLine":56,"endColumn":89,"suggestions":"48896"},{"ruleId":"45357","severity":2,"message":"45358","line":61,"column":29,"nodeType":"45359","messageId":"45360","endLine":61,"endColumn":32,"suggestions":"48897"},{"ruleId":"45357","severity":2,"message":"45358","line":62,"column":20,"nodeType":"45359","messageId":"45360","endLine":62,"endColumn":23,"suggestions":"48898"},{"ruleId":"45357","severity":2,"message":"45358","line":102,"column":30,"nodeType":"45359","messageId":"45360","endLine":102,"endColumn":33,"suggestions":"48899"},{"ruleId":"45357","severity":2,"message":"45358","line":103,"column":18,"nodeType":"45359","messageId":"45360","endLine":103,"endColumn":21,"suggestions":"48900"},{"ruleId":"45357","severity":2,"message":"45358","line":103,"column":39,"nodeType":"45359","messageId":"45360","endLine":103,"endColumn":42,"suggestions":"48901"},{"ruleId":"45357","severity":2,"message":"45358","line":104,"column":18,"nodeType":"45359","messageId":"45360","endLine":104,"endColumn":21,"suggestions":"48902"},{"ruleId":"45357","severity":2,"message":"45358","line":104,"column":43,"nodeType":"45359","messageId":"45360","endLine":104,"endColumn":46,"suggestions":"48903"},{"ruleId":"45357","severity":2,"message":"45358","line":124,"column":30,"nodeType":"45359","messageId":"45360","endLine":124,"endColumn":33,"suggestions":"48904"},{"ruleId":"45357","severity":2,"message":"45358","line":125,"column":30,"nodeType":"45359","messageId":"45360","endLine":125,"endColumn":33,"suggestions":"48905"},{"ruleId":"45357","severity":2,"message":"45358","line":126,"column":30,"nodeType":"45359","messageId":"45360","endLine":126,"endColumn":33,"suggestions":"48906"},{"ruleId":"45357","severity":2,"message":"45358","line":28,"column":44,"nodeType":"45359","messageId":"45360","endLine":28,"endColumn":47,"suggestions":"48907"},{"ruleId":"45357","severity":2,"message":"45358","line":39,"column":44,"nodeType":"45359","messageId":"45360","endLine":39,"endColumn":47,"suggestions":"48908"},{"ruleId":"45357","severity":2,"message":"45358","line":40,"column":58,"nodeType":"45359","messageId":"45360","endLine":40,"endColumn":61,"suggestions":"48909"},{"ruleId":"45357","severity":2,"message":"45358","line":50,"column":44,"nodeType":"45359","messageId":"45360","endLine":50,"endColumn":47,"suggestions":"48910"},{"ruleId":"45357","severity":2,"message":"45358","line":69,"column":45,"nodeType":"45359","messageId":"45360","endLine":69,"endColumn":48,"suggestions":"48911"},{"ruleId":"45357","severity":2,"message":"45358","line":72,"column":56,"nodeType":"45359","messageId":"45360","endLine":72,"endColumn":59,"suggestions":"48912"},{"ruleId":"45357","severity":2,"message":"45358","line":81,"column":45,"nodeType":"45359","messageId":"45360","endLine":81,"endColumn":48,"suggestions":"48913"},{"ruleId":"45357","severity":2,"message":"45358","line":84,"column":64,"nodeType":"45359","messageId":"45360","endLine":84,"endColumn":67,"suggestions":"48914"},{"ruleId":"45357","severity":2,"message":"45358","line":104,"column":36,"nodeType":"45359","messageId":"45360","endLine":104,"endColumn":39,"suggestions":"48915"},{"ruleId":"45357","severity":2,"message":"45358","line":125,"column":62,"nodeType":"45359","messageId":"45360","endLine":125,"endColumn":65,"suggestions":"48916"},{"ruleId":"45357","severity":2,"message":"45358","line":134,"column":57,"nodeType":"45359","messageId":"45360","endLine":134,"endColumn":60,"suggestions":"48917"},{"ruleId":"45357","severity":2,"message":"45358","line":118,"column":83,"nodeType":"45359","messageId":"45360","endLine":118,"endColumn":86,"suggestions":"48918"},{"ruleId":"45357","severity":2,"message":"45358","line":63,"column":33,"nodeType":"45359","messageId":"45360","endLine":63,"endColumn":36,"suggestions":"48919"},{"ruleId":"45357","severity":2,"message":"45358","line":74,"column":43,"nodeType":"45359","messageId":"45360","endLine":74,"endColumn":46,"suggestions":"48920"},{"ruleId":"45357","severity":2,"message":"45358","line":93,"column":45,"nodeType":"45359","messageId":"45360","endLine":93,"endColumn":48,"suggestions":"48921"},{"ruleId":"45357","severity":2,"message":"45358","line":108,"column":49,"nodeType":"45359","messageId":"45360","endLine":108,"endColumn":52,"suggestions":"48922"},{"ruleId":"45357","severity":2,"message":"45358","line":113,"column":49,"nodeType":"45359","messageId":"45360","endLine":113,"endColumn":52,"suggestions":"48923"},{"ruleId":"45357","severity":2,"message":"45358","line":124,"column":49,"nodeType":"45359","messageId":"45360","endLine":124,"endColumn":52,"suggestions":"48924"},{"ruleId":"45357","severity":2,"message":"45358","line":170,"column":49,"nodeType":"45359","messageId":"45360","endLine":170,"endColumn":52,"suggestions":"48925"},{"ruleId":"45357","severity":2,"message":"45358","line":171,"column":49,"nodeType":"45359","messageId":"45360","endLine":171,"endColumn":52,"suggestions":"48926"},{"ruleId":"45357","severity":2,"message":"45358","line":172,"column":53,"nodeType":"45359","messageId":"45360","endLine":172,"endColumn":56,"suggestions":"48927"},{"ruleId":"45357","severity":2,"message":"45358","line":177,"column":57,"nodeType":"45359","messageId":"45360","endLine":177,"endColumn":60,"suggestions":"48928"},{"ruleId":"45357","severity":2,"message":"45358","line":129,"column":22,"nodeType":"45359","messageId":"45360","endLine":129,"endColumn":25,"suggestions":"48929"},{"ruleId":"45357","severity":2,"message":"45358","line":153,"column":22,"nodeType":"45359","messageId":"45360","endLine":153,"endColumn":25,"suggestions":"48930"},{"ruleId":"45357","severity":2,"message":"45358","line":187,"column":38,"nodeType":"45359","messageId":"45360","endLine":187,"endColumn":41,"suggestions":"48931"},{"ruleId":"45357","severity":2,"message":"45358","line":200,"column":38,"nodeType":"45359","messageId":"45360","endLine":200,"endColumn":41,"suggestions":"48932"},{"ruleId":"45357","severity":2,"message":"45358","line":231,"column":38,"nodeType":"45359","messageId":"45360","endLine":231,"endColumn":41,"suggestions":"48933"},{"ruleId":"45357","severity":2,"message":"45358","line":277,"column":38,"nodeType":"45359","messageId":"45360","endLine":277,"endColumn":41,"suggestions":"48934"},{"ruleId":"45357","severity":2,"message":"45358","line":303,"column":38,"nodeType":"45359","messageId":"45360","endLine":303,"endColumn":41,"suggestions":"48935"},{"ruleId":"45357","severity":2,"message":"45358","line":34,"column":21,"nodeType":"45359","messageId":"45360","endLine":34,"endColumn":24,"suggestions":"48936"},{"ruleId":"45357","severity":2,"message":"45358","line":30,"column":60,"nodeType":"45359","messageId":"45360","endLine":30,"endColumn":63,"suggestions":"48937"},{"ruleId":"45357","severity":2,"message":"45358","line":279,"column":29,"nodeType":"45359","messageId":"45360","endLine":279,"endColumn":32,"suggestions":"48938"},{"ruleId":"45357","severity":2,"message":"45358","line":298,"column":34,"nodeType":"45359","messageId":"45360","endLine":298,"endColumn":37,"suggestions":"48939"},{"ruleId":"45357","severity":2,"message":"45358","line":324,"column":37,"nodeType":"45359","messageId":"45360","endLine":324,"endColumn":40,"suggestions":"48940"},{"ruleId":"45357","severity":2,"message":"45358","line":357,"column":29,"nodeType":"45359","messageId":"45360","endLine":357,"endColumn":32,"suggestions":"48941"},{"ruleId":"45357","severity":2,"message":"45358","line":418,"column":17,"nodeType":"45359","messageId":"45360","endLine":418,"endColumn":20,"suggestions":"48942"},{"ruleId":"45357","severity":2,"message":"45358","line":424,"column":19,"nodeType":"45359","messageId":"45360","endLine":424,"endColumn":22,"suggestions":"48943"},{"ruleId":"45357","severity":2,"message":"45358","line":485,"column":18,"nodeType":"45359","messageId":"45360","endLine":485,"endColumn":21,"suggestions":"48944"},{"ruleId":"45357","severity":2,"message":"45358","line":614,"column":76,"nodeType":"45359","messageId":"45360","endLine":614,"endColumn":79,"suggestions":"48945"},{"ruleId":"45357","severity":2,"message":"45358","line":673,"column":88,"nodeType":"45359","messageId":"45360","endLine":673,"endColumn":91,"suggestions":"48946"},{"ruleId":"45357","severity":2,"message":"45358","line":693,"column":40,"nodeType":"45359","messageId":"45360","endLine":693,"endColumn":43,"suggestions":"48947"},{"ruleId":"45357","severity":2,"message":"45358","line":713,"column":22,"nodeType":"45359","messageId":"45360","endLine":713,"endColumn":25,"suggestions":"48948"},{"ruleId":"45357","severity":2,"message":"45358","line":716,"column":43,"nodeType":"45359","messageId":"45360","endLine":716,"endColumn":46,"suggestions":"48949"},{"ruleId":"45357","severity":2,"message":"45358","line":36,"column":21,"nodeType":"45359","messageId":"45360","endLine":36,"endColumn":24,"suggestions":"48950"},{"ruleId":"45357","severity":2,"message":"45358","line":46,"column":68,"nodeType":"45359","messageId":"45360","endLine":46,"endColumn":71,"suggestions":"48951"},{"ruleId":"45357","severity":2,"message":"45358","line":56,"column":68,"nodeType":"45359","messageId":"45360","endLine":56,"endColumn":71,"suggestions":"48952"},{"ruleId":"45357","severity":2,"message":"45358","line":1206,"column":28,"nodeType":"45359","messageId":"45360","endLine":1206,"endColumn":31,"suggestions":"48953"},{"ruleId":"45357","severity":2,"message":"45358","line":1207,"column":28,"nodeType":"45359","messageId":"45360","endLine":1207,"endColumn":31,"suggestions":"48954"},{"ruleId":"45357","severity":2,"message":"45358","line":1208,"column":28,"nodeType":"45359","messageId":"45360","endLine":1208,"endColumn":31,"suggestions":"48955"},{"ruleId":"45357","severity":2,"message":"45358","line":1209,"column":28,"nodeType":"45359","messageId":"45360","endLine":1209,"endColumn":31,"suggestions":"48956"},{"ruleId":"45357","severity":2,"message":"45358","line":1210,"column":28,"nodeType":"45359","messageId":"45360","endLine":1210,"endColumn":31,"suggestions":"48957"},{"ruleId":"45357","severity":2,"message":"45358","line":1839,"column":28,"nodeType":"45359","messageId":"45360","endLine":1839,"endColumn":31,"suggestions":"48958"},{"ruleId":"45357","severity":2,"message":"45358","line":1840,"column":28,"nodeType":"45359","messageId":"45360","endLine":1840,"endColumn":31,"suggestions":"48959"},{"ruleId":"45357","severity":2,"message":"45358","line":1841,"column":28,"nodeType":"45359","messageId":"45360","endLine":1841,"endColumn":31,"suggestions":"48960"},{"ruleId":"45357","severity":2,"message":"45358","line":1842,"column":32,"nodeType":"45359","messageId":"45360","endLine":1842,"endColumn":35,"suggestions":"48961"},{"ruleId":"45357","severity":2,"message":"45358","line":1892,"column":28,"nodeType":"45359","messageId":"45360","endLine":1892,"endColumn":31,"suggestions":"48962"},{"ruleId":"45357","severity":2,"message":"45358","line":1893,"column":28,"nodeType":"45359","messageId":"45360","endLine":1893,"endColumn":31,"suggestions":"48963"},{"ruleId":"45357","severity":2,"message":"45358","line":1894,"column":28,"nodeType":"45359","messageId":"45360","endLine":1894,"endColumn":31,"suggestions":"48964"},{"ruleId":"45357","severity":2,"message":"45358","line":1895,"column":32,"nodeType":"45359","messageId":"45360","endLine":1895,"endColumn":35,"suggestions":"48965"},{"ruleId":"45357","severity":2,"message":"45358","line":1898,"column":32,"nodeType":"45359","messageId":"45360","endLine":1898,"endColumn":35,"suggestions":"48966"},{"ruleId":"45357","severity":2,"message":"45358","line":162,"column":47,"nodeType":"45359","messageId":"45360","endLine":162,"endColumn":50,"suggestions":"48967"},{"ruleId":"45357","severity":2,"message":"45358","line":185,"column":47,"nodeType":"45359","messageId":"45360","endLine":185,"endColumn":50,"suggestions":"48968"},{"ruleId":"45357","severity":2,"message":"45358","line":200,"column":47,"nodeType":"45359","messageId":"45360","endLine":200,"endColumn":50,"suggestions":"48969"},{"ruleId":"45357","severity":2,"message":"45358","line":213,"column":47,"nodeType":"45359","messageId":"45360","endLine":213,"endColumn":50,"suggestions":"48970"},{"ruleId":"45357","severity":2,"message":"45358","line":231,"column":47,"nodeType":"45359","messageId":"45360","endLine":231,"endColumn":50,"suggestions":"48971"},{"ruleId":"45357","severity":2,"message":"45358","line":243,"column":47,"nodeType":"45359","messageId":"45360","endLine":243,"endColumn":50,"suggestions":"48972"},{"ruleId":"45357","severity":2,"message":"45358","line":295,"column":47,"nodeType":"45359","messageId":"45360","endLine":295,"endColumn":50,"suggestions":"48973"},{"ruleId":"45357","severity":2,"message":"45358","line":311,"column":47,"nodeType":"45359","messageId":"45360","endLine":311,"endColumn":50,"suggestions":"48974"},{"ruleId":"45357","severity":2,"message":"45358","line":329,"column":47,"nodeType":"45359","messageId":"45360","endLine":329,"endColumn":50,"suggestions":"48975"},{"ruleId":"45357","severity":2,"message":"45358","line":348,"column":47,"nodeType":"45359","messageId":"45360","endLine":348,"endColumn":50,"suggestions":"48976"},{"ruleId":"45357","severity":2,"message":"45358","line":384,"column":47,"nodeType":"45359","messageId":"45360","endLine":384,"endColumn":50,"suggestions":"48977"},{"ruleId":"45357","severity":2,"message":"45358","line":400,"column":47,"nodeType":"45359","messageId":"45360","endLine":400,"endColumn":50,"suggestions":"48978"},{"ruleId":"45357","severity":2,"message":"45358","line":426,"column":47,"nodeType":"45359","messageId":"45360","endLine":426,"endColumn":50,"suggestions":"48979"},{"ruleId":"45357","severity":2,"message":"45358","line":435,"column":47,"nodeType":"45359","messageId":"45360","endLine":435,"endColumn":50,"suggestions":"48980"},{"ruleId":"45357","severity":2,"message":"45358","line":447,"column":47,"nodeType":"45359","messageId":"45360","endLine":447,"endColumn":50,"suggestions":"48981"},{"ruleId":"45357","severity":2,"message":"45358","line":459,"column":47,"nodeType":"45359","messageId":"45360","endLine":459,"endColumn":50,"suggestions":"48982"},{"ruleId":"45357","severity":2,"message":"45358","line":481,"column":47,"nodeType":"45359","messageId":"45360","endLine":481,"endColumn":50,"suggestions":"48983"},{"ruleId":"45357","severity":2,"message":"45358","line":507,"column":47,"nodeType":"45359","messageId":"45360","endLine":507,"endColumn":50,"suggestions":"48984"},{"ruleId":"45357","severity":2,"message":"45358","line":86,"column":61,"nodeType":"45359","messageId":"45360","endLine":86,"endColumn":64,"suggestions":"48985"},{"ruleId":"45357","severity":2,"message":"45358","line":95,"column":61,"nodeType":"45359","messageId":"45360","endLine":95,"endColumn":64,"suggestions":"48986"},{"ruleId":"45357","severity":2,"message":"45358","line":89,"column":56,"nodeType":"45359","messageId":"45360","endLine":89,"endColumn":59,"suggestions":"48987"},{"ruleId":"45357","severity":2,"message":"45358","line":100,"column":49,"nodeType":"45359","messageId":"45360","endLine":100,"endColumn":52,"suggestions":"48988"},{"ruleId":"45357","severity":2,"message":"45358","line":116,"column":58,"nodeType":"45359","messageId":"45360","endLine":116,"endColumn":61,"suggestions":"48989"},{"ruleId":"45357","severity":2,"message":"45358","line":125,"column":63,"nodeType":"45359","messageId":"45360","endLine":125,"endColumn":66,"suggestions":"48990"},{"ruleId":"45357","severity":2,"message":"45358","line":154,"column":55,"nodeType":"45359","messageId":"45360","endLine":154,"endColumn":58,"suggestions":"48991"},{"ruleId":"45357","severity":2,"message":"45358","line":37,"column":31,"nodeType":"45359","messageId":"45360","endLine":37,"endColumn":34,"suggestions":"48992"},{"ruleId":"45357","severity":2,"message":"45358","line":64,"column":31,"nodeType":"45359","messageId":"45360","endLine":64,"endColumn":34,"suggestions":"48993"},{"ruleId":"45357","severity":2,"message":"45358","line":65,"column":14,"nodeType":"45359","messageId":"45360","endLine":65,"endColumn":17,"suggestions":"48994"},{"ruleId":"45357","severity":2,"message":"45358","line":65,"column":40,"nodeType":"45359","messageId":"45360","endLine":65,"endColumn":43,"suggestions":"48995"},{"ruleId":"45357","severity":2,"message":"45358","line":150,"column":41,"nodeType":"45359","messageId":"45360","endLine":150,"endColumn":44,"suggestions":"48996"},{"ruleId":"45357","severity":2,"message":"45358","line":28,"column":9,"nodeType":"45359","messageId":"45360","endLine":28,"endColumn":12,"suggestions":"48997"},{"ruleId":"45357","severity":2,"message":"45358","line":83,"column":59,"nodeType":"45359","messageId":"45360","endLine":83,"endColumn":62,"suggestions":"48998"},{"ruleId":"45357","severity":2,"message":"45358","line":83,"column":89,"nodeType":"45359","messageId":"45360","endLine":83,"endColumn":92,"suggestions":"48999"},{"ruleId":"45357","severity":2,"message":"45358","line":130,"column":56,"nodeType":"45359","messageId":"45360","endLine":130,"endColumn":59,"suggestions":"49000"},{"ruleId":"45357","severity":2,"message":"45358","line":130,"column":83,"nodeType":"45359","messageId":"45360","endLine":130,"endColumn":86,"suggestions":"49001"},{"ruleId":"45357","severity":2,"message":"45358","line":109,"column":46,"nodeType":"45359","messageId":"45360","endLine":109,"endColumn":49,"suggestions":"49002"},{"ruleId":"45357","severity":2,"message":"45358","line":28,"column":46,"nodeType":"45359","messageId":"45360","endLine":28,"endColumn":49,"suggestions":"49003"},{"ruleId":"45357","severity":2,"message":"45358","line":22,"column":39,"nodeType":"45359","messageId":"45360","endLine":22,"endColumn":42,"suggestions":"49004"},{"ruleId":"45357","severity":2,"message":"45358","line":22,"column":60,"nodeType":"45359","messageId":"45360","endLine":22,"endColumn":63,"suggestions":"49005"},{"ruleId":"45357","severity":2,"message":"45358","line":23,"column":32,"nodeType":"45359","messageId":"45360","endLine":23,"endColumn":35,"suggestions":"49006"},{"ruleId":"45357","severity":2,"message":"45358","line":29,"column":21,"nodeType":"45359","messageId":"45360","endLine":29,"endColumn":24,"suggestions":"49007"},{"ruleId":"45357","severity":2,"message":"45358","line":254,"column":69,"nodeType":"45359","messageId":"45360","endLine":254,"endColumn":72,"suggestions":"49008"},{"ruleId":"45357","severity":2,"message":"45358","line":262,"column":88,"nodeType":"45359","messageId":"45360","endLine":262,"endColumn":91,"suggestions":"49009"},{"ruleId":"45357","severity":2,"message":"45358","line":328,"column":69,"nodeType":"45359","messageId":"45360","endLine":328,"endColumn":72,"suggestions":"49010"},{"ruleId":"45357","severity":2,"message":"45358","line":335,"column":86,"nodeType":"45359","messageId":"45360","endLine":335,"endColumn":89,"suggestions":"49011"},{"ruleId":"45357","severity":2,"message":"45358","line":385,"column":69,"nodeType":"45359","messageId":"45360","endLine":385,"endColumn":72,"suggestions":"49012"},{"ruleId":"45357","severity":2,"message":"45358","line":391,"column":86,"nodeType":"45359","messageId":"45360","endLine":391,"endColumn":89,"suggestions":"49013"},{"ruleId":"45357","severity":2,"message":"45358","line":461,"column":89,"nodeType":"45359","messageId":"45360","endLine":461,"endColumn":92,"suggestions":"49014"},{"ruleId":"45357","severity":2,"message":"45358","line":515,"column":86,"nodeType":"45359","messageId":"45360","endLine":515,"endColumn":89,"suggestions":"49015"},{"ruleId":"45357","severity":2,"message":"45358","line":572,"column":86,"nodeType":"45359","messageId":"45360","endLine":572,"endColumn":89,"suggestions":"49016"},{"ruleId":"45357","severity":2,"message":"45358","line":34,"column":21,"nodeType":"45359","messageId":"45360","endLine":34,"endColumn":24,"suggestions":"49017"},{"ruleId":"45357","severity":2,"message":"45358","line":278,"column":79,"nodeType":"45359","messageId":"45360","endLine":278,"endColumn":82,"suggestions":"49018"},{"ruleId":"45357","severity":2,"message":"45358","line":284,"column":77,"nodeType":"45359","messageId":"45360","endLine":284,"endColumn":80,"suggestions":"49019"},{"ruleId":"45357","severity":2,"message":"45358","line":339,"column":73,"nodeType":"45359","messageId":"45360","endLine":339,"endColumn":76,"suggestions":"49020"},{"ruleId":"45357","severity":2,"message":"45358","line":346,"column":48,"nodeType":"45359","messageId":"45360","endLine":346,"endColumn":51,"suggestions":"49021"},{"ruleId":"45357","severity":2,"message":"45358","line":358,"column":76,"nodeType":"45359","messageId":"45360","endLine":358,"endColumn":79,"suggestions":"49022"},{"ruleId":"45357","severity":2,"message":"45358","line":397,"column":41,"nodeType":"45359","messageId":"45360","endLine":397,"endColumn":44,"suggestions":"49023"},{"ruleId":"45357","severity":2,"message":"45358","line":450,"column":83,"nodeType":"45359","messageId":"45360","endLine":450,"endColumn":86,"suggestions":"49024"},{"ruleId":"45357","severity":2,"message":"45358","line":493,"column":83,"nodeType":"45359","messageId":"45360","endLine":493,"endColumn":86,"suggestions":"49025"},{"ruleId":"45357","severity":2,"message":"45358","line":497,"column":33,"nodeType":"45359","messageId":"45360","endLine":497,"endColumn":36,"suggestions":"49026"},{"ruleId":"45357","severity":2,"message":"45358","line":498,"column":33,"nodeType":"45359","messageId":"45360","endLine":498,"endColumn":36,"suggestions":"49027"},{"ruleId":"45357","severity":2,"message":"45358","line":68,"column":29,"nodeType":"45359","messageId":"45360","endLine":68,"endColumn":32,"suggestions":"49028"},{"ruleId":"45357","severity":2,"message":"45358","line":75,"column":29,"nodeType":"45359","messageId":"45360","endLine":75,"endColumn":32,"suggestions":"49029"},{"ruleId":"45357","severity":2,"message":"45358","line":183,"column":16,"nodeType":"45359","messageId":"45360","endLine":183,"endColumn":19,"suggestions":"49030"},{"ruleId":"45357","severity":2,"message":"45358","line":251,"column":16,"nodeType":"45359","messageId":"45360","endLine":251,"endColumn":19,"suggestions":"49031"},{"ruleId":"45357","severity":2,"message":"45358","line":284,"column":16,"nodeType":"45359","messageId":"45360","endLine":284,"endColumn":19,"suggestions":"49032"},{"ruleId":"45357","severity":2,"message":"45358","line":324,"column":16,"nodeType":"45359","messageId":"45360","endLine":324,"endColumn":19,"suggestions":"49033"},{"ruleId":"45357","severity":2,"message":"45358","line":353,"column":16,"nodeType":"45359","messageId":"45360","endLine":353,"endColumn":19,"suggestions":"49034"},{"ruleId":"45357","severity":2,"message":"45358","line":429,"column":16,"nodeType":"45359","messageId":"45360","endLine":429,"endColumn":19,"suggestions":"49035"},{"ruleId":"45357","severity":2,"message":"45358","line":471,"column":16,"nodeType":"45359","messageId":"45360","endLine":471,"endColumn":19,"suggestions":"49036"},{"ruleId":"45357","severity":2,"message":"45358","line":512,"column":16,"nodeType":"45359","messageId":"45360","endLine":512,"endColumn":19,"suggestions":"49037"},{"ruleId":"45357","severity":2,"message":"45358","line":544,"column":16,"nodeType":"45359","messageId":"45360","endLine":544,"endColumn":19,"suggestions":"49038"},{"ruleId":"45357","severity":2,"message":"45358","line":599,"column":16,"nodeType":"45359","messageId":"45360","endLine":599,"endColumn":19,"suggestions":"49039"},{"ruleId":"45357","severity":2,"message":"45358","line":636,"column":16,"nodeType":"45359","messageId":"45360","endLine":636,"endColumn":19,"suggestions":"49040"},{"ruleId":"45357","severity":2,"message":"45358","line":686,"column":16,"nodeType":"45359","messageId":"45360","endLine":686,"endColumn":19,"suggestions":"49041"},{"ruleId":"45357","severity":2,"message":"45358","line":719,"column":16,"nodeType":"45359","messageId":"45360","endLine":719,"endColumn":19,"suggestions":"49042"},{"ruleId":"45357","severity":2,"message":"45358","line":1356,"column":31,"nodeType":"45359","messageId":"45360","endLine":1356,"endColumn":34,"suggestions":"49043"},{"ruleId":"45357","severity":2,"message":"45358","line":1357,"column":31,"nodeType":"45359","messageId":"45360","endLine":1357,"endColumn":34,"suggestions":"49044"},{"ruleId":"45357","severity":2,"message":"45358","line":56,"column":27,"nodeType":"45359","messageId":"45360","endLine":56,"endColumn":30,"suggestions":"49045"},{"ruleId":"45357","severity":2,"message":"45358","line":57,"column":14,"nodeType":"45359","messageId":"45360","endLine":57,"endColumn":17,"suggestions":"49046"},{"ruleId":"45357","severity":2,"message":"45358","line":57,"column":36,"nodeType":"45359","messageId":"45360","endLine":57,"endColumn":39,"suggestions":"49047"},{"ruleId":"45357","severity":2,"message":"45358","line":58,"column":14,"nodeType":"45359","messageId":"45360","endLine":58,"endColumn":17,"suggestions":"49048"},{"ruleId":"45357","severity":2,"message":"45358","line":58,"column":36,"nodeType":"45359","messageId":"45360","endLine":58,"endColumn":39,"suggestions":"49049"},{"ruleId":"45357","severity":2,"message":"45358","line":59,"column":27,"nodeType":"45359","messageId":"45360","endLine":59,"endColumn":30,"suggestions":"49050"},{"ruleId":"45357","severity":2,"message":"45358","line":71,"column":27,"nodeType":"45359","messageId":"45360","endLine":71,"endColumn":30,"suggestions":"49051"},{"ruleId":"45357","severity":2,"message":"45358","line":88,"column":14,"nodeType":"45359","messageId":"45360","endLine":88,"endColumn":17,"suggestions":"49052"},{"ruleId":"45357","severity":2,"message":"45358","line":88,"column":41,"nodeType":"45359","messageId":"45360","endLine":88,"endColumn":44,"suggestions":"49053"},{"ruleId":"45357","severity":2,"message":"45358","line":88,"column":58,"nodeType":"45359","messageId":"45360","endLine":88,"endColumn":61,"suggestions":"49054"},{"ruleId":"45357","severity":2,"message":"45358","line":89,"column":31,"nodeType":"45359","messageId":"45360","endLine":89,"endColumn":34,"suggestions":"49055"},{"ruleId":"45357","severity":2,"message":"45358","line":90,"column":31,"nodeType":"45359","messageId":"45360","endLine":90,"endColumn":34,"suggestions":"49056"},{"ruleId":"45357","severity":2,"message":"45358","line":51,"column":32,"nodeType":"45359","messageId":"45360","endLine":51,"endColumn":35,"suggestions":"49057"},{"ruleId":"45357","severity":2,"message":"45358","line":54,"column":37,"nodeType":"45359","messageId":"45360","endLine":54,"endColumn":40,"suggestions":"49058"},{"ruleId":"45357","severity":2,"message":"45358","line":54,"column":48,"nodeType":"45359","messageId":"45360","endLine":54,"endColumn":51,"suggestions":"49059"},{"ruleId":"45357","severity":2,"message":"45358","line":273,"column":46,"nodeType":"45359","messageId":"45360","endLine":273,"endColumn":49,"suggestions":"49060"},{"ruleId":"45357","severity":2,"message":"45358","line":274,"column":39,"nodeType":"45359","messageId":"45360","endLine":274,"endColumn":42,"suggestions":"49061"},{"ruleId":"45357","severity":2,"message":"45358","line":276,"column":37,"nodeType":"45359","messageId":"45360","endLine":276,"endColumn":40,"suggestions":"49062"},{"ruleId":"45357","severity":2,"message":"45358","line":276,"column":48,"nodeType":"45359","messageId":"45360","endLine":276,"endColumn":51,"suggestions":"49063"},{"ruleId":"45357","severity":2,"message":"45358","line":212,"column":31,"nodeType":"45359","messageId":"45360","endLine":212,"endColumn":34,"suggestions":"49064"},{"ruleId":"45357","severity":2,"message":"45358","line":226,"column":31,"nodeType":"45359","messageId":"45360","endLine":226,"endColumn":34,"suggestions":"49065"},{"ruleId":"45357","severity":2,"message":"45358","line":252,"column":36,"nodeType":"45359","messageId":"45360","endLine":252,"endColumn":39,"suggestions":"49066"},{"ruleId":"45357","severity":2,"message":"45358","line":253,"column":36,"nodeType":"45359","messageId":"45360","endLine":253,"endColumn":39,"suggestions":"49067"},{"ruleId":"45357","severity":2,"message":"45358","line":254,"column":47,"nodeType":"45359","messageId":"45360","endLine":254,"endColumn":50,"suggestions":"49068"},{"ruleId":"45357","severity":2,"message":"45358","line":252,"column":49,"nodeType":"45359","messageId":"45360","endLine":252,"endColumn":52,"suggestions":"49069"},{"ruleId":"45357","severity":2,"message":"45358","line":301,"column":51,"nodeType":"45359","messageId":"45360","endLine":301,"endColumn":54,"suggestions":"49070"},{"ruleId":"45357","severity":2,"message":"45358","line":352,"column":47,"nodeType":"45359","messageId":"45360","endLine":352,"endColumn":50,"suggestions":"49071"},{"ruleId":"45357","severity":2,"message":"45358","line":388,"column":47,"nodeType":"45359","messageId":"45360","endLine":388,"endColumn":50,"suggestions":"49072"},{"ruleId":"45357","severity":2,"message":"45358","line":51,"column":47,"nodeType":"45359","messageId":"45360","endLine":51,"endColumn":50,"suggestions":"49073"},{"ruleId":"45357","severity":2,"message":"45358","line":52,"column":30,"nodeType":"45359","messageId":"45360","endLine":52,"endColumn":33,"suggestions":"49074"},{"ruleId":"45357","severity":2,"message":"45358","line":65,"column":15,"nodeType":"45359","messageId":"45360","endLine":65,"endColumn":18,"suggestions":"49075"},{"ruleId":"45357","severity":2,"message":"45358","line":109,"column":47,"nodeType":"45359","messageId":"45360","endLine":109,"endColumn":50,"suggestions":"49076"},{"ruleId":"45357","severity":2,"message":"45358","line":110,"column":30,"nodeType":"45359","messageId":"45360","endLine":110,"endColumn":33,"suggestions":"49077"},{"ruleId":"45357","severity":2,"message":"45358","line":120,"column":47,"nodeType":"45359","messageId":"45360","endLine":120,"endColumn":50,"suggestions":"49078"},{"ruleId":"45357","severity":2,"message":"45358","line":121,"column":30,"nodeType":"45359","messageId":"45360","endLine":121,"endColumn":33,"suggestions":"49079"},{"ruleId":"45357","severity":2,"message":"45358","line":139,"column":47,"nodeType":"45359","messageId":"45360","endLine":139,"endColumn":50,"suggestions":"49080"},{"ruleId":"45357","severity":2,"message":"45358","line":140,"column":30,"nodeType":"45359","messageId":"45360","endLine":140,"endColumn":33,"suggestions":"49081"},{"ruleId":"45357","severity":2,"message":"45358","line":148,"column":47,"nodeType":"45359","messageId":"45360","endLine":148,"endColumn":50,"suggestions":"49082"},{"ruleId":"45357","severity":2,"message":"45358","line":149,"column":30,"nodeType":"45359","messageId":"45360","endLine":149,"endColumn":33,"suggestions":"49083"},{"ruleId":"45357","severity":2,"message":"45358","line":181,"column":47,"nodeType":"45359","messageId":"45360","endLine":181,"endColumn":50,"suggestions":"49084"},{"ruleId":"45357","severity":2,"message":"45358","line":182,"column":30,"nodeType":"45359","messageId":"45360","endLine":182,"endColumn":33,"suggestions":"49085"},{"ruleId":"45357","severity":2,"message":"45358","line":207,"column":47,"nodeType":"45359","messageId":"45360","endLine":207,"endColumn":50,"suggestions":"49086"},{"ruleId":"45357","severity":2,"message":"45358","line":208,"column":30,"nodeType":"45359","messageId":"45360","endLine":208,"endColumn":33,"suggestions":"49087"},{"ruleId":"45357","severity":2,"message":"45358","line":225,"column":49,"nodeType":"45359","messageId":"45360","endLine":225,"endColumn":52,"suggestions":"49088"},{"ruleId":"45357","severity":2,"message":"45358","line":226,"column":32,"nodeType":"45359","messageId":"45360","endLine":226,"endColumn":35,"suggestions":"49089"},{"ruleId":"45357","severity":2,"message":"45358","line":238,"column":49,"nodeType":"45359","messageId":"45360","endLine":238,"endColumn":52,"suggestions":"49090"},{"ruleId":"45357","severity":2,"message":"45358","line":239,"column":32,"nodeType":"45359","messageId":"45360","endLine":239,"endColumn":35,"suggestions":"49091"},{"ruleId":"45357","severity":2,"message":"45358","line":249,"column":15,"nodeType":"45359","messageId":"45360","endLine":249,"endColumn":18,"suggestions":"49092"},{"ruleId":"45357","severity":2,"message":"45358","line":294,"column":15,"nodeType":"45359","messageId":"45360","endLine":294,"endColumn":18,"suggestions":"49093"},{"ruleId":"45357","severity":2,"message":"45358","line":97,"column":51,"nodeType":"45359","messageId":"45360","endLine":97,"endColumn":54,"suggestions":"49094"},{"ruleId":"45357","severity":2,"message":"45358","line":98,"column":51,"nodeType":"45359","messageId":"45360","endLine":98,"endColumn":54,"suggestions":"49095"},{"ruleId":"45357","severity":2,"message":"45358","line":102,"column":51,"nodeType":"45359","messageId":"45360","endLine":102,"endColumn":54,"suggestions":"49096"},{"ruleId":"45357","severity":2,"message":"45358","line":110,"column":27,"nodeType":"45359","messageId":"45360","endLine":110,"endColumn":30,"suggestions":"49097"},{"ruleId":"45357","severity":2,"message":"45358","line":118,"column":31,"nodeType":"45359","messageId":"45360","endLine":118,"endColumn":34,"suggestions":"49098"},{"ruleId":"45357","severity":2,"message":"45358","line":244,"column":40,"nodeType":"45359","messageId":"45360","endLine":244,"endColumn":43,"suggestions":"49099"},{"ruleId":"45357","severity":2,"message":"45358","line":246,"column":16,"nodeType":"45359","messageId":"45360","endLine":246,"endColumn":19,"suggestions":"49100"},{"ruleId":"45357","severity":2,"message":"45358","line":250,"column":27,"nodeType":"45359","messageId":"45360","endLine":250,"endColumn":30,"suggestions":"49101"},{"ruleId":"45357","severity":2,"message":"45358","line":251,"column":63,"nodeType":"45359","messageId":"45360","endLine":251,"endColumn":66,"suggestions":"49102"},{"ruleId":"45357","severity":2,"message":"45358","line":252,"column":67,"nodeType":"45359","messageId":"45360","endLine":252,"endColumn":70,"suggestions":"49103"},{"ruleId":"45357","severity":2,"message":"45358","line":310,"column":46,"nodeType":"45359","messageId":"45360","endLine":310,"endColumn":49,"suggestions":"49104"},{"ruleId":"45357","severity":2,"message":"45358","line":342,"column":44,"nodeType":"45359","messageId":"45360","endLine":342,"endColumn":47,"suggestions":"49105"},{"ruleId":"45357","severity":2,"message":"45358","line":395,"column":33,"nodeType":"45359","messageId":"45360","endLine":395,"endColumn":36,"suggestions":"49106"},{"ruleId":"45357","severity":2,"message":"45358","line":413,"column":33,"nodeType":"45359","messageId":"45360","endLine":413,"endColumn":36,"suggestions":"49107"},{"ruleId":"45357","severity":2,"message":"45358","line":460,"column":61,"nodeType":"45359","messageId":"45360","endLine":460,"endColumn":64,"suggestions":"49108"},{"ruleId":"45357","severity":2,"message":"45358","line":42,"column":33,"nodeType":"45359","messageId":"45360","endLine":42,"endColumn":36,"suggestions":"49109"},{"ruleId":"45357","severity":2,"message":"45358","line":79,"column":27,"nodeType":"45359","messageId":"45360","endLine":79,"endColumn":30,"suggestions":"49110"},{"ruleId":"45357","severity":2,"message":"45358","line":80,"column":14,"nodeType":"45359","messageId":"45360","endLine":80,"endColumn":17,"suggestions":"49111"},{"ruleId":"45357","severity":2,"message":"45358","line":80,"column":36,"nodeType":"45359","messageId":"45360","endLine":80,"endColumn":39,"suggestions":"49112"},{"ruleId":"45357","severity":2,"message":"45358","line":81,"column":14,"nodeType":"45359","messageId":"45360","endLine":81,"endColumn":17,"suggestions":"49113"},{"ruleId":"45357","severity":2,"message":"45358","line":81,"column":36,"nodeType":"45359","messageId":"45360","endLine":81,"endColumn":39,"suggestions":"49114"},{"ruleId":"45357","severity":2,"message":"45358","line":82,"column":27,"nodeType":"45359","messageId":"45360","endLine":82,"endColumn":30,"suggestions":"49115"},{"ruleId":"45357","severity":2,"message":"45358","line":83,"column":27,"nodeType":"45359","messageId":"45360","endLine":83,"endColumn":30,"suggestions":"49116"},{"ruleId":"45357","severity":2,"message":"45358","line":84,"column":27,"nodeType":"45359","messageId":"45360","endLine":84,"endColumn":30,"suggestions":"49117"},{"ruleId":"45357","severity":2,"message":"45358","line":85,"column":27,"nodeType":"45359","messageId":"45360","endLine":85,"endColumn":30,"suggestions":"49118"},{"ruleId":"45357","severity":2,"message":"45358","line":86,"column":27,"nodeType":"45359","messageId":"45360","endLine":86,"endColumn":30,"suggestions":"49119"},{"ruleId":"45357","severity":2,"message":"45358","line":87,"column":27,"nodeType":"45359","messageId":"45360","endLine":87,"endColumn":30,"suggestions":"49120"},{"ruleId":"45357","severity":2,"message":"45358","line":88,"column":27,"nodeType":"45359","messageId":"45360","endLine":88,"endColumn":30,"suggestions":"49121"},{"ruleId":"45357","severity":2,"message":"45358","line":89,"column":27,"nodeType":"45359","messageId":"45360","endLine":89,"endColumn":30,"suggestions":"49122"},{"ruleId":"45357","severity":2,"message":"45358","line":90,"column":27,"nodeType":"45359","messageId":"45360","endLine":90,"endColumn":30,"suggestions":"49123"},{"ruleId":"45357","severity":2,"message":"45358","line":91,"column":27,"nodeType":"45359","messageId":"45360","endLine":91,"endColumn":30,"suggestions":"49124"},{"ruleId":"45357","severity":2,"message":"45358","line":92,"column":27,"nodeType":"45359","messageId":"45360","endLine":92,"endColumn":30,"suggestions":"49125"},{"ruleId":"45357","severity":2,"message":"45358","line":93,"column":27,"nodeType":"45359","messageId":"45360","endLine":93,"endColumn":30,"suggestions":"49126"},{"ruleId":"45357","severity":2,"message":"45358","line":94,"column":27,"nodeType":"45359","messageId":"45360","endLine":94,"endColumn":30,"suggestions":"49127"},{"ruleId":"45357","severity":2,"message":"45358","line":95,"column":27,"nodeType":"45359","messageId":"45360","endLine":95,"endColumn":30,"suggestions":"49128"},{"ruleId":"45357","severity":2,"message":"45358","line":96,"column":27,"nodeType":"45359","messageId":"45360","endLine":96,"endColumn":30,"suggestions":"49129"},{"ruleId":"45357","severity":2,"message":"45358","line":110,"column":14,"nodeType":"45359","messageId":"45360","endLine":110,"endColumn":17,"suggestions":"49130"},{"ruleId":"45357","severity":2,"message":"45358","line":110,"column":45,"nodeType":"45359","messageId":"45360","endLine":110,"endColumn":48,"suggestions":"49131"},{"ruleId":"45357","severity":2,"message":"45358","line":116,"column":36,"nodeType":"45359","messageId":"45360","endLine":116,"endColumn":39,"suggestions":"49132"},{"ruleId":"45357","severity":2,"message":"45358","line":121,"column":36,"nodeType":"45359","messageId":"45360","endLine":121,"endColumn":39,"suggestions":"49133"},{"ruleId":"45357","severity":2,"message":"45358","line":122,"column":36,"nodeType":"45359","messageId":"45360","endLine":122,"endColumn":39,"suggestions":"49134"},{"ruleId":"45357","severity":2,"message":"45358","line":48,"column":31,"nodeType":"45359","messageId":"45360","endLine":48,"endColumn":34,"suggestions":"49135"},{"ruleId":"45357","severity":2,"message":"45358","line":71,"column":14,"nodeType":"45359","messageId":"45360","endLine":71,"endColumn":17,"suggestions":"49136"},{"ruleId":"45357","severity":2,"message":"45358","line":71,"column":40,"nodeType":"45359","messageId":"45360","endLine":71,"endColumn":43,"suggestions":"49137"},{"ruleId":"45357","severity":2,"message":"45358","line":82,"column":14,"nodeType":"45359","messageId":"45360","endLine":82,"endColumn":17,"suggestions":"49138"},{"ruleId":"45357","severity":2,"message":"45358","line":82,"column":40,"nodeType":"45359","messageId":"45360","endLine":82,"endColumn":43,"suggestions":"49139"},{"ruleId":"45357","severity":2,"message":"45358","line":103,"column":27,"nodeType":"45359","messageId":"45360","endLine":103,"endColumn":30,"suggestions":"49140"},{"ruleId":"45357","severity":2,"message":"45358","line":104,"column":27,"nodeType":"45359","messageId":"45360","endLine":104,"endColumn":30,"suggestions":"49141"},{"ruleId":"45357","severity":2,"message":"45358","line":105,"column":27,"nodeType":"45359","messageId":"45360","endLine":105,"endColumn":30,"suggestions":"49142"},{"ruleId":"45357","severity":2,"message":"45358","line":106,"column":14,"nodeType":"45359","messageId":"45360","endLine":106,"endColumn":17,"suggestions":"49143"},{"ruleId":"45357","severity":2,"message":"45358","line":106,"column":40,"nodeType":"45359","messageId":"45360","endLine":106,"endColumn":43,"suggestions":"49144"},{"ruleId":"45357","severity":2,"message":"45358","line":127,"column":13,"nodeType":"45359","messageId":"45360","endLine":127,"endColumn":16,"suggestions":"49145"},{"ruleId":"45357","severity":2,"message":"45358","line":145,"column":33,"nodeType":"45359","messageId":"45360","endLine":145,"endColumn":36,"suggestions":"49146"},{"ruleId":"45357","severity":2,"message":"45358","line":284,"column":8,"nodeType":"45359","messageId":"45360","endLine":284,"endColumn":11,"suggestions":"49147"},{"ruleId":"45357","severity":2,"message":"45358","line":286,"column":54,"nodeType":"45359","messageId":"45360","endLine":286,"endColumn":57,"suggestions":"49148"},{"ruleId":"45357","severity":2,"message":"45358","line":350,"column":27,"nodeType":"45359","messageId":"45360","endLine":350,"endColumn":30,"suggestions":"49149"},{"ruleId":"45357","severity":2,"message":"45358","line":351,"column":27,"nodeType":"45359","messageId":"45360","endLine":351,"endColumn":30,"suggestions":"49150"},{"ruleId":"45357","severity":2,"message":"45358","line":352,"column":27,"nodeType":"45359","messageId":"45360","endLine":352,"endColumn":30,"suggestions":"49151"},{"ruleId":"45357","severity":2,"message":"45358","line":353,"column":27,"nodeType":"45359","messageId":"45360","endLine":353,"endColumn":30,"suggestions":"49152"},{"ruleId":"45357","severity":2,"message":"45358","line":354,"column":31,"nodeType":"45359","messageId":"45360","endLine":354,"endColumn":34,"suggestions":"49153"},{"ruleId":"45357","severity":2,"message":"45358","line":385,"column":31,"nodeType":"45359","messageId":"45360","endLine":385,"endColumn":34,"suggestions":"49154"},{"ruleId":"45357","severity":2,"message":"45358","line":394,"column":31,"nodeType":"45359","messageId":"45360","endLine":394,"endColumn":34,"suggestions":"49155"},{"ruleId":"45357","severity":2,"message":"45358","line":395,"column":27,"nodeType":"45359","messageId":"45360","endLine":395,"endColumn":30,"suggestions":"49156"},{"ruleId":"45357","severity":2,"message":"45358","line":396,"column":27,"nodeType":"45359","messageId":"45360","endLine":396,"endColumn":30,"suggestions":"49157"},{"ruleId":"45357","severity":2,"message":"45358","line":397,"column":27,"nodeType":"45359","messageId":"45360","endLine":397,"endColumn":30,"suggestions":"49158"},{"ruleId":"45357","severity":2,"message":"45358","line":424,"column":8,"nodeType":"45359","messageId":"45360","endLine":424,"endColumn":11,"suggestions":"49159"},{"ruleId":"45357","severity":2,"message":"45358","line":454,"column":8,"nodeType":"45359","messageId":"45360","endLine":454,"endColumn":11,"suggestions":"49160"},{"ruleId":"45357","severity":2,"message":"45358","line":470,"column":8,"nodeType":"45359","messageId":"45360","endLine":470,"endColumn":11,"suggestions":"49161"},{"ruleId":"45357","severity":2,"message":"45358","line":496,"column":27,"nodeType":"45359","messageId":"45360","endLine":496,"endColumn":30,"suggestions":"49162"},{"ruleId":"45357","severity":2,"message":"45358","line":497,"column":27,"nodeType":"45359","messageId":"45360","endLine":497,"endColumn":30,"suggestions":"49163"},{"ruleId":"45357","severity":2,"message":"45358","line":498,"column":27,"nodeType":"45359","messageId":"45360","endLine":498,"endColumn":30,"suggestions":"49164"},{"ruleId":"45357","severity":2,"message":"45358","line":519,"column":31,"nodeType":"45359","messageId":"45360","endLine":519,"endColumn":34,"suggestions":"49165"},{"ruleId":"45357","severity":2,"message":"45358","line":546,"column":14,"nodeType":"45359","messageId":"45360","endLine":546,"endColumn":17,"suggestions":"49166"},{"ruleId":"45357","severity":2,"message":"45358","line":546,"column":36,"nodeType":"45359","messageId":"45360","endLine":546,"endColumn":39,"suggestions":"49167"},{"ruleId":"45357","severity":2,"message":"45358","line":547,"column":14,"nodeType":"45359","messageId":"45360","endLine":547,"endColumn":17,"suggestions":"49168"},{"ruleId":"45357","severity":2,"message":"45358","line":547,"column":36,"nodeType":"45359","messageId":"45360","endLine":547,"endColumn":39,"suggestions":"49169"},{"ruleId":"45357","severity":2,"message":"45358","line":548,"column":27,"nodeType":"45359","messageId":"45360","endLine":548,"endColumn":30,"suggestions":"49170"},{"ruleId":"45357","severity":2,"message":"45358","line":549,"column":27,"nodeType":"45359","messageId":"45360","endLine":549,"endColumn":30,"suggestions":"49171"},{"ruleId":"45357","severity":2,"message":"45358","line":563,"column":31,"nodeType":"45359","messageId":"45360","endLine":563,"endColumn":34,"suggestions":"49172"},{"ruleId":"45357","severity":2,"message":"45358","line":564,"column":27,"nodeType":"45359","messageId":"45360","endLine":564,"endColumn":30,"suggestions":"49173"},{"ruleId":"45357","severity":2,"message":"45358","line":579,"column":31,"nodeType":"45359","messageId":"45360","endLine":579,"endColumn":34,"suggestions":"49174"},{"ruleId":"45357","severity":2,"message":"45358","line":593,"column":27,"nodeType":"45359","messageId":"45360","endLine":593,"endColumn":30,"suggestions":"49175"},{"ruleId":"45357","severity":2,"message":"45358","line":610,"column":31,"nodeType":"45359","messageId":"45360","endLine":610,"endColumn":34,"suggestions":"49176"},{"ruleId":"45357","severity":2,"message":"45358","line":612,"column":27,"nodeType":"45359","messageId":"45360","endLine":612,"endColumn":30,"suggestions":"49177"},{"ruleId":"45357","severity":2,"message":"45358","line":613,"column":27,"nodeType":"45359","messageId":"45360","endLine":613,"endColumn":30,"suggestions":"49178"},{"ruleId":"45357","severity":2,"message":"45358","line":646,"column":31,"nodeType":"45359","messageId":"45360","endLine":646,"endColumn":34,"suggestions":"49179"},{"ruleId":"45357","severity":2,"message":"45358","line":647,"column":27,"nodeType":"45359","messageId":"45360","endLine":647,"endColumn":30,"suggestions":"49180"},{"ruleId":"45357","severity":2,"message":"45358","line":674,"column":27,"nodeType":"45359","messageId":"45360","endLine":674,"endColumn":30,"suggestions":"49181"},{"ruleId":"45357","severity":2,"message":"45358","line":676,"column":16,"nodeType":"45359","messageId":"45360","endLine":676,"endColumn":19,"suggestions":"49182"},{"ruleId":"45357","severity":2,"message":"45358","line":680,"column":16,"nodeType":"45359","messageId":"45360","endLine":680,"endColumn":19,"suggestions":"49183"},{"ruleId":"45357","severity":2,"message":"45358","line":684,"column":16,"nodeType":"45359","messageId":"45360","endLine":684,"endColumn":19,"suggestions":"49184"},{"ruleId":"45357","severity":2,"message":"45358","line":700,"column":14,"nodeType":"45359","messageId":"45360","endLine":700,"endColumn":17,"suggestions":"49185"},{"ruleId":"45357","severity":2,"message":"45358","line":700,"column":36,"nodeType":"45359","messageId":"45360","endLine":700,"endColumn":39,"suggestions":"49186"},{"ruleId":"45357","severity":2,"message":"45358","line":701,"column":27,"nodeType":"45359","messageId":"45360","endLine":701,"endColumn":30,"suggestions":"49187"},{"ruleId":"45357","severity":2,"message":"45358","line":702,"column":27,"nodeType":"45359","messageId":"45360","endLine":702,"endColumn":30,"suggestions":"49188"},{"ruleId":"45357","severity":2,"message":"45358","line":716,"column":27,"nodeType":"45359","messageId":"45360","endLine":716,"endColumn":30,"suggestions":"49189"},{"ruleId":"45357","severity":2,"message":"45358","line":717,"column":27,"nodeType":"45359","messageId":"45360","endLine":717,"endColumn":30,"suggestions":"49190"},{"ruleId":"45357","severity":2,"message":"45358","line":732,"column":14,"nodeType":"45359","messageId":"45360","endLine":732,"endColumn":17,"suggestions":"49191"},{"ruleId":"45357","severity":2,"message":"45358","line":732,"column":36,"nodeType":"45359","messageId":"45360","endLine":732,"endColumn":39,"suggestions":"49192"},{"ruleId":"45357","severity":2,"message":"45358","line":733,"column":27,"nodeType":"45359","messageId":"45360","endLine":733,"endColumn":30,"suggestions":"49193"},{"ruleId":"45357","severity":2,"message":"45358","line":734,"column":27,"nodeType":"45359","messageId":"45360","endLine":734,"endColumn":30,"suggestions":"49194"},{"ruleId":"45357","severity":2,"message":"45358","line":838,"column":33,"nodeType":"45359","messageId":"45360","endLine":838,"endColumn":36,"suggestions":"49195"},{"ruleId":"45357","severity":2,"message":"45358","line":877,"column":33,"nodeType":"45359","messageId":"45360","endLine":877,"endColumn":36,"suggestions":"49196"},{"ruleId":"45357","severity":2,"message":"45358","line":896,"column":13,"nodeType":"45359","messageId":"45360","endLine":896,"endColumn":16,"suggestions":"49197"},{"ruleId":"45357","severity":2,"message":"45358","line":935,"column":33,"nodeType":"45359","messageId":"45360","endLine":935,"endColumn":36,"suggestions":"49198"},{"ruleId":"45357","severity":2,"message":"45358","line":983,"column":33,"nodeType":"45359","messageId":"45360","endLine":983,"endColumn":36,"suggestions":"49199"},{"ruleId":"45357","severity":2,"message":"45358","line":1022,"column":33,"nodeType":"45359","messageId":"45360","endLine":1022,"endColumn":36,"suggestions":"49200"},{"ruleId":"45357","severity":2,"message":"45358","line":1067,"column":33,"nodeType":"45359","messageId":"45360","endLine":1067,"endColumn":36,"suggestions":"49201"},{"ruleId":"45357","severity":2,"message":"45358","line":1068,"column":33,"nodeType":"45359","messageId":"45360","endLine":1068,"endColumn":36,"suggestions":"49202"},{"ruleId":"45357","severity":2,"message":"45358","line":1069,"column":33,"nodeType":"45359","messageId":"45360","endLine":1069,"endColumn":36,"suggestions":"49203"},{"ruleId":"45357","severity":2,"message":"45358","line":1070,"column":37,"nodeType":"45359","messageId":"45360","endLine":1070,"endColumn":40,"suggestions":"49204"},{"ruleId":"45357","severity":2,"message":"45358","line":1090,"column":39,"nodeType":"45359","messageId":"45360","endLine":1090,"endColumn":42,"suggestions":"49205"},{"ruleId":"45357","severity":2,"message":"45358","line":1100,"column":30,"nodeType":"45359","messageId":"45360","endLine":1100,"endColumn":33,"suggestions":"49206"},{"ruleId":"45357","severity":2,"message":"45358","line":1118,"column":39,"nodeType":"45359","messageId":"45360","endLine":1118,"endColumn":42,"suggestions":"49207"},{"ruleId":"45357","severity":2,"message":"45358","line":1139,"column":39,"nodeType":"45359","messageId":"45360","endLine":1139,"endColumn":42,"suggestions":"49208"},{"ruleId":"45357","severity":2,"message":"45358","line":1171,"column":33,"nodeType":"45359","messageId":"45360","endLine":1171,"endColumn":36,"suggestions":"49209"},{"ruleId":"45357","severity":2,"message":"45358","line":1187,"column":33,"nodeType":"45359","messageId":"45360","endLine":1187,"endColumn":36,"suggestions":"49210"},{"ruleId":"45357","severity":2,"message":"45358","line":307,"column":16,"nodeType":"45359","messageId":"45360","endLine":307,"endColumn":19,"suggestions":"49211"},{"ruleId":"45357","severity":2,"message":"45358","line":332,"column":27,"nodeType":"45359","messageId":"45360","endLine":332,"endColumn":30,"suggestions":"49212"},{"ruleId":"45357","severity":2,"message":"45358","line":374,"column":27,"nodeType":"45359","messageId":"45360","endLine":374,"endColumn":30,"suggestions":"49213"},{"ruleId":"45357","severity":2,"message":"45358","line":375,"column":24,"nodeType":"45359","messageId":"45360","endLine":375,"endColumn":27,"suggestions":"49214"},{"ruleId":"45357","severity":2,"message":"45358","line":376,"column":27,"nodeType":"45359","messageId":"45360","endLine":376,"endColumn":30,"suggestions":"49215"},{"ruleId":"45357","severity":2,"message":"45358","line":377,"column":27,"nodeType":"45359","messageId":"45360","endLine":377,"endColumn":30,"suggestions":"49216"},{"ruleId":"45357","severity":2,"message":"45358","line":437,"column":40,"nodeType":"45359","messageId":"45360","endLine":437,"endColumn":43,"suggestions":"49217"},{"ruleId":"45357","severity":2,"message":"45358","line":441,"column":27,"nodeType":"45359","messageId":"45360","endLine":441,"endColumn":30,"suggestions":"49218"},{"ruleId":"45357","severity":2,"message":"45358","line":453,"column":16,"nodeType":"45359","messageId":"45360","endLine":453,"endColumn":19,"suggestions":"49219"},{"ruleId":"45357","severity":2,"message":"45358","line":486,"column":31,"nodeType":"45359","messageId":"45360","endLine":486,"endColumn":34,"suggestions":"49220"},{"ruleId":"45357","severity":2,"message":"45358","line":506,"column":37,"nodeType":"45359","messageId":"45360","endLine":506,"endColumn":40,"suggestions":"49221"},{"ruleId":"45357","severity":2,"message":"45358","line":509,"column":31,"nodeType":"45359","messageId":"45360","endLine":509,"endColumn":34,"suggestions":"49222"},{"ruleId":"45357","severity":2,"message":"45358","line":517,"column":50,"nodeType":"45359","messageId":"45360","endLine":517,"endColumn":53,"suggestions":"49223"},{"ruleId":"45357","severity":2,"message":"45358","line":544,"column":8,"nodeType":"45359","messageId":"45360","endLine":544,"endColumn":11,"suggestions":"49224"},{"ruleId":"45357","severity":2,"message":"45358","line":574,"column":32,"nodeType":"45359","messageId":"45360","endLine":574,"endColumn":35,"suggestions":"49225"},{"ruleId":"45357","severity":2,"message":"45358","line":594,"column":16,"nodeType":"45359","messageId":"45360","endLine":594,"endColumn":19,"suggestions":"49226"},{"ruleId":"45357","severity":2,"message":"45358","line":635,"column":49,"nodeType":"45359","messageId":"45360","endLine":635,"endColumn":52,"suggestions":"49227"},{"ruleId":"45357","severity":2,"message":"45358","line":716,"column":49,"nodeType":"45359","messageId":"45360","endLine":716,"endColumn":52,"suggestions":"49228"},{"ruleId":"45357","severity":2,"message":"45358","line":762,"column":74,"nodeType":"45359","messageId":"45360","endLine":762,"endColumn":77,"suggestions":"49229"},{"ruleId":"45357","severity":2,"message":"45358","line":806,"column":49,"nodeType":"45359","messageId":"45360","endLine":806,"endColumn":52,"suggestions":"49230"},{"ruleId":"45357","severity":2,"message":"45358","line":855,"column":37,"nodeType":"45359","messageId":"45360","endLine":855,"endColumn":40,"suggestions":"49231"},{"ruleId":"45357","severity":2,"message":"45358","line":864,"column":27,"nodeType":"45359","messageId":"45360","endLine":864,"endColumn":30,"suggestions":"49232"},{"ruleId":"45357","severity":2,"message":"45358","line":865,"column":27,"nodeType":"45359","messageId":"45360","endLine":865,"endColumn":30,"suggestions":"49233"},{"ruleId":"45357","severity":2,"message":"45358","line":866,"column":27,"nodeType":"45359","messageId":"45360","endLine":866,"endColumn":30,"suggestions":"49234"},{"ruleId":"45357","severity":2,"message":"45358","line":867,"column":27,"nodeType":"45359","messageId":"45360","endLine":867,"endColumn":30,"suggestions":"49235"},{"ruleId":"45357","severity":2,"message":"45358","line":868,"column":27,"nodeType":"45359","messageId":"45360","endLine":868,"endColumn":30,"suggestions":"49236"},{"ruleId":"45357","severity":2,"message":"45358","line":884,"column":27,"nodeType":"45359","messageId":"45360","endLine":884,"endColumn":30,"suggestions":"49237"},{"ruleId":"45357","severity":2,"message":"45358","line":926,"column":41,"nodeType":"45359","messageId":"45360","endLine":926,"endColumn":44,"suggestions":"49238"},{"ruleId":"45357","severity":2,"message":"45358","line":929,"column":40,"nodeType":"45359","messageId":"45360","endLine":929,"endColumn":43,"suggestions":"49239"},{"ruleId":"45357","severity":2,"message":"45358","line":966,"column":46,"nodeType":"45359","messageId":"45360","endLine":966,"endColumn":49,"suggestions":"49240"},{"ruleId":"45357","severity":2,"message":"45358","line":969,"column":27,"nodeType":"45359","messageId":"45360","endLine":969,"endColumn":30,"suggestions":"49241"},{"ruleId":"45357","severity":2,"message":"45358","line":972,"column":27,"nodeType":"45359","messageId":"45360","endLine":972,"endColumn":30,"suggestions":"49242"},{"ruleId":"45357","severity":2,"message":"45358","line":973,"column":27,"nodeType":"45359","messageId":"45360","endLine":973,"endColumn":30,"suggestions":"49243"},{"ruleId":"45357","severity":2,"message":"45358","line":974,"column":27,"nodeType":"45359","messageId":"45360","endLine":974,"endColumn":30,"suggestions":"49244"},{"ruleId":"45357","severity":2,"message":"45358","line":986,"column":43,"nodeType":"45359","messageId":"45360","endLine":986,"endColumn":46,"suggestions":"49245"},{"ruleId":"45357","severity":2,"message":"45358","line":989,"column":27,"nodeType":"45359","messageId":"45360","endLine":989,"endColumn":30,"suggestions":"49246"},{"ruleId":"45357","severity":2,"message":"45358","line":990,"column":27,"nodeType":"45359","messageId":"45360","endLine":990,"endColumn":30,"suggestions":"49247"},{"ruleId":"45357","severity":2,"message":"45358","line":991,"column":27,"nodeType":"45359","messageId":"45360","endLine":991,"endColumn":30,"suggestions":"49248"},{"ruleId":"45357","severity":2,"message":"45358","line":992,"column":27,"nodeType":"45359","messageId":"45360","endLine":992,"endColumn":30,"suggestions":"49249"},{"ruleId":"45357","severity":2,"message":"45358","line":1007,"column":46,"nodeType":"45359","messageId":"45360","endLine":1007,"endColumn":49,"suggestions":"49250"},{"ruleId":"45357","severity":2,"message":"45358","line":1013,"column":16,"nodeType":"45359","messageId":"45360","endLine":1013,"endColumn":19,"suggestions":"49251"},{"ruleId":"45357","severity":2,"message":"45358","line":1016,"column":27,"nodeType":"45359","messageId":"45360","endLine":1016,"endColumn":30,"suggestions":"49252"},{"ruleId":"45357","severity":2,"message":"45358","line":1017,"column":27,"nodeType":"45359","messageId":"45360","endLine":1017,"endColumn":30,"suggestions":"49253"},{"ruleId":"45357","severity":2,"message":"45358","line":1028,"column":65,"nodeType":"45359","messageId":"45360","endLine":1028,"endColumn":68,"suggestions":"49254"},{"ruleId":"45357","severity":2,"message":"45358","line":1038,"column":83,"nodeType":"45359","messageId":"45360","endLine":1038,"endColumn":86,"suggestions":"49255"},{"ruleId":"45357","severity":2,"message":"45358","line":1049,"column":42,"nodeType":"45359","messageId":"45360","endLine":1049,"endColumn":45,"suggestions":"49256"},{"ruleId":"45357","severity":2,"message":"45358","line":1051,"column":27,"nodeType":"45359","messageId":"45360","endLine":1051,"endColumn":30,"suggestions":"49257"},{"ruleId":"45357","severity":2,"message":"45358","line":1058,"column":42,"nodeType":"45359","messageId":"45360","endLine":1058,"endColumn":45,"suggestions":"49258"},{"ruleId":"45357","severity":2,"message":"45358","line":1060,"column":27,"nodeType":"45359","messageId":"45360","endLine":1060,"endColumn":30,"suggestions":"49259"},{"ruleId":"45357","severity":2,"message":"45358","line":1061,"column":27,"nodeType":"45359","messageId":"45360","endLine":1061,"endColumn":30,"suggestions":"49260"},{"ruleId":"45357","severity":2,"message":"45358","line":1069,"column":42,"nodeType":"45359","messageId":"45360","endLine":1069,"endColumn":45,"suggestions":"49261"},{"ruleId":"45357","severity":2,"message":"45358","line":1074,"column":27,"nodeType":"45359","messageId":"45360","endLine":1074,"endColumn":30,"suggestions":"49262"},{"ruleId":"45357","severity":2,"message":"45358","line":1075,"column":27,"nodeType":"45359","messageId":"45360","endLine":1075,"endColumn":30,"suggestions":"49263"},{"ruleId":"45357","severity":2,"message":"45358","line":1086,"column":29,"nodeType":"45359","messageId":"45360","endLine":1086,"endColumn":32,"suggestions":"49264"},{"ruleId":"45357","severity":2,"message":"45358","line":1103,"column":29,"nodeType":"45359","messageId":"45360","endLine":1103,"endColumn":32,"suggestions":"49265"},{"ruleId":"45357","severity":2,"message":"45358","line":1121,"column":17,"nodeType":"45359","messageId":"45360","endLine":1121,"endColumn":20,"suggestions":"49266"},{"ruleId":"45357","severity":2,"message":"45358","line":1155,"column":24,"nodeType":"45359","messageId":"45360","endLine":1155,"endColumn":27,"suggestions":"49267"},{"ruleId":"45357","severity":2,"message":"45358","line":1156,"column":27,"nodeType":"45359","messageId":"45360","endLine":1156,"endColumn":30,"suggestions":"49268"},{"ruleId":"45357","severity":2,"message":"45358","line":1159,"column":27,"nodeType":"45359","messageId":"45360","endLine":1159,"endColumn":30,"suggestions":"49269"},{"ruleId":"45357","severity":2,"message":"45358","line":1174,"column":8,"nodeType":"45359","messageId":"45360","endLine":1174,"endColumn":11,"suggestions":"49270"},{"ruleId":"45357","severity":2,"message":"45358","line":1190,"column":38,"nodeType":"45359","messageId":"45360","endLine":1190,"endColumn":41,"suggestions":"49271"},{"ruleId":"45357","severity":2,"message":"45358","line":1192,"column":16,"nodeType":"45359","messageId":"45360","endLine":1192,"endColumn":19,"suggestions":"49272"},{"ruleId":"45357","severity":2,"message":"45358","line":1192,"column":36,"nodeType":"45359","messageId":"45360","endLine":1192,"endColumn":39,"suggestions":"49273"},{"ruleId":"45357","severity":2,"message":"45358","line":1366,"column":8,"nodeType":"45359","messageId":"45360","endLine":1366,"endColumn":11,"suggestions":"49274"},{"ruleId":"45357","severity":2,"message":"45358","line":1440,"column":8,"nodeType":"45359","messageId":"45360","endLine":1440,"endColumn":11,"suggestions":"49275"},{"ruleId":"45357","severity":2,"message":"45358","line":1448,"column":9,"nodeType":"45359","messageId":"45360","endLine":1448,"endColumn":12,"suggestions":"49276"},{"ruleId":"45357","severity":2,"message":"45358","line":1448,"column":57,"nodeType":"45359","messageId":"45360","endLine":1448,"endColumn":60,"suggestions":"49277"},{"ruleId":"45357","severity":2,"message":"45358","line":1501,"column":8,"nodeType":"45359","messageId":"45360","endLine":1501,"endColumn":11,"suggestions":"49278"},{"ruleId":"45357","severity":2,"message":"45358","line":1536,"column":8,"nodeType":"45359","messageId":"45360","endLine":1536,"endColumn":11,"suggestions":"49279"},{"ruleId":"45357","severity":2,"message":"45358","line":1549,"column":8,"nodeType":"45359","messageId":"45360","endLine":1549,"endColumn":11,"suggestions":"49280"},{"ruleId":"45357","severity":2,"message":"45358","line":1562,"column":8,"nodeType":"45359","messageId":"45360","endLine":1562,"endColumn":11,"suggestions":"49281"},{"ruleId":"45357","severity":2,"message":"45358","line":1577,"column":8,"nodeType":"45359","messageId":"45360","endLine":1577,"endColumn":11,"suggestions":"49282"},{"ruleId":"45357","severity":2,"message":"45358","line":1598,"column":8,"nodeType":"45359","messageId":"45360","endLine":1598,"endColumn":11,"suggestions":"49283"},{"ruleId":"45357","severity":2,"message":"45358","line":1612,"column":8,"nodeType":"45359","messageId":"45360","endLine":1612,"endColumn":11,"suggestions":"49284"},{"ruleId":"45357","severity":2,"message":"45358","line":105,"column":40,"nodeType":"45359","messageId":"45360","endLine":105,"endColumn":43,"suggestions":"49285"},{"ruleId":"45357","severity":2,"message":"45358","line":147,"column":52,"nodeType":"45359","messageId":"45360","endLine":147,"endColumn":55,"suggestions":"49286"},{"ruleId":"45357","severity":2,"message":"45358","line":174,"column":50,"nodeType":"45359","messageId":"45360","endLine":174,"endColumn":53,"suggestions":"49287"},{"ruleId":"45357","severity":2,"message":"45358","line":202,"column":52,"nodeType":"45359","messageId":"45360","endLine":202,"endColumn":55,"suggestions":"49288"},{"ruleId":"45357","severity":2,"message":"45358","line":237,"column":33,"nodeType":"45359","messageId":"45360","endLine":237,"endColumn":36,"suggestions":"49289"},{"ruleId":"45357","severity":2,"message":"45358","line":241,"column":16,"nodeType":"45359","messageId":"45360","endLine":241,"endColumn":19,"suggestions":"49290"},{"ruleId":"45357","severity":2,"message":"45358","line":486,"column":59,"nodeType":"45359","messageId":"45360","endLine":486,"endColumn":62,"suggestions":"49291"},{"ruleId":"45357","severity":2,"message":"45358","line":522,"column":55,"nodeType":"45359","messageId":"45360","endLine":522,"endColumn":58,"suggestions":"49292"},{"ruleId":"45357","severity":2,"message":"45358","line":541,"column":55,"nodeType":"45359","messageId":"45360","endLine":541,"endColumn":58,"suggestions":"49293"},{"ruleId":"45357","severity":2,"message":"45358","line":586,"column":55,"nodeType":"45359","messageId":"45360","endLine":586,"endColumn":58,"suggestions":"49294"},{"ruleId":"45357","severity":2,"message":"45358","line":824,"column":65,"nodeType":"45359","messageId":"45360","endLine":824,"endColumn":68,"suggestions":"49295"},{"ruleId":"45357","severity":2,"message":"45358","line":907,"column":59,"nodeType":"45359","messageId":"45360","endLine":907,"endColumn":62,"suggestions":"49296"},{"ruleId":"45357","severity":2,"message":"45358","line":911,"column":59,"nodeType":"45359","messageId":"45360","endLine":911,"endColumn":62,"suggestions":"49297"},{"ruleId":"45357","severity":2,"message":"45358","line":953,"column":42,"nodeType":"45359","messageId":"45360","endLine":953,"endColumn":45,"suggestions":"49298"},{"ruleId":"45357","severity":2,"message":"45358","line":956,"column":23,"nodeType":"45359","messageId":"45360","endLine":956,"endColumn":26,"suggestions":"49299"},{"ruleId":"45357","severity":2,"message":"45358","line":960,"column":52,"nodeType":"45359","messageId":"45360","endLine":960,"endColumn":55,"suggestions":"49300"},{"ruleId":"45357","severity":2,"message":"45358","line":962,"column":40,"nodeType":"45359","messageId":"45360","endLine":962,"endColumn":43,"suggestions":"49301"},{"ruleId":"45357","severity":2,"message":"45358","line":45,"column":41,"nodeType":"45359","messageId":"45360","endLine":45,"endColumn":44,"suggestions":"49302"},{"ruleId":"45357","severity":2,"message":"45358","line":50,"column":30,"nodeType":"45359","messageId":"45360","endLine":50,"endColumn":33,"suggestions":"49303"},{"ruleId":"45357","severity":2,"message":"45358","line":58,"column":41,"nodeType":"45359","messageId":"45360","endLine":58,"endColumn":44,"suggestions":"49304"},{"ruleId":"45357","severity":2,"message":"45358","line":63,"column":30,"nodeType":"45359","messageId":"45360","endLine":63,"endColumn":33,"suggestions":"49305"},{"ruleId":"45357","severity":2,"message":"45358","line":69,"column":75,"nodeType":"45359","messageId":"45360","endLine":69,"endColumn":78,"suggestions":"49306"},{"ruleId":"45357","severity":2,"message":"45358","line":70,"column":30,"nodeType":"45359","messageId":"45360","endLine":70,"endColumn":33,"suggestions":"49307"},{"ruleId":"45357","severity":2,"message":"45358","line":36,"column":52,"nodeType":"45359","messageId":"45360","endLine":36,"endColumn":55,"suggestions":"49308"},{"ruleId":"45357","severity":2,"message":"45358","line":38,"column":27,"nodeType":"45359","messageId":"45360","endLine":38,"endColumn":30,"suggestions":"49309"},{"ruleId":"45357","severity":2,"message":"45358","line":38,"column":62,"nodeType":"45359","messageId":"45360","endLine":38,"endColumn":65,"suggestions":"49310"},{"ruleId":"45357","severity":2,"message":"45358","line":42,"column":25,"nodeType":"45359","messageId":"45360","endLine":42,"endColumn":28,"suggestions":"49311"},{"ruleId":"45357","severity":2,"message":"45358","line":67,"column":25,"nodeType":"45359","messageId":"45360","endLine":67,"endColumn":28,"suggestions":"49312"},{"ruleId":"45357","severity":2,"message":"45358","line":72,"column":25,"nodeType":"45359","messageId":"45360","endLine":72,"endColumn":28,"suggestions":"49313"},{"ruleId":"45357","severity":2,"message":"45358","line":54,"column":27,"nodeType":"45359","messageId":"45360","endLine":54,"endColumn":30,"suggestions":"49314"},{"ruleId":"45357","severity":2,"message":"45358","line":55,"column":14,"nodeType":"45359","messageId":"45360","endLine":55,"endColumn":17,"suggestions":"49315"},{"ruleId":"45357","severity":2,"message":"45358","line":55,"column":36,"nodeType":"45359","messageId":"45360","endLine":55,"endColumn":39,"suggestions":"49316"},{"ruleId":"45357","severity":2,"message":"45358","line":56,"column":14,"nodeType":"45359","messageId":"45360","endLine":56,"endColumn":17,"suggestions":"49317"},{"ruleId":"45357","severity":2,"message":"45358","line":56,"column":36,"nodeType":"45359","messageId":"45360","endLine":56,"endColumn":39,"suggestions":"49318"},{"ruleId":"45357","severity":2,"message":"45358","line":57,"column":27,"nodeType":"45359","messageId":"45360","endLine":57,"endColumn":30,"suggestions":"49319"},{"ruleId":"45357","severity":2,"message":"45358","line":58,"column":27,"nodeType":"45359","messageId":"45360","endLine":58,"endColumn":30,"suggestions":"49320"},{"ruleId":"45357","severity":2,"message":"45358","line":59,"column":27,"nodeType":"45359","messageId":"45360","endLine":59,"endColumn":30,"suggestions":"49321"},{"ruleId":"45357","severity":2,"message":"45358","line":60,"column":14,"nodeType":"45359","messageId":"45360","endLine":60,"endColumn":17,"suggestions":"49322"},{"ruleId":"45357","severity":2,"message":"45358","line":61,"column":16,"nodeType":"45359","messageId":"45360","endLine":61,"endColumn":19,"suggestions":"49323"},{"ruleId":"45357","severity":2,"message":"45358","line":64,"column":27,"nodeType":"45359","messageId":"45360","endLine":64,"endColumn":30,"suggestions":"49324"},{"ruleId":"45357","severity":2,"message":"45358","line":65,"column":31,"nodeType":"45359","messageId":"45360","endLine":65,"endColumn":34,"suggestions":"49325"},{"ruleId":"45357","severity":2,"message":"45358","line":82,"column":17,"nodeType":"45359","messageId":"45360","endLine":82,"endColumn":20,"suggestions":"49326"},{"ruleId":"45357","severity":2,"message":"45358","line":85,"column":28,"nodeType":"45359","messageId":"45360","endLine":85,"endColumn":31,"suggestions":"49327"},{"ruleId":"45357","severity":2,"message":"45358","line":85,"column":47,"nodeType":"45359","messageId":"45360","endLine":85,"endColumn":50,"suggestions":"49328"},{"ruleId":"45357","severity":2,"message":"45358","line":86,"column":27,"nodeType":"45359","messageId":"45360","endLine":86,"endColumn":30,"suggestions":"49329"},{"ruleId":"45357","severity":2,"message":"45358","line":87,"column":27,"nodeType":"45359","messageId":"45360","endLine":87,"endColumn":30,"suggestions":"49330"},{"ruleId":"45357","severity":2,"message":"45358","line":40,"column":27,"nodeType":"45359","messageId":"45360","endLine":40,"endColumn":30,"suggestions":"49331"},{"ruleId":"45357","severity":2,"message":"45358","line":41,"column":14,"nodeType":"45359","messageId":"45360","endLine":41,"endColumn":17,"suggestions":"49332"},{"ruleId":"45357","severity":2,"message":"45358","line":41,"column":36,"nodeType":"45359","messageId":"45360","endLine":41,"endColumn":39,"suggestions":"49333"},{"ruleId":"45357","severity":2,"message":"45358","line":42,"column":14,"nodeType":"45359","messageId":"45360","endLine":42,"endColumn":17,"suggestions":"49334"},{"ruleId":"45357","severity":2,"message":"45358","line":42,"column":36,"nodeType":"45359","messageId":"45360","endLine":42,"endColumn":39,"suggestions":"49335"},{"ruleId":"45357","severity":2,"message":"45358","line":43,"column":27,"nodeType":"45359","messageId":"45360","endLine":43,"endColumn":30,"suggestions":"49336"},{"ruleId":"45357","severity":2,"message":"45358","line":44,"column":27,"nodeType":"45359","messageId":"45360","endLine":44,"endColumn":30,"suggestions":"49337"},{"ruleId":"45357","severity":2,"message":"45358","line":45,"column":27,"nodeType":"45359","messageId":"45360","endLine":45,"endColumn":30,"suggestions":"49338"},{"ruleId":"45357","severity":2,"message":"45358","line":46,"column":27,"nodeType":"45359","messageId":"45360","endLine":46,"endColumn":30,"suggestions":"49339"},{"ruleId":"45357","severity":2,"message":"45358","line":47,"column":14,"nodeType":"45359","messageId":"45360","endLine":47,"endColumn":17,"suggestions":"49340"},{"ruleId":"45357","severity":2,"message":"45358","line":47,"column":40,"nodeType":"45359","messageId":"45360","endLine":47,"endColumn":43,"suggestions":"49341"},{"ruleId":"45357","severity":2,"message":"45358","line":90,"column":17,"nodeType":"45359","messageId":"45360","endLine":90,"endColumn":20,"suggestions":"49342"},{"ruleId":"45357","severity":2,"message":"45358","line":93,"column":27,"nodeType":"45359","messageId":"45360","endLine":93,"endColumn":30,"suggestions":"49343"},{"ruleId":"45357","severity":2,"message":"45358","line":94,"column":28,"nodeType":"45359","messageId":"45360","endLine":94,"endColumn":31,"suggestions":"49344"},{"ruleId":"45357","severity":2,"message":"45358","line":94,"column":44,"nodeType":"45359","messageId":"45360","endLine":94,"endColumn":47,"suggestions":"49345"},{"ruleId":"45357","severity":2,"message":"45358","line":95,"column":28,"nodeType":"45359","messageId":"45360","endLine":95,"endColumn":31,"suggestions":"49346"},{"ruleId":"45357","severity":2,"message":"45358","line":95,"column":47,"nodeType":"45359","messageId":"45360","endLine":95,"endColumn":50,"suggestions":"49347"},{"ruleId":"45357","severity":2,"message":"45358","line":96,"column":27,"nodeType":"45359","messageId":"45360","endLine":96,"endColumn":30,"suggestions":"49348"},{"ruleId":"45357","severity":2,"message":"45358","line":98,"column":17,"nodeType":"45359","messageId":"45360","endLine":98,"endColumn":20,"suggestions":"49349"},{"ruleId":"45357","severity":2,"message":"45358","line":98,"column":44,"nodeType":"45359","messageId":"45360","endLine":98,"endColumn":47,"suggestions":"49350"},{"ruleId":"45357","severity":2,"message":"45358","line":101,"column":27,"nodeType":"45359","messageId":"45360","endLine":101,"endColumn":30,"suggestions":"49351"},{"ruleId":"45357","severity":2,"message":"45358","line":103,"column":17,"nodeType":"45359","messageId":"45360","endLine":103,"endColumn":20,"suggestions":"49352"},{"ruleId":"45357","severity":2,"message":"45358","line":103,"column":44,"nodeType":"45359","messageId":"45360","endLine":103,"endColumn":47,"suggestions":"49353"},{"ruleId":"45357","severity":2,"message":"45358","line":106,"column":27,"nodeType":"45359","messageId":"45360","endLine":106,"endColumn":30,"suggestions":"49354"},{"ruleId":"45357","severity":2,"message":"45358","line":107,"column":28,"nodeType":"45359","messageId":"45360","endLine":107,"endColumn":31,"suggestions":"49355"},{"ruleId":"45357","severity":2,"message":"45358","line":107,"column":55,"nodeType":"45359","messageId":"45360","endLine":107,"endColumn":58,"suggestions":"49356"},{"ruleId":"45357","severity":2,"message":"45358","line":108,"column":14,"nodeType":"45359","messageId":"45360","endLine":108,"endColumn":17,"suggestions":"49357"},{"ruleId":"45357","severity":2,"message":"45358","line":108,"column":36,"nodeType":"45359","messageId":"45360","endLine":108,"endColumn":39,"suggestions":"49358"},{"ruleId":"45357","severity":2,"message":"45358","line":109,"column":27,"nodeType":"45359","messageId":"45360","endLine":109,"endColumn":30,"suggestions":"49359"},{"ruleId":"45357","severity":2,"message":"45358","line":110,"column":27,"nodeType":"45359","messageId":"45360","endLine":110,"endColumn":30,"suggestions":"49360"},{"ruleId":"45357","severity":2,"message":"45358","line":111,"column":14,"nodeType":"45359","messageId":"45360","endLine":111,"endColumn":17,"suggestions":"49361"},{"ruleId":"45357","severity":2,"message":"45358","line":111,"column":36,"nodeType":"45359","messageId":"45360","endLine":111,"endColumn":39,"suggestions":"49362"},{"ruleId":"45357","severity":2,"message":"45358","line":112,"column":27,"nodeType":"45359","messageId":"45360","endLine":112,"endColumn":30,"suggestions":"49363"},{"ruleId":"45357","severity":2,"message":"45358","line":113,"column":27,"nodeType":"45359","messageId":"45360","endLine":113,"endColumn":30,"suggestions":"49364"},{"ruleId":"45357","severity":2,"message":"45358","line":124,"column":17,"nodeType":"45359","messageId":"45360","endLine":124,"endColumn":20,"suggestions":"49365"},{"ruleId":"45357","severity":2,"message":"45358","line":127,"column":27,"nodeType":"45359","messageId":"45360","endLine":127,"endColumn":30,"suggestions":"49366"},{"ruleId":"45357","severity":2,"message":"45358","line":128,"column":27,"nodeType":"45359","messageId":"45360","endLine":128,"endColumn":30,"suggestions":"49367"},{"ruleId":"45357","severity":2,"message":"45358","line":129,"column":27,"nodeType":"45359","messageId":"45360","endLine":129,"endColumn":30,"suggestions":"49368"},{"ruleId":"45357","severity":2,"message":"45358","line":130,"column":27,"nodeType":"45359","messageId":"45360","endLine":130,"endColumn":30,"suggestions":"49369"},{"ruleId":"45357","severity":2,"message":"45358","line":163,"column":27,"nodeType":"45359","messageId":"45360","endLine":163,"endColumn":30,"suggestions":"49370"},{"ruleId":"45357","severity":2,"message":"45358","line":193,"column":27,"nodeType":"45359","messageId":"45360","endLine":193,"endColumn":30,"suggestions":"49371"},{"ruleId":"45357","severity":2,"message":"45358","line":337,"column":40,"nodeType":"45359","messageId":"45360","endLine":337,"endColumn":43,"suggestions":"49372"},{"ruleId":"45357","severity":2,"message":"45358","line":366,"column":40,"nodeType":"45359","messageId":"45360","endLine":366,"endColumn":43,"suggestions":"49373"},{"ruleId":"45357","severity":2,"message":"45358","line":378,"column":25,"nodeType":"45359","messageId":"45360","endLine":378,"endColumn":28,"suggestions":"49374"},{"ruleId":"45357","severity":2,"message":"45358","line":414,"column":25,"nodeType":"45359","messageId":"45360","endLine":414,"endColumn":28,"suggestions":"49375"},{"ruleId":"45357","severity":2,"message":"45358","line":418,"column":25,"nodeType":"45359","messageId":"45360","endLine":418,"endColumn":28,"suggestions":"49376"},{"ruleId":"45357","severity":2,"message":"45358","line":422,"column":40,"nodeType":"45359","messageId":"45360","endLine":422,"endColumn":43,"suggestions":"49377"},{"ruleId":"45357","severity":2,"message":"45358","line":440,"column":24,"nodeType":"45359","messageId":"45360","endLine":440,"endColumn":27,"suggestions":"49378"},{"ruleId":"45357","severity":2,"message":"45358","line":453,"column":33,"nodeType":"45359","messageId":"45360","endLine":453,"endColumn":36,"suggestions":"49379"},{"ruleId":"45357","severity":2,"message":"45358","line":468,"column":32,"nodeType":"45359","messageId":"45360","endLine":468,"endColumn":35,"suggestions":"49380"},{"ruleId":"45357","severity":2,"message":"45358","line":482,"column":15,"nodeType":"45359","messageId":"45360","endLine":482,"endColumn":18,"suggestions":"49381"},{"ruleId":"45357","severity":2,"message":"45358","line":487,"column":25,"nodeType":"45359","messageId":"45360","endLine":487,"endColumn":28,"suggestions":"49382"},{"ruleId":"45357","severity":2,"message":"45358","line":491,"column":25,"nodeType":"45359","messageId":"45360","endLine":491,"endColumn":28,"suggestions":"49383"},{"ruleId":"45357","severity":2,"message":"45358","line":518,"column":40,"nodeType":"45359","messageId":"45360","endLine":518,"endColumn":43,"suggestions":"49384"},{"ruleId":"45357","severity":2,"message":"45358","line":529,"column":25,"nodeType":"45359","messageId":"45360","endLine":529,"endColumn":28,"suggestions":"49385"},{"ruleId":"45357","severity":2,"message":"45358","line":637,"column":40,"nodeType":"45359","messageId":"45360","endLine":637,"endColumn":43,"suggestions":"49386"},{"ruleId":"45357","severity":2,"message":"45358","line":668,"column":40,"nodeType":"45359","messageId":"45360","endLine":668,"endColumn":43,"suggestions":"49387"},{"ruleId":"45357","severity":2,"message":"45358","line":677,"column":25,"nodeType":"45359","messageId":"45360","endLine":677,"endColumn":28,"suggestions":"49388"},{"ruleId":"45357","severity":2,"message":"45358","line":706,"column":25,"nodeType":"45359","messageId":"45360","endLine":706,"endColumn":28,"suggestions":"49389"},{"ruleId":"45357","severity":2,"message":"45358","line":710,"column":25,"nodeType":"45359","messageId":"45360","endLine":710,"endColumn":28,"suggestions":"49390"},{"ruleId":"45357","severity":2,"message":"45358","line":842,"column":43,"nodeType":"45359","messageId":"45360","endLine":842,"endColumn":46,"suggestions":"49391"},{"ruleId":"45357","severity":2,"message":"45358","line":884,"column":43,"nodeType":"45359","messageId":"45360","endLine":884,"endColumn":46,"suggestions":"49392"},{"ruleId":"45357","severity":2,"message":"45358","line":925,"column":19,"nodeType":"45359","messageId":"45360","endLine":925,"endColumn":22,"suggestions":"49393"},{"ruleId":"45357","severity":2,"message":"45358","line":953,"column":18,"nodeType":"45359","messageId":"45360","endLine":953,"endColumn":21,"suggestions":"49394"},{"ruleId":"45357","severity":2,"message":"45358","line":957,"column":44,"nodeType":"45359","messageId":"45360","endLine":957,"endColumn":47,"suggestions":"49395"},{"ruleId":"45357","severity":2,"message":"45358","line":1005,"column":19,"nodeType":"45359","messageId":"45360","endLine":1005,"endColumn":22,"suggestions":"49396"},{"ruleId":"45357","severity":2,"message":"45358","line":1011,"column":43,"nodeType":"45359","messageId":"45360","endLine":1011,"endColumn":46,"suggestions":"49397"},{"ruleId":"45357","severity":2,"message":"45358","line":1052,"column":19,"nodeType":"45359","messageId":"45360","endLine":1052,"endColumn":22,"suggestions":"49398"},{"ruleId":"45357","severity":2,"message":"45358","line":1058,"column":43,"nodeType":"45359","messageId":"45360","endLine":1058,"endColumn":46,"suggestions":"49399"},{"ruleId":"45357","severity":2,"message":"45358","line":1121,"column":19,"nodeType":"45359","messageId":"45360","endLine":1121,"endColumn":22,"suggestions":"49400"},{"ruleId":"45357","severity":2,"message":"45358","line":1143,"column":18,"nodeType":"45359","messageId":"45360","endLine":1143,"endColumn":21,"suggestions":"49401"},{"ruleId":"45357","severity":2,"message":"45358","line":1169,"column":41,"nodeType":"45359","messageId":"45360","endLine":1169,"endColumn":44,"suggestions":"49402"},{"ruleId":"45357","severity":2,"message":"45358","line":1170,"column":36,"nodeType":"45359","messageId":"45360","endLine":1170,"endColumn":39,"suggestions":"49403"},{"ruleId":"45357","severity":2,"message":"45358","line":1209,"column":17,"nodeType":"45359","messageId":"45360","endLine":1209,"endColumn":20,"suggestions":"49404"},{"ruleId":"45357","severity":2,"message":"45358","line":1229,"column":32,"nodeType":"45359","messageId":"45360","endLine":1229,"endColumn":35,"suggestions":"49405"},{"ruleId":"45357","severity":2,"message":"45358","line":381,"column":27,"nodeType":"45359","messageId":"45360","endLine":381,"endColumn":30,"suggestions":"49406"},{"ruleId":"45357","severity":2,"message":"45358","line":382,"column":14,"nodeType":"45359","messageId":"45360","endLine":382,"endColumn":17,"suggestions":"49407"},{"ruleId":"45357","severity":2,"message":"45358","line":382,"column":36,"nodeType":"45359","messageId":"45360","endLine":382,"endColumn":39,"suggestions":"49408"},{"ruleId":"45357","severity":2,"message":"45358","line":383,"column":14,"nodeType":"45359","messageId":"45360","endLine":383,"endColumn":17,"suggestions":"49409"},{"ruleId":"45357","severity":2,"message":"45358","line":383,"column":36,"nodeType":"45359","messageId":"45360","endLine":383,"endColumn":39,"suggestions":"49410"},{"ruleId":"45357","severity":2,"message":"45358","line":384,"column":27,"nodeType":"45359","messageId":"45360","endLine":384,"endColumn":30,"suggestions":"49411"},{"ruleId":"45357","severity":2,"message":"45358","line":385,"column":27,"nodeType":"45359","messageId":"45360","endLine":385,"endColumn":30,"suggestions":"49412"},{"ruleId":"45357","severity":2,"message":"45358","line":386,"column":27,"nodeType":"45359","messageId":"45360","endLine":386,"endColumn":30,"suggestions":"49413"},{"ruleId":"45357","severity":2,"message":"45358","line":387,"column":27,"nodeType":"45359","messageId":"45360","endLine":387,"endColumn":30,"suggestions":"49414"},{"ruleId":"45357","severity":2,"message":"45358","line":388,"column":27,"nodeType":"45359","messageId":"45360","endLine":388,"endColumn":30,"suggestions":"49415"},{"ruleId":"45357","severity":2,"message":"45358","line":389,"column":14,"nodeType":"45359","messageId":"45360","endLine":389,"endColumn":17,"suggestions":"49416"},{"ruleId":"45357","severity":2,"message":"45358","line":389,"column":40,"nodeType":"45359","messageId":"45360","endLine":389,"endColumn":43,"suggestions":"49417"},{"ruleId":"45357","severity":2,"message":"45358","line":390,"column":27,"nodeType":"45359","messageId":"45360","endLine":390,"endColumn":30,"suggestions":"49418"},{"ruleId":"45357","severity":2,"message":"45358","line":391,"column":31,"nodeType":"45359","messageId":"45360","endLine":391,"endColumn":34,"suggestions":"49419"},{"ruleId":"45357","severity":2,"message":"45358","line":38,"column":44,"nodeType":"45359","messageId":"45360","endLine":38,"endColumn":47,"suggestions":"49420"},{"ruleId":"45357","severity":2,"message":"45358","line":39,"column":29,"nodeType":"45359","messageId":"45360","endLine":39,"endColumn":32,"suggestions":"49421"},{"ruleId":"45357","severity":2,"message":"45358","line":39,"column":52,"nodeType":"45359","messageId":"45360","endLine":39,"endColumn":55,"suggestions":"49422"},{"ruleId":"45357","severity":2,"message":"45358","line":72,"column":44,"nodeType":"45359","messageId":"45360","endLine":72,"endColumn":47,"suggestions":"49423"},{"ruleId":"45357","severity":2,"message":"45358","line":73,"column":29,"nodeType":"45359","messageId":"45360","endLine":73,"endColumn":32,"suggestions":"49424"},{"ruleId":"45357","severity":2,"message":"45358","line":73,"column":52,"nodeType":"45359","messageId":"45360","endLine":73,"endColumn":55,"suggestions":"49425"},{"ruleId":"45357","severity":2,"message":"45358","line":107,"column":44,"nodeType":"45359","messageId":"45360","endLine":107,"endColumn":47,"suggestions":"49426"},{"ruleId":"45357","severity":2,"message":"45358","line":108,"column":29,"nodeType":"45359","messageId":"45360","endLine":108,"endColumn":32,"suggestions":"49427"},{"ruleId":"45357","severity":2,"message":"45358","line":108,"column":52,"nodeType":"45359","messageId":"45360","endLine":108,"endColumn":55,"suggestions":"49428"},{"ruleId":"45357","severity":2,"message":"45358","line":133,"column":8,"nodeType":"45359","messageId":"45360","endLine":133,"endColumn":11,"suggestions":"49429"},{"ruleId":"45357","severity":2,"message":"45358","line":159,"column":8,"nodeType":"45359","messageId":"45360","endLine":159,"endColumn":11,"suggestions":"49430"},{"ruleId":"45357","severity":2,"message":"45358","line":178,"column":8,"nodeType":"45359","messageId":"45360","endLine":178,"endColumn":11,"suggestions":"49431"},{"ruleId":"45357","severity":2,"message":"45358","line":252,"column":31,"nodeType":"45359","messageId":"45360","endLine":252,"endColumn":34,"suggestions":"49432"},{"ruleId":"45357","severity":2,"message":"45358","line":252,"column":45,"nodeType":"45359","messageId":"45360","endLine":252,"endColumn":48,"suggestions":"49433"},{"ruleId":"45357","severity":2,"message":"45358","line":252,"column":51,"nodeType":"45359","messageId":"45360","endLine":252,"endColumn":54,"suggestions":"49434"},{"ruleId":"45357","severity":2,"message":"45358","line":253,"column":14,"nodeType":"45359","messageId":"45360","endLine":253,"endColumn":17,"suggestions":"49435"},{"ruleId":"45357","severity":2,"message":"45358","line":55,"column":49,"nodeType":"45359","messageId":"45360","endLine":55,"endColumn":52,"suggestions":"49436"},{"ruleId":"45357","severity":2,"message":"45358","line":60,"column":44,"nodeType":"45359","messageId":"45360","endLine":60,"endColumn":47,"suggestions":"49437"},{"ruleId":"45357","severity":2,"message":"45358","line":60,"column":81,"nodeType":"45359","messageId":"45360","endLine":60,"endColumn":84,"suggestions":"49438"},{"ruleId":"45357","severity":2,"message":"45358","line":71,"column":43,"nodeType":"45359","messageId":"45360","endLine":71,"endColumn":46,"suggestions":"49439"},{"ruleId":"45357","severity":2,"message":"45358","line":71,"column":80,"nodeType":"45359","messageId":"45360","endLine":71,"endColumn":83,"suggestions":"49440"},{"ruleId":"45357","severity":2,"message":"45358","line":104,"column":49,"nodeType":"45359","messageId":"45360","endLine":104,"endColumn":52,"suggestions":"49441"},{"ruleId":"45357","severity":2,"message":"45358","line":107,"column":46,"nodeType":"45359","messageId":"45360","endLine":107,"endColumn":49,"suggestions":"49442"},{"ruleId":"45357","severity":2,"message":"45358","line":111,"column":43,"nodeType":"45359","messageId":"45360","endLine":111,"endColumn":46,"suggestions":"49443"},{"ruleId":"45357","severity":2,"message":"45358","line":111,"column":80,"nodeType":"45359","messageId":"45360","endLine":111,"endColumn":83,"suggestions":"49444"},{"ruleId":"45568","severity":1,"message":"45569","line":29,"column":5,"nodeType":"45570","endLine":29,"endColumn":43,"suppressions":"49445"},{"ruleId":"45568","severity":1,"message":"45569","line":17,"column":12,"nodeType":"45570","endLine":17,"endColumn":88,"suppressions":"49446"},{"ruleId":"45568","severity":1,"message":"45569","line":21,"column":12,"nodeType":"45570","endLine":21,"endColumn":88,"suppressions":"49447"},{"ruleId":"49448","severity":2,"message":"49449","line":30,"column":5,"nodeType":null,"endLine":30,"endColumn":12,"suppressions":"49450"},{"ruleId":"49448","severity":2,"message":"49451","line":30,"column":5,"nodeType":null,"endLine":30,"endColumn":12,"suppressions":"49452"},{"ruleId":"49448","severity":2,"message":"49453","line":34,"column":5,"nodeType":null,"endLine":34,"endColumn":12,"suppressions":"49454"},{"ruleId":"49448","severity":2,"message":"49455","line":29,"column":5,"nodeType":null,"endLine":29,"endColumn":12,"suppressions":"49456"},{"ruleId":"49448","severity":2,"message":"49457","line":30,"column":5,"nodeType":null,"endLine":30,"endColumn":12,"suppressions":"49458"},{"ruleId":"45357","severity":2,"message":"45358","line":23,"column":61,"nodeType":"45359","messageId":"45360","endLine":23,"endColumn":64,"suggestions":"49459"},{"ruleId":"45357","severity":2,"message":"45358","line":35,"column":8,"nodeType":"45359","messageId":"45360","endLine":35,"endColumn":11,"suggestions":"49460"},{"ruleId":"45357","severity":2,"message":"45358","line":41,"column":64,"nodeType":"45359","messageId":"45360","endLine":41,"endColumn":67,"suggestions":"49461"},{"ruleId":"45357","severity":2,"message":"45358","line":41,"column":91,"nodeType":"45359","messageId":"45360","endLine":41,"endColumn":94,"suggestions":"49462"},{"ruleId":"45357","severity":2,"message":"45358","line":46,"column":67,"nodeType":"45359","messageId":"45360","endLine":46,"endColumn":70,"suggestions":"49463"},{"ruleId":"45357","severity":2,"message":"45358","line":51,"column":70,"nodeType":"45359","messageId":"45360","endLine":51,"endColumn":73,"suggestions":"49464"},{"ruleId":"45357","severity":2,"message":"45358","line":56,"column":66,"nodeType":"45359","messageId":"45360","endLine":56,"endColumn":69,"suggestions":"49465"},{"ruleId":"45357","severity":2,"message":"45358","line":58,"column":71,"nodeType":"45359","messageId":"45360","endLine":58,"endColumn":74,"suggestions":"49466"},{"ruleId":"45357","severity":2,"message":"45358","line":63,"column":77,"nodeType":"45359","messageId":"45360","endLine":63,"endColumn":80,"suggestions":"49467"},{"ruleId":"45357","severity":2,"message":"45358","line":65,"column":80,"nodeType":"45359","messageId":"45360","endLine":65,"endColumn":83,"suggestions":"49468"},{"ruleId":"45357","severity":2,"message":"45358","line":71,"column":55,"nodeType":"45359","messageId":"45360","endLine":71,"endColumn":58,"suggestions":"49469"},{"ruleId":"45357","severity":2,"message":"45358","line":187,"column":48,"nodeType":"45359","messageId":"45360","endLine":187,"endColumn":51,"suggestions":"49470"},{"ruleId":"45357","severity":2,"message":"45358","line":193,"column":47,"nodeType":"45359","messageId":"45360","endLine":193,"endColumn":50,"suggestions":"49471"},{"ruleId":"45357","severity":2,"message":"45358","line":196,"column":64,"nodeType":"45359","messageId":"45360","endLine":196,"endColumn":67,"suggestions":"49472"},{"ruleId":"45357","severity":2,"message":"45358","line":197,"column":48,"nodeType":"45359","messageId":"45360","endLine":197,"endColumn":51,"suggestions":"49473"},{"ruleId":"45357","severity":2,"message":"45358","line":200,"column":34,"nodeType":"45359","messageId":"45360","endLine":200,"endColumn":37,"suggestions":"49474"},{"ruleId":"45357","severity":2,"message":"45358","line":250,"column":20,"nodeType":"45359","messageId":"45360","endLine":250,"endColumn":23,"suggestions":"49475"},{"ruleId":"45357","severity":2,"message":"45358","line":255,"column":27,"nodeType":"45359","messageId":"45360","endLine":255,"endColumn":30,"suggestions":"49476"},{"ruleId":"45357","severity":2,"message":"45358","line":256,"column":20,"nodeType":"45359","messageId":"45360","endLine":256,"endColumn":23,"suggestions":"49477"},{"ruleId":"45357","severity":2,"message":"45358","line":261,"column":27,"nodeType":"45359","messageId":"45360","endLine":261,"endColumn":30,"suggestions":"49478"},{"ruleId":"45357","severity":2,"message":"45358","line":262,"column":20,"nodeType":"45359","messageId":"45360","endLine":262,"endColumn":23,"suggestions":"49479"},{"ruleId":"45357","severity":2,"message":"45358","line":324,"column":37,"nodeType":"45359","messageId":"45360","endLine":324,"endColumn":40,"suggestions":"49480"},{"ruleId":"45357","severity":2,"message":"45358","line":331,"column":28,"nodeType":"45359","messageId":"45360","endLine":331,"endColumn":31,"suggestions":"49481"},{"ruleId":"45357","severity":2,"message":"45358","line":332,"column":28,"nodeType":"45359","messageId":"45360","endLine":332,"endColumn":31,"suggestions":"49482"},{"ruleId":"45357","severity":2,"message":"45358","line":333,"column":28,"nodeType":"45359","messageId":"45360","endLine":333,"endColumn":31,"suggestions":"49483"},{"ruleId":"45357","severity":2,"message":"45358","line":334,"column":28,"nodeType":"45359","messageId":"45360","endLine":334,"endColumn":31,"suggestions":"49484"},{"ruleId":"45357","severity":2,"message":"45358","line":335,"column":28,"nodeType":"45359","messageId":"45360","endLine":335,"endColumn":31,"suggestions":"49485"},{"ruleId":"45357","severity":2,"message":"45358","line":336,"column":28,"nodeType":"45359","messageId":"45360","endLine":336,"endColumn":31,"suggestions":"49486"},{"ruleId":"45357","severity":2,"message":"45358","line":337,"column":28,"nodeType":"45359","messageId":"45360","endLine":337,"endColumn":31,"suggestions":"49487"},{"ruleId":"45357","severity":2,"message":"45358","line":338,"column":28,"nodeType":"45359","messageId":"45360","endLine":338,"endColumn":31,"suggestions":"49488"},{"ruleId":"45357","severity":2,"message":"45358","line":339,"column":28,"nodeType":"45359","messageId":"45360","endLine":339,"endColumn":31,"suggestions":"49489"},{"ruleId":"45357","severity":2,"message":"45358","line":340,"column":28,"nodeType":"45359","messageId":"45360","endLine":340,"endColumn":31,"suggestions":"49490"},{"ruleId":"45357","severity":2,"message":"45358","line":341,"column":28,"nodeType":"45359","messageId":"45360","endLine":341,"endColumn":31,"suggestions":"49491"},{"ruleId":"45357","severity":2,"message":"45358","line":351,"column":54,"nodeType":"45359","messageId":"45360","endLine":351,"endColumn":57,"suggestions":"49492"},{"ruleId":"45357","severity":2,"message":"45358","line":369,"column":84,"nodeType":"45359","messageId":"45360","endLine":369,"endColumn":87,"suggestions":"49493"},{"ruleId":"45357","severity":2,"message":"45358","line":370,"column":80,"nodeType":"45359","messageId":"45360","endLine":370,"endColumn":83,"suggestions":"49494"},{"ruleId":"45357","severity":2,"message":"45358","line":396,"column":84,"nodeType":"45359","messageId":"45360","endLine":396,"endColumn":87,"suggestions":"49495"},{"ruleId":"45357","severity":2,"message":"45358","line":397,"column":80,"nodeType":"45359","messageId":"45360","endLine":397,"endColumn":83,"suggestions":"49496"},{"ruleId":"45357","severity":2,"message":"45358","line":16,"column":41,"nodeType":"45359","messageId":"45360","endLine":16,"endColumn":44,"suggestions":"49497"},{"ruleId":"45357","severity":2,"message":"45358","line":22,"column":16,"nodeType":"45359","messageId":"45360","endLine":22,"endColumn":19,"suggestions":"49498"},{"ruleId":"45357","severity":2,"message":"45358","line":22,"column":41,"nodeType":"45359","messageId":"45360","endLine":22,"endColumn":44,"suggestions":"49499"},{"ruleId":"45357","severity":2,"message":"45358","line":31,"column":16,"nodeType":"45359","messageId":"45360","endLine":31,"endColumn":19,"suggestions":"49500"},{"ruleId":"45357","severity":2,"message":"45358","line":53,"column":20,"nodeType":"45359","messageId":"45360","endLine":53,"endColumn":23,"suggestions":"49501"},{"ruleId":"45357","severity":2,"message":"45358","line":81,"column":20,"nodeType":"45359","messageId":"45360","endLine":81,"endColumn":23,"suggestions":"49502"},{"ruleId":"45357","severity":2,"message":"45358","line":87,"column":22,"nodeType":"45359","messageId":"45360","endLine":87,"endColumn":25,"suggestions":"49503"},{"ruleId":"45357","severity":2,"message":"45358","line":118,"column":20,"nodeType":"45359","messageId":"45360","endLine":118,"endColumn":23,"suggestions":"49504"},{"ruleId":"45357","severity":2,"message":"45358","line":130,"column":30,"nodeType":"45359","messageId":"45360","endLine":130,"endColumn":33,"suggestions":"49505"},{"ruleId":"45357","severity":2,"message":"45358","line":157,"column":16,"nodeType":"45359","messageId":"45360","endLine":157,"endColumn":19,"suggestions":"49506"},{"ruleId":"45357","severity":2,"message":"45358","line":204,"column":16,"nodeType":"45359","messageId":"45360","endLine":204,"endColumn":19,"suggestions":"49507"},{"ruleId":"45357","severity":2,"message":"45358","line":237,"column":20,"nodeType":"45359","messageId":"45360","endLine":237,"endColumn":23,"suggestions":"49508"},{"ruleId":"45357","severity":2,"message":"45358","line":292,"column":16,"nodeType":"45359","messageId":"45360","endLine":292,"endColumn":19,"suggestions":"49509"},{"ruleId":"45357","severity":2,"message":"45358","line":345,"column":16,"nodeType":"45359","messageId":"45360","endLine":345,"endColumn":19,"suggestions":"49510"},{"ruleId":"45357","severity":2,"message":"45358","line":358,"column":16,"nodeType":"45359","messageId":"45360","endLine":358,"endColumn":19,"suggestions":"49511"},{"ruleId":"45357","severity":2,"message":"45358","line":395,"column":16,"nodeType":"45359","messageId":"45360","endLine":395,"endColumn":19,"suggestions":"49512"},{"ruleId":"45357","severity":2,"message":"45358","line":474,"column":16,"nodeType":"45359","messageId":"45360","endLine":474,"endColumn":19,"suggestions":"49513"},{"ruleId":"45357","severity":2,"message":"45358","line":497,"column":22,"nodeType":"45359","messageId":"45360","endLine":497,"endColumn":25,"suggestions":"49514"},{"ruleId":"45357","severity":2,"message":"45358","line":524,"column":21,"nodeType":"45359","messageId":"45360","endLine":524,"endColumn":24,"suggestions":"49515"},{"ruleId":"45357","severity":2,"message":"45358","line":554,"column":22,"nodeType":"45359","messageId":"45360","endLine":554,"endColumn":25,"suggestions":"49516"},{"ruleId":"45357","severity":2,"message":"45358","line":569,"column":29,"nodeType":"45359","messageId":"45360","endLine":569,"endColumn":32,"suggestions":"49517"},{"ruleId":"45357","severity":2,"message":"45358","line":589,"column":22,"nodeType":"45359","messageId":"45360","endLine":589,"endColumn":25,"suggestions":"49518"},{"ruleId":"45357","severity":2,"message":"45358","line":613,"column":20,"nodeType":"45359","messageId":"45360","endLine":613,"endColumn":23,"suggestions":"49519"},{"ruleId":"45357","severity":2,"message":"45358","line":623,"column":23,"nodeType":"45359","messageId":"45360","endLine":623,"endColumn":26,"suggestions":"49520"},{"ruleId":"45357","severity":2,"message":"45358","line":633,"column":29,"nodeType":"45359","messageId":"45360","endLine":633,"endColumn":32,"suggestions":"49521"},{"ruleId":"45357","severity":2,"message":"45358","line":729,"column":16,"nodeType":"45359","messageId":"45360","endLine":729,"endColumn":19,"suggestions":"49522"},{"ruleId":"45357","severity":2,"message":"45358","line":743,"column":20,"nodeType":"45359","messageId":"45360","endLine":743,"endColumn":23,"suggestions":"49523"},{"ruleId":"45357","severity":2,"message":"45358","line":752,"column":15,"nodeType":"45359","messageId":"45360","endLine":752,"endColumn":18,"suggestions":"49524"},{"ruleId":"45357","severity":2,"message":"45358","line":761,"column":18,"nodeType":"45359","messageId":"45360","endLine":761,"endColumn":21,"suggestions":"49525"},{"ruleId":"45357","severity":2,"message":"45358","line":770,"column":15,"nodeType":"45359","messageId":"45360","endLine":770,"endColumn":18,"suggestions":"49526"},{"ruleId":"45357","severity":2,"message":"45358","line":786,"column":20,"nodeType":"45359","messageId":"45360","endLine":786,"endColumn":23,"suggestions":"49527"},{"ruleId":"45357","severity":2,"message":"45358","line":799,"column":26,"nodeType":"45359","messageId":"45360","endLine":799,"endColumn":29,"suggestions":"49528"},{"ruleId":"45357","severity":2,"message":"45358","line":813,"column":22,"nodeType":"45359","messageId":"45360","endLine":813,"endColumn":25,"suggestions":"49529"},{"ruleId":"45357","severity":2,"message":"45358","line":825,"column":22,"nodeType":"45359","messageId":"45360","endLine":825,"endColumn":25,"suggestions":"49530"},{"ruleId":"45357","severity":2,"message":"45358","line":858,"column":22,"nodeType":"45359","messageId":"45360","endLine":858,"endColumn":25,"suggestions":"49531"},{"ruleId":"45357","severity":2,"message":"45358","line":868,"column":22,"nodeType":"45359","messageId":"45360","endLine":868,"endColumn":25,"suggestions":"49532"},{"ruleId":"45357","severity":2,"message":"45358","line":878,"column":16,"nodeType":"45359","messageId":"45360","endLine":878,"endColumn":19,"suggestions":"49533"},{"ruleId":"45357","severity":2,"message":"45358","line":884,"column":24,"nodeType":"45359","messageId":"45360","endLine":884,"endColumn":27,"suggestions":"49534"},{"ruleId":"45357","severity":2,"message":"45358","line":895,"column":29,"nodeType":"45359","messageId":"45360","endLine":895,"endColumn":32,"suggestions":"49535"},{"ruleId":"45357","severity":2,"message":"45358","line":942,"column":14,"nodeType":"45359","messageId":"45360","endLine":942,"endColumn":17,"suggestions":"49536"},{"ruleId":"45357","severity":2,"message":"45358","line":962,"column":15,"nodeType":"45359","messageId":"45360","endLine":962,"endColumn":18,"suggestions":"49537"},{"ruleId":"45357","severity":2,"message":"45358","line":986,"column":16,"nodeType":"45359","messageId":"45360","endLine":986,"endColumn":19,"suggestions":"49538"},{"ruleId":"45357","severity":2,"message":"45358","line":1027,"column":16,"nodeType":"45359","messageId":"45360","endLine":1027,"endColumn":19,"suggestions":"49539"},{"ruleId":"45357","severity":2,"message":"45358","line":1040,"column":16,"nodeType":"45359","messageId":"45360","endLine":1040,"endColumn":19,"suggestions":"49540"},{"ruleId":"45357","severity":2,"message":"45358","line":1051,"column":29,"nodeType":"45359","messageId":"45360","endLine":1051,"endColumn":32,"suggestions":"49541"},{"ruleId":"45357","severity":2,"message":"45358","line":1052,"column":29,"nodeType":"45359","messageId":"45360","endLine":1052,"endColumn":32,"suggestions":"49542"},{"ruleId":"45357","severity":2,"message":"45358","line":1095,"column":16,"nodeType":"45359","messageId":"45360","endLine":1095,"endColumn":19,"suggestions":"49543"},{"ruleId":"45357","severity":2,"message":"45358","line":1116,"column":18,"nodeType":"45359","messageId":"45360","endLine":1116,"endColumn":21,"suggestions":"49544"},{"ruleId":"45357","severity":2,"message":"45358","line":1128,"column":27,"nodeType":"45359","messageId":"45360","endLine":1128,"endColumn":30,"suggestions":"49545"},{"ruleId":"45357","severity":2,"message":"45358","line":1149,"column":16,"nodeType":"45359","messageId":"45360","endLine":1149,"endColumn":19,"suggestions":"49546"},{"ruleId":"45357","severity":2,"message":"45358","line":1323,"column":27,"nodeType":"45359","messageId":"45360","endLine":1323,"endColumn":30,"suggestions":"49547"},{"ruleId":"45357","severity":2,"message":"45358","line":1351,"column":19,"nodeType":"45359","messageId":"45360","endLine":1351,"endColumn":22,"suggestions":"49548"},{"ruleId":"45357","severity":2,"message":"45358","line":1369,"column":27,"nodeType":"45359","messageId":"45360","endLine":1369,"endColumn":30,"suggestions":"49549"},{"ruleId":"45357","severity":2,"message":"45358","line":1380,"column":20,"nodeType":"45359","messageId":"45360","endLine":1380,"endColumn":23,"suggestions":"49550"},{"ruleId":"45357","severity":2,"message":"45358","line":1388,"column":16,"nodeType":"45359","messageId":"45360","endLine":1388,"endColumn":19,"suggestions":"49551"},{"ruleId":"45357","severity":2,"message":"45358","line":1395,"column":21,"nodeType":"45359","messageId":"45360","endLine":1395,"endColumn":24,"suggestions":"49552"},{"ruleId":"45357","severity":2,"message":"45358","line":1404,"column":21,"nodeType":"45359","messageId":"45360","endLine":1404,"endColumn":24,"suggestions":"49553"},{"ruleId":"45357","severity":2,"message":"45358","line":1424,"column":17,"nodeType":"45359","messageId":"45360","endLine":1424,"endColumn":20,"suggestions":"49554"},{"ruleId":"45357","severity":2,"message":"45358","line":1439,"column":17,"nodeType":"45359","messageId":"45360","endLine":1439,"endColumn":20,"suggestions":"49555"},{"ruleId":"45357","severity":2,"message":"45358","line":46,"column":23,"nodeType":"45359","messageId":"45360","endLine":46,"endColumn":26,"suggestions":"49556"},{"ruleId":"45357","severity":2,"message":"45358","line":65,"column":64,"nodeType":"45359","messageId":"45360","endLine":65,"endColumn":67,"suggestions":"49557"},{"ruleId":"45357","severity":2,"message":"45358","line":63,"column":43,"nodeType":"45359","messageId":"45360","endLine":63,"endColumn":46,"suggestions":"49558"},{"ruleId":"45357","severity":2,"message":"45358","line":76,"column":43,"nodeType":"45359","messageId":"45360","endLine":76,"endColumn":46,"suggestions":"49559"},{"ruleId":"45357","severity":2,"message":"45358","line":90,"column":43,"nodeType":"45359","messageId":"45360","endLine":90,"endColumn":46,"suggestions":"49560"},{"ruleId":"45357","severity":2,"message":"45358","line":101,"column":43,"nodeType":"45359","messageId":"45360","endLine":101,"endColumn":46,"suggestions":"49561"},{"ruleId":"45357","severity":2,"message":"45358","line":41,"column":21,"nodeType":"45359","messageId":"45360","endLine":41,"endColumn":24,"suggestions":"49562"},{"ruleId":"45357","severity":2,"message":"45358","line":38,"column":19,"nodeType":"45359","messageId":"45360","endLine":38,"endColumn":22,"suggestions":"49563"},{"ruleId":"45357","severity":2,"message":"45358","line":47,"column":19,"nodeType":"45359","messageId":"45360","endLine":47,"endColumn":22,"suggestions":"49564"},{"ruleId":"45357","severity":2,"message":"45358","line":76,"column":34,"nodeType":"45359","messageId":"45360","endLine":76,"endColumn":37,"suggestions":"49565"},{"ruleId":"45357","severity":2,"message":"45358","line":90,"column":10,"nodeType":"45359","messageId":"45360","endLine":90,"endColumn":13,"suggestions":"49566"},{"ruleId":"45357","severity":2,"message":"45358","line":29,"column":9,"nodeType":"45359","messageId":"45360","endLine":29,"endColumn":12,"suggestions":"49567"},{"ruleId":"45357","severity":2,"message":"45358","line":35,"column":18,"nodeType":"45359","messageId":"45360","endLine":35,"endColumn":21,"suggestions":"49568"},{"ruleId":"45357","severity":2,"message":"45358","line":35,"column":57,"nodeType":"45359","messageId":"45360","endLine":35,"endColumn":60,"suggestions":"49569"},{"ruleId":"45357","severity":2,"message":"45358","line":86,"column":43,"nodeType":"45359","messageId":"45360","endLine":86,"endColumn":46,"suggestions":"49570"},{"ruleId":"45357","severity":2,"message":"45358","line":93,"column":15,"nodeType":"45359","messageId":"45360","endLine":93,"endColumn":18,"suggestions":"49571"},{"ruleId":"45357","severity":2,"message":"45358","line":114,"column":43,"nodeType":"45359","messageId":"45360","endLine":114,"endColumn":46,"suggestions":"49572"},{"ruleId":"45357","severity":2,"message":"45358","line":115,"column":48,"nodeType":"45359","messageId":"45360","endLine":115,"endColumn":51,"suggestions":"49573"},{"ruleId":"45357","severity":2,"message":"45358","line":134,"column":43,"nodeType":"45359","messageId":"45360","endLine":134,"endColumn":46,"suggestions":"49574"},{"ruleId":"45357","severity":2,"message":"45358","line":163,"column":43,"nodeType":"45359","messageId":"45360","endLine":163,"endColumn":46,"suggestions":"49575"},{"ruleId":"45357","severity":2,"message":"45358","line":169,"column":28,"nodeType":"45359","messageId":"45360","endLine":169,"endColumn":31,"suggestions":"49576"},{"ruleId":"45357","severity":2,"message":"45358","line":187,"column":43,"nodeType":"45359","messageId":"45360","endLine":187,"endColumn":46,"suggestions":"49577"},{"ruleId":"45357","severity":2,"message":"45358","line":216,"column":43,"nodeType":"45359","messageId":"45360","endLine":216,"endColumn":46,"suggestions":"49578"},{"ruleId":"45357","severity":2,"message":"45358","line":220,"column":42,"nodeType":"45359","messageId":"45360","endLine":220,"endColumn":45,"suggestions":"49579"},{"ruleId":"45357","severity":2,"message":"45358","line":252,"column":43,"nodeType":"45359","messageId":"45360","endLine":252,"endColumn":46,"suggestions":"49580"},{"ruleId":"45357","severity":2,"message":"45358","line":287,"column":43,"nodeType":"45359","messageId":"45360","endLine":287,"endColumn":46,"suggestions":"49581"},{"ruleId":"45357","severity":2,"message":"45358","line":288,"column":40,"nodeType":"45359","messageId":"45360","endLine":288,"endColumn":43,"suggestions":"49582"},{"ruleId":"45357","severity":2,"message":"45358","line":318,"column":43,"nodeType":"45359","messageId":"45360","endLine":318,"endColumn":46,"suggestions":"49583"},{"ruleId":"45357","severity":2,"message":"45358","line":319,"column":48,"nodeType":"45359","messageId":"45360","endLine":319,"endColumn":51,"suggestions":"49584"},{"ruleId":"45357","severity":2,"message":"45358","line":355,"column":43,"nodeType":"45359","messageId":"45360","endLine":355,"endColumn":46,"suggestions":"49585"},{"ruleId":"45357","severity":2,"message":"45358","line":356,"column":48,"nodeType":"45359","messageId":"45360","endLine":356,"endColumn":51,"suggestions":"49586"},{"ruleId":"45357","severity":2,"message":"45358","line":358,"column":13,"nodeType":"45359","messageId":"45360","endLine":358,"endColumn":16,"suggestions":"49587"},{"ruleId":"45357","severity":2,"message":"45358","line":361,"column":13,"nodeType":"45359","messageId":"45360","endLine":361,"endColumn":16,"suggestions":"49588"},{"ruleId":"45357","severity":2,"message":"45358","line":405,"column":61,"nodeType":"45359","messageId":"45360","endLine":405,"endColumn":64,"suggestions":"49589"},{"ruleId":"45357","severity":2,"message":"45358","line":445,"column":43,"nodeType":"45359","messageId":"45360","endLine":445,"endColumn":46,"suggestions":"49590"},{"ruleId":"45357","severity":2,"message":"45358","line":449,"column":36,"nodeType":"45359","messageId":"45360","endLine":449,"endColumn":39,"suggestions":"49591"},{"ruleId":"45357","severity":2,"message":"45358","line":450,"column":36,"nodeType":"45359","messageId":"45360","endLine":450,"endColumn":39,"suggestions":"49592"},{"ruleId":"45357","severity":2,"message":"45358","line":474,"column":43,"nodeType":"45359","messageId":"45360","endLine":474,"endColumn":46,"suggestions":"49593"},{"ruleId":"45357","severity":2,"message":"45358","line":480,"column":15,"nodeType":"45359","messageId":"45360","endLine":480,"endColumn":18,"suggestions":"49594"},{"ruleId":"45357","severity":2,"message":"45358","line":507,"column":43,"nodeType":"45359","messageId":"45360","endLine":507,"endColumn":46,"suggestions":"49595"},{"ruleId":"45357","severity":2,"message":"45358","line":512,"column":30,"nodeType":"45359","messageId":"45360","endLine":512,"endColumn":33,"suggestions":"49596"},{"ruleId":"45357","severity":2,"message":"45358","line":537,"column":43,"nodeType":"45359","messageId":"45360","endLine":537,"endColumn":46,"suggestions":"49597"},{"ruleId":"45357","severity":2,"message":"45358","line":573,"column":43,"nodeType":"45359","messageId":"45360","endLine":573,"endColumn":46,"suggestions":"49598"},{"ruleId":"45357","severity":2,"message":"45358","line":581,"column":43,"nodeType":"45359","messageId":"45360","endLine":581,"endColumn":46,"suggestions":"49599"},{"ruleId":"45357","severity":2,"message":"45358","line":602,"column":43,"nodeType":"45359","messageId":"45360","endLine":602,"endColumn":46,"suggestions":"49600"},{"ruleId":"45357","severity":2,"message":"45358","line":603,"column":48,"nodeType":"45359","messageId":"45360","endLine":603,"endColumn":51,"suggestions":"49601"},{"ruleId":"45357","severity":2,"message":"45358","line":622,"column":43,"nodeType":"45359","messageId":"45360","endLine":622,"endColumn":46,"suggestions":"49602"},{"ruleId":"45357","severity":2,"message":"45358","line":645,"column":43,"nodeType":"45359","messageId":"45360","endLine":645,"endColumn":46,"suggestions":"49603"},{"ruleId":"45357","severity":2,"message":"45358","line":646,"column":50,"nodeType":"45359","messageId":"45360","endLine":646,"endColumn":53,"suggestions":"49604"},{"ruleId":"45357","severity":2,"message":"45358","line":705,"column":39,"nodeType":"45359","messageId":"45360","endLine":705,"endColumn":42,"suggestions":"49605"},{"ruleId":"45357","severity":2,"message":"45358","line":709,"column":39,"nodeType":"45359","messageId":"45360","endLine":709,"endColumn":42,"suggestions":"49606"},{"ruleId":"45357","severity":2,"message":"45358","line":714,"column":15,"nodeType":"45359","messageId":"45360","endLine":714,"endColumn":18,"suggestions":"49607"},{"ruleId":"45357","severity":2,"message":"45358","line":718,"column":38,"nodeType":"45359","messageId":"45360","endLine":718,"endColumn":41,"suggestions":"49608"},{"ruleId":"45357","severity":2,"message":"45358","line":734,"column":51,"nodeType":"45359","messageId":"45360","endLine":734,"endColumn":54,"suggestions":"49609"},{"ruleId":"45357","severity":2,"message":"45358","line":739,"column":55,"nodeType":"45359","messageId":"45360","endLine":739,"endColumn":58,"suggestions":"49610"},{"ruleId":"45357","severity":2,"message":"45358","line":743,"column":61,"nodeType":"45359","messageId":"45360","endLine":743,"endColumn":64,"suggestions":"49611"},{"ruleId":"45357","severity":2,"message":"45358","line":749,"column":67,"nodeType":"45359","messageId":"45360","endLine":749,"endColumn":70,"suggestions":"49612"},{"ruleId":"45357","severity":2,"message":"45358","line":750,"column":73,"nodeType":"45359","messageId":"45360","endLine":750,"endColumn":76,"suggestions":"49613"},{"ruleId":"45357","severity":2,"message":"45358","line":789,"column":13,"nodeType":"45359","messageId":"45360","endLine":789,"endColumn":16,"suggestions":"49614"},{"ruleId":"45357","severity":2,"message":"45358","line":799,"column":64,"nodeType":"45359","messageId":"45360","endLine":799,"endColumn":67,"suggestions":"49615"},{"ruleId":"45357","severity":2,"message":"45358","line":826,"column":43,"nodeType":"45359","messageId":"45360","endLine":826,"endColumn":46,"suggestions":"49616"},{"ruleId":"45357","severity":2,"message":"45358","line":831,"column":30,"nodeType":"45359","messageId":"45360","endLine":831,"endColumn":33,"suggestions":"49617"},{"ruleId":"45357","severity":2,"message":"45358","line":851,"column":43,"nodeType":"45359","messageId":"45360","endLine":851,"endColumn":46,"suggestions":"49618"},{"ruleId":"45357","severity":2,"message":"45358","line":852,"column":52,"nodeType":"45359","messageId":"45360","endLine":852,"endColumn":55,"suggestions":"49619"},{"ruleId":"45357","severity":2,"message":"45358","line":874,"column":43,"nodeType":"45359","messageId":"45360","endLine":874,"endColumn":46,"suggestions":"49620"},{"ruleId":"45357","severity":2,"message":"45358","line":882,"column":43,"nodeType":"45359","messageId":"45360","endLine":882,"endColumn":46,"suggestions":"49621"},{"ruleId":"45357","severity":2,"message":"45358","line":900,"column":55,"nodeType":"45359","messageId":"45360","endLine":900,"endColumn":58,"suggestions":"49622"},{"ruleId":"45357","severity":2,"message":"45358","line":913,"column":43,"nodeType":"45359","messageId":"45360","endLine":913,"endColumn":46,"suggestions":"49623"},{"ruleId":"45357","severity":2,"message":"45358","line":933,"column":51,"nodeType":"45359","messageId":"45360","endLine":933,"endColumn":54,"suggestions":"49624"},{"ruleId":"45357","severity":2,"message":"45358","line":946,"column":51,"nodeType":"45359","messageId":"45360","endLine":946,"endColumn":54,"suggestions":"49625"},{"ruleId":"45357","severity":2,"message":"45358","line":976,"column":43,"nodeType":"45359","messageId":"45360","endLine":976,"endColumn":46,"suggestions":"49626"},{"ruleId":"45357","severity":2,"message":"45358","line":995,"column":51,"nodeType":"45359","messageId":"45360","endLine":995,"endColumn":54,"suggestions":"49627"},{"ruleId":"45357","severity":2,"message":"45358","line":1009,"column":51,"nodeType":"45359","messageId":"45360","endLine":1009,"endColumn":54,"suggestions":"49628"},{"ruleId":"45357","severity":2,"message":"45358","line":1034,"column":43,"nodeType":"45359","messageId":"45360","endLine":1034,"endColumn":46,"suggestions":"49629"},{"ruleId":"45357","severity":2,"message":"45358","line":1117,"column":43,"nodeType":"45359","messageId":"45360","endLine":1117,"endColumn":46,"suggestions":"49630"},{"ruleId":"45357","severity":2,"message":"45358","line":1157,"column":43,"nodeType":"45359","messageId":"45360","endLine":1157,"endColumn":46,"suggestions":"49631"},{"ruleId":"45357","severity":2,"message":"45358","line":1190,"column":43,"nodeType":"45359","messageId":"45360","endLine":1190,"endColumn":46,"suggestions":"49632"},{"ruleId":"45357","severity":2,"message":"45358","line":1217,"column":43,"nodeType":"45359","messageId":"45360","endLine":1217,"endColumn":46,"suggestions":"49633"},{"ruleId":"45357","severity":2,"message":"45358","line":1243,"column":43,"nodeType":"45359","messageId":"45360","endLine":1243,"endColumn":46,"suggestions":"49634"},{"ruleId":"45357","severity":2,"message":"45358","line":70,"column":13,"nodeType":"45359","messageId":"45360","endLine":70,"endColumn":16,"suggestions":"49635"},{"ruleId":"45357","severity":2,"message":"45358","line":267,"column":47,"nodeType":"45359","messageId":"45360","endLine":267,"endColumn":50,"suggestions":"49636"},{"ruleId":"45357","severity":2,"message":"45358","line":58,"column":43,"nodeType":"45359","messageId":"45360","endLine":58,"endColumn":46,"suggestions":"49637"},{"ruleId":"45357","severity":2,"message":"45358","line":59,"column":61,"nodeType":"45359","messageId":"45360","endLine":59,"endColumn":64,"suggestions":"49638"},{"ruleId":"45357","severity":2,"message":"45358","line":20,"column":33,"nodeType":"45359","messageId":"45360","endLine":20,"endColumn":36,"suggestions":"49639"},{"ruleId":"45357","severity":2,"message":"45358","line":20,"column":63,"nodeType":"45359","messageId":"45360","endLine":20,"endColumn":66,"suggestions":"49640"},{"ruleId":"45357","severity":2,"message":"45358","line":21,"column":44,"nodeType":"45359","messageId":"45360","endLine":21,"endColumn":47,"suggestions":"49641"},{"ruleId":"45357","severity":2,"message":"45358","line":25,"column":35,"nodeType":"45359","messageId":"45360","endLine":25,"endColumn":38,"suggestions":"49642"},{"ruleId":"45357","severity":2,"message":"45358","line":37,"column":32,"nodeType":"45359","messageId":"45360","endLine":37,"endColumn":35,"suggestions":"49643"},"@typescript-eslint/no-explicit-any","Unexpected any. Specify a different type.","TSAnyKeyword","unexpectedAny",["49644","49645"],["49646","49647"],["49648","49649"],["49650","49651"],["49652","49653"],["49654","49655"],["49656","49657"],["49658","49659"],["49660","49661"],["49662","49663"],["49664","49665"],["49666","49667"],["49668","49669"],["49670","49671"],["49672","49673"],["49674","49675"],["49676","49677"],["49678","49679"],["49680","49681"],["49682","49683"],["49684","49685"],["49686","49687"],["49688","49689"],["49690","49691"],["49692","49693"],["49694","49695"],["49696","49697"],["49698","49699"],["49700","49701"],["49702","49703"],["49704","49705"],["49706","49707"],["49708","49709"],["49710","49711"],["49712","49713"],["49714","49715"],["49716","49717"],["49718","49719"],["49720","49721"],["49722","49723"],["49724","49725"],["49726","49727"],["49728","49729"],["49730","49731"],["49732","49733"],["49734","49735"],["49736","49737"],["49738","49739"],["49740","49741"],["49742","49743"],["49744","49745"],["49746","49747"],["49748","49749"],["49750","49751"],["49752","49753"],["49754","49755"],["49756","49757"],"no-restricted-imports","'@/lib/localDb' import is restricted from being used by a pattern. The localDb compatibility barrel is restricted — import the owning domain module from `@/lib/db/` instead.","ImportDeclaration","patternWithCustomMessage",["49758","49759"],"no-restricted-syntax","New local `toNumber` definitions are barred — import `toNumber` from `@/shared/utils/numeric` instead (#7879). See that module's JSDoc for the canonical coercion shape and the `toNumberOrNull`/`toNumberArray` variants.","FunctionDeclaration","restrictedSyntax",["49760","49761"],["49762","49763"],["49764","49765"],["49766","49767"],["49768","49769"],["49770","49771"],["49772","49773"],["49774","49775"],["49776","49777"],["49778","49779"],["49780","49781"],["49782","49783"],["49784","49785"],["49786","49787"],["49788","49789"],["49790","49791"],["49792","49793"],["49794","49795"],["49796","49797"],["49798","49799"],["49800","49801"],["49802","49803"],["49804","49805"],["49806","49807"],["49808","49809"],["49810","49811"],["49812","49813"],["49814","49815"],["49816","49817"],["49818","49819"],["49820","49821"],["49822","49823"],["49824","49825"],["49826","49827"],["49828","49829"],["49830","49831"],["49832","49833"],["49834","49835"],["49836","49837"],["49838","49839"],["49840","49841"],["49842","49843"],["49844","49845"],["49846","49847"],["49848","49849"],["49850","49851"],["49852","49853"],["49854","49855"],["49856","49857"],["49858","49859"],["49860","49861"],["49862","49863"],["49864","49865"],["49866","49867"],"VariableDeclarator",["49868","49869"],["49870","49871"],["49872","49873"],["49874","49875"],["49876","49877"],["49878","49879"],["49880","49881"],["49882","49883"],["49884","49885"],["49886","49887"],["49888","49889"],["49890","49891"],["49892","49893"],["49894","49895"],["49896","49897"],["49898","49899"],["49900","49901"],["49902","49903"],["49904","49905"],["49906","49907"],["49908","49909"],["49910","49911"],["49912","49913"],["49914","49915"],["49916","49917"],["49918","49919"],["49920","49921"],["49922","49923"],["49924","49925"],["49926","49927"],["49928","49929"],["49930","49931"],["49932","49933"],["49934","49935"],["49936","49937"],["49938","49939"],["49940","49941"],["49942","49943"],["49944","49945"],["49946","49947"],["49948"],["49949","49950"],["49951"],["49952","49953"],["49954"],["49955","49956"],["49957"],["49958","49959"],["49960","49961"],["49962","49963"],["49964","49965"],["49966","49967"],["49968","49969"],["49970","49971"],["49972","49973"],["49974","49975"],["49976","49977"],["49978","49979"],["49980","49981"],["49982","49983"],["49984","49985"],["49986","49987"],["49988","49989"],["49990","49991"],"react-hooks/exhaustive-deps","React Hook useMemo has a missing dependency: 'versionInfo'. Either include it or remove the dependency array. Mutable values like 'versionInfo.current' aren't valid dependencies because mutating them doesn't re-render the component.","ArrayExpression",["49992"],"React Hook useEffect has a missing dependency: 'fetchData'. Either include it or remove the dependency array.",["49993"],["49994"],"react-hooks/set-state-in-effect","Error: Calling setState synchronously within an effect can trigger cascading renders\n\nEffects are intended to synchronize state between React and external systems such as manually updating the DOM, state management libraries, or other platform APIs. In general, the body of an effect should do one or both of the following:\n* Update external systems with the latest state from React.\n* Subscribe for updates from some external system, calling setState in a callback function when external state changes.\n\nCalling setState synchronously within an effect body causes cascading renders that can hurt performance, and is not recommended. (https://react.dev/learn/you-might-not-need-an-effect).\n\n/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/batch/components/BatchConceptCard.tsx:23:9\n 21 | if (stored !== null) {\n 22 | // eslint-disable-next-line react-hooks/set-state-in-effect -- localStorage hydration, runs once\n> 23 | setCollapsed(stored === \"true\");\n | ^^^^^^^^^^^^ Avoid calling setState() directly within an effect\n 24 | }\n 25 | } catch {\n 26 | // localStorage unavailable (SSR/private mode) — keep default",["49995"],"Error: Calling setState synchronously within an effect can trigger cascading renders\n\nEffects are intended to synchronize state between React and external systems such as manually updating the DOM, state management libraries, or other platform APIs. In general, the body of an effect should do one or both of the following:\n* Update external systems with the latest state from React.\n* Subscribe for updates from some external system, calling setState in a callback function when external state changes.\n\nCalling setState synchronously within an effect body causes cascading renders that can hurt performance, and is not recommended. (https://react.dev/learn/you-might-not-need-an-effect).\n\n/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/batch/components/FilesConceptCard.tsx:32:9\n 30 | if (stored !== null) {\n 31 | // eslint-disable-next-line react-hooks/set-state-in-effect -- localStorage hydration, runs once\n> 32 | setCollapsed(stored === \"true\");\n | ^^^^^^^^^^^^ Avoid calling setState() directly within an effect\n 33 | }\n 34 | } catch {\n 35 | // localStorage unavailable — keep default",["49996"],"React Hook useEffect has missing dependencies: 'onResult' and 't'. Either include them or remove the dependency array. If 'onResult' changes too often, find the parent component that defines it and wrap that definition in useCallback.",["49997"],["49998"],"Türkçe-güvenli arama için matchesSearch() kullan (@/shared/utils/turkishText). Ham toLowerCase().includes() İ/ı karakterlerini bozar.","CallExpression",["49999"],["50000"],["50001"],["50002"],["50003"],"@next/next/no-img-element","Using `` could result in slower LCP and higher bandwidth. Consider using `` from `next/image` or a custom image loader to automatically optimize images. This may incur additional usage or cost from your provider. See: https://nextjs.org/docs/messages/no-img-element","JSXOpeningElement",["50004"],"React Hook useEffect has a missing dependency: 'LOCAL_PROVIDERS'. Either include it or remove the dependency array.",["50005"],["50006"],"React Hook useEffect has a missing dependency: 'loadSavedMappings'. Either include it or remove the dependency array.",["50007"],["50008"],"Error: Calling setState synchronously within an effect can trigger cascading renders\n\nEffects are intended to synchronize state between React and external systems such as manually updating the DOM, state management libraries, or other platform APIs. In general, the body of an effect should do one or both of the following:\n* Update external systems with the latest state from React.\n* Subscribe for updates from some external system, calling setState in a callback function when external state changes.\n\nCalling setState synchronously within an effect body causes cascading renders that can hurt performance, and is not recommended. (https://react.dev/learn/you-might-not-need-an-effect).\n\n/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/cli-code/components/ToolDetailClient.tsx:97:7\n 95 | /* eslint-disable react-hooks/set-state-in-effect */\n 96 | Promise.all([\n> 97 | fetchConnections(),\n | ^^^^^^^^^^^^^^^^ Avoid calling setState() directly within an effect\n 98 | fetchApiKeys(),\n 99 | fetchCloudSettings(),\n 100 | fetchDynamicModels(),",["50009"],["50010"],"React Hook useEffect has missing dependencies: 'plans' and 'selectedConn'. Either include them or remove the dependency array.",["50011"],["50012"],"React Hook useEffect has missing dependencies: 'editPoolExclusive' and 'plans'. Either include them or remove the dependency array. If 'setExclusive' needs the current value of 'editPoolExclusive', you can also switch to useReducer instead of useState and read 'editPoolExclusive' in the reducer.",["50013"],["50014"],"React Hook useEffect has a missing dependency: 'groupId'. Either include it or remove the dependency array.",["50015"],["50016"],"React Hook useEffect has a missing dependency: 'pools'. Either include it or remove the dependency array.",["50017"],["50018"],"React Hook useEffect has a complex expression in the dependency array. Extract it to a separate variable so it can be statically checked.",["50019"],"React Hook useEffect has missing dependencies: 'configState' and 'setConfigState'. Either include them or remove the dependency array. If 'setConfigState' changes too often, find the parent component that defines it and wrap that definition in useCallback.",["50020"],["50021"],"React Hook useEffect has missing dependencies: 'configState', 'reasoningSpec', and 'setConfigState'. Either include them or remove the dependency array. If 'setConfigState' changes too often, find the parent component that defines it and wrap that definition in useCallback.",["50022"],["50023"],["50024"],"The 'clearResults' function makes the dependencies of useCallback Hook (at line 476) change on every render. To fix this, wrap the definition of 'clearResults' in its own useCallback() Hook.",["50025"],["50026"],["50027"],"React Hook useEffect has a missing dependency: 'getUpstreamHeadersRecord'. Either include it or remove the dependency array. If 'getUpstreamHeadersRecord' changes too often, find the parent component that defines it and wrap that definition in useCallback.",["50028"],["50029"],"React Hook useEffect has a missing dependency: 'setProviderDisplayMode'. Either include it or remove the dependency array. If 'setProviderDisplayMode' changes too often, find the parent component that defines it and wrap that definition in useCallback.",["50030"],["50031"],"React Hook useEffect has missing dependencies: 'setActiveCategory', 'setActiveServiceKind', 'setModelSearchQuery', 'setSearchQuery', and 'setShowFreeOnly'. Either include them or remove the dependency array. If 'setSearchQuery' changes too often, find the parent component that defines it and wrap that definition in useCallback.",["50032"],["50033"],["50034"],"React Hook useCallback has a missing dependency: 'L'. Either include it or remove the dependency array.",["50035"],["50036"],"React Hook useEffect has a missing dependency: 'customThemeColor'. Either include it or remove the dependency array.",["50037"],["50038"],"React Hook useEffect has missing dependencies: 'notify' and 't'. Either include them or remove the dependency array.",["50039"],["50040"],"@next/next/no-html-link-for-pages","Do not use an `` element to navigate to `/api/settings/mitm/`. Use `` from `next/link` instead. See: https://nextjs.org/docs/messages/no-html-link-for-pages","React Hook useCallback has a missing dependency: 'load'. Either include it or remove the dependency array.",["50041"],"React Hook useEffect has a missing dependency: 't'. Either include it or remove the dependency array.",["50042"],"Error: Calling setState synchronously within an effect can trigger cascading renders\n\nEffects are intended to synchronize state between React and external systems such as manually updating the DOM, state management libraries, or other platform APIs. In general, the body of an effect should do one or both of the following:\n* Update external systems with the latest state from React.\n* Subscribe for updates from some external system, calling setState in a callback function when external state changes.\n\nCalling setState synchronously within an effect body causes cascading renders that can hurt performance, and is not recommended. (https://react.dev/learn/you-might-not-need-an-effect).\n\n/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/proxy/FreePoolTab.tsx:52:16\n 50 | const saved = loadDisabledSources();\n 51 | // eslint-disable-next-line react-hooks/set-state-in-effect -- localStorage hydration, runs once\n> 52 | if (saved) setDisabledSources(saved);\n | ^^^^^^^^^^^^^^^^^^ Avoid calling setState() directly within an effect\n 53 | }, []);\n 54 | // Wrapper setters that also reset page to 1\n 55 | const setFilterProtocol = (v: string) => {",["50043"],"Error: Calling setState synchronously within an effect can trigger cascading renders\n\nEffects are intended to synchronize state between React and external systems such as manually updating the DOM, state management libraries, or other platform APIs. In general, the body of an effect should do one or both of the following:\n* Update external systems with the latest state from React.\n* Subscribe for updates from some external system, calling setState in a callback function when external state changes.\n\nCalling setState synchronously within an effect body causes cascading renders that can hurt performance, and is not recommended. (https://react.dev/learn/you-might-not-need-an-effect).\n\n/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/src/app/(dashboard)/dashboard/settings/components/proxy/FreePoolTab.tsx:101:5\n 99 | useEffect(() => {\n 100 | // eslint-disable-next-line react-hooks/set-state-in-effect -- async data fetch on filter change\n> 101 | loadData();\n | ^^^^^^^^ Avoid calling setState() directly within an effect\n 102 | }, [loadData]);\n 103 |\n 104 | const handleSync = async () => {",["50044"],"React Hook useEffect has missing dependencies: 'forceOpen' and 'onOpenChange'. Either include them or remove the dependency array. If 'onOpenChange' changes too often, find the parent component that defines it and wrap that definition in useCallback.",["50045"],["50046"],"React Hook useEffect has missing dependencies: 'defaultOpen', 'forceOpen', and 'onOpenChange'. Either include them or remove the dependency array. If 'onOpenChange' changes too often, find the parent component that defines it and wrap that definition in useCallback.",["50047"],["50048"],"React Hook useEffect has a missing dependency: 'onFirstOpen'. Either include it or remove the dependency array. If 'onFirstOpen' changes too often, find the parent component that defines it and wrap that definition in useCallback.",["50049"],["50050"],["50051"],["50052"],"React Hook useMemo has missing dependencies: 'errorSet' and 'lastSet'. Either include them or remove the dependency array.",["50053"],["50054"],["50055"],"'@omniroute/open-sse/executors/base' import is restricted from being used by a pattern. Executor implementations must stay behind an open-sse handler or service boundary.","'@omniroute/open-sse/executors/codex.ts' import is restricted from being used by a pattern. Executor implementations must stay behind an open-sse handler or service boundary.","'@omniroute/open-sse/executors/zai-web.ts' import is restricted from being used by a pattern. Executor implementations must stay behind an open-sse handler or service boundary.","'../../../../lib/localDb' import is restricted from being used by a pattern. The localDb compatibility barrel is restricted — import the owning domain module from `@/lib/db/` instead.","'@omniroute/open-sse/executors/cliproxyapi.ts' import is restricted from being used by a pattern. Executor implementations must stay behind an open-sse handler or service boundary.","'@omniroute/open-sse/executors/codex/tools.ts' import is restricted from being used by a pattern. Executor implementations must stay behind an open-sse handler or service boundary.","'@omniroute/open-sse/executors/index.ts' import is restricted from being used by a pattern. Executor implementations must stay behind an open-sse handler or service boundary.",["50056"],"React Hook useCallback has a missing dependency: 'channels'. Either include it or remove the dependency array.",["50057"],"React Hook useCallback has a complex expression in the dependency array. Extract it to a separate variable so it can be statically checked.","'./localDb.ts' import is restricted from being used by a pattern. The localDb compatibility barrel is restricted — import the owning domain module from `@/lib/db/` instead.","'../localDb' import is restricted from being used by a pattern. The localDb compatibility barrel is restricted — import the owning domain module from `@/lib/db/` instead.","ExportNamedDeclaration",["50058"],"React Hook useEffect has a missing dependency: 'router'. Either include it or remove the dependency array.",["50059"],["50060"],"React Hook useEffect has a missing dependency: 'fetchProviderModels'. Either include it or remove the dependency array.",["50061"],["50062"],["50063"],["50064"],"React Hook useEffect has missing dependencies: 'resetFields' and 't'. Either include them or remove the dependency array.",["50065"],"React Hook useCallback has a missing dependency: 'columnSortMap'. Either include it or remove the dependency array.",["50066"],["50067"],"The 'openDetail' function makes the dependencies of useImperativeHandle Hook (at line 633) change on every render. To fix this, wrap the definition of 'openDetail' in its own useCallback() Hook.",["50068"],"React Hook useEffect has a missing dependency: 'openDetail'. Either include it or remove the dependency array.",["50069"],"React Hook useCallback has missing dependencies: 'closeDetail' and 'openDetail'. Either include them or remove the dependency array.",["50070"],["50071"],"React Hook useEffect has a missing dependency: 'visibleSections'. Either include it or remove the dependency array.",["50072"],["50073"],["50074","50075"],["50076","50077"],["50078","50079"],["50080","50081"],["50082","50083"],["50084","50085"],["50086","50087"],["50088","50089"],["50090","50091"],["50092","50093"],["50094","50095"],["50096","50097"],["50098","50099"],["50100","50101"],["50102","50103"],["50104","50105"],["50106","50107"],["50108","50109"],["50110","50111"],["50112","50113"],["50114","50115"],["50116","50117"],["50118","50119"],["50120","50121"],["50122","50123"],["50124","50125"],["50126","50127"],["50128","50129"],["50130","50131"],["50132","50133"],["50134","50135"],["50136","50137"],["50138","50139"],["50140","50141"],["50142","50143"],["50144","50145"],["50146","50147"],["50148","50149"],["50150","50151"],["50152","50153"],["50154","50155"],["50156","50157"],["50158","50159"],["50160","50161"],["50162","50163"],["50164","50165"],["50166","50167"],["50168","50169"],["50170","50171"],["50172","50173"],["50174","50175"],["50176","50177"],["50178","50179"],["50180","50181"],["50182","50183"],["50184","50185"],["50186","50187"],["50188","50189"],["50190","50191"],["50192","50193"],["50194","50195"],["50196","50197"],["50198","50199"],["50200","50201"],["50202","50203"],["50204","50205"],["50206","50207"],["50208","50209"],["50210","50211"],["50212","50213"],["50214","50215"],["50216","50217"],["50218","50219"],["50220","50221"],["50222","50223"],["50224","50225"],["50226","50227"],["50228","50229"],["50230","50231"],["50232","50233"],["50234","50235"],["50236","50237"],["50238","50239"],["50240","50241"],["50242","50243"],["50244","50245"],["50246","50247"],["50248","50249"],["50250","50251"],["50252","50253"],["50254","50255"],["50256","50257"],["50258","50259"],["50260","50261"],["50262","50263"],["50264","50265"],["50266","50267"],["50268","50269"],["50270","50271"],["50272","50273"],["50274","50275"],["50276","50277"],["50278","50279"],["50280","50281"],["50282","50283"],["50284","50285"],["50286","50287"],["50288","50289"],["50290","50291"],["50292","50293"],["50294","50295"],["50296","50297"],["50298","50299"],["50300","50301"],["50302","50303"],["50304","50305"],["50306","50307"],["50308","50309"],["50310","50311"],["50312","50313"],["50314","50315"],["50316","50317"],["50318","50319"],["50320","50321"],["50322","50323"],["50324","50325"],["50326","50327"],["50328","50329"],["50330","50331"],["50332","50333"],["50334","50335"],["50336","50337"],["50338","50339"],["50340","50341"],["50342","50343"],["50344","50345"],["50346","50347"],["50348","50349"],["50350","50351"],["50352","50353"],["50354","50355"],["50356","50357"],["50358","50359"],["50360","50361"],["50362","50363"],["50364","50365"],["50366","50367"],["50368","50369"],["50370","50371"],["50372","50373"],["50374","50375"],["50376","50377"],["50378","50379"],["50380","50381"],["50382","50383"],["50384","50385"],["50386","50387"],["50388","50389"],["50390","50391"],["50392","50393"],["50394","50395"],["50396","50397"],["50398","50399"],["50400","50401"],["50402","50403"],["50404","50405"],["50406","50407"],["50408","50409"],["50410","50411"],["50412","50413"],["50414","50415"],["50416","50417"],["50418","50419"],["50420","50421"],["50422","50423"],["50424","50425"],["50426","50427"],["50428","50429"],["50430","50431"],["50432","50433"],["50434","50435"],["50436","50437"],["50438","50439"],["50440","50441"],["50442","50443"],["50444","50445"],["50446","50447"],["50448","50449"],["50450","50451"],["50452","50453"],["50454","50455"],["50456","50457"],["50458","50459"],["50460","50461"],["50462","50463"],["50464","50465"],["50466","50467"],["50468","50469"],["50470","50471"],["50472","50473"],["50474","50475"],["50476","50477"],["50478","50479"],["50480","50481"],["50482","50483"],["50484","50485"],["50486","50487"],["50488","50489"],["50490","50491"],["50492","50493"],["50494","50495"],["50496","50497"],["50498","50499"],["50500","50501"],["50502","50503"],["50504","50505"],["50506","50507"],["50508","50509"],["50510","50511"],["50512","50513"],["50514","50515"],["50516","50517"],["50518","50519"],["50520","50521"],["50522","50523"],["50524","50525"],["50526","50527"],["50528","50529"],["50530","50531"],["50532","50533"],["50534","50535"],["50536","50537"],["50538","50539"],["50540","50541"],["50542","50543"],["50544","50545"],["50546","50547"],["50548","50549"],["50550","50551"],["50552","50553"],["50554","50555"],["50556","50557"],["50558","50559"],["50560","50561"],["50562","50563"],["50564","50565"],["50566","50567"],["50568","50569"],["50570","50571"],["50572","50573"],["50574","50575"],["50576","50577"],["50578","50579"],["50580","50581"],["50582","50583"],["50584","50585"],["50586","50587"],["50588","50589"],["50590","50591"],["50592","50593"],["50594","50595"],["50596","50597"],["50598","50599"],["50600","50601"],["50602","50603"],["50604","50605"],["50606","50607"],["50608","50609"],["50610","50611"],["50612","50613"],["50614","50615"],["50616","50617"],["50618","50619"],["50620","50621"],["50622","50623"],["50624","50625"],["50626","50627"],["50628","50629"],["50630","50631"],["50632","50633"],["50634","50635"],["50636","50637"],["50638","50639"],["50640","50641"],["50642","50643"],["50644","50645"],["50646","50647"],["50648","50649"],["50650","50651"],["50652","50653"],["50654","50655"],["50656","50657"],["50658","50659"],["50660","50661"],["50662","50663"],["50664","50665"],["50666","50667"],["50668","50669"],["50670","50671"],["50672","50673"],["50674","50675"],["50676","50677"],["50678","50679"],["50680","50681"],["50682","50683"],["50684","50685"],["50686","50687"],["50688","50689"],["50690","50691"],["50692","50693"],["50694","50695"],["50696","50697"],["50698","50699"],["50700","50701"],["50702","50703"],["50704","50705"],["50706","50707"],["50708","50709"],["50710","50711"],["50712","50713"],["50714","50715"],["50716","50717"],["50718","50719"],["50720","50721"],["50722","50723"],["50724","50725"],["50726","50727"],["50728","50729"],["50730","50731"],["50732","50733"],["50734","50735"],["50736","50737"],["50738","50739"],["50740"],["50741","50742"],["50743","50744"],["50745","50746"],["50747","50748"],["50749","50750"],["50751","50752"],["50753","50754"],["50755","50756"],["50757","50758"],["50759","50760"],["50761","50762"],["50763","50764"],["50765","50766"],["50767","50768"],["50769","50770"],["50771","50772"],["50773","50774"],["50775","50776"],["50777","50778"],["50779","50780"],["50781","50782"],["50783","50784"],["50785","50786"],["50787","50788"],["50789","50790"],["50791","50792"],["50793","50794"],["50795","50796"],["50797","50798"],["50799","50800"],["50801","50802"],["50803","50804"],["50805","50806"],["50807"],["50808","50809"],["50810","50811"],["50812","50813"],["50814","50815"],["50816","50817"],["50818","50819"],["50820","50821"],["50822","50823"],["50824","50825"],["50826","50827"],["50828","50829"],["50830","50831"],["50832","50833"],["50834","50835"],["50836","50837"],["50838","50839"],["50840","50841"],["50842","50843"],["50844","50845"],["50846","50847"],["50848","50849"],["50850","50851"],["50852","50853"],["50854","50855"],["50856","50857"],["50858","50859"],["50860","50861"],["50862","50863"],["50864","50865"],["50866","50867"],["50868","50869"],["50870","50871"],["50872","50873"],["50874","50875"],["50876","50877"],["50878","50879"],["50880","50881"],["50882","50883"],["50884","50885"],["50886","50887"],["50888","50889"],["50890","50891"],["50892","50893"],["50894","50895"],["50896","50897"],["50898","50899"],["50900","50901"],["50902","50903"],["50904","50905"],["50906","50907"],["50908","50909"],["50910","50911"],["50912","50913"],["50914","50915"],["50916","50917"],["50918","50919"],["50920","50921"],["50922","50923"],["50924","50925"],["50926","50927"],["50928","50929"],["50930","50931"],["50932","50933"],["50934","50935"],["50936","50937"],["50938","50939"],["50940","50941"],["50942","50943"],["50944","50945"],["50946","50947"],["50948","50949"],["50950","50951"],["50952","50953"],["50954","50955"],["50956","50957"],["50958","50959"],["50960","50961"],["50962","50963"],["50964","50965"],["50966","50967"],["50968","50969"],["50970","50971"],["50972","50973"],["50974","50975"],["50976","50977"],["50978","50979"],["50980","50981"],["50982","50983"],["50984","50985"],["50986","50987"],["50988","50989"],["50990","50991"],["50992","50993"],["50994","50995"],["50996","50997"],["50998","50999"],["51000","51001"],["51002","51003"],["51004","51005"],["51006","51007"],["51008","51009"],["51010","51011"],["51012","51013"],["51014","51015"],["51016","51017"],["51018","51019"],["51020","51021"],["51022","51023"],["51024","51025"],["51026","51027"],["51028","51029"],["51030","51031"],["51032","51033"],["51034","51035"],["51036","51037"],["51038","51039"],["51040","51041"],["51042","51043"],["51044","51045"],["51046","51047"],["51048","51049"],["51050","51051"],["51052","51053"],["51054","51055"],["51056","51057"],["51058","51059"],["51060","51061"],["51062","51063"],["51064","51065"],["51066","51067"],["51068","51069"],["51070","51071"],["51072","51073"],["51074","51075"],["51076","51077"],["51078","51079"],["51080","51081"],["51082","51083"],["51084","51085"],["51086","51087"],["51088","51089"],["51090","51091"],["51092","51093"],["51094","51095"],["51096","51097"],["51098","51099"],["51100","51101"],["51102","51103"],["51104","51105"],["51106","51107"],["51108","51109"],["51110","51111"],["51112","51113"],["51114","51115"],["51116","51117"],["51118","51119"],["51120","51121"],["51122","51123"],["51124","51125"],["51126","51127"],["51128","51129"],["51130","51131"],["51132","51133"],["51134","51135"],["51136","51137"],["51138","51139"],["51140","51141"],["51142","51143"],["51144","51145"],["51146","51147"],["51148","51149"],["51150","51151"],["51152","51153"],["51154","51155"],["51156","51157"],["51158","51159"],["51160","51161"],["51162","51163"],["51164","51165"],["51166","51167"],["51168","51169"],["51170","51171"],["51172","51173"],["51174","51175"],["51176","51177"],["51178","51179"],["51180","51181"],["51182","51183"],["51184","51185"],["51186","51187"],["51188","51189"],["51190","51191"],["51192","51193"],["51194","51195"],["51196","51197"],["51198","51199"],["51200","51201"],["51202","51203"],["51204","51205"],["51206","51207"],["51208","51209"],["51210","51211"],["51212","51213"],["51214","51215"],["51216","51217"],["51218","51219"],["51220","51221"],["51222","51223"],["51224","51225"],["51226","51227"],["51228","51229"],["51230","51231"],["51232","51233"],["51234","51235"],["51236","51237"],["51238","51239"],["51240","51241"],["51242","51243"],["51244","51245"],["51246","51247"],["51248","51249"],["51250","51251"],["51252","51253"],["51254","51255"],["51256","51257"],["51258","51259"],["51260","51261"],["51262","51263"],["51264","51265"],["51266","51267"],["51268","51269"],["51270","51271"],["51272","51273"],["51274","51275"],["51276","51277"],["51278","51279"],["51280","51281"],["51282","51283"],["51284","51285"],["51286","51287"],["51288","51289"],["51290","51291"],["51292","51293"],["51294","51295"],["51296","51297"],["51298","51299"],["51300","51301"],["51302","51303"],["51304","51305"],["51306","51307"],["51308","51309"],["51310","51311"],["51312","51313"],["51314","51315"],["51316","51317"],["51318","51319"],["51320","51321"],["51322","51323"],["51324","51325"],["51326","51327"],["51328","51329"],["51330","51331"],["51332","51333"],["51334","51335"],["51336","51337"],["51338","51339"],["51340","51341"],["51342","51343"],["51344","51345"],["51346","51347"],["51348","51349"],["51350","51351"],["51352","51353"],["51354","51355"],["51356","51357"],["51358","51359"],["51360","51361"],["51362","51363"],["51364","51365"],["51366","51367"],["51368","51369"],["51370","51371"],["51372","51373"],["51374","51375"],["51376","51377"],["51378","51379"],["51380","51381"],["51382","51383"],["51384","51385"],["51386","51387"],["51388","51389"],["51390","51391"],["51392","51393"],["51394","51395"],["51396","51397"],["51398","51399"],["51400","51401"],["51402","51403"],["51404","51405"],["51406","51407"],["51408","51409"],["51410","51411"],["51412","51413"],["51414","51415"],["51416","51417"],["51418","51419"],["51420","51421"],["51422","51423"],["51424","51425"],["51426","51427"],["51428","51429"],["51430","51431"],["51432","51433"],["51434","51435"],["51436","51437"],["51438","51439"],["51440","51441"],["51442","51443"],["51444","51445"],["51446","51447"],["51448","51449"],["51450","51451"],["51452","51453"],["51454","51455"],["51456","51457"],["51458","51459"],["51460","51461"],["51462","51463"],["51464","51465"],["51466","51467"],["51468","51469"],["51470","51471"],["51472","51473"],["51474","51475"],["51476","51477"],["51478","51479"],["51480","51481"],["51482","51483"],["51484","51485"],["51486","51487"],["51488","51489"],["51490","51491"],["51492","51493"],["51494","51495"],["51496","51497"],["51498","51499"],["51500","51501"],["51502","51503"],["51504","51505"],["51506","51507"],["51508","51509"],["51510","51511"],["51512","51513"],["51514","51515"],["51516","51517"],["51518","51519"],["51520","51521"],["51522","51523"],["51524","51525"],["51526","51527"],["51528","51529"],["51530","51531"],["51532","51533"],["51534","51535"],["51536","51537"],["51538","51539"],["51540","51541"],["51542","51543"],["51544","51545"],["51546","51547"],["51548","51549"],["51550","51551"],["51552","51553"],["51554","51555"],["51556","51557"],["51558","51559"],["51560","51561"],["51562","51563"],["51564","51565"],["51566","51567"],["51568","51569"],["51570","51571"],["51572","51573"],["51574","51575"],["51576","51577"],["51578","51579"],["51580","51581"],["51582","51583"],["51584","51585"],["51586","51587"],["51588","51589"],["51590","51591"],["51592","51593"],["51594","51595"],["51596","51597"],["51598","51599"],["51600","51601"],["51602","51603"],["51604","51605"],["51606","51607"],["51608","51609"],["51610","51611"],["51612","51613"],["51614","51615"],["51616","51617"],["51618","51619"],["51620","51621"],["51622","51623"],["51624","51625"],["51626","51627"],["51628","51629"],["51630","51631"],["51632","51633"],["51634","51635"],["51636","51637"],["51638","51639"],["51640","51641"],["51642","51643"],["51644","51645"],["51646","51647"],["51648","51649"],["51650","51651"],["51652","51653"],["51654","51655"],["51656","51657"],["51658","51659"],["51660","51661"],["51662","51663"],["51664","51665"],["51666","51667"],["51668","51669"],["51670","51671"],["51672","51673"],["51674","51675"],["51676","51677"],["51678","51679"],["51680","51681"],["51682","51683"],["51684","51685"],["51686","51687"],["51688","51689"],["51690","51691"],["51692","51693"],["51694","51695"],["51696","51697"],["51698","51699"],["51700","51701"],["51702","51703"],["51704","51705"],["51706","51707"],["51708","51709"],["51710","51711"],["51712","51713"],["51714","51715"],["51716","51717"],["51718","51719"],["51720","51721"],["51722","51723"],["51724","51725"],["51726","51727"],["51728","51729"],["51730","51731"],["51732","51733"],["51734","51735"],["51736","51737"],["51738","51739"],["51740","51741"],["51742","51743"],["51744","51745"],["51746","51747"],["51748","51749"],["51750","51751"],["51752","51753"],["51754","51755"],["51756","51757"],["51758","51759"],["51760","51761"],["51762","51763"],["51764","51765"],["51766","51767"],["51768","51769"],["51770","51771"],["51772","51773"],["51774","51775"],["51776","51777"],["51778","51779"],["51780","51781"],["51782","51783"],["51784","51785"],["51786","51787"],["51788","51789"],["51790","51791"],["51792","51793"],["51794","51795"],["51796","51797"],["51798","51799"],["51800","51801"],["51802","51803"],["51804","51805"],["51806","51807"],["51808","51809"],["51810","51811"],["51812","51813"],["51814","51815"],["51816","51817"],["51818","51819"],["51820","51821"],["51822","51823"],["51824","51825"],["51826","51827"],["51828","51829"],["51830","51831"],["51832","51833"],["51834","51835"],["51836","51837"],["51838","51839"],["51840","51841"],["51842","51843"],["51844","51845"],["51846","51847"],["51848","51849"],["51850","51851"],["51852","51853"],["51854","51855"],["51856","51857"],["51858","51859"],["51860","51861"],["51862","51863"],["51864","51865"],["51866","51867"],["51868","51869"],["51870","51871"],["51872","51873"],["51874","51875"],["51876","51877"],["51878","51879"],["51880","51881"],["51882","51883"],["51884","51885"],["51886","51887"],["51888","51889"],["51890","51891"],["51892","51893"],["51894","51895"],["51896","51897"],["51898","51899"],["51900","51901"],["51902","51903"],["51904","51905"],["51906","51907"],["51908","51909"],["51910","51911"],["51912","51913"],["51914","51915"],["51916","51917"],["51918","51919"],["51920","51921"],["51922","51923"],["51924","51925"],["51926","51927"],["51928","51929"],["51930","51931"],["51932","51933"],["51934","51935"],["51936","51937"],["51938","51939"],["51940","51941"],["51942","51943"],["51944","51945"],["51946","51947"],["51948","51949"],["51950","51951"],["51952","51953"],["51954","51955"],["51956","51957"],["51958","51959"],["51960","51961"],["51962","51963"],["51964","51965"],["51966","51967"],["51968","51969"],["51970","51971"],["51972","51973"],["51974","51975"],["51976","51977"],["51978","51979"],["51980","51981"],["51982","51983"],["51984","51985"],["51986","51987"],["51988","51989"],["51990","51991"],["51992","51993"],["51994","51995"],["51996","51997"],["51998","51999"],["52000","52001"],["52002","52003"],["52004","52005"],["52006","52007"],["52008","52009"],["52010","52011"],["52012","52013"],["52014","52015"],["52016","52017"],["52018","52019"],["52020","52021"],["52022","52023"],["52024","52025"],["52026","52027"],["52028","52029"],["52030","52031"],["52032","52033"],["52034","52035"],["52036","52037"],["52038","52039"],["52040","52041"],["52042"],["52043","52044"],["52045"],["52046","52047"],["52048","52049"],["52050","52051"],["52052","52053"],["52054","52055"],["52056","52057"],["52058","52059"],["52060","52061"],["52062","52063"],["52064","52065"],["52066","52067"],["52068","52069"],["52070","52071"],["52072","52073"],["52074","52075"],["52076","52077"],["52078","52079"],["52080","52081"],["52082","52083"],["52084","52085"],["52086","52087"],["52088","52089"],["52090","52091"],["52092","52093"],["52094","52095"],["52096","52097"],["52098","52099"],["52100","52101"],["52102","52103"],["52104","52105"],["52106","52107"],["52108","52109"],["52110","52111"],["52112","52113"],["52114","52115"],["52116","52117"],["52118","52119"],["52120","52121"],["52122","52123"],["52124","52125"],["52126","52127"],["52128","52129"],["52130","52131"],["52132","52133"],["52134","52135"],["52136","52137"],["52138","52139"],["52140","52141"],["52142","52143"],["52144","52145"],["52146","52147"],["52148","52149"],["52150","52151"],["52152","52153"],["52154","52155"],["52156","52157"],["52158","52159"],["52160","52161"],["52162","52163"],["52164","52165"],["52166","52167"],["52168","52169"],["52170","52171"],["52172","52173"],["52174","52175"],["52176","52177"],["52178","52179"],["52180","52181"],["52182","52183"],["52184","52185"],["52186","52187"],["52188","52189"],["52190","52191"],["52192","52193"],["52194","52195"],["52196","52197"],["52198","52199"],["52200","52201"],["52202","52203"],["52204","52205"],["52206","52207"],["52208","52209"],["52210","52211"],["52212","52213"],["52214","52215"],["52216","52217"],["52218","52219"],["52220","52221"],["52222","52223"],["52224","52225"],["52226","52227"],["52228","52229"],["52230","52231"],["52232","52233"],["52234","52235"],["52236","52237"],["52238","52239"],["52240","52241"],["52242","52243"],["52244","52245"],["52246","52247"],["52248","52249"],["52250","52251"],["52252","52253"],["52254","52255"],["52256","52257"],["52258","52259"],["52260","52261"],["52262","52263"],["52264","52265"],["52266","52267"],["52268","52269"],["52270","52271"],["52272","52273"],["52274","52275"],["52276","52277"],["52278","52279"],["52280","52281"],["52282","52283"],["52284","52285"],["52286","52287"],["52288","52289"],["52290","52291"],["52292","52293"],["52294","52295"],["52296","52297"],["52298","52299"],["52300","52301"],["52302","52303"],["52304","52305"],["52306","52307"],["52308","52309"],["52310","52311"],["52312","52313"],["52314","52315"],["52316","52317"],["52318","52319"],["52320","52321"],["52322","52323"],["52324","52325"],["52326","52327"],["52328","52329"],["52330","52331"],["52332","52333"],["52334","52335"],["52336","52337"],["52338","52339"],["52340","52341"],["52342","52343"],["52344","52345"],["52346","52347"],["52348","52349"],["52350","52351"],["52352","52353"],["52354","52355"],["52356","52357"],["52358","52359"],["52360","52361"],["52362","52363"],["52364","52365"],["52366","52367"],["52368","52369"],["52370","52371"],["52372","52373"],["52374","52375"],["52376","52377"],["52378","52379"],["52380","52381"],["52382","52383"],["52384","52385"],["52386","52387"],["52388","52389"],["52390","52391"],["52392","52393"],["52394","52395"],["52396","52397"],["52398","52399"],["52400","52401"],["52402","52403"],["52404","52405"],["52406","52407"],["52408","52409"],["52410","52411"],["52412","52413"],["52414","52415"],["52416","52417"],["52418","52419"],["52420","52421"],["52422","52423"],["52424","52425"],["52426","52427"],["52428","52429"],["52430","52431"],["52432","52433"],["52434","52435"],["52436","52437"],["52438","52439"],["52440","52441"],["52442","52443"],["52444","52445"],["52446","52447"],["52448","52449"],["52450","52451"],["52452","52453"],["52454","52455"],["52456","52457"],["52458","52459"],["52460","52461"],["52462","52463"],["52464","52465"],["52466","52467"],["52468","52469"],["52470","52471"],["52472","52473"],["52474","52475"],["52476","52477"],["52478","52479"],["52480","52481"],["52482","52483"],["52484","52485"],["52486","52487"],["52488","52489"],["52490","52491"],["52492","52493"],["52494","52495"],["52496","52497"],["52498","52499"],["52500","52501"],["52502","52503"],["52504","52505"],["52506","52507"],["52508","52509"],["52510","52511"],["52512","52513"],["52514","52515"],["52516","52517"],["52518","52519"],["52520","52521"],["52522","52523"],["52524","52525"],["52526","52527"],["52528","52529"],["52530","52531"],["52532","52533"],["52534","52535"],["52536","52537"],["52538","52539"],["52540","52541"],["52542","52543"],["52544","52545"],["52546","52547"],["52548","52549"],["52550","52551"],["52552","52553"],["52554","52555"],["52556","52557"],["52558","52559"],["52560","52561"],["52562","52563"],["52564","52565"],["52566","52567"],["52568","52569"],["52570","52571"],["52572","52573"],["52574","52575"],["52576","52577"],["52578","52579"],["52580","52581"],["52582","52583"],["52584","52585"],["52586","52587"],["52588","52589"],["52590","52591"],["52592","52593"],["52594","52595"],["52596","52597"],["52598","52599"],["52600","52601"],["52602","52603"],["52604","52605"],["52606","52607"],["52608","52609"],["52610","52611"],["52612","52613"],["52614","52615"],["52616","52617"],["52618","52619"],["52620","52621"],["52622","52623"],["52624","52625"],["52626","52627"],["52628","52629"],["52630","52631"],["52632","52633"],["52634","52635"],["52636","52637"],["52638","52639"],["52640","52641"],["52642","52643"],["52644","52645"],["52646","52647"],["52648","52649"],["52650","52651"],["52652","52653"],["52654","52655"],["52656","52657"],["52658","52659"],["52660","52661"],["52662","52663"],["52664","52665"],["52666","52667"],["52668","52669"],["52670","52671"],["52672","52673"],["52674","52675"],["52676","52677"],["52678","52679"],["52680","52681"],["52682","52683"],["52684","52685"],["52686","52687"],["52688","52689"],["52690","52691"],["52692","52693"],["52694","52695"],["52696","52697"],["52698","52699"],["52700","52701"],["52702","52703"],["52704","52705"],["52706","52707"],["52708","52709"],["52710","52711"],["52712","52713"],["52714","52715"],["52716","52717"],["52718","52719"],["52720","52721"],["52722","52723"],["52724","52725"],["52726","52727"],["52728","52729"],["52730","52731"],["52732","52733"],["52734","52735"],["52736","52737"],["52738","52739"],["52740","52741"],["52742","52743"],["52744","52745"],["52746","52747"],["52748","52749"],["52750","52751"],["52752","52753"],["52754","52755"],["52756","52757"],["52758","52759"],["52760","52761"],["52762","52763"],["52764","52765"],["52766","52767"],["52768","52769"],["52770","52771"],["52772","52773"],["52774","52775"],["52776","52777"],["52778","52779"],["52780","52781"],["52782","52783"],["52784","52785"],["52786","52787"],["52788","52789"],["52790","52791"],["52792","52793"],["52794","52795"],["52796","52797"],["52798","52799"],["52800","52801"],["52802","52803"],["52804","52805"],["52806","52807"],["52808","52809"],["52810","52811"],["52812","52813"],["52814","52815"],["52816","52817"],["52818","52819"],["52820","52821"],["52822","52823"],["52824","52825"],["52826","52827"],["52828","52829"],["52830","52831"],["52832","52833"],["52834","52835"],["52836","52837"],["52838","52839"],["52840","52841"],["52842","52843"],["52844","52845"],["52846","52847"],["52848","52849"],["52850","52851"],["52852","52853"],["52854","52855"],["52856","52857"],["52858","52859"],["52860","52861"],["52862","52863"],["52864","52865"],["52866","52867"],["52868","52869"],["52870","52871"],["52872","52873"],["52874","52875"],["52876","52877"],["52878","52879"],["52880","52881"],["52882","52883"],["52884","52885"],["52886","52887"],["52888","52889"],["52890","52891"],["52892","52893"],["52894","52895"],["52896","52897"],["52898","52899"],["52900","52901"],["52902","52903"],["52904","52905"],["52906","52907"],["52908","52909"],["52910"],["52911","52912"],["52913","52914"],["52915","52916"],["52917","52918"],["52919","52920"],["52921","52922"],["52923","52924"],["52925","52926"],["52927","52928"],["52929","52930"],["52931","52932"],["52933","52934"],["52935","52936"],["52937","52938"],["52939","52940"],["52941","52942"],["52943","52944"],["52945","52946"],["52947","52948"],["52949","52950"],["52951","52952"],["52953","52954"],["52955","52956"],["52957","52958"],["52959","52960"],["52961","52962"],["52963","52964"],["52965","52966"],["52967","52968"],["52969","52970"],["52971","52972"],["52973","52974"],["52975","52976"],["52977","52978"],["52979","52980"],["52981","52982"],["52983","52984"],["52985","52986"],["52987","52988"],["52989","52990"],["52991","52992"],["52993","52994"],["52995","52996"],["52997","52998"],["52999","53000"],["53001","53002"],["53003","53004"],["53005","53006"],["53007","53008"],["53009","53010"],["53011","53012"],["53013","53014"],["53015","53016"],["53017","53018"],["53019","53020"],["53021","53022"],["53023","53024"],["53025","53026"],["53027","53028"],["53029","53030"],["53031","53032"],["53033","53034"],["53035","53036"],["53037","53038"],["53039","53040"],["53041","53042"],["53043","53044"],["53045","53046"],["53047","53048"],["53049","53050"],["53051","53052"],["53053","53054"],["53055","53056"],["53057","53058"],["53059","53060"],["53061","53062"],["53063","53064"],["53065","53066"],["53067","53068"],["53069","53070"],["53071","53072"],["53073","53074"],["53075","53076"],["53077","53078"],["53079","53080"],["53081","53082"],["53083","53084"],["53085","53086"],["53087","53088"],["53089","53090"],["53091","53092"],["53093","53094"],["53095","53096"],["53097","53098"],["53099","53100"],["53101","53102"],["53103","53104"],["53105","53106"],["53107","53108"],["53109","53110"],["53111","53112"],["53113","53114"],["53115","53116"],["53117","53118"],["53119","53120"],["53121","53122"],["53123","53124"],["53125","53126"],["53127","53128"],["53129","53130"],["53131","53132"],["53133","53134"],["53135","53136"],["53137","53138"],["53139","53140"],["53141","53142"],["53143","53144"],["53145","53146"],["53147","53148"],["53149","53150"],["53151","53152"],["53153","53154"],["53155","53156"],["53157","53158"],["53159","53160"],["53161","53162"],["53163","53164"],["53165","53166"],["53167","53168"],["53169","53170"],["53171","53172"],["53173","53174"],["53175","53176"],["53177","53178"],["53179","53180"],["53181","53182"],["53183","53184"],["53185","53186"],["53187","53188"],["53189","53190"],["53191","53192"],["53193","53194"],["53195","53196"],["53197","53198"],["53199","53200"],["53201","53202"],["53203","53204"],["53205","53206"],["53207","53208"],["53209","53210"],["53211","53212"],["53213","53214"],["53215","53216"],["53217","53218"],["53219","53220"],["53221","53222"],["53223","53224"],["53225","53226"],["53227","53228"],["53229","53230"],["53231","53232"],["53233","53234"],["53235","53236"],["53237","53238"],["53239","53240"],["53241","53242"],["53243","53244"],["53245","53246"],["53247","53248"],["53249","53250"],["53251","53252"],["53253","53254"],["53255","53256"],["53257","53258"],["53259","53260"],["53261","53262"],["53263","53264"],["53265","53266"],["53267","53268"],["53269","53270"],["53271","53272"],["53273","53274"],["53275","53276"],["53277","53278"],["53279","53280"],["53281","53282"],["53283","53284"],["53285","53286"],["53287","53288"],["53289","53290"],["53291","53292"],["53293","53294"],["53295","53296"],["53297","53298"],["53299","53300"],["53301","53302"],["53303","53304"],["53305","53306"],["53307","53308"],["53309","53310"],["53311","53312"],["53313","53314"],["53315","53316"],["53317","53318"],["53319","53320"],["53321","53322"],["53323","53324"],["53325","53326"],["53327","53328"],["53329","53330"],["53331","53332"],["53333","53334"],["53335","53336"],["53337","53338"],["53339","53340"],["53341","53342"],["53343","53344"],["53345","53346"],["53347","53348"],["53349","53350"],["53351","53352"],["53353","53354"],["53355","53356"],["53357","53358"],["53359","53360"],["53361","53362"],["53363","53364"],["53365","53366"],["53367","53368"],["53369","53370"],["53371","53372"],["53373","53374"],["53375","53376"],["53377","53378"],["53379","53380"],["53381","53382"],["53383","53384"],["53385","53386"],["53387","53388"],["53389","53390"],["53391","53392"],["53393","53394"],["53395","53396"],["53397","53398"],["53399","53400"],["53401","53402"],["53403","53404"],["53405","53406"],["53407","53408"],["53409","53410"],["53411","53412"],["53413","53414"],["53415","53416"],["53417","53418"],["53419","53420"],["53421","53422"],["53423","53424"],["53425","53426"],["53427","53428"],["53429","53430"],["53431","53432"],["53433","53434"],["53435","53436"],["53437","53438"],["53439","53440"],["53441","53442"],["53443","53444"],["53445","53446"],["53447","53448"],["53449","53450"],["53451","53452"],["53453","53454"],["53455","53456"],["53457","53458"],["53459","53460"],["53461","53462"],["53463","53464"],["53465","53466"],["53467","53468"],["53469","53470"],["53471","53472"],["53473","53474"],["53475","53476"],["53477","53478"],["53479","53480"],["53481","53482"],["53483","53484"],["53485","53486"],["53487","53488"],["53489","53490"],["53491","53492"],["53493","53494"],["53495","53496"],["53497","53498"],["53499","53500"],["53501","53502"],["53503","53504"],["53505","53506"],["53507","53508"],["53509","53510"],["53511","53512"],["53513","53514"],["53515","53516"],["53517","53518"],["53519","53520"],["53521","53522"],["53523","53524"],["53525","53526"],["53527","53528"],["53529","53530"],["53531","53532"],["53533","53534"],["53535","53536"],["53537","53538"],["53539"],["53540","53541"],["53542"],["53543","53544"],["53545"],["53546","53547"],["53548"],["53549","53550"],["53551"],["53552","53553"],["53554"],["53555","53556"],["53557"],["53558","53559"],["53560"],["53561","53562"],["53563"],["53564","53565"],["53566"],["53567","53568"],["53569"],["53570","53571"],["53572"],["53573","53574"],["53575","53576"],["53577","53578"],["53579","53580"],["53581","53582"],["53583","53584"],["53585","53586"],["53587","53588"],["53589","53590"],["53591","53592"],["53593","53594"],["53595","53596"],["53597","53598"],["53599","53600"],["53601","53602"],["53603","53604"],["53605","53606"],["53607","53608"],["53609","53610"],["53611","53612"],["53613","53614"],["53615","53616"],["53617","53618"],["53619","53620"],["53621","53622"],["53623","53624"],["53625","53626"],["53627","53628"],["53629","53630"],["53631","53632"],["53633","53634"],["53635","53636"],["53637","53638"],["53639","53640"],["53641","53642"],["53643","53644"],["53645","53646"],["53647","53648"],["53649","53650"],["53651","53652"],["53653","53654"],["53655","53656"],["53657","53658"],["53659","53660"],["53661","53662"],["53663","53664"],["53665","53666"],["53667","53668"],["53669","53670"],["53671","53672"],["53673","53674"],["53675","53676"],["53677","53678"],["53679","53680"],["53681","53682"],["53683","53684"],["53685","53686"],["53687","53688"],["53689","53690"],["53691","53692"],["53693","53694"],["53695","53696"],["53697","53698"],["53699","53700"],["53701","53702"],["53703","53704"],["53705","53706"],["53707","53708"],["53709","53710"],["53711","53712"],["53713","53714"],["53715","53716"],["53717","53718"],["53719","53720"],["53721","53722"],["53723","53724"],["53725","53726"],["53727","53728"],["53729","53730"],["53731","53732"],["53733","53734"],["53735","53736"],["53737","53738"],["53739","53740"],["53741","53742"],["53743","53744"],["53745","53746"],["53747","53748"],["53749","53750"],["53751","53752"],["53753","53754"],["53755","53756"],["53757","53758"],["53759","53760"],["53761","53762"],["53763","53764"],["53765","53766"],["53767","53768"],["53769","53770"],["53771","53772"],["53773","53774"],["53775","53776"],["53777","53778"],["53779","53780"],["53781","53782"],["53783","53784"],["53785","53786"],["53787","53788"],["53789","53790"],["53791","53792"],["53793","53794"],["53795"],["53796","53797"],["53798"],["53799","53800"],["53801"],["53802","53803"],["53804","53805"],["53806","53807"],["53808","53809"],["53810","53811"],["53812","53813"],["53814","53815"],["53816","53817"],["53818","53819"],["53820","53821"],["53822","53823"],["53824","53825"],["53826","53827"],["53828","53829"],["53830","53831"],["53832","53833"],["53834","53835"],["53836","53837"],["53838","53839"],["53840","53841"],["53842"],["53843","53844"],["53845"],["53846","53847"],["53848","53849"],["53850","53851"],["53852","53853"],["53854","53855"],["53856","53857"],["53858","53859"],["53860","53861"],["53862"],["53863","53864"],["53865"],["53866","53867"],["53868","53869"],["53870","53871"],["53872","53873"],["53874","53875"],["53876","53877"],["53878","53879"],["53880","53881"],["53882","53883"],["53884","53885"],["53886","53887"],["53888","53889"],["53890","53891"],["53892","53893"],["53894","53895"],["53896","53897"],["53898","53899"],["53900","53901"],["53902","53903"],["53904","53905"],["53906","53907"],["53908","53909"],["53910","53911"],["53912","53913"],["53914","53915"],["53916","53917"],["53918","53919"],["53920","53921"],["53922","53923"],["53924","53925"],["53926","53927"],["53928","53929"],["53930","53931"],["53932","53933"],["53934","53935"],["53936","53937"],["53938","53939"],["53940","53941"],["53942","53943"],["53944","53945"],["53946","53947"],["53948","53949"],["53950","53951"],["53952","53953"],["53954","53955"],["53956","53957"],["53958","53959"],["53960","53961"],["53962","53963"],["53964","53965"],["53966","53967"],["53968","53969"],["53970","53971"],["53972","53973"],["53974","53975"],["53976","53977"],["53978","53979"],["53980","53981"],["53982","53983"],["53984","53985"],["53986","53987"],["53988","53989"],["53990","53991"],["53992","53993"],["53994","53995"],["53996","53997"],["53998","53999"],["54000","54001"],["54002","54003"],["54004","54005"],["54006","54007"],["54008","54009"],["54010","54011"],["54012","54013"],["54014","54015"],["54016","54017"],["54018","54019"],["54020","54021"],["54022","54023"],["54024","54025"],["54026","54027"],["54028","54029"],["54030","54031"],["54032","54033"],["54034","54035"],["54036","54037"],["54038","54039"],["54040","54041"],["54042","54043"],["54044","54045"],["54046","54047"],["54048","54049"],["54050","54051"],["54052","54053"],["54054","54055"],["54056","54057"],["54058","54059"],["54060","54061"],["54062","54063"],["54064","54065"],["54066","54067"],["54068","54069"],["54070","54071"],["54072","54073"],["54074","54075"],["54076","54077"],["54078","54079"],["54080","54081"],["54082","54083"],["54084","54085"],["54086","54087"],["54088","54089"],["54090","54091"],["54092","54093"],["54094","54095"],["54096","54097"],["54098","54099"],["54100","54101"],["54102","54103"],["54104","54105"],["54106","54107"],["54108","54109"],["54110","54111"],["54112","54113"],["54114","54115"],["54116","54117"],["54118","54119"],["54120","54121"],["54122","54123"],["54124","54125"],["54126","54127"],["54128","54129"],["54130","54131"],["54132","54133"],["54134","54135"],["54136","54137"],["54138","54139"],["54140","54141"],["54142","54143"],["54144","54145"],["54146","54147"],["54148","54149"],["54150","54151"],["54152","54153"],["54154","54155"],["54156","54157"],["54158","54159"],["54160","54161"],["54162","54163"],["54164","54165"],["54166","54167"],["54168","54169"],["54170","54171"],["54172","54173"],["54174","54175"],["54176","54177"],["54178","54179"],["54180","54181"],["54182","54183"],["54184","54185"],["54186","54187"],["54188","54189"],["54190"],["54191","54192"],["54193","54194"],["54195","54196"],["54197","54198"],["54199","54200"],["54201","54202"],["54203","54204"],["54205","54206"],["54207","54208"],["54209","54210"],["54211","54212"],["54213","54214"],["54215","54216"],["54217","54218"],["54219","54220"],["54221","54222"],["54223","54224"],["54225","54226"],["54227","54228"],["54229","54230"],["54231","54232"],["54233","54234"],["54235","54236"],["54237","54238"],["54239","54240"],["54241","54242"],["54243","54244"],["54245","54246"],["54247","54248"],["54249","54250"],["54251","54252"],["54253","54254"],["54255","54256"],["54257","54258"],["54259","54260"],["54261","54262"],["54263","54264"],["54265","54266"],["54267","54268"],["54269","54270"],["54271","54272"],["54273","54274"],["54275","54276"],["54277","54278"],["54279","54280"],["54281","54282"],["54283","54284"],["54285","54286"],["54287","54288"],["54289","54290"],["54291","54292"],["54293","54294"],["54295","54296"],["54297","54298"],["54299","54300"],["54301","54302"],["54303","54304"],["54305","54306"],["54307","54308"],["54309","54310"],["54311","54312"],["54313","54314"],["54315","54316"],["54317","54318"],["54319","54320"],["54321","54322"],["54323","54324"],["54325","54326"],["54327","54328"],["54329","54330"],["54331","54332"],["54333","54334"],["54335","54336"],["54337","54338"],["54339","54340"],["54341","54342"],["54343","54344"],["54345","54346"],["54347","54348"],["54349","54350"],["54351","54352"],["54353","54354"],["54355","54356"],["54357","54358"],["54359","54360"],["54361","54362"],["54363","54364"],["54365","54366"],["54367","54368"],["54369","54370"],["54371","54372"],["54373","54374"],["54375","54376"],["54377","54378"],["54379","54380"],["54381","54382"],["54383","54384"],["54385","54386"],["54387","54388"],["54389","54390"],["54391","54392"],["54393","54394"],["54395","54396"],["54397","54398"],["54399","54400"],["54401","54402"],["54403","54404"],["54405","54406"],["54407","54408"],["54409","54410"],["54411","54412"],["54413","54414"],["54415","54416"],["54417","54418"],["54419","54420"],["54421","54422"],["54423","54424"],["54425","54426"],["54427","54428"],["54429","54430"],["54431","54432"],["54433","54434"],["54435","54436"],["54437","54438"],["54439","54440"],["54441","54442"],["54443","54444"],["54445","54446"],["54447","54448"],["54449","54450"],["54451","54452"],["54453","54454"],["54455","54456"],["54457","54458"],["54459","54460"],["54461","54462"],["54463","54464"],["54465","54466"],["54467","54468"],["54469","54470"],["54471","54472"],["54473","54474"],["54475","54476"],["54477","54478"],["54479","54480"],["54481","54482"],["54483","54484"],["54485","54486"],["54487","54488"],["54489","54490"],["54491","54492"],["54493","54494"],["54495","54496"],["54497","54498"],["54499","54500"],["54501","54502"],["54503","54504"],["54505","54506"],["54507","54508"],["54509","54510"],["54511","54512"],["54513","54514"],["54515","54516"],["54517","54518"],["54519","54520"],["54521","54522"],["54523","54524"],["54525","54526"],["54527","54528"],["54529","54530"],["54531","54532"],["54533","54534"],["54535","54536"],["54537","54538"],["54539","54540"],["54541","54542"],["54543","54544"],["54545","54546"],["54547","54548"],["54549","54550"],["54551","54552"],["54553","54554"],["54555","54556"],["54557","54558"],["54559","54560"],["54561","54562"],["54563","54564"],["54565","54566"],["54567","54568"],["54569","54570"],["54571","54572"],["54573","54574"],["54575","54576"],["54577","54578"],["54579","54580"],["54581","54582"],["54583","54584"],["54585","54586"],["54587","54588"],["54589","54590"],["54591","54592"],["54593","54594"],["54595","54596"],["54597","54598"],["54599","54600"],["54601","54602"],["54603","54604"],["54605","54606"],["54607","54608"],["54609","54610"],["54611","54612"],["54613","54614"],["54615","54616"],["54617","54618"],["54619","54620"],["54621","54622"],["54623","54624"],["54625","54626"],["54627","54628"],["54629","54630"],["54631","54632"],["54633","54634"],["54635","54636"],["54637","54638"],["54639","54640"],["54641","54642"],["54643","54644"],["54645","54646"],["54647","54648"],["54649","54650"],["54651","54652"],["54653","54654"],["54655","54656"],["54657","54658"],["54659","54660"],["54661","54662"],["54663","54664"],["54665","54666"],["54667","54668"],["54669","54670"],["54671","54672"],["54673","54674"],["54675","54676"],["54677","54678"],["54679","54680"],["54681","54682"],["54683","54684"],["54685","54686"],["54687","54688"],["54689","54690"],["54691","54692"],["54693","54694"],["54695","54696"],["54697","54698"],["54699","54700"],["54701","54702"],["54703","54704"],["54705","54706"],["54707","54708"],["54709","54710"],["54711","54712"],["54713","54714"],["54715","54716"],["54717","54718"],["54719","54720"],["54721","54722"],["54723","54724"],["54725","54726"],["54727","54728"],["54729","54730"],["54731","54732"],["54733","54734"],["54735","54736"],["54737","54738"],["54739","54740"],["54741","54742"],["54743","54744"],["54745","54746"],["54747","54748"],["54749","54750"],["54751","54752"],["54753","54754"],["54755","54756"],["54757","54758"],["54759","54760"],["54761","54762"],["54763","54764"],["54765","54766"],["54767","54768"],["54769","54770"],["54771","54772"],["54773","54774"],["54775","54776"],["54777","54778"],["54779","54780"],["54781","54782"],["54783","54784"],["54785"],["54786","54787"],["54788","54789"],["54790","54791"],["54792","54793"],["54794","54795"],["54796","54797"],["54798","54799"],["54800","54801"],["54802","54803"],["54804","54805"],["54806","54807"],["54808","54809"],["54810","54811"],["54812","54813"],["54814","54815"],["54816","54817"],["54818","54819"],["54820","54821"],["54822","54823"],["54824","54825"],["54826","54827"],["54828","54829"],["54830","54831"],["54832","54833"],["54834","54835"],["54836","54837"],["54838","54839"],["54840","54841"],["54842","54843"],["54844","54845"],["54846","54847"],["54848","54849"],["54850","54851"],["54852","54853"],["54854","54855"],["54856","54857"],["54858","54859"],["54860","54861"],["54862","54863"],["54864","54865"],["54866","54867"],["54868","54869"],["54870","54871"],["54872","54873"],["54874","54875"],["54876","54877"],["54878","54879"],["54880","54881"],["54882","54883"],["54884","54885"],["54886","54887"],["54888","54889"],["54890","54891"],["54892","54893"],["54894","54895"],["54896","54897"],["54898","54899"],["54900","54901"],["54902","54903"],["54904","54905"],["54906","54907"],["54908","54909"],["54910","54911"],["54912","54913"],["54914","54915"],["54916","54917"],["54918","54919"],["54920","54921"],["54922","54923"],["54924","54925"],["54926","54927"],["54928","54929"],["54930","54931"],["54932","54933"],["54934","54935"],["54936","54937"],["54938","54939"],["54940","54941"],["54942","54943"],["54944","54945"],["54946","54947"],["54948","54949"],["54950","54951"],["54952","54953"],["54954","54955"],["54956","54957"],["54958","54959"],["54960","54961"],["54962","54963"],["54964","54965"],["54966","54967"],["54968","54969"],["54970","54971"],["54972","54973"],["54974","54975"],["54976","54977"],["54978","54979"],["54980","54981"],["54982","54983"],["54984","54985"],["54986","54987"],["54988","54989"],["54990","54991"],["54992","54993"],["54994","54995"],["54996","54997"],["54998","54999"],["55000","55001"],["55002","55003"],["55004","55005"],["55006","55007"],["55008","55009"],["55010","55011"],["55012","55013"],["55014","55015"],["55016","55017"],["55018","55019"],["55020","55021"],["55022","55023"],["55024","55025"],["55026","55027"],["55028","55029"],["55030","55031"],["55032","55033"],["55034","55035"],["55036","55037"],["55038","55039"],["55040","55041"],["55042","55043"],["55044","55045"],["55046","55047"],["55048","55049"],["55050","55051"],["55052","55053"],["55054","55055"],["55056","55057"],["55058","55059"],["55060","55061"],["55062","55063"],["55064","55065"],["55066","55067"],["55068","55069"],["55070","55071"],["55072","55073"],["55074","55075"],["55076","55077"],["55078","55079"],["55080","55081"],["55082","55083"],["55084","55085"],["55086","55087"],["55088","55089"],["55090","55091"],["55092","55093"],["55094","55095"],["55096","55097"],["55098","55099"],["55100","55101"],["55102","55103"],["55104","55105"],["55106","55107"],["55108","55109"],["55110","55111"],["55112","55113"],["55114","55115"],["55116","55117"],["55118","55119"],["55120","55121"],["55122","55123"],["55124","55125"],["55126","55127"],["55128","55129"],["55130","55131"],["55132","55133"],["55134","55135"],["55136","55137"],["55138","55139"],["55140","55141"],["55142","55143"],["55144","55145"],["55146","55147"],["55148","55149"],["55150","55151"],["55152","55153"],["55154","55155"],["55156","55157"],["55158","55159"],["55160","55161"],["55162","55163"],["55164","55165"],["55166","55167"],["55168","55169"],["55170","55171"],["55172","55173"],["55174","55175"],["55176","55177"],["55178","55179"],["55180","55181"],["55182","55183"],["55184","55185"],["55186","55187"],["55188","55189"],["55190","55191"],["55192","55193"],["55194","55195"],["55196","55197"],["55198","55199"],["55200","55201"],["55202","55203"],["55204","55205"],["55206","55207"],["55208","55209"],["55210","55211"],["55212","55213"],["55214","55215"],["55216","55217"],["55218","55219"],["55220","55221"],["55222","55223"],["55224","55225"],["55226","55227"],["55228","55229"],["55230","55231"],["55232","55233"],["55234","55235"],["55236","55237"],["55238","55239"],["55240","55241"],["55242","55243"],["55244","55245"],["55246","55247"],["55248","55249"],["55250","55251"],["55252","55253"],["55254","55255"],["55256","55257"],["55258","55259"],["55260","55261"],["55262","55263"],["55264","55265"],["55266","55267"],["55268","55269"],["55270","55271"],["55272","55273"],["55274","55275"],["55276","55277"],["55278","55279"],["55280","55281"],["55282","55283"],["55284","55285"],["55286","55287"],["55288","55289"],["55290","55291"],["55292","55293"],["55294","55295"],["55296","55297"],["55298","55299"],["55300","55301"],["55302","55303"],["55304","55305"],["55306","55307"],["55308","55309"],["55310","55311"],["55312","55313"],["55314","55315"],["55316","55317"],["55318","55319"],["55320","55321"],["55322","55323"],["55324","55325"],["55326","55327"],["55328","55329"],["55330","55331"],["55332","55333"],["55334","55335"],["55336","55337"],["55338","55339"],["55340","55341"],["55342","55343"],["55344","55345"],["55346","55347"],["55348","55349"],["55350","55351"],["55352","55353"],["55354","55355"],["55356","55357"],["55358","55359"],["55360","55361"],["55362","55363"],["55364","55365"],["55366","55367"],["55368","55369"],["55370","55371"],["55372","55373"],["55374","55375"],["55376","55377"],["55378","55379"],["55380","55381"],["55382","55383"],["55384","55385"],["55386","55387"],["55388","55389"],["55390","55391"],["55392","55393"],["55394","55395"],["55396","55397"],["55398","55399"],["55400","55401"],["55402","55403"],["55404","55405"],["55406","55407"],["55408","55409"],["55410","55411"],["55412","55413"],["55414","55415"],["55416","55417"],["55418","55419"],["55420","55421"],["55422","55423"],["55424","55425"],["55426","55427"],["55428","55429"],["55430","55431"],["55432","55433"],["55434","55435"],["55436","55437"],["55438","55439"],["55440","55441"],["55442","55443"],["55444","55445"],["55446","55447"],["55448","55449"],["55450","55451"],["55452","55453"],["55454","55455"],["55456","55457"],["55458","55459"],["55460","55461"],["55462","55463"],["55464","55465"],["55466","55467"],["55468","55469"],["55470","55471"],["55472","55473"],["55474","55475"],["55476","55477"],["55478","55479"],["55480","55481"],["55482","55483"],["55484","55485"],["55486","55487"],["55488","55489"],["55490","55491"],["55492","55493"],["55494","55495"],["55496","55497"],["55498","55499"],["55500","55501"],["55502","55503"],["55504","55505"],["55506","55507"],["55508","55509"],["55510","55511"],["55512","55513"],["55514","55515"],["55516","55517"],["55518","55519"],["55520","55521"],["55522","55523"],["55524","55525"],["55526","55527"],["55528","55529"],["55530","55531"],["55532","55533"],["55534","55535"],["55536","55537"],["55538","55539"],["55540","55541"],["55542","55543"],["55544","55545"],["55546","55547"],["55548","55549"],["55550","55551"],["55552","55553"],["55554","55555"],["55556","55557"],["55558","55559"],["55560","55561"],["55562","55563"],["55564","55565"],["55566","55567"],["55568","55569"],["55570","55571"],["55572","55573"],["55574","55575"],["55576","55577"],["55578","55579"],["55580","55581"],["55582","55583"],["55584","55585"],["55586","55587"],["55588","55589"],["55590","55591"],["55592","55593"],["55594","55595"],["55596","55597"],["55598","55599"],["55600","55601"],["55602","55603"],["55604","55605"],["55606","55607"],["55608","55609"],["55610","55611"],["55612","55613"],["55614","55615"],["55616","55617"],["55618","55619"],["55620","55621"],["55622","55623"],["55624","55625"],["55626","55627"],["55628","55629"],["55630","55631"],["55632","55633"],["55634","55635"],["55636","55637"],["55638","55639"],["55640","55641"],["55642","55643"],["55644","55645"],["55646","55647"],["55648","55649"],["55650","55651"],["55652","55653"],["55654","55655"],["55656","55657"],["55658","55659"],["55660","55661"],["55662","55663"],["55664","55665"],["55666","55667"],["55668","55669"],["55670","55671"],["55672","55673"],["55674","55675"],["55676","55677"],["55678","55679"],["55680","55681"],["55682","55683"],["55684","55685"],["55686","55687"],["55688","55689"],["55690","55691"],["55692","55693"],["55694","55695"],["55696","55697"],["55698","55699"],["55700","55701"],["55702","55703"],["55704","55705"],["55706","55707"],["55708","55709"],["55710","55711"],["55712","55713"],["55714","55715"],["55716","55717"],["55718","55719"],["55720","55721"],["55722","55723"],["55724","55725"],["55726","55727"],["55728","55729"],["55730","55731"],["55732","55733"],["55734","55735"],["55736","55737"],["55738","55739"],["55740","55741"],["55742","55743"],["55744","55745"],["55746","55747"],["55748","55749"],["55750","55751"],["55752","55753"],["55754","55755"],["55756","55757"],["55758","55759"],["55760","55761"],["55762","55763"],["55764","55765"],["55766","55767"],["55768","55769"],["55770","55771"],["55772","55773"],["55774","55775"],["55776","55777"],["55778","55779"],["55780","55781"],["55782","55783"],["55784","55785"],["55786","55787"],["55788","55789"],["55790","55791"],["55792","55793"],["55794","55795"],["55796","55797"],["55798","55799"],["55800","55801"],["55802","55803"],["55804","55805"],["55806","55807"],["55808","55809"],["55810","55811"],["55812","55813"],["55814","55815"],["55816","55817"],["55818","55819"],["55820","55821"],["55822","55823"],["55824","55825"],["55826","55827"],["55828","55829"],["55830","55831"],["55832","55833"],["55834","55835"],["55836","55837"],["55838","55839"],["55840","55841"],["55842","55843"],["55844","55845"],["55846","55847"],["55848","55849"],["55850","55851"],["55852","55853"],["55854","55855"],["55856","55857"],["55858","55859"],["55860","55861"],["55862","55863"],["55864","55865"],["55866","55867"],["55868","55869"],["55870","55871"],["55872","55873"],["55874","55875"],["55876","55877"],["55878","55879"],["55880","55881"],["55882","55883"],["55884","55885"],["55886","55887"],["55888","55889"],["55890","55891"],["55892","55893"],["55894","55895"],["55896","55897"],["55898","55899"],["55900","55901"],["55902","55903"],["55904","55905"],["55906","55907"],["55908"],["55909","55910"],["55911"],["55912","55913"],["55914","55915"],["55916","55917"],["55918","55919"],["55920","55921"],["55922","55923"],["55924","55925"],["55926","55927"],["55928","55929"],["55930","55931"],["55932","55933"],["55934","55935"],["55936","55937"],["55938","55939"],["55940","55941"],["55942","55943"],["55944","55945"],["55946","55947"],["55948","55949"],["55950","55951"],["55952","55953"],["55954","55955"],["55956","55957"],["55958","55959"],["55960","55961"],["55962","55963"],["55964","55965"],["55966","55967"],["55968","55969"],["55970","55971"],["55972","55973"],["55974","55975"],["55976","55977"],["55978","55979"],["55980","55981"],["55982","55983"],["55984","55985"],["55986","55987"],["55988","55989"],["55990","55991"],["55992","55993"],["55994","55995"],["55996","55997"],["55998","55999"],["56000","56001"],["56002","56003"],["56004","56005"],["56006","56007"],["56008","56009"],["56010","56011"],["56012","56013"],["56014","56015"],["56016","56017"],["56018","56019"],["56020","56021"],["56022","56023"],["56024","56025"],["56026","56027"],["56028","56029"],["56030","56031"],["56032","56033"],["56034","56035"],["56036","56037"],["56038","56039"],["56040","56041"],["56042","56043"],["56044","56045"],["56046","56047"],["56048","56049"],["56050","56051"],["56052","56053"],["56054","56055"],["56056","56057"],["56058","56059"],["56060","56061"],["56062","56063"],["56064","56065"],["56066","56067"],["56068","56069"],["56070","56071"],["56072","56073"],["56074","56075"],["56076","56077"],["56078","56079"],["56080","56081"],["56082","56083"],["56084","56085"],["56086","56087"],["56088","56089"],["56090","56091"],["56092","56093"],["56094","56095"],["56096","56097"],["56098","56099"],["56100","56101"],["56102","56103"],["56104","56105"],["56106","56107"],["56108","56109"],["56110","56111"],["56112","56113"],["56114","56115"],["56116","56117"],["56118","56119"],["56120","56121"],["56122","56123"],["56124","56125"],["56126","56127"],["56128","56129"],["56130","56131"],["56132","56133"],["56134","56135"],["56136","56137"],["56138","56139"],["56140","56141"],["56142","56143"],["56144","56145"],["56146","56147"],["56148","56149"],["56150","56151"],["56152","56153"],["56154","56155"],["56156","56157"],["56158","56159"],["56160","56161"],["56162","56163"],["56164","56165"],["56166","56167"],["56168","56169"],["56170","56171"],["56172","56173"],["56174","56175"],["56176","56177"],["56178","56179"],["56180","56181"],["56182","56183"],["56184","56185"],["56186","56187"],["56188","56189"],["56190","56191"],["56192","56193"],["56194","56195"],["56196","56197"],["56198","56199"],["56200","56201"],["56202","56203"],["56204","56205"],["56206","56207"],["56208","56209"],["56210","56211"],["56212","56213"],["56214","56215"],["56216","56217"],["56218","56219"],["56220","56221"],["56222","56223"],["56224","56225"],["56226","56227"],["56228","56229"],["56230","56231"],["56232","56233"],["56234","56235"],["56236","56237"],["56238","56239"],["56240","56241"],["56242","56243"],["56244","56245"],["56246","56247"],["56248","56249"],["56250","56251"],["56252","56253"],["56254","56255"],["56256","56257"],["56258","56259"],["56260","56261"],["56262","56263"],["56264","56265"],["56266","56267"],["56268","56269"],["56270","56271"],["56272","56273"],["56274","56275"],["56276","56277"],["56278","56279"],["56280","56281"],["56282","56283"],["56284","56285"],["56286","56287"],["56288","56289"],["56290","56291"],["56292","56293"],["56294","56295"],["56296","56297"],["56298","56299"],["56300","56301"],["56302","56303"],["56304","56305"],["56306","56307"],["56308","56309"],["56310","56311"],["56312","56313"],["56314","56315"],["56316","56317"],["56318","56319"],["56320","56321"],["56322","56323"],["56324","56325"],["56326","56327"],["56328","56329"],["56330","56331"],["56332","56333"],["56334","56335"],["56336","56337"],["56338","56339"],["56340","56341"],["56342","56343"],["56344","56345"],["56346","56347"],["56348","56349"],["56350","56351"],["56352","56353"],["56354","56355"],["56356","56357"],["56358","56359"],["56360","56361"],["56362","56363"],["56364","56365"],["56366","56367"],["56368","56369"],["56370","56371"],["56372","56373"],["56374","56375"],["56376","56377"],["56378","56379"],["56380","56381"],["56382","56383"],["56384","56385"],["56386","56387"],["56388","56389"],["56390","56391"],["56392","56393"],["56394","56395"],["56396","56397"],["56398","56399"],["56400","56401"],["56402","56403"],["56404","56405"],["56406","56407"],["56408","56409"],["56410","56411"],["56412","56413"],["56414","56415"],["56416","56417"],["56418","56419"],["56420","56421"],["56422","56423"],["56424","56425"],["56426","56427"],["56428","56429"],["56430","56431"],["56432","56433"],["56434","56435"],["56436","56437"],["56438","56439"],["56440","56441"],["56442","56443"],["56444","56445"],["56446","56447"],["56448","56449"],["56450","56451"],["56452","56453"],["56454","56455"],["56456","56457"],["56458","56459"],["56460","56461"],["56462","56463"],["56464","56465"],["56466","56467"],["56468","56469"],["56470","56471"],["56472","56473"],["56474","56475"],["56476","56477"],["56478","56479"],["56480","56481"],["56482","56483"],["56484","56485"],["56486","56487"],["56488","56489"],["56490","56491"],["56492","56493"],["56494","56495"],["56496","56497"],["56498","56499"],["56500","56501"],["56502","56503"],["56504","56505"],["56506","56507"],["56508","56509"],["56510","56511"],["56512","56513"],["56514","56515"],["56516","56517"],["56518","56519"],["56520","56521"],["56522","56523"],["56524","56525"],["56526","56527"],["56528","56529"],["56530","56531"],["56532","56533"],["56534","56535"],["56536","56537"],["56538","56539"],["56540","56541"],["56542","56543"],["56544","56545"],["56546","56547"],["56548","56549"],["56550","56551"],["56552","56553"],["56554","56555"],["56556","56557"],["56558","56559"],["56560","56561"],["56562","56563"],["56564","56565"],["56566","56567"],["56568","56569"],["56570","56571"],["56572","56573"],["56574","56575"],["56576","56577"],["56578","56579"],["56580","56581"],["56582","56583"],["56584","56585"],["56586","56587"],["56588","56589"],["56590","56591"],["56592","56593"],["56594","56595"],["56596","56597"],["56598","56599"],["56600","56601"],["56602","56603"],["56604","56605"],["56606","56607"],["56608","56609"],["56610","56611"],["56612","56613"],["56614","56615"],["56616","56617"],["56618","56619"],["56620","56621"],["56622","56623"],["56624","56625"],["56626","56627"],["56628","56629"],["56630","56631"],["56632","56633"],["56634","56635"],["56636","56637"],["56638","56639"],["56640","56641"],["56642","56643"],["56644","56645"],["56646","56647"],["56648","56649"],["56650","56651"],["56652","56653"],["56654","56655"],["56656","56657"],["56658","56659"],["56660","56661"],["56662","56663"],["56664","56665"],["56666","56667"],["56668","56669"],["56670","56671"],["56672","56673"],["56674","56675"],["56676","56677"],["56678","56679"],["56680","56681"],["56682","56683"],["56684","56685"],["56686","56687"],["56688","56689"],["56690","56691"],["56692","56693"],["56694","56695"],["56696","56697"],["56698","56699"],["56700","56701"],["56702","56703"],["56704","56705"],["56706","56707"],["56708","56709"],["56710","56711"],["56712","56713"],["56714","56715"],["56716","56717"],["56718","56719"],["56720","56721"],["56722","56723"],["56724","56725"],["56726","56727"],["56728","56729"],["56730","56731"],["56732","56733"],["56734","56735"],["56736","56737"],["56738","56739"],["56740","56741"],["56742","56743"],["56744","56745"],["56746","56747"],["56748","56749"],["56750","56751"],["56752","56753"],["56754","56755"],["56756","56757"],["56758","56759"],["56760","56761"],["56762","56763"],["56764","56765"],["56766","56767"],["56768","56769"],["56770","56771"],["56772","56773"],["56774","56775"],["56776","56777"],["56778","56779"],["56780","56781"],["56782","56783"],["56784","56785"],["56786","56787"],["56788","56789"],["56790","56791"],["56792","56793"],["56794","56795"],["56796","56797"],["56798","56799"],["56800","56801"],["56802","56803"],["56804","56805"],["56806","56807"],["56808","56809"],["56810","56811"],["56812","56813"],["56814","56815"],["56816","56817"],["56818","56819"],["56820","56821"],["56822","56823"],["56824","56825"],["56826","56827"],["56828","56829"],["56830","56831"],["56832","56833"],["56834","56835"],["56836","56837"],["56838","56839"],["56840","56841"],["56842","56843"],["56844","56845"],["56846","56847"],["56848","56849"],["56850","56851"],["56852","56853"],["56854","56855"],["56856","56857"],["56858","56859"],["56860","56861"],["56862","56863"],["56864","56865"],["56866","56867"],["56868","56869"],["56870","56871"],["56872","56873"],["56874","56875"],["56876","56877"],["56878","56879"],["56880","56881"],["56882","56883"],["56884","56885"],["56886","56887"],["56888","56889"],["56890","56891"],["56892","56893"],["56894","56895"],["56896","56897"],["56898","56899"],["56900","56901"],["56902","56903"],["56904","56905"],["56906","56907"],["56908","56909"],["56910","56911"],["56912","56913"],["56914","56915"],["56916","56917"],["56918","56919"],["56920","56921"],["56922","56923"],["56924","56925"],["56926","56927"],["56928","56929"],["56930","56931"],["56932","56933"],["56934","56935"],["56936","56937"],["56938","56939"],["56940","56941"],["56942","56943"],["56944","56945"],["56946","56947"],["56948","56949"],["56950","56951"],["56952","56953"],["56954","56955"],["56956","56957"],["56958","56959"],["56960","56961"],["56962","56963"],["56964","56965"],["56966","56967"],["56968","56969"],["56970","56971"],["56972","56973"],["56974","56975"],["56976","56977"],["56978","56979"],["56980","56981"],["56982","56983"],["56984","56985"],["56986","56987"],["56988","56989"],["56990","56991"],["56992","56993"],["56994","56995"],["56996","56997"],["56998","56999"],["57000","57001"],["57002","57003"],["57004","57005"],["57006","57007"],["57008","57009"],["57010","57011"],["57012","57013"],["57014","57015"],["57016","57017"],["57018","57019"],["57020","57021"],["57022","57023"],["57024","57025"],["57026","57027"],["57028","57029"],["57030","57031"],["57032","57033"],["57034","57035"],["57036","57037"],["57038","57039"],["57040","57041"],["57042","57043"],["57044","57045"],["57046","57047"],["57048","57049"],["57050","57051"],["57052","57053"],["57054","57055"],["57056","57057"],["57058","57059"],["57060","57061"],["57062","57063"],["57064","57065"],["57066","57067"],["57068","57069"],["57070","57071"],["57072","57073"],["57074","57075"],["57076","57077"],["57078","57079"],["57080","57081"],["57082","57083"],["57084","57085"],["57086","57087"],["57088","57089"],["57090","57091"],["57092","57093"],["57094","57095"],["57096","57097"],["57098","57099"],["57100","57101"],["57102","57103"],["57104","57105"],["57106","57107"],["57108","57109"],["57110","57111"],["57112","57113"],["57114","57115"],["57116","57117"],["57118","57119"],["57120","57121"],["57122","57123"],["57124","57125"],["57126","57127"],["57128","57129"],["57130","57131"],["57132","57133"],["57134","57135"],["57136","57137"],["57138","57139"],["57140","57141"],["57142","57143"],["57144","57145"],["57146","57147"],["57148","57149"],["57150","57151"],["57152","57153"],["57154","57155"],["57156","57157"],["57158","57159"],["57160","57161"],["57162","57163"],["57164","57165"],["57166","57167"],["57168","57169"],["57170","57171"],["57172","57173"],["57174","57175"],["57176","57177"],["57178","57179"],["57180","57181"],["57182","57183"],["57184","57185"],["57186","57187"],["57188","57189"],["57190","57191"],["57192","57193"],["57194","57195"],["57196","57197"],["57198","57199"],["57200","57201"],["57202","57203"],["57204","57205"],["57206","57207"],["57208","57209"],["57210","57211"],["57212","57213"],["57214","57215"],["57216","57217"],["57218","57219"],["57220","57221"],["57222","57223"],["57224","57225"],["57226","57227"],["57228","57229"],["57230","57231"],["57232","57233"],["57234","57235"],["57236","57237"],["57238","57239"],["57240","57241"],["57242","57243"],["57244","57245"],["57246","57247"],["57248","57249"],["57250","57251"],["57252","57253"],["57254","57255"],["57256","57257"],["57258","57259"],["57260","57261"],["57262","57263"],["57264","57265"],["57266","57267"],["57268","57269"],["57270","57271"],["57272","57273"],["57274","57275"],["57276","57277"],["57278","57279"],["57280","57281"],["57282","57283"],["57284","57285"],["57286","57287"],["57288","57289"],["57290","57291"],["57292","57293"],["57294","57295"],["57296","57297"],["57298","57299"],["57300","57301"],["57302","57303"],["57304","57305"],["57306","57307"],["57308","57309"],["57310","57311"],["57312","57313"],["57314","57315"],["57316","57317"],["57318","57319"],["57320","57321"],["57322","57323"],["57324","57325"],["57326","57327"],["57328","57329"],["57330","57331"],["57332","57333"],["57334","57335"],["57336","57337"],["57338","57339"],["57340","57341"],["57342","57343"],["57344","57345"],["57346","57347"],["57348","57349"],["57350","57351"],["57352","57353"],["57354","57355"],["57356","57357"],["57358","57359"],["57360","57361"],["57362","57363"],["57364","57365"],["57366","57367"],["57368","57369"],["57370","57371"],["57372","57373"],["57374","57375"],["57376","57377"],["57378","57379"],["57380","57381"],["57382","57383"],["57384","57385"],["57386","57387"],["57388","57389"],["57390","57391"],["57392","57393"],["57394","57395"],["57396","57397"],["57398","57399"],["57400","57401"],["57402","57403"],["57404","57405"],["57406","57407"],["57408","57409"],["57410","57411"],["57412","57413"],["57414","57415"],["57416","57417"],["57418","57419"],["57420","57421"],["57422","57423"],["57424","57425"],["57426","57427"],["57428","57429"],["57430","57431"],["57432","57433"],["57434","57435"],["57436","57437"],["57438","57439"],["57440","57441"],["57442","57443"],["57444","57445"],["57446","57447"],["57448","57449"],["57450","57451"],["57452","57453"],["57454","57455"],["57456","57457"],["57458","57459"],["57460","57461"],["57462","57463"],["57464","57465"],["57466","57467"],["57468","57469"],["57470","57471"],["57472","57473"],["57474","57475"],["57476","57477"],["57478","57479"],["57480","57481"],["57482","57483"],["57484","57485"],["57486","57487"],["57488","57489"],["57490","57491"],["57492","57493"],["57494","57495"],["57496","57497"],["57498","57499"],["57500","57501"],["57502","57503"],["57504","57505"],["57506","57507"],["57508","57509"],["57510","57511"],["57512","57513"],["57514","57515"],["57516","57517"],["57518","57519"],["57520","57521"],["57522","57523"],["57524","57525"],["57526","57527"],["57528","57529"],["57530","57531"],["57532","57533"],["57534","57535"],["57536","57537"],["57538","57539"],["57540","57541"],["57542","57543"],["57544","57545"],["57546","57547"],["57548","57549"],["57550","57551"],["57552","57553"],["57554","57555"],["57556","57557"],["57558","57559"],["57560"],["57561"],["57562"],"react-hooks/immutability","Error: This value cannot be modified\n\nModifying a variable defined outside a component or hook is not allowed. Consider using an effect.\n\n/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/use-improve-prompt.test.tsx:30:5\n 28 | captureRef.current = useHook();\n 29 | // eslint-disable-next-line react-hooks/immutability -- test harness: intentionally writes to outer capture object from inside component\n> 30 | hookRef.current = captureRef.current;\n | ^^^^^^^ value cannot be modified\n 31 | return null;\n 32 | }\n 33 |\n\nHint: If this value is a Ref (value returned by `useRef()`), rename the variable to end in \"Ref\".",["57563"],"Error: This value cannot be modified\n\nModifying a variable defined outside a component or hook is not allowed. Consider using an effect.\n\n/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/use-presets.test.tsx:30:5\n 28 | captureRef.current = useHook();\n 29 | // eslint-disable-next-line react-hooks/immutability -- test harness: intentionally writes to outer capture object from inside component\n> 30 | hookRef.current = captureRef.current;\n | ^^^^^^^ value cannot be modified\n 31 | return null;\n 32 | }\n 33 |\n\nHint: If this value is a Ref (value returned by `useRef()`), rename the variable to end in \"Ref\".",["57564"],"Error: This value cannot be modified\n\nModifying a variable defined outside a component or hook is not allowed. Consider using an effect.\n\n/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/use-stream-metrics.test.tsx:34:5\n 32 | // This is safe because captureRef lives inside the component.\n 33 | // eslint-disable-next-line react-hooks/immutability -- test harness: intentionally writes to outer capture object from inside component\n> 34 | hookRef.current = captureRef.current;\n | ^^^^^^^ value cannot be modified\n 35 | return null;\n 36 | }\n 37 |\n\nHint: If this value is a Ref (value returned by `useRef()`), rename the variable to end in \"Ref\".",["57565"],"Error: This value cannot be modified\n\nModifying a variable defined outside a component or hook is not allowed. Consider using an effect.\n\n/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/use-structured-output.test.tsx:29:5\n 27 | captureRef.current = useHook();\n 28 | // eslint-disable-next-line react-hooks/immutability -- test harness: intentionally writes to outer capture object from inside component\n> 29 | hookRef.current = captureRef.current;\n | ^^^^^^^ value cannot be modified\n 30 | return null;\n 31 | }\n 32 |\n\nHint: If this value is a Ref (value returned by `useRef()`), rename the variable to end in \"Ref\".",["57566"],"Error: This value cannot be modified\n\nModifying a variable defined outside a component or hook is not allowed. Consider using an effect.\n\n/home/diegosouzapw/dev/proxys/OmniRoute/.claude/worktrees/sweep-reds-basereds-2/tests/unit/ui/use-tools-builder.test.tsx:30:5\n 28 | captureRef.current = useHook();\n 29 | // eslint-disable-next-line react-hooks/immutability -- test harness: intentionally writes to outer capture object from inside component\n> 30 | hookRef.current = captureRef.current;\n | ^^^^^^^ value cannot be modified\n 31 | return null;\n 32 | }\n 33 |\n\nHint: If this value is a Ref (value returned by `useRef()`), rename the variable to end in \"Ref\".",["57567"],["57568","57569"],["57570","57571"],["57572","57573"],["57574","57575"],["57576","57577"],["57578","57579"],["57580","57581"],["57582","57583"],["57584","57585"],["57586","57587"],["57588","57589"],["57590","57591"],["57592","57593"],["57594","57595"],["57596","57597"],["57598","57599"],["57600","57601"],["57602","57603"],["57604","57605"],["57606","57607"],["57608","57609"],["57610","57611"],["57612","57613"],["57614","57615"],["57616","57617"],["57618","57619"],["57620","57621"],["57622","57623"],["57624","57625"],["57626","57627"],["57628","57629"],["57630","57631"],["57632","57633"],["57634","57635"],["57636","57637"],["57638","57639"],["57640","57641"],["57642","57643"],["57644","57645"],["57646","57647"],["57648","57649"],["57650","57651"],["57652","57653"],["57654","57655"],["57656","57657"],["57658","57659"],["57660","57661"],["57662","57663"],["57664","57665"],["57666","57667"],["57668","57669"],["57670","57671"],["57672","57673"],["57674","57675"],["57676","57677"],["57678","57679"],["57680","57681"],["57682","57683"],["57684","57685"],["57686","57687"],["57688","57689"],["57690","57691"],["57692","57693"],["57694","57695"],["57696","57697"],["57698","57699"],["57700","57701"],["57702","57703"],["57704","57705"],["57706","57707"],["57708","57709"],["57710","57711"],["57712","57713"],["57714","57715"],["57716","57717"],["57718","57719"],["57720","57721"],["57722","57723"],["57724","57725"],["57726","57727"],["57728","57729"],["57730","57731"],["57732","57733"],["57734","57735"],["57736","57737"],["57738","57739"],["57740","57741"],["57742","57743"],["57744","57745"],["57746","57747"],["57748","57749"],["57750","57751"],["57752","57753"],["57754","57755"],["57756","57757"],["57758","57759"],["57760","57761"],["57762","57763"],["57764","57765"],["57766","57767"],["57768","57769"],["57770","57771"],["57772","57773"],["57774","57775"],["57776","57777"],["57778","57779"],["57780","57781"],["57782","57783"],["57784","57785"],["57786","57787"],["57788","57789"],["57790","57791"],["57792","57793"],["57794","57795"],["57796","57797"],["57798","57799"],["57800","57801"],["57802","57803"],["57804","57805"],["57806","57807"],["57808","57809"],["57810","57811"],["57812","57813"],["57814","57815"],["57816","57817"],["57818","57819"],["57820","57821"],["57822","57823"],["57824","57825"],["57826","57827"],["57828","57829"],["57830","57831"],["57832","57833"],["57834","57835"],["57836","57837"],["57838","57839"],["57840","57841"],["57842","57843"],["57844","57845"],["57846","57847"],["57848","57849"],["57850","57851"],["57852","57853"],["57854","57855"],["57856","57857"],["57858","57859"],["57860","57861"],["57862","57863"],["57864","57865"],["57866","57867"],["57868","57869"],["57870","57871"],["57872","57873"],["57874","57875"],["57876","57877"],["57878","57879"],["57880","57881"],["57882","57883"],["57884","57885"],["57886","57887"],["57888","57889"],["57890","57891"],["57892","57893"],["57894","57895"],["57896","57897"],["57898","57899"],["57900","57901"],["57902","57903"],["57904","57905"],["57906","57907"],["57908","57909"],["57910","57911"],["57912","57913"],["57914","57915"],["57916","57917"],["57918","57919"],["57920","57921"],["57922","57923"],["57924","57925"],["57926","57927"],["57928","57929"],["57930","57931"],["57932","57933"],["57934","57935"],["57936","57937"],{"messageId":"57938","fix":"57939","desc":"57940"},{"messageId":"57941","fix":"57942","desc":"57943"},{"messageId":"57938","fix":"57944","desc":"57940"},{"messageId":"57941","fix":"57945","desc":"57943"},{"messageId":"57938","fix":"57946","desc":"57940"},{"messageId":"57941","fix":"57947","desc":"57943"},{"messageId":"57938","fix":"57948","desc":"57940"},{"messageId":"57941","fix":"57949","desc":"57943"},{"messageId":"57938","fix":"57950","desc":"57940"},{"messageId":"57941","fix":"57951","desc":"57943"},{"messageId":"57938","fix":"57952","desc":"57940"},{"messageId":"57941","fix":"57953","desc":"57943"},{"messageId":"57938","fix":"57954","desc":"57940"},{"messageId":"57941","fix":"57955","desc":"57943"},{"messageId":"57938","fix":"57956","desc":"57940"},{"messageId":"57941","fix":"57957","desc":"57943"},{"messageId":"57938","fix":"57958","desc":"57940"},{"messageId":"57941","fix":"57959","desc":"57943"},{"messageId":"57938","fix":"57960","desc":"57940"},{"messageId":"57941","fix":"57961","desc":"57943"},{"messageId":"57938","fix":"57962","desc":"57940"},{"messageId":"57941","fix":"57963","desc":"57943"},{"messageId":"57938","fix":"57964","desc":"57940"},{"messageId":"57941","fix":"57965","desc":"57943"},{"messageId":"57938","fix":"57966","desc":"57940"},{"messageId":"57941","fix":"57967","desc":"57943"},{"messageId":"57938","fix":"57968","desc":"57940"},{"messageId":"57941","fix":"57969","desc":"57943"},{"messageId":"57938","fix":"57970","desc":"57940"},{"messageId":"57941","fix":"57971","desc":"57943"},{"messageId":"57938","fix":"57972","desc":"57940"},{"messageId":"57941","fix":"57973","desc":"57943"},{"messageId":"57938","fix":"57974","desc":"57940"},{"messageId":"57941","fix":"57975","desc":"57943"},{"messageId":"57938","fix":"57976","desc":"57940"},{"messageId":"57941","fix":"57977","desc":"57943"},{"messageId":"57938","fix":"57978","desc":"57940"},{"messageId":"57941","fix":"57979","desc":"57943"},{"messageId":"57938","fix":"57980","desc":"57940"},{"messageId":"57941","fix":"57981","desc":"57943"},{"messageId":"57938","fix":"57982","desc":"57940"},{"messageId":"57941","fix":"57983","desc":"57943"},{"messageId":"57938","fix":"57984","desc":"57940"},{"messageId":"57941","fix":"57985","desc":"57943"},{"messageId":"57938","fix":"57986","desc":"57940"},{"messageId":"57941","fix":"57987","desc":"57943"},{"messageId":"57938","fix":"57988","desc":"57940"},{"messageId":"57941","fix":"57989","desc":"57943"},{"messageId":"57938","fix":"57990","desc":"57940"},{"messageId":"57941","fix":"57991","desc":"57943"},{"messageId":"57938","fix":"57992","desc":"57940"},{"messageId":"57941","fix":"57993","desc":"57943"},{"messageId":"57938","fix":"57994","desc":"57940"},{"messageId":"57941","fix":"57995","desc":"57943"},{"messageId":"57938","fix":"57996","desc":"57940"},{"messageId":"57941","fix":"57997","desc":"57943"},{"messageId":"57938","fix":"57998","desc":"57940"},{"messageId":"57941","fix":"57999","desc":"57943"},{"messageId":"57938","fix":"58000","desc":"57940"},{"messageId":"57941","fix":"58001","desc":"57943"},{"messageId":"57938","fix":"58002","desc":"57940"},{"messageId":"57941","fix":"58003","desc":"57943"},{"messageId":"57938","fix":"58004","desc":"57940"},{"messageId":"57941","fix":"58005","desc":"57943"},{"messageId":"57938","fix":"58006","desc":"57940"},{"messageId":"57941","fix":"58007","desc":"57943"},{"messageId":"57938","fix":"58008","desc":"57940"},{"messageId":"57941","fix":"58009","desc":"57943"},{"messageId":"57938","fix":"58010","desc":"57940"},{"messageId":"57941","fix":"58011","desc":"57943"},{"messageId":"57938","fix":"58012","desc":"57940"},{"messageId":"57941","fix":"58013","desc":"57943"},{"messageId":"57938","fix":"58014","desc":"57940"},{"messageId":"57941","fix":"58015","desc":"57943"},{"messageId":"57938","fix":"58016","desc":"57940"},{"messageId":"57941","fix":"58017","desc":"57943"},{"messageId":"57938","fix":"58018","desc":"57940"},{"messageId":"57941","fix":"58019","desc":"57943"},{"messageId":"57938","fix":"58020","desc":"57940"},{"messageId":"57941","fix":"58021","desc":"57943"},{"messageId":"57938","fix":"58022","desc":"57940"},{"messageId":"57941","fix":"58023","desc":"57943"},{"messageId":"57938","fix":"58024","desc":"57940"},{"messageId":"57941","fix":"58025","desc":"57943"},{"messageId":"57938","fix":"58026","desc":"57940"},{"messageId":"57941","fix":"58027","desc":"57943"},{"messageId":"57938","fix":"58028","desc":"57940"},{"messageId":"57941","fix":"58029","desc":"57943"},{"messageId":"57938","fix":"58030","desc":"57940"},{"messageId":"57941","fix":"58031","desc":"57943"},{"messageId":"57938","fix":"58032","desc":"57940"},{"messageId":"57941","fix":"58033","desc":"57943"},{"messageId":"57938","fix":"58034","desc":"57940"},{"messageId":"57941","fix":"58035","desc":"57943"},{"messageId":"57938","fix":"58036","desc":"57940"},{"messageId":"57941","fix":"58037","desc":"57943"},{"messageId":"57938","fix":"58038","desc":"57940"},{"messageId":"57941","fix":"58039","desc":"57943"},{"messageId":"57938","fix":"58040","desc":"57940"},{"messageId":"57941","fix":"58041","desc":"57943"},{"messageId":"57938","fix":"58042","desc":"57940"},{"messageId":"57941","fix":"58043","desc":"57943"},{"messageId":"57938","fix":"58044","desc":"57940"},{"messageId":"57941","fix":"58045","desc":"57943"},{"messageId":"57938","fix":"58046","desc":"57940"},{"messageId":"57941","fix":"58047","desc":"57943"},{"messageId":"57938","fix":"58048","desc":"57940"},{"messageId":"57941","fix":"58049","desc":"57943"},{"messageId":"57938","fix":"58050","desc":"57940"},{"messageId":"57941","fix":"58051","desc":"57943"},{"messageId":"57938","fix":"58052","desc":"57940"},{"messageId":"57941","fix":"58053","desc":"57943"},{"messageId":"57938","fix":"58054","desc":"57940"},{"messageId":"57941","fix":"58055","desc":"57943"},{"messageId":"57938","fix":"58056","desc":"57940"},{"messageId":"57941","fix":"58057","desc":"57943"},{"messageId":"57938","fix":"58058","desc":"57940"},{"messageId":"57941","fix":"58059","desc":"57943"},{"messageId":"57938","fix":"58060","desc":"57940"},{"messageId":"57941","fix":"58061","desc":"57943"},{"messageId":"57938","fix":"58062","desc":"57940"},{"messageId":"57941","fix":"58063","desc":"57943"},{"messageId":"57938","fix":"58064","desc":"57940"},{"messageId":"57941","fix":"58065","desc":"57943"},{"messageId":"57938","fix":"58066","desc":"57940"},{"messageId":"57941","fix":"58067","desc":"57943"},{"messageId":"57938","fix":"58068","desc":"57940"},{"messageId":"57941","fix":"58069","desc":"57943"},{"messageId":"57938","fix":"58070","desc":"57940"},{"messageId":"57941","fix":"58071","desc":"57943"},{"messageId":"57938","fix":"58072","desc":"57940"},{"messageId":"57941","fix":"58073","desc":"57943"},{"messageId":"57938","fix":"58074","desc":"57940"},{"messageId":"57941","fix":"58075","desc":"57943"},{"messageId":"57938","fix":"58076","desc":"57940"},{"messageId":"57941","fix":"58077","desc":"57943"},{"messageId":"57938","fix":"58078","desc":"57940"},{"messageId":"57941","fix":"58079","desc":"57943"},{"messageId":"57938","fix":"58080","desc":"57940"},{"messageId":"57941","fix":"58081","desc":"57943"},{"messageId":"57938","fix":"58082","desc":"57940"},{"messageId":"57941","fix":"58083","desc":"57943"},{"messageId":"57938","fix":"58084","desc":"57940"},{"messageId":"57941","fix":"58085","desc":"57943"},{"messageId":"57938","fix":"58086","desc":"57940"},{"messageId":"57941","fix":"58087","desc":"57943"},{"messageId":"57938","fix":"58088","desc":"57940"},{"messageId":"57941","fix":"58089","desc":"57943"},{"messageId":"57938","fix":"58090","desc":"57940"},{"messageId":"57941","fix":"58091","desc":"57943"},{"messageId":"57938","fix":"58092","desc":"57940"},{"messageId":"57941","fix":"58093","desc":"57943"},{"messageId":"57938","fix":"58094","desc":"57940"},{"messageId":"57941","fix":"58095","desc":"57943"},{"messageId":"57938","fix":"58096","desc":"57940"},{"messageId":"57941","fix":"58097","desc":"57943"},{"messageId":"57938","fix":"58098","desc":"57940"},{"messageId":"57941","fix":"58099","desc":"57943"},{"messageId":"57938","fix":"58100","desc":"57940"},{"messageId":"57941","fix":"58101","desc":"57943"},{"messageId":"57938","fix":"58102","desc":"57940"},{"messageId":"57941","fix":"58103","desc":"57943"},{"messageId":"57938","fix":"58104","desc":"57940"},{"messageId":"57941","fix":"58105","desc":"57943"},{"messageId":"57938","fix":"58106","desc":"57940"},{"messageId":"57941","fix":"58107","desc":"57943"},{"messageId":"57938","fix":"58108","desc":"57940"},{"messageId":"57941","fix":"58109","desc":"57943"},{"messageId":"57938","fix":"58110","desc":"57940"},{"messageId":"57941","fix":"58111","desc":"57943"},{"messageId":"57938","fix":"58112","desc":"57940"},{"messageId":"57941","fix":"58113","desc":"57943"},{"messageId":"57938","fix":"58114","desc":"57940"},{"messageId":"57941","fix":"58115","desc":"57943"},{"messageId":"57938","fix":"58116","desc":"57940"},{"messageId":"57941","fix":"58117","desc":"57943"},{"messageId":"57938","fix":"58118","desc":"57940"},{"messageId":"57941","fix":"58119","desc":"57943"},{"messageId":"57938","fix":"58120","desc":"57940"},{"messageId":"57941","fix":"58121","desc":"57943"},{"messageId":"57938","fix":"58122","desc":"57940"},{"messageId":"57941","fix":"58123","desc":"57943"},{"messageId":"57938","fix":"58124","desc":"57940"},{"messageId":"57941","fix":"58125","desc":"57943"},{"messageId":"57938","fix":"58126","desc":"57940"},{"messageId":"57941","fix":"58127","desc":"57943"},{"messageId":"57938","fix":"58128","desc":"57940"},{"messageId":"57941","fix":"58129","desc":"57943"},{"messageId":"57938","fix":"58130","desc":"57940"},{"messageId":"57941","fix":"58131","desc":"57943"},{"messageId":"57938","fix":"58132","desc":"57940"},{"messageId":"57941","fix":"58133","desc":"57943"},{"messageId":"57938","fix":"58134","desc":"57940"},{"messageId":"57941","fix":"58135","desc":"57943"},{"messageId":"57938","fix":"58136","desc":"57940"},{"messageId":"57941","fix":"58137","desc":"57943"},{"messageId":"57938","fix":"58138","desc":"57940"},{"messageId":"57941","fix":"58139","desc":"57943"},{"messageId":"57938","fix":"58140","desc":"57940"},{"messageId":"57941","fix":"58141","desc":"57943"},{"messageId":"57938","fix":"58142","desc":"57940"},{"messageId":"57941","fix":"58143","desc":"57943"},{"messageId":"57938","fix":"58144","desc":"57940"},{"messageId":"57941","fix":"58145","desc":"57943"},{"messageId":"57938","fix":"58146","desc":"57940"},{"messageId":"57941","fix":"58147","desc":"57943"},{"messageId":"57938","fix":"58148","desc":"57940"},{"messageId":"57941","fix":"58149","desc":"57943"},{"messageId":"57938","fix":"58150","desc":"57940"},{"messageId":"57941","fix":"58151","desc":"57943"},{"messageId":"57938","fix":"58152","desc":"57940"},{"messageId":"57941","fix":"58153","desc":"57943"},{"messageId":"57938","fix":"58154","desc":"57940"},{"messageId":"57941","fix":"58155","desc":"57943"},{"messageId":"57938","fix":"58156","desc":"57940"},{"messageId":"57941","fix":"58157","desc":"57943"},{"messageId":"57938","fix":"58158","desc":"57940"},{"messageId":"57941","fix":"58159","desc":"57943"},{"messageId":"57938","fix":"58160","desc":"57940"},{"messageId":"57941","fix":"58161","desc":"57943"},{"messageId":"57938","fix":"58162","desc":"57940"},{"messageId":"57941","fix":"58163","desc":"57943"},{"messageId":"57938","fix":"58164","desc":"57940"},{"messageId":"57941","fix":"58165","desc":"57943"},{"messageId":"57938","fix":"58166","desc":"57940"},{"messageId":"57941","fix":"58167","desc":"57943"},{"messageId":"57938","fix":"58168","desc":"57940"},{"messageId":"57941","fix":"58169","desc":"57943"},{"messageId":"57938","fix":"58170","desc":"57940"},{"messageId":"57941","fix":"58171","desc":"57943"},{"messageId":"57938","fix":"58172","desc":"57940"},{"messageId":"57941","fix":"58173","desc":"57943"},{"messageId":"57938","fix":"58174","desc":"57940"},{"messageId":"57941","fix":"58175","desc":"57943"},{"messageId":"57938","fix":"58176","desc":"57940"},{"messageId":"57941","fix":"58177","desc":"57943"},{"messageId":"57938","fix":"58178","desc":"57940"},{"messageId":"57941","fix":"58179","desc":"57943"},{"messageId":"57938","fix":"58180","desc":"57940"},{"messageId":"57941","fix":"58181","desc":"57943"},{"messageId":"57938","fix":"58182","desc":"57940"},{"messageId":"57941","fix":"58183","desc":"57943"},{"messageId":"57938","fix":"58184","desc":"57940"},{"messageId":"57941","fix":"58185","desc":"57943"},{"messageId":"57938","fix":"58186","desc":"57940"},{"messageId":"57941","fix":"58187","desc":"57943"},{"messageId":"57938","fix":"58188","desc":"57940"},{"messageId":"57941","fix":"58189","desc":"57943"},{"messageId":"57938","fix":"58190","desc":"57940"},{"messageId":"57941","fix":"58191","desc":"57943"},{"messageId":"57938","fix":"58192","desc":"57940"},{"messageId":"57941","fix":"58193","desc":"57943"},{"messageId":"57938","fix":"58194","desc":"57940"},{"messageId":"57941","fix":"58195","desc":"57943"},{"messageId":"57938","fix":"58196","desc":"57940"},{"messageId":"57941","fix":"58197","desc":"57943"},{"messageId":"57938","fix":"58198","desc":"57940"},{"messageId":"57941","fix":"58199","desc":"57943"},{"messageId":"57938","fix":"58200","desc":"57940"},{"messageId":"57941","fix":"58201","desc":"57943"},{"messageId":"57938","fix":"58202","desc":"57940"},{"messageId":"57941","fix":"58203","desc":"57943"},{"messageId":"57938","fix":"58204","desc":"57940"},{"messageId":"57941","fix":"58205","desc":"57943"},{"messageId":"57938","fix":"58206","desc":"57940"},{"messageId":"57941","fix":"58207","desc":"57943"},{"messageId":"57938","fix":"58208","desc":"57940"},{"messageId":"57941","fix":"58209","desc":"57943"},{"messageId":"57938","fix":"58210","desc":"57940"},{"messageId":"57941","fix":"58211","desc":"57943"},{"messageId":"57938","fix":"58212","desc":"57940"},{"messageId":"57941","fix":"58213","desc":"57943"},{"messageId":"57938","fix":"58214","desc":"57940"},{"messageId":"57941","fix":"58215","desc":"57943"},{"messageId":"57938","fix":"58216","desc":"57940"},{"messageId":"57941","fix":"58217","desc":"57943"},{"messageId":"57938","fix":"58218","desc":"57940"},{"messageId":"57941","fix":"58219","desc":"57943"},{"messageId":"57938","fix":"58220","desc":"57940"},{"messageId":"57941","fix":"58221","desc":"57943"},{"messageId":"57938","fix":"58222","desc":"57940"},{"messageId":"57941","fix":"58223","desc":"57943"},{"messageId":"57938","fix":"58224","desc":"57940"},{"messageId":"57941","fix":"58225","desc":"57943"},{"messageId":"57938","fix":"58226","desc":"57940"},{"messageId":"57941","fix":"58227","desc":"57943"},{"messageId":"57938","fix":"58228","desc":"57940"},{"messageId":"57941","fix":"58229","desc":"57943"},{"messageId":"57938","fix":"58230","desc":"57940"},{"messageId":"57941","fix":"58231","desc":"57943"},{"messageId":"57938","fix":"58232","desc":"57940"},{"messageId":"57941","fix":"58233","desc":"57943"},{"messageId":"57938","fix":"58234","desc":"57940"},{"messageId":"57941","fix":"58235","desc":"57943"},{"messageId":"57938","fix":"58236","desc":"57940"},{"messageId":"57941","fix":"58237","desc":"57943"},{"messageId":"57938","fix":"58238","desc":"57940"},{"messageId":"57941","fix":"58239","desc":"57943"},{"messageId":"57938","fix":"58240","desc":"57940"},{"messageId":"57941","fix":"58241","desc":"57943"},{"messageId":"57938","fix":"58242","desc":"57940"},{"messageId":"57941","fix":"58243","desc":"57943"},{"messageId":"57938","fix":"58244","desc":"57940"},{"messageId":"57941","fix":"58245","desc":"57943"},{"kind":"58246","justification":"58247"},{"messageId":"57938","fix":"58248","desc":"57940"},{"messageId":"57941","fix":"58249","desc":"57943"},{"kind":"58246","justification":"58247"},{"messageId":"57938","fix":"58250","desc":"57940"},{"messageId":"57941","fix":"58251","desc":"57943"},{"kind":"58246","justification":"58247"},{"messageId":"57938","fix":"58252","desc":"57940"},{"messageId":"57941","fix":"58253","desc":"57943"},{"kind":"58246","justification":"58247"},{"messageId":"57938","fix":"58254","desc":"57940"},{"messageId":"57941","fix":"58255","desc":"57943"},{"messageId":"57938","fix":"58256","desc":"57940"},{"messageId":"57941","fix":"58257","desc":"57943"},{"messageId":"57938","fix":"58258","desc":"57940"},{"messageId":"57941","fix":"58259","desc":"57943"},{"messageId":"57938","fix":"58260","desc":"57940"},{"messageId":"57941","fix":"58261","desc":"57943"},{"messageId":"57938","fix":"58262","desc":"57940"},{"messageId":"57941","fix":"58263","desc":"57943"},{"messageId":"57938","fix":"58264","desc":"57940"},{"messageId":"57941","fix":"58265","desc":"57943"},{"messageId":"57938","fix":"58266","desc":"57940"},{"messageId":"57941","fix":"58267","desc":"57943"},{"messageId":"57938","fix":"58268","desc":"57940"},{"messageId":"57941","fix":"58269","desc":"57943"},{"messageId":"57938","fix":"58270","desc":"57940"},{"messageId":"57941","fix":"58271","desc":"57943"},{"messageId":"57938","fix":"58272","desc":"57940"},{"messageId":"57941","fix":"58273","desc":"57943"},{"messageId":"57938","fix":"58274","desc":"57940"},{"messageId":"57941","fix":"58275","desc":"57943"},{"messageId":"57938","fix":"58276","desc":"57940"},{"messageId":"57941","fix":"58277","desc":"57943"},{"messageId":"57938","fix":"58278","desc":"57940"},{"messageId":"57941","fix":"58279","desc":"57943"},{"messageId":"57938","fix":"58280","desc":"57940"},{"messageId":"57941","fix":"58281","desc":"57943"},{"messageId":"57938","fix":"58282","desc":"57940"},{"messageId":"57941","fix":"58283","desc":"57943"},{"messageId":"57938","fix":"58284","desc":"57940"},{"messageId":"57941","fix":"58285","desc":"57943"},{"messageId":"57938","fix":"58286","desc":"57940"},{"messageId":"57941","fix":"58287","desc":"57943"},{"desc":"58288","fix":"58289"},{"desc":"58290","fix":"58291"},{"kind":"58246","justification":"58292"},{"kind":"58246","justification":"58293"},{"kind":"58246","justification":"58293"},{"desc":"58294","fix":"58295"},{"kind":"58246","justification":"58247"},{"kind":"58246","justification":"58296"},{"kind":"58246","justification":"58296"},{"kind":"58246","justification":"58296"},{"kind":"58246","justification":"58296"},{"kind":"58246","justification":"58296"},{"kind":"58246","justification":"58247"},{"desc":"58297","fix":"58298"},{"kind":"58246","justification":"58247"},{"desc":"58299","fix":"58300"},{"kind":"58246","justification":"58296"},{"kind":"58246","justification":"58247"},{"kind":"58246","justification":"58301"},{"desc":"58302","fix":"58303"},{"kind":"58246","justification":"58247"},{"desc":"58304","fix":"58305"},{"kind":"58246","justification":"58247"},{"desc":"58306","fix":"58307"},{"kind":"58246","justification":"58247"},{"desc":"58308","fix":"58309"},{"kind":"58246","justification":"58247"},{"kind":"58246","justification":"58247"},{"desc":"58310","fix":"58311"},{"kind":"58246","justification":"58247"},{"desc":"58312","fix":"58313"},{"kind":"58246","justification":"58247"},{"kind":"58246","justification":"58247"},{"desc":"58314","fix":"58315"},{"kind":"58246","justification":"58247"},{"kind":"58246","justification":"58247"},{"desc":"58316","fix":"58317"},{"kind":"58246","justification":"58318"},{"desc":"58319","fix":"58320"},{"kind":"58246","justification":"58247"},{"desc":"58321","fix":"58322"},{"kind":"58246","justification":"58247"},{"kind":"58246","justification":"58296"},{"desc":"58323","fix":"58324"},{"kind":"58246","justification":"58247"},{"desc":"58325","fix":"58326"},{"kind":"58246","justification":"58247"},{"desc":"58327","fix":"58328"},{"kind":"58246","justification":"58247"},{"desc":"58329","fix":"58330"},{"desc":"58331","fix":"58332"},{"kind":"58246","justification":"58293"},{"kind":"58246","justification":"58333"},{"desc":"58334","fix":"58335"},{"kind":"58246","justification":"58247"},{"desc":"58336","fix":"58337"},{"kind":"58246","justification":"58247"},{"desc":"58338","fix":"58339"},{"kind":"58246","justification":"58247"},{"desc":"58327","fix":"58340"},{"kind":"58246","justification":"58247"},{"desc":"58341","fix":"58342"},{"kind":"58246","justification":"58247"},{"kind":"58246","justification":"58296"},{"kind":"58246","justification":"58296"},{"desc":"58343","fix":"58344"},{"desc":"58345","fix":"58346"},{"desc":"58347","fix":"58348"},{"kind":"58246","justification":"58247"},{"desc":"58349","fix":"58350"},{"kind":"58246","justification":"58247"},{"kind":"58246","justification":"58351"},{"kind":"58246","justification":"58352"},{"desc":"58353","fix":"58354"},{"desc":"58355","fix":"58356"},{"desc":"58357","fix":"58358"},{"desc":"58359","fix":"58360"},{"desc":"58361","fix":"58362"},{"desc":"58363","fix":"58364"},{"desc":"58363","fix":"58365"},{"desc":"58366","fix":"58367"},{"kind":"58246","justification":"58247"},{"messageId":"57938","fix":"58368","desc":"57940"},{"messageId":"57941","fix":"58369","desc":"57943"},{"messageId":"57938","fix":"58370","desc":"57940"},{"messageId":"57941","fix":"58371","desc":"57943"},{"messageId":"57938","fix":"58372","desc":"57940"},{"messageId":"57941","fix":"58373","desc":"57943"},{"messageId":"57938","fix":"58374","desc":"57940"},{"messageId":"57941","fix":"58375","desc":"57943"},{"messageId":"57938","fix":"58376","desc":"57940"},{"messageId":"57941","fix":"58377","desc":"57943"},{"messageId":"57938","fix":"58378","desc":"57940"},{"messageId":"57941","fix":"58379","desc":"57943"},{"messageId":"57938","fix":"58380","desc":"57940"},{"messageId":"57941","fix":"58381","desc":"57943"},{"messageId":"57938","fix":"58382","desc":"57940"},{"messageId":"57941","fix":"58383","desc":"57943"},{"messageId":"57938","fix":"58384","desc":"57940"},{"messageId":"57941","fix":"58385","desc":"57943"},{"messageId":"57938","fix":"58386","desc":"57940"},{"messageId":"57941","fix":"58387","desc":"57943"},{"messageId":"57938","fix":"58388","desc":"57940"},{"messageId":"57941","fix":"58389","desc":"57943"},{"messageId":"57938","fix":"58390","desc":"57940"},{"messageId":"57941","fix":"58391","desc":"57943"},{"messageId":"57938","fix":"58392","desc":"57940"},{"messageId":"57941","fix":"58393","desc":"57943"},{"messageId":"57938","fix":"58394","desc":"57940"},{"messageId":"57941","fix":"58395","desc":"57943"},{"messageId":"57938","fix":"58396","desc":"57940"},{"messageId":"57941","fix":"58397","desc":"57943"},{"messageId":"57938","fix":"58398","desc":"57940"},{"messageId":"57941","fix":"58399","desc":"57943"},{"messageId":"57938","fix":"58400","desc":"57940"},{"messageId":"57941","fix":"58401","desc":"57943"},{"messageId":"57938","fix":"58402","desc":"57940"},{"messageId":"57941","fix":"58403","desc":"57943"},{"messageId":"57938","fix":"58404","desc":"57940"},{"messageId":"57941","fix":"58405","desc":"57943"},{"messageId":"57938","fix":"58406","desc":"57940"},{"messageId":"57941","fix":"58407","desc":"57943"},{"messageId":"57938","fix":"58408","desc":"57940"},{"messageId":"57941","fix":"58409","desc":"57943"},{"messageId":"57938","fix":"58410","desc":"57940"},{"messageId":"57941","fix":"58411","desc":"57943"},{"messageId":"57938","fix":"58412","desc":"57940"},{"messageId":"57941","fix":"58413","desc":"57943"},{"messageId":"57938","fix":"58414","desc":"57940"},{"messageId":"57941","fix":"58415","desc":"57943"},{"messageId":"57938","fix":"58416","desc":"57940"},{"messageId":"57941","fix":"58417","desc":"57943"},{"messageId":"57938","fix":"58418","desc":"57940"},{"messageId":"57941","fix":"58419","desc":"57943"},{"messageId":"57938","fix":"58420","desc":"57940"},{"messageId":"57941","fix":"58421","desc":"57943"},{"messageId":"57938","fix":"58422","desc":"57940"},{"messageId":"57941","fix":"58423","desc":"57943"},{"messageId":"57938","fix":"58424","desc":"57940"},{"messageId":"57941","fix":"58425","desc":"57943"},{"messageId":"57938","fix":"58426","desc":"57940"},{"messageId":"57941","fix":"58427","desc":"57943"},{"messageId":"57938","fix":"58428","desc":"57940"},{"messageId":"57941","fix":"58429","desc":"57943"},{"messageId":"57938","fix":"58430","desc":"57940"},{"messageId":"57941","fix":"58431","desc":"57943"},{"messageId":"57938","fix":"58432","desc":"57940"},{"messageId":"57941","fix":"58433","desc":"57943"},{"messageId":"57938","fix":"58434","desc":"57940"},{"messageId":"57941","fix":"58435","desc":"57943"},{"messageId":"57938","fix":"58436","desc":"57940"},{"messageId":"57941","fix":"58437","desc":"57943"},{"messageId":"57938","fix":"58438","desc":"57940"},{"messageId":"57941","fix":"58439","desc":"57943"},{"messageId":"57938","fix":"58440","desc":"57940"},{"messageId":"57941","fix":"58441","desc":"57943"},{"messageId":"57938","fix":"58442","desc":"57940"},{"messageId":"57941","fix":"58443","desc":"57943"},{"messageId":"57938","fix":"58444","desc":"57940"},{"messageId":"57941","fix":"58445","desc":"57943"},{"messageId":"57938","fix":"58446","desc":"57940"},{"messageId":"57941","fix":"58447","desc":"57943"},{"messageId":"57938","fix":"58448","desc":"57940"},{"messageId":"57941","fix":"58449","desc":"57943"},{"messageId":"57938","fix":"58450","desc":"57940"},{"messageId":"57941","fix":"58451","desc":"57943"},{"messageId":"57938","fix":"58452","desc":"57940"},{"messageId":"57941","fix":"58453","desc":"57943"},{"messageId":"57938","fix":"58454","desc":"57940"},{"messageId":"57941","fix":"58455","desc":"57943"},{"messageId":"57938","fix":"58456","desc":"57940"},{"messageId":"57941","fix":"58457","desc":"57943"},{"messageId":"57938","fix":"58458","desc":"57940"},{"messageId":"57941","fix":"58459","desc":"57943"},{"messageId":"57938","fix":"58460","desc":"57940"},{"messageId":"57941","fix":"58461","desc":"57943"},{"messageId":"57938","fix":"58462","desc":"57940"},{"messageId":"57941","fix":"58463","desc":"57943"},{"messageId":"57938","fix":"58464","desc":"57940"},{"messageId":"57941","fix":"58465","desc":"57943"},{"messageId":"57938","fix":"58466","desc":"57940"},{"messageId":"57941","fix":"58467","desc":"57943"},{"messageId":"57938","fix":"58468","desc":"57940"},{"messageId":"57941","fix":"58469","desc":"57943"},{"messageId":"57938","fix":"58470","desc":"57940"},{"messageId":"57941","fix":"58471","desc":"57943"},{"messageId":"57938","fix":"58472","desc":"57940"},{"messageId":"57941","fix":"58473","desc":"57943"},{"messageId":"57938","fix":"58474","desc":"57940"},{"messageId":"57941","fix":"58475","desc":"57943"},{"messageId":"57938","fix":"58476","desc":"57940"},{"messageId":"57941","fix":"58477","desc":"57943"},{"messageId":"57938","fix":"58478","desc":"57940"},{"messageId":"57941","fix":"58479","desc":"57943"},{"messageId":"57938","fix":"58480","desc":"57940"},{"messageId":"57941","fix":"58481","desc":"57943"},{"messageId":"57938","fix":"58482","desc":"57940"},{"messageId":"57941","fix":"58483","desc":"57943"},{"messageId":"57938","fix":"58484","desc":"57940"},{"messageId":"57941","fix":"58485","desc":"57943"},{"messageId":"57938","fix":"58486","desc":"57940"},{"messageId":"57941","fix":"58487","desc":"57943"},{"messageId":"57938","fix":"58488","desc":"57940"},{"messageId":"57941","fix":"58489","desc":"57943"},{"messageId":"57938","fix":"58490","desc":"57940"},{"messageId":"57941","fix":"58491","desc":"57943"},{"messageId":"57938","fix":"58492","desc":"57940"},{"messageId":"57941","fix":"58493","desc":"57943"},{"messageId":"57938","fix":"58494","desc":"57940"},{"messageId":"57941","fix":"58495","desc":"57943"},{"messageId":"57938","fix":"58496","desc":"57940"},{"messageId":"57941","fix":"58497","desc":"57943"},{"messageId":"57938","fix":"58498","desc":"57940"},{"messageId":"57941","fix":"58499","desc":"57943"},{"messageId":"57938","fix":"58500","desc":"57940"},{"messageId":"57941","fix":"58501","desc":"57943"},{"messageId":"57938","fix":"58502","desc":"57940"},{"messageId":"57941","fix":"58503","desc":"57943"},{"messageId":"57938","fix":"58504","desc":"57940"},{"messageId":"57941","fix":"58505","desc":"57943"},{"messageId":"57938","fix":"58506","desc":"57940"},{"messageId":"57941","fix":"58507","desc":"57943"},{"messageId":"57938","fix":"58508","desc":"57940"},{"messageId":"57941","fix":"58509","desc":"57943"},{"messageId":"57938","fix":"58510","desc":"57940"},{"messageId":"57941","fix":"58511","desc":"57943"},{"messageId":"57938","fix":"58512","desc":"57940"},{"messageId":"57941","fix":"58513","desc":"57943"},{"messageId":"57938","fix":"58514","desc":"57940"},{"messageId":"57941","fix":"58515","desc":"57943"},{"messageId":"57938","fix":"58516","desc":"57940"},{"messageId":"57941","fix":"58517","desc":"57943"},{"messageId":"57938","fix":"58518","desc":"57940"},{"messageId":"57941","fix":"58519","desc":"57943"},{"messageId":"57938","fix":"58520","desc":"57940"},{"messageId":"57941","fix":"58521","desc":"57943"},{"messageId":"57938","fix":"58522","desc":"57940"},{"messageId":"57941","fix":"58523","desc":"57943"},{"messageId":"57938","fix":"58524","desc":"57940"},{"messageId":"57941","fix":"58525","desc":"57943"},{"messageId":"57938","fix":"58526","desc":"57940"},{"messageId":"57941","fix":"58527","desc":"57943"},{"messageId":"57938","fix":"58528","desc":"57940"},{"messageId":"57941","fix":"58529","desc":"57943"},{"messageId":"57938","fix":"58530","desc":"57940"},{"messageId":"57941","fix":"58531","desc":"57943"},{"messageId":"57938","fix":"58532","desc":"57940"},{"messageId":"57941","fix":"58533","desc":"57943"},{"messageId":"57938","fix":"58534","desc":"57940"},{"messageId":"57941","fix":"58535","desc":"57943"},{"messageId":"57938","fix":"58536","desc":"57940"},{"messageId":"57941","fix":"58537","desc":"57943"},{"messageId":"57938","fix":"58538","desc":"57940"},{"messageId":"57941","fix":"58539","desc":"57943"},{"messageId":"57938","fix":"58540","desc":"57940"},{"messageId":"57941","fix":"58541","desc":"57943"},{"messageId":"57938","fix":"58542","desc":"57940"},{"messageId":"57941","fix":"58543","desc":"57943"},{"messageId":"57938","fix":"58544","desc":"57940"},{"messageId":"57941","fix":"58545","desc":"57943"},{"messageId":"57938","fix":"58546","desc":"57940"},{"messageId":"57941","fix":"58547","desc":"57943"},{"messageId":"57938","fix":"58548","desc":"57940"},{"messageId":"57941","fix":"58549","desc":"57943"},{"messageId":"57938","fix":"58550","desc":"57940"},{"messageId":"57941","fix":"58551","desc":"57943"},{"messageId":"57938","fix":"58552","desc":"57940"},{"messageId":"57941","fix":"58553","desc":"57943"},{"messageId":"57938","fix":"58554","desc":"57940"},{"messageId":"57941","fix":"58555","desc":"57943"},{"messageId":"57938","fix":"58556","desc":"57940"},{"messageId":"57941","fix":"58557","desc":"57943"},{"messageId":"57938","fix":"58558","desc":"57940"},{"messageId":"57941","fix":"58559","desc":"57943"},{"messageId":"57938","fix":"58560","desc":"57940"},{"messageId":"57941","fix":"58561","desc":"57943"},{"messageId":"57938","fix":"58562","desc":"57940"},{"messageId":"57941","fix":"58563","desc":"57943"},{"messageId":"57938","fix":"58564","desc":"57940"},{"messageId":"57941","fix":"58565","desc":"57943"},{"messageId":"57938","fix":"58566","desc":"57940"},{"messageId":"57941","fix":"58567","desc":"57943"},{"messageId":"57938","fix":"58568","desc":"57940"},{"messageId":"57941","fix":"58569","desc":"57943"},{"messageId":"57938","fix":"58570","desc":"57940"},{"messageId":"57941","fix":"58571","desc":"57943"},{"messageId":"57938","fix":"58572","desc":"57940"},{"messageId":"57941","fix":"58573","desc":"57943"},{"messageId":"57938","fix":"58574","desc":"57940"},{"messageId":"57941","fix":"58575","desc":"57943"},{"messageId":"57938","fix":"58576","desc":"57940"},{"messageId":"57941","fix":"58577","desc":"57943"},{"messageId":"57938","fix":"58578","desc":"57940"},{"messageId":"57941","fix":"58579","desc":"57943"},{"messageId":"57938","fix":"58580","desc":"57940"},{"messageId":"57941","fix":"58581","desc":"57943"},{"messageId":"57938","fix":"58582","desc":"57940"},{"messageId":"57941","fix":"58583","desc":"57943"},{"messageId":"57938","fix":"58584","desc":"57940"},{"messageId":"57941","fix":"58585","desc":"57943"},{"messageId":"57938","fix":"58586","desc":"57940"},{"messageId":"57941","fix":"58587","desc":"57943"},{"messageId":"57938","fix":"58588","desc":"57940"},{"messageId":"57941","fix":"58589","desc":"57943"},{"messageId":"57938","fix":"58590","desc":"57940"},{"messageId":"57941","fix":"58591","desc":"57943"},{"messageId":"57938","fix":"58592","desc":"57940"},{"messageId":"57941","fix":"58593","desc":"57943"},{"messageId":"57938","fix":"58594","desc":"57940"},{"messageId":"57941","fix":"58595","desc":"57943"},{"messageId":"57938","fix":"58596","desc":"57940"},{"messageId":"57941","fix":"58597","desc":"57943"},{"messageId":"57938","fix":"58598","desc":"57940"},{"messageId":"57941","fix":"58599","desc":"57943"},{"messageId":"57938","fix":"58600","desc":"57940"},{"messageId":"57941","fix":"58601","desc":"57943"},{"messageId":"57938","fix":"58602","desc":"57940"},{"messageId":"57941","fix":"58603","desc":"57943"},{"messageId":"57938","fix":"58604","desc":"57940"},{"messageId":"57941","fix":"58605","desc":"57943"},{"messageId":"57938","fix":"58606","desc":"57940"},{"messageId":"57941","fix":"58607","desc":"57943"},{"messageId":"57938","fix":"58608","desc":"57940"},{"messageId":"57941","fix":"58609","desc":"57943"},{"messageId":"57938","fix":"58610","desc":"57940"},{"messageId":"57941","fix":"58611","desc":"57943"},{"messageId":"57938","fix":"58612","desc":"57940"},{"messageId":"57941","fix":"58613","desc":"57943"},{"messageId":"57938","fix":"58614","desc":"57940"},{"messageId":"57941","fix":"58615","desc":"57943"},{"messageId":"57938","fix":"58616","desc":"57940"},{"messageId":"57941","fix":"58617","desc":"57943"},{"messageId":"57938","fix":"58618","desc":"57940"},{"messageId":"57941","fix":"58619","desc":"57943"},{"messageId":"57938","fix":"58620","desc":"57940"},{"messageId":"57941","fix":"58621","desc":"57943"},{"messageId":"57938","fix":"58622","desc":"57940"},{"messageId":"57941","fix":"58623","desc":"57943"},{"messageId":"57938","fix":"58624","desc":"57940"},{"messageId":"57941","fix":"58625","desc":"57943"},{"messageId":"57938","fix":"58626","desc":"57940"},{"messageId":"57941","fix":"58627","desc":"57943"},{"messageId":"57938","fix":"58628","desc":"57940"},{"messageId":"57941","fix":"58629","desc":"57943"},{"messageId":"57938","fix":"58630","desc":"57940"},{"messageId":"57941","fix":"58631","desc":"57943"},{"messageId":"57938","fix":"58632","desc":"57940"},{"messageId":"57941","fix":"58633","desc":"57943"},{"messageId":"57938","fix":"58634","desc":"57940"},{"messageId":"57941","fix":"58635","desc":"57943"},{"messageId":"57938","fix":"58636","desc":"57940"},{"messageId":"57941","fix":"58637","desc":"57943"},{"messageId":"57938","fix":"58638","desc":"57940"},{"messageId":"57941","fix":"58639","desc":"57943"},{"messageId":"57938","fix":"58640","desc":"57940"},{"messageId":"57941","fix":"58641","desc":"57943"},{"messageId":"57938","fix":"58642","desc":"57940"},{"messageId":"57941","fix":"58643","desc":"57943"},{"messageId":"57938","fix":"58644","desc":"57940"},{"messageId":"57941","fix":"58645","desc":"57943"},{"messageId":"57938","fix":"58646","desc":"57940"},{"messageId":"57941","fix":"58647","desc":"57943"},{"messageId":"57938","fix":"58648","desc":"57940"},{"messageId":"57941","fix":"58649","desc":"57943"},{"messageId":"57938","fix":"58650","desc":"57940"},{"messageId":"57941","fix":"58651","desc":"57943"},{"messageId":"57938","fix":"58652","desc":"57940"},{"messageId":"57941","fix":"58653","desc":"57943"},{"messageId":"57938","fix":"58654","desc":"57940"},{"messageId":"57941","fix":"58655","desc":"57943"},{"messageId":"57938","fix":"58656","desc":"57940"},{"messageId":"57941","fix":"58657","desc":"57943"},{"messageId":"57938","fix":"58658","desc":"57940"},{"messageId":"57941","fix":"58659","desc":"57943"},{"messageId":"57938","fix":"58660","desc":"57940"},{"messageId":"57941","fix":"58661","desc":"57943"},{"messageId":"57938","fix":"58662","desc":"57940"},{"messageId":"57941","fix":"58663","desc":"57943"},{"messageId":"57938","fix":"58664","desc":"57940"},{"messageId":"57941","fix":"58665","desc":"57943"},{"messageId":"57938","fix":"58666","desc":"57940"},{"messageId":"57941","fix":"58667","desc":"57943"},{"messageId":"57938","fix":"58668","desc":"57940"},{"messageId":"57941","fix":"58669","desc":"57943"},{"messageId":"57938","fix":"58670","desc":"57940"},{"messageId":"57941","fix":"58671","desc":"57943"},{"messageId":"57938","fix":"58672","desc":"57940"},{"messageId":"57941","fix":"58673","desc":"57943"},{"messageId":"57938","fix":"58674","desc":"57940"},{"messageId":"57941","fix":"58675","desc":"57943"},{"messageId":"57938","fix":"58676","desc":"57940"},{"messageId":"57941","fix":"58677","desc":"57943"},{"messageId":"57938","fix":"58678","desc":"57940"},{"messageId":"57941","fix":"58679","desc":"57943"},{"messageId":"57938","fix":"58680","desc":"57940"},{"messageId":"57941","fix":"58681","desc":"57943"},{"messageId":"57938","fix":"58682","desc":"57940"},{"messageId":"57941","fix":"58683","desc":"57943"},{"messageId":"57938","fix":"58684","desc":"57940"},{"messageId":"57941","fix":"58685","desc":"57943"},{"messageId":"57938","fix":"58686","desc":"57940"},{"messageId":"57941","fix":"58687","desc":"57943"},{"messageId":"57938","fix":"58688","desc":"57940"},{"messageId":"57941","fix":"58689","desc":"57943"},{"messageId":"57938","fix":"58690","desc":"57940"},{"messageId":"57941","fix":"58691","desc":"57943"},{"messageId":"57938","fix":"58692","desc":"57940"},{"messageId":"57941","fix":"58693","desc":"57943"},{"messageId":"57938","fix":"58694","desc":"57940"},{"messageId":"57941","fix":"58695","desc":"57943"},{"messageId":"57938","fix":"58696","desc":"57940"},{"messageId":"57941","fix":"58697","desc":"57943"},{"messageId":"57938","fix":"58698","desc":"57940"},{"messageId":"57941","fix":"58699","desc":"57943"},{"messageId":"57938","fix":"58700","desc":"57940"},{"messageId":"57941","fix":"58701","desc":"57943"},{"messageId":"57938","fix":"58702","desc":"57940"},{"messageId":"57941","fix":"58703","desc":"57943"},{"messageId":"57938","fix":"58704","desc":"57940"},{"messageId":"57941","fix":"58705","desc":"57943"},{"messageId":"57938","fix":"58706","desc":"57940"},{"messageId":"57941","fix":"58707","desc":"57943"},{"messageId":"57938","fix":"58708","desc":"57940"},{"messageId":"57941","fix":"58709","desc":"57943"},{"messageId":"57938","fix":"58710","desc":"57940"},{"messageId":"57941","fix":"58711","desc":"57943"},{"messageId":"57938","fix":"58712","desc":"57940"},{"messageId":"57941","fix":"58713","desc":"57943"},{"messageId":"57938","fix":"58714","desc":"57940"},{"messageId":"57941","fix":"58715","desc":"57943"},{"messageId":"57938","fix":"58716","desc":"57940"},{"messageId":"57941","fix":"58717","desc":"57943"},{"messageId":"57938","fix":"58718","desc":"57940"},{"messageId":"57941","fix":"58719","desc":"57943"},{"messageId":"57938","fix":"58720","desc":"57940"},{"messageId":"57941","fix":"58721","desc":"57943"},{"messageId":"57938","fix":"58722","desc":"57940"},{"messageId":"57941","fix":"58723","desc":"57943"},{"messageId":"57938","fix":"58724","desc":"57940"},{"messageId":"57941","fix":"58725","desc":"57943"},{"messageId":"57938","fix":"58726","desc":"57940"},{"messageId":"57941","fix":"58727","desc":"57943"},{"messageId":"57938","fix":"58728","desc":"57940"},{"messageId":"57941","fix":"58729","desc":"57943"},{"messageId":"57938","fix":"58730","desc":"57940"},{"messageId":"57941","fix":"58731","desc":"57943"},{"messageId":"57938","fix":"58732","desc":"57940"},{"messageId":"57941","fix":"58733","desc":"57943"},{"messageId":"57938","fix":"58734","desc":"57940"},{"messageId":"57941","fix":"58735","desc":"57943"},{"messageId":"57938","fix":"58736","desc":"57940"},{"messageId":"57941","fix":"58737","desc":"57943"},{"messageId":"57938","fix":"58738","desc":"57940"},{"messageId":"57941","fix":"58739","desc":"57943"},{"messageId":"57938","fix":"58740","desc":"57940"},{"messageId":"57941","fix":"58741","desc":"57943"},{"messageId":"57938","fix":"58742","desc":"57940"},{"messageId":"57941","fix":"58743","desc":"57943"},{"messageId":"57938","fix":"58744","desc":"57940"},{"messageId":"57941","fix":"58745","desc":"57943"},{"messageId":"57938","fix":"58746","desc":"57940"},{"messageId":"57941","fix":"58747","desc":"57943"},{"messageId":"57938","fix":"58748","desc":"57940"},{"messageId":"57941","fix":"58749","desc":"57943"},{"messageId":"57938","fix":"58750","desc":"57940"},{"messageId":"57941","fix":"58751","desc":"57943"},{"messageId":"57938","fix":"58752","desc":"57940"},{"messageId":"57941","fix":"58753","desc":"57943"},{"messageId":"57938","fix":"58754","desc":"57940"},{"messageId":"57941","fix":"58755","desc":"57943"},{"messageId":"57938","fix":"58756","desc":"57940"},{"messageId":"57941","fix":"58757","desc":"57943"},{"messageId":"57938","fix":"58758","desc":"57940"},{"messageId":"57941","fix":"58759","desc":"57943"},{"messageId":"57938","fix":"58760","desc":"57940"},{"messageId":"57941","fix":"58761","desc":"57943"},{"messageId":"57938","fix":"58762","desc":"57940"},{"messageId":"57941","fix":"58763","desc":"57943"},{"messageId":"57938","fix":"58764","desc":"57940"},{"messageId":"57941","fix":"58765","desc":"57943"},{"messageId":"57938","fix":"58766","desc":"57940"},{"messageId":"57941","fix":"58767","desc":"57943"},{"messageId":"57938","fix":"58768","desc":"57940"},{"messageId":"57941","fix":"58769","desc":"57943"},{"messageId":"57938","fix":"58770","desc":"57940"},{"messageId":"57941","fix":"58771","desc":"57943"},{"messageId":"57938","fix":"58772","desc":"57940"},{"messageId":"57941","fix":"58773","desc":"57943"},{"messageId":"57938","fix":"58774","desc":"57940"},{"messageId":"57941","fix":"58775","desc":"57943"},{"messageId":"57938","fix":"58776","desc":"57940"},{"messageId":"57941","fix":"58777","desc":"57943"},{"messageId":"57938","fix":"58778","desc":"57940"},{"messageId":"57941","fix":"58779","desc":"57943"},{"messageId":"57938","fix":"58780","desc":"57940"},{"messageId":"57941","fix":"58781","desc":"57943"},{"messageId":"57938","fix":"58782","desc":"57940"},{"messageId":"57941","fix":"58783","desc":"57943"},{"messageId":"57938","fix":"58784","desc":"57940"},{"messageId":"57941","fix":"58785","desc":"57943"},{"messageId":"57938","fix":"58786","desc":"57940"},{"messageId":"57941","fix":"58787","desc":"57943"},{"messageId":"57938","fix":"58788","desc":"57940"},{"messageId":"57941","fix":"58789","desc":"57943"},{"messageId":"57938","fix":"58790","desc":"57940"},{"messageId":"57941","fix":"58791","desc":"57943"},{"messageId":"57938","fix":"58792","desc":"57940"},{"messageId":"57941","fix":"58793","desc":"57943"},{"messageId":"57938","fix":"58794","desc":"57940"},{"messageId":"57941","fix":"58795","desc":"57943"},{"messageId":"57938","fix":"58796","desc":"57940"},{"messageId":"57941","fix":"58797","desc":"57943"},{"messageId":"57938","fix":"58798","desc":"57940"},{"messageId":"57941","fix":"58799","desc":"57943"},{"messageId":"57938","fix":"58800","desc":"57940"},{"messageId":"57941","fix":"58801","desc":"57943"},{"messageId":"57938","fix":"58802","desc":"57940"},{"messageId":"57941","fix":"58803","desc":"57943"},{"messageId":"57938","fix":"58804","desc":"57940"},{"messageId":"57941","fix":"58805","desc":"57943"},{"messageId":"57938","fix":"58806","desc":"57940"},{"messageId":"57941","fix":"58807","desc":"57943"},{"messageId":"57938","fix":"58808","desc":"57940"},{"messageId":"57941","fix":"58809","desc":"57943"},{"messageId":"57938","fix":"58810","desc":"57940"},{"messageId":"57941","fix":"58811","desc":"57943"},{"messageId":"57938","fix":"58812","desc":"57940"},{"messageId":"57941","fix":"58813","desc":"57943"},{"messageId":"57938","fix":"58814","desc":"57940"},{"messageId":"57941","fix":"58815","desc":"57943"},{"messageId":"57938","fix":"58816","desc":"57940"},{"messageId":"57941","fix":"58817","desc":"57943"},{"messageId":"57938","fix":"58818","desc":"57940"},{"messageId":"57941","fix":"58819","desc":"57943"},{"messageId":"57938","fix":"58820","desc":"57940"},{"messageId":"57941","fix":"58821","desc":"57943"},{"messageId":"57938","fix":"58822","desc":"57940"},{"messageId":"57941","fix":"58823","desc":"57943"},{"messageId":"57938","fix":"58824","desc":"57940"},{"messageId":"57941","fix":"58825","desc":"57943"},{"messageId":"57938","fix":"58826","desc":"57940"},{"messageId":"57941","fix":"58827","desc":"57943"},{"messageId":"57938","fix":"58828","desc":"57940"},{"messageId":"57941","fix":"58829","desc":"57943"},{"messageId":"57938","fix":"58830","desc":"57940"},{"messageId":"57941","fix":"58831","desc":"57943"},{"messageId":"57938","fix":"58832","desc":"57940"},{"messageId":"57941","fix":"58833","desc":"57943"},{"messageId":"57938","fix":"58834","desc":"57940"},{"messageId":"57941","fix":"58835","desc":"57943"},{"messageId":"57938","fix":"58836","desc":"57940"},{"messageId":"57941","fix":"58837","desc":"57943"},{"messageId":"57938","fix":"58838","desc":"57940"},{"messageId":"57941","fix":"58839","desc":"57943"},{"messageId":"57938","fix":"58840","desc":"57940"},{"messageId":"57941","fix":"58841","desc":"57943"},{"messageId":"57938","fix":"58842","desc":"57940"},{"messageId":"57941","fix":"58843","desc":"57943"},{"messageId":"57938","fix":"58844","desc":"57940"},{"messageId":"57941","fix":"58845","desc":"57943"},{"messageId":"57938","fix":"58846","desc":"57940"},{"messageId":"57941","fix":"58847","desc":"57943"},{"messageId":"57938","fix":"58848","desc":"57940"},{"messageId":"57941","fix":"58849","desc":"57943"},{"messageId":"57938","fix":"58850","desc":"57940"},{"messageId":"57941","fix":"58851","desc":"57943"},{"messageId":"57938","fix":"58852","desc":"57940"},{"messageId":"57941","fix":"58853","desc":"57943"},{"messageId":"57938","fix":"58854","desc":"57940"},{"messageId":"57941","fix":"58855","desc":"57943"},{"messageId":"57938","fix":"58856","desc":"57940"},{"messageId":"57941","fix":"58857","desc":"57943"},{"messageId":"57938","fix":"58858","desc":"57940"},{"messageId":"57941","fix":"58859","desc":"57943"},{"messageId":"57938","fix":"58860","desc":"57940"},{"messageId":"57941","fix":"58861","desc":"57943"},{"messageId":"57938","fix":"58862","desc":"57940"},{"messageId":"57941","fix":"58863","desc":"57943"},{"messageId":"57938","fix":"58864","desc":"57940"},{"messageId":"57941","fix":"58865","desc":"57943"},{"messageId":"57938","fix":"58866","desc":"57940"},{"messageId":"57941","fix":"58867","desc":"57943"},{"messageId":"57938","fix":"58868","desc":"57940"},{"messageId":"57941","fix":"58869","desc":"57943"},{"messageId":"57938","fix":"58870","desc":"57940"},{"messageId":"57941","fix":"58871","desc":"57943"},{"messageId":"57938","fix":"58872","desc":"57940"},{"messageId":"57941","fix":"58873","desc":"57943"},{"messageId":"57938","fix":"58874","desc":"57940"},{"messageId":"57941","fix":"58875","desc":"57943"},{"messageId":"57938","fix":"58876","desc":"57940"},{"messageId":"57941","fix":"58877","desc":"57943"},{"messageId":"57938","fix":"58878","desc":"57940"},{"messageId":"57941","fix":"58879","desc":"57943"},{"messageId":"57938","fix":"58880","desc":"57940"},{"messageId":"57941","fix":"58881","desc":"57943"},{"messageId":"57938","fix":"58882","desc":"57940"},{"messageId":"57941","fix":"58883","desc":"57943"},{"messageId":"57938","fix":"58884","desc":"57940"},{"messageId":"57941","fix":"58885","desc":"57943"},{"messageId":"57938","fix":"58886","desc":"57940"},{"messageId":"57941","fix":"58887","desc":"57943"},{"messageId":"57938","fix":"58888","desc":"57940"},{"messageId":"57941","fix":"58889","desc":"57943"},{"messageId":"57938","fix":"58890","desc":"57940"},{"messageId":"57941","fix":"58891","desc":"57943"},{"messageId":"57938","fix":"58892","desc":"57940"},{"messageId":"57941","fix":"58893","desc":"57943"},{"messageId":"57938","fix":"58894","desc":"57940"},{"messageId":"57941","fix":"58895","desc":"57943"},{"messageId":"57938","fix":"58896","desc":"57940"},{"messageId":"57941","fix":"58897","desc":"57943"},{"messageId":"57938","fix":"58898","desc":"57940"},{"messageId":"57941","fix":"58899","desc":"57943"},{"messageId":"57938","fix":"58900","desc":"57940"},{"messageId":"57941","fix":"58901","desc":"57943"},{"messageId":"57938","fix":"58902","desc":"57940"},{"messageId":"57941","fix":"58903","desc":"57943"},{"messageId":"57938","fix":"58904","desc":"57940"},{"messageId":"57941","fix":"58905","desc":"57943"},{"messageId":"57938","fix":"58906","desc":"57940"},{"messageId":"57941","fix":"58907","desc":"57943"},{"messageId":"57938","fix":"58908","desc":"57940"},{"messageId":"57941","fix":"58909","desc":"57943"},{"messageId":"57938","fix":"58910","desc":"57940"},{"messageId":"57941","fix":"58911","desc":"57943"},{"messageId":"57938","fix":"58912","desc":"57940"},{"messageId":"57941","fix":"58913","desc":"57943"},{"messageId":"57938","fix":"58914","desc":"57940"},{"messageId":"57941","fix":"58915","desc":"57943"},{"messageId":"57938","fix":"58916","desc":"57940"},{"messageId":"57941","fix":"58917","desc":"57943"},{"messageId":"57938","fix":"58918","desc":"57940"},{"messageId":"57941","fix":"58919","desc":"57943"},{"messageId":"57938","fix":"58920","desc":"57940"},{"messageId":"57941","fix":"58921","desc":"57943"},{"messageId":"57938","fix":"58922","desc":"57940"},{"messageId":"57941","fix":"58923","desc":"57943"},{"messageId":"57938","fix":"58924","desc":"57940"},{"messageId":"57941","fix":"58925","desc":"57943"},{"messageId":"57938","fix":"58926","desc":"57940"},{"messageId":"57941","fix":"58927","desc":"57943"},{"messageId":"57938","fix":"58928","desc":"57940"},{"messageId":"57941","fix":"58929","desc":"57943"},{"messageId":"57938","fix":"58930","desc":"57940"},{"messageId":"57941","fix":"58931","desc":"57943"},{"messageId":"57938","fix":"58932","desc":"57940"},{"messageId":"57941","fix":"58933","desc":"57943"},{"messageId":"57938","fix":"58934","desc":"57940"},{"messageId":"57941","fix":"58935","desc":"57943"},{"messageId":"57938","fix":"58936","desc":"57940"},{"messageId":"57941","fix":"58937","desc":"57943"},{"messageId":"57938","fix":"58938","desc":"57940"},{"messageId":"57941","fix":"58939","desc":"57943"},{"messageId":"57938","fix":"58940","desc":"57940"},{"messageId":"57941","fix":"58941","desc":"57943"},{"messageId":"57938","fix":"58942","desc":"57940"},{"messageId":"57941","fix":"58943","desc":"57943"},{"messageId":"57938","fix":"58944","desc":"57940"},{"messageId":"57941","fix":"58945","desc":"57943"},{"messageId":"57938","fix":"58946","desc":"57940"},{"messageId":"57941","fix":"58947","desc":"57943"},{"messageId":"57938","fix":"58948","desc":"57940"},{"messageId":"57941","fix":"58949","desc":"57943"},{"messageId":"57938","fix":"58950","desc":"57940"},{"messageId":"57941","fix":"58951","desc":"57943"},{"messageId":"57938","fix":"58952","desc":"57940"},{"messageId":"57941","fix":"58953","desc":"57943"},{"messageId":"57938","fix":"58954","desc":"57940"},{"messageId":"57941","fix":"58955","desc":"57943"},{"messageId":"57938","fix":"58956","desc":"57940"},{"messageId":"57941","fix":"58957","desc":"57943"},{"messageId":"57938","fix":"58958","desc":"57940"},{"messageId":"57941","fix":"58959","desc":"57943"},{"messageId":"57938","fix":"58960","desc":"57940"},{"messageId":"57941","fix":"58961","desc":"57943"},{"messageId":"57938","fix":"58962","desc":"57940"},{"messageId":"57941","fix":"58963","desc":"57943"},{"messageId":"57938","fix":"58964","desc":"57940"},{"messageId":"57941","fix":"58965","desc":"57943"},{"messageId":"57938","fix":"58966","desc":"57940"},{"messageId":"57941","fix":"58967","desc":"57943"},{"messageId":"57938","fix":"58968","desc":"57940"},{"messageId":"57941","fix":"58969","desc":"57943"},{"messageId":"57938","fix":"58970","desc":"57940"},{"messageId":"57941","fix":"58971","desc":"57943"},{"messageId":"57938","fix":"58972","desc":"57940"},{"messageId":"57941","fix":"58973","desc":"57943"},{"messageId":"57938","fix":"58974","desc":"57940"},{"messageId":"57941","fix":"58975","desc":"57943"},{"messageId":"57938","fix":"58976","desc":"57940"},{"messageId":"57941","fix":"58977","desc":"57943"},{"messageId":"57938","fix":"58978","desc":"57940"},{"messageId":"57941","fix":"58979","desc":"57943"},{"messageId":"57938","fix":"58980","desc":"57940"},{"messageId":"57941","fix":"58981","desc":"57943"},{"messageId":"57938","fix":"58982","desc":"57940"},{"messageId":"57941","fix":"58983","desc":"57943"},{"messageId":"57938","fix":"58984","desc":"57940"},{"messageId":"57941","fix":"58985","desc":"57943"},{"messageId":"57938","fix":"58986","desc":"57940"},{"messageId":"57941","fix":"58987","desc":"57943"},{"messageId":"57938","fix":"58988","desc":"57940"},{"messageId":"57941","fix":"58989","desc":"57943"},{"messageId":"57938","fix":"58990","desc":"57940"},{"messageId":"57941","fix":"58991","desc":"57943"},{"messageId":"57938","fix":"58992","desc":"57940"},{"messageId":"57941","fix":"58993","desc":"57943"},{"messageId":"57938","fix":"58994","desc":"57940"},{"messageId":"57941","fix":"58995","desc":"57943"},{"messageId":"57938","fix":"58996","desc":"57940"},{"messageId":"57941","fix":"58997","desc":"57943"},{"messageId":"57938","fix":"58998","desc":"57940"},{"messageId":"57941","fix":"58999","desc":"57943"},{"messageId":"57938","fix":"59000","desc":"57940"},{"messageId":"57941","fix":"59001","desc":"57943"},{"messageId":"57938","fix":"59002","desc":"57940"},{"messageId":"57941","fix":"59003","desc":"57943"},{"messageId":"57938","fix":"59004","desc":"57940"},{"messageId":"57941","fix":"59005","desc":"57943"},{"messageId":"57938","fix":"59006","desc":"57940"},{"messageId":"57941","fix":"59007","desc":"57943"},{"messageId":"57938","fix":"59008","desc":"57940"},{"messageId":"57941","fix":"59009","desc":"57943"},{"messageId":"57938","fix":"59010","desc":"57940"},{"messageId":"57941","fix":"59011","desc":"57943"},{"messageId":"57938","fix":"59012","desc":"57940"},{"messageId":"57941","fix":"59013","desc":"57943"},{"messageId":"57938","fix":"59014","desc":"57940"},{"messageId":"57941","fix":"59015","desc":"57943"},{"messageId":"57938","fix":"59016","desc":"57940"},{"messageId":"57941","fix":"59017","desc":"57943"},{"messageId":"57938","fix":"59018","desc":"57940"},{"messageId":"57941","fix":"59019","desc":"57943"},{"messageId":"57938","fix":"59020","desc":"57940"},{"messageId":"57941","fix":"59021","desc":"57943"},{"messageId":"57938","fix":"59022","desc":"57940"},{"messageId":"57941","fix":"59023","desc":"57943"},{"messageId":"57938","fix":"59024","desc":"57940"},{"messageId":"57941","fix":"59025","desc":"57943"},{"messageId":"57938","fix":"59026","desc":"57940"},{"messageId":"57941","fix":"59027","desc":"57943"},{"messageId":"57938","fix":"59028","desc":"57940"},{"messageId":"57941","fix":"59029","desc":"57943"},{"messageId":"57938","fix":"59030","desc":"57940"},{"messageId":"57941","fix":"59031","desc":"57943"},{"messageId":"57938","fix":"59032","desc":"57940"},{"messageId":"57941","fix":"59033","desc":"57943"},{"kind":"58246","justification":"58247"},{"messageId":"57938","fix":"59034","desc":"57940"},{"messageId":"57941","fix":"59035","desc":"57943"},{"messageId":"57938","fix":"59036","desc":"57940"},{"messageId":"57941","fix":"59037","desc":"57943"},{"messageId":"57938","fix":"59038","desc":"57940"},{"messageId":"57941","fix":"59039","desc":"57943"},{"messageId":"57938","fix":"59040","desc":"57940"},{"messageId":"57941","fix":"59041","desc":"57943"},{"messageId":"57938","fix":"59042","desc":"57940"},{"messageId":"57941","fix":"59043","desc":"57943"},{"messageId":"57938","fix":"59044","desc":"57940"},{"messageId":"57941","fix":"59045","desc":"57943"},{"messageId":"57938","fix":"59046","desc":"57940"},{"messageId":"57941","fix":"59047","desc":"57943"},{"messageId":"57938","fix":"59048","desc":"57940"},{"messageId":"57941","fix":"59049","desc":"57943"},{"messageId":"57938","fix":"59050","desc":"57940"},{"messageId":"57941","fix":"59051","desc":"57943"},{"messageId":"57938","fix":"59052","desc":"57940"},{"messageId":"57941","fix":"59053","desc":"57943"},{"messageId":"57938","fix":"59054","desc":"57940"},{"messageId":"57941","fix":"59055","desc":"57943"},{"messageId":"57938","fix":"59056","desc":"57940"},{"messageId":"57941","fix":"59057","desc":"57943"},{"messageId":"57938","fix":"59058","desc":"57940"},{"messageId":"57941","fix":"59059","desc":"57943"},{"messageId":"57938","fix":"59060","desc":"57940"},{"messageId":"57941","fix":"59061","desc":"57943"},{"messageId":"57938","fix":"59062","desc":"57940"},{"messageId":"57941","fix":"59063","desc":"57943"},{"messageId":"57938","fix":"59064","desc":"57940"},{"messageId":"57941","fix":"59065","desc":"57943"},{"messageId":"57938","fix":"59066","desc":"57940"},{"messageId":"57941","fix":"59067","desc":"57943"},{"messageId":"57938","fix":"59068","desc":"57940"},{"messageId":"57941","fix":"59069","desc":"57943"},{"messageId":"57938","fix":"59070","desc":"57940"},{"messageId":"57941","fix":"59071","desc":"57943"},{"messageId":"57938","fix":"59072","desc":"57940"},{"messageId":"57941","fix":"59073","desc":"57943"},{"messageId":"57938","fix":"59074","desc":"57940"},{"messageId":"57941","fix":"59075","desc":"57943"},{"messageId":"57938","fix":"59076","desc":"57940"},{"messageId":"57941","fix":"59077","desc":"57943"},{"messageId":"57938","fix":"59078","desc":"57940"},{"messageId":"57941","fix":"59079","desc":"57943"},{"messageId":"57938","fix":"59080","desc":"57940"},{"messageId":"57941","fix":"59081","desc":"57943"},{"messageId":"57938","fix":"59082","desc":"57940"},{"messageId":"57941","fix":"59083","desc":"57943"},{"messageId":"57938","fix":"59084","desc":"57940"},{"messageId":"57941","fix":"59085","desc":"57943"},{"messageId":"57938","fix":"59086","desc":"57940"},{"messageId":"57941","fix":"59087","desc":"57943"},{"messageId":"57938","fix":"59088","desc":"57940"},{"messageId":"57941","fix":"59089","desc":"57943"},{"messageId":"57938","fix":"59090","desc":"57940"},{"messageId":"57941","fix":"59091","desc":"57943"},{"messageId":"57938","fix":"59092","desc":"57940"},{"messageId":"57941","fix":"59093","desc":"57943"},{"messageId":"57938","fix":"59094","desc":"57940"},{"messageId":"57941","fix":"59095","desc":"57943"},{"messageId":"57938","fix":"59096","desc":"57940"},{"messageId":"57941","fix":"59097","desc":"57943"},{"messageId":"57938","fix":"59098","desc":"57940"},{"messageId":"57941","fix":"59099","desc":"57943"},{"kind":"58246","justification":"58247"},{"messageId":"57938","fix":"59100","desc":"57940"},{"messageId":"57941","fix":"59101","desc":"57943"},{"messageId":"57938","fix":"59102","desc":"57940"},{"messageId":"57941","fix":"59103","desc":"57943"},{"messageId":"57938","fix":"59104","desc":"57940"},{"messageId":"57941","fix":"59105","desc":"57943"},{"messageId":"57938","fix":"59106","desc":"57940"},{"messageId":"57941","fix":"59107","desc":"57943"},{"messageId":"57938","fix":"59108","desc":"57940"},{"messageId":"57941","fix":"59109","desc":"57943"},{"messageId":"57938","fix":"59110","desc":"57940"},{"messageId":"57941","fix":"59111","desc":"57943"},{"messageId":"57938","fix":"59112","desc":"57940"},{"messageId":"57941","fix":"59113","desc":"57943"},{"messageId":"57938","fix":"59114","desc":"57940"},{"messageId":"57941","fix":"59115","desc":"57943"},{"messageId":"57938","fix":"59116","desc":"57940"},{"messageId":"57941","fix":"59117","desc":"57943"},{"messageId":"57938","fix":"59118","desc":"57940"},{"messageId":"57941","fix":"59119","desc":"57943"},{"messageId":"57938","fix":"59120","desc":"57940"},{"messageId":"57941","fix":"59121","desc":"57943"},{"messageId":"57938","fix":"59122","desc":"57940"},{"messageId":"57941","fix":"59123","desc":"57943"},{"messageId":"57938","fix":"59124","desc":"57940"},{"messageId":"57941","fix":"59125","desc":"57943"},{"messageId":"57938","fix":"59126","desc":"57940"},{"messageId":"57941","fix":"59127","desc":"57943"},{"messageId":"57938","fix":"59128","desc":"57940"},{"messageId":"57941","fix":"59129","desc":"57943"},{"messageId":"57938","fix":"59130","desc":"57940"},{"messageId":"57941","fix":"59131","desc":"57943"},{"messageId":"57938","fix":"59132","desc":"57940"},{"messageId":"57941","fix":"59133","desc":"57943"},{"messageId":"57938","fix":"59134","desc":"57940"},{"messageId":"57941","fix":"59135","desc":"57943"},{"messageId":"57938","fix":"59136","desc":"57940"},{"messageId":"57941","fix":"59137","desc":"57943"},{"messageId":"57938","fix":"59138","desc":"57940"},{"messageId":"57941","fix":"59139","desc":"57943"},{"messageId":"57938","fix":"59140","desc":"57940"},{"messageId":"57941","fix":"59141","desc":"57943"},{"messageId":"57938","fix":"59142","desc":"57940"},{"messageId":"57941","fix":"59143","desc":"57943"},{"messageId":"57938","fix":"59144","desc":"57940"},{"messageId":"57941","fix":"59145","desc":"57943"},{"messageId":"57938","fix":"59146","desc":"57940"},{"messageId":"57941","fix":"59147","desc":"57943"},{"messageId":"57938","fix":"59148","desc":"57940"},{"messageId":"57941","fix":"59149","desc":"57943"},{"messageId":"57938","fix":"59150","desc":"57940"},{"messageId":"57941","fix":"59151","desc":"57943"},{"messageId":"57938","fix":"59152","desc":"57940"},{"messageId":"57941","fix":"59153","desc":"57943"},{"messageId":"57938","fix":"59154","desc":"57940"},{"messageId":"57941","fix":"59155","desc":"57943"},{"messageId":"57938","fix":"59156","desc":"57940"},{"messageId":"57941","fix":"59157","desc":"57943"},{"messageId":"57938","fix":"59158","desc":"57940"},{"messageId":"57941","fix":"59159","desc":"57943"},{"messageId":"57938","fix":"59160","desc":"57940"},{"messageId":"57941","fix":"59161","desc":"57943"},{"messageId":"57938","fix":"59162","desc":"57940"},{"messageId":"57941","fix":"59163","desc":"57943"},{"messageId":"57938","fix":"59164","desc":"57940"},{"messageId":"57941","fix":"59165","desc":"57943"},{"messageId":"57938","fix":"59166","desc":"57940"},{"messageId":"57941","fix":"59167","desc":"57943"},{"messageId":"57938","fix":"59168","desc":"57940"},{"messageId":"57941","fix":"59169","desc":"57943"},{"messageId":"57938","fix":"59170","desc":"57940"},{"messageId":"57941","fix":"59171","desc":"57943"},{"messageId":"57938","fix":"59172","desc":"57940"},{"messageId":"57941","fix":"59173","desc":"57943"},{"messageId":"57938","fix":"59174","desc":"57940"},{"messageId":"57941","fix":"59175","desc":"57943"},{"messageId":"57938","fix":"59176","desc":"57940"},{"messageId":"57941","fix":"59177","desc":"57943"},{"messageId":"57938","fix":"59178","desc":"57940"},{"messageId":"57941","fix":"59179","desc":"57943"},{"messageId":"57938","fix":"59180","desc":"57940"},{"messageId":"57941","fix":"59181","desc":"57943"},{"messageId":"57938","fix":"59182","desc":"57940"},{"messageId":"57941","fix":"59183","desc":"57943"},{"messageId":"57938","fix":"59184","desc":"57940"},{"messageId":"57941","fix":"59185","desc":"57943"},{"messageId":"57938","fix":"59186","desc":"57940"},{"messageId":"57941","fix":"59187","desc":"57943"},{"messageId":"57938","fix":"59188","desc":"57940"},{"messageId":"57941","fix":"59189","desc":"57943"},{"messageId":"57938","fix":"59190","desc":"57940"},{"messageId":"57941","fix":"59191","desc":"57943"},{"messageId":"57938","fix":"59192","desc":"57940"},{"messageId":"57941","fix":"59193","desc":"57943"},{"messageId":"57938","fix":"59194","desc":"57940"},{"messageId":"57941","fix":"59195","desc":"57943"},{"messageId":"57938","fix":"59196","desc":"57940"},{"messageId":"57941","fix":"59197","desc":"57943"},{"messageId":"57938","fix":"59198","desc":"57940"},{"messageId":"57941","fix":"59199","desc":"57943"},{"messageId":"57938","fix":"59200","desc":"57940"},{"messageId":"57941","fix":"59201","desc":"57943"},{"messageId":"57938","fix":"59202","desc":"57940"},{"messageId":"57941","fix":"59203","desc":"57943"},{"messageId":"57938","fix":"59204","desc":"57940"},{"messageId":"57941","fix":"59205","desc":"57943"},{"messageId":"57938","fix":"59206","desc":"57940"},{"messageId":"57941","fix":"59207","desc":"57943"},{"messageId":"57938","fix":"59208","desc":"57940"},{"messageId":"57941","fix":"59209","desc":"57943"},{"messageId":"57938","fix":"59210","desc":"57940"},{"messageId":"57941","fix":"59211","desc":"57943"},{"messageId":"57938","fix":"59212","desc":"57940"},{"messageId":"57941","fix":"59213","desc":"57943"},{"messageId":"57938","fix":"59214","desc":"57940"},{"messageId":"57941","fix":"59215","desc":"57943"},{"messageId":"57938","fix":"59216","desc":"57940"},{"messageId":"57941","fix":"59217","desc":"57943"},{"messageId":"57938","fix":"59218","desc":"57940"},{"messageId":"57941","fix":"59219","desc":"57943"},{"messageId":"57938","fix":"59220","desc":"57940"},{"messageId":"57941","fix":"59221","desc":"57943"},{"messageId":"57938","fix":"59222","desc":"57940"},{"messageId":"57941","fix":"59223","desc":"57943"},{"messageId":"57938","fix":"59224","desc":"57940"},{"messageId":"57941","fix":"59225","desc":"57943"},{"messageId":"57938","fix":"59226","desc":"57940"},{"messageId":"57941","fix":"59227","desc":"57943"},{"messageId":"57938","fix":"59228","desc":"57940"},{"messageId":"57941","fix":"59229","desc":"57943"},{"messageId":"57938","fix":"59230","desc":"57940"},{"messageId":"57941","fix":"59231","desc":"57943"},{"messageId":"57938","fix":"59232","desc":"57940"},{"messageId":"57941","fix":"59233","desc":"57943"},{"messageId":"57938","fix":"59234","desc":"57940"},{"messageId":"57941","fix":"59235","desc":"57943"},{"messageId":"57938","fix":"59236","desc":"57940"},{"messageId":"57941","fix":"59237","desc":"57943"},{"messageId":"57938","fix":"59238","desc":"57940"},{"messageId":"57941","fix":"59239","desc":"57943"},{"messageId":"57938","fix":"59240","desc":"57940"},{"messageId":"57941","fix":"59241","desc":"57943"},{"messageId":"57938","fix":"59242","desc":"57940"},{"messageId":"57941","fix":"59243","desc":"57943"},{"messageId":"57938","fix":"59244","desc":"57940"},{"messageId":"57941","fix":"59245","desc":"57943"},{"messageId":"57938","fix":"59246","desc":"57940"},{"messageId":"57941","fix":"59247","desc":"57943"},{"messageId":"57938","fix":"59248","desc":"57940"},{"messageId":"57941","fix":"59249","desc":"57943"},{"messageId":"57938","fix":"59250","desc":"57940"},{"messageId":"57941","fix":"59251","desc":"57943"},{"messageId":"57938","fix":"59252","desc":"57940"},{"messageId":"57941","fix":"59253","desc":"57943"},{"messageId":"57938","fix":"59254","desc":"57940"},{"messageId":"57941","fix":"59255","desc":"57943"},{"messageId":"57938","fix":"59256","desc":"57940"},{"messageId":"57941","fix":"59257","desc":"57943"},{"messageId":"57938","fix":"59258","desc":"57940"},{"messageId":"57941","fix":"59259","desc":"57943"},{"messageId":"57938","fix":"59260","desc":"57940"},{"messageId":"57941","fix":"59261","desc":"57943"},{"messageId":"57938","fix":"59262","desc":"57940"},{"messageId":"57941","fix":"59263","desc":"57943"},{"messageId":"57938","fix":"59264","desc":"57940"},{"messageId":"57941","fix":"59265","desc":"57943"},{"messageId":"57938","fix":"59266","desc":"57940"},{"messageId":"57941","fix":"59267","desc":"57943"},{"messageId":"57938","fix":"59268","desc":"57940"},{"messageId":"57941","fix":"59269","desc":"57943"},{"messageId":"57938","fix":"59270","desc":"57940"},{"messageId":"57941","fix":"59271","desc":"57943"},{"messageId":"57938","fix":"59272","desc":"57940"},{"messageId":"57941","fix":"59273","desc":"57943"},{"messageId":"57938","fix":"59274","desc":"57940"},{"messageId":"57941","fix":"59275","desc":"57943"},{"messageId":"57938","fix":"59276","desc":"57940"},{"messageId":"57941","fix":"59277","desc":"57943"},{"messageId":"57938","fix":"59278","desc":"57940"},{"messageId":"57941","fix":"59279","desc":"57943"},{"messageId":"57938","fix":"59280","desc":"57940"},{"messageId":"57941","fix":"59281","desc":"57943"},{"messageId":"57938","fix":"59282","desc":"57940"},{"messageId":"57941","fix":"59283","desc":"57943"},{"messageId":"57938","fix":"59284","desc":"57940"},{"messageId":"57941","fix":"59285","desc":"57943"},{"messageId":"57938","fix":"59286","desc":"57940"},{"messageId":"57941","fix":"59287","desc":"57943"},{"messageId":"57938","fix":"59288","desc":"57940"},{"messageId":"57941","fix":"59289","desc":"57943"},{"messageId":"57938","fix":"59290","desc":"57940"},{"messageId":"57941","fix":"59291","desc":"57943"},{"messageId":"57938","fix":"59292","desc":"57940"},{"messageId":"57941","fix":"59293","desc":"57943"},{"messageId":"57938","fix":"59294","desc":"57940"},{"messageId":"57941","fix":"59295","desc":"57943"},{"messageId":"57938","fix":"59296","desc":"57940"},{"messageId":"57941","fix":"59297","desc":"57943"},{"messageId":"57938","fix":"59298","desc":"57940"},{"messageId":"57941","fix":"59299","desc":"57943"},{"messageId":"57938","fix":"59300","desc":"57940"},{"messageId":"57941","fix":"59301","desc":"57943"},{"messageId":"57938","fix":"59302","desc":"57940"},{"messageId":"57941","fix":"59303","desc":"57943"},{"messageId":"57938","fix":"59304","desc":"57940"},{"messageId":"57941","fix":"59305","desc":"57943"},{"messageId":"57938","fix":"59306","desc":"57940"},{"messageId":"57941","fix":"59307","desc":"57943"},{"messageId":"57938","fix":"59308","desc":"57940"},{"messageId":"57941","fix":"59309","desc":"57943"},{"messageId":"57938","fix":"59310","desc":"57940"},{"messageId":"57941","fix":"59311","desc":"57943"},{"messageId":"57938","fix":"59312","desc":"57940"},{"messageId":"57941","fix":"59313","desc":"57943"},{"messageId":"57938","fix":"59314","desc":"57940"},{"messageId":"57941","fix":"59315","desc":"57943"},{"messageId":"57938","fix":"59316","desc":"57940"},{"messageId":"57941","fix":"59317","desc":"57943"},{"messageId":"57938","fix":"59318","desc":"57940"},{"messageId":"57941","fix":"59319","desc":"57943"},{"messageId":"57938","fix":"59320","desc":"57940"},{"messageId":"57941","fix":"59321","desc":"57943"},{"messageId":"57938","fix":"59322","desc":"57940"},{"messageId":"57941","fix":"59323","desc":"57943"},{"messageId":"57938","fix":"59324","desc":"57940"},{"messageId":"57941","fix":"59325","desc":"57943"},{"messageId":"57938","fix":"59326","desc":"57940"},{"messageId":"57941","fix":"59327","desc":"57943"},{"messageId":"57938","fix":"59328","desc":"57940"},{"messageId":"57941","fix":"59329","desc":"57943"},{"messageId":"57938","fix":"59330","desc":"57940"},{"messageId":"57941","fix":"59331","desc":"57943"},{"messageId":"57938","fix":"59332","desc":"57940"},{"messageId":"57941","fix":"59333","desc":"57943"},{"messageId":"57938","fix":"59334","desc":"57940"},{"messageId":"57941","fix":"59335","desc":"57943"},{"messageId":"57938","fix":"59336","desc":"57940"},{"messageId":"57941","fix":"59337","desc":"57943"},{"messageId":"57938","fix":"59338","desc":"57940"},{"messageId":"57941","fix":"59339","desc":"57943"},{"messageId":"57938","fix":"59340","desc":"57940"},{"messageId":"57941","fix":"59341","desc":"57943"},{"messageId":"57938","fix":"59342","desc":"57940"},{"messageId":"57941","fix":"59343","desc":"57943"},{"messageId":"57938","fix":"59344","desc":"57940"},{"messageId":"57941","fix":"59345","desc":"57943"},{"messageId":"57938","fix":"59346","desc":"57940"},{"messageId":"57941","fix":"59347","desc":"57943"},{"messageId":"57938","fix":"59348","desc":"57940"},{"messageId":"57941","fix":"59349","desc":"57943"},{"messageId":"57938","fix":"59350","desc":"57940"},{"messageId":"57941","fix":"59351","desc":"57943"},{"messageId":"57938","fix":"59352","desc":"57940"},{"messageId":"57941","fix":"59353","desc":"57943"},{"messageId":"57938","fix":"59354","desc":"57940"},{"messageId":"57941","fix":"59355","desc":"57943"},{"messageId":"57938","fix":"59356","desc":"57940"},{"messageId":"57941","fix":"59357","desc":"57943"},{"messageId":"57938","fix":"59358","desc":"57940"},{"messageId":"57941","fix":"59359","desc":"57943"},{"messageId":"57938","fix":"59360","desc":"57940"},{"messageId":"57941","fix":"59361","desc":"57943"},{"messageId":"57938","fix":"59362","desc":"57940"},{"messageId":"57941","fix":"59363","desc":"57943"},{"messageId":"57938","fix":"59364","desc":"57940"},{"messageId":"57941","fix":"59365","desc":"57943"},{"messageId":"57938","fix":"59366","desc":"57940"},{"messageId":"57941","fix":"59367","desc":"57943"},{"messageId":"57938","fix":"59368","desc":"57940"},{"messageId":"57941","fix":"59369","desc":"57943"},{"messageId":"57938","fix":"59370","desc":"57940"},{"messageId":"57941","fix":"59371","desc":"57943"},{"messageId":"57938","fix":"59372","desc":"57940"},{"messageId":"57941","fix":"59373","desc":"57943"},{"messageId":"57938","fix":"59374","desc":"57940"},{"messageId":"57941","fix":"59375","desc":"57943"},{"messageId":"57938","fix":"59376","desc":"57940"},{"messageId":"57941","fix":"59377","desc":"57943"},{"messageId":"57938","fix":"59378","desc":"57940"},{"messageId":"57941","fix":"59379","desc":"57943"},{"messageId":"57938","fix":"59380","desc":"57940"},{"messageId":"57941","fix":"59381","desc":"57943"},{"messageId":"57938","fix":"59382","desc":"57940"},{"messageId":"57941","fix":"59383","desc":"57943"},{"messageId":"57938","fix":"59384","desc":"57940"},{"messageId":"57941","fix":"59385","desc":"57943"},{"messageId":"57938","fix":"59386","desc":"57940"},{"messageId":"57941","fix":"59387","desc":"57943"},{"messageId":"57938","fix":"59388","desc":"57940"},{"messageId":"57941","fix":"59389","desc":"57943"},{"messageId":"57938","fix":"59390","desc":"57940"},{"messageId":"57941","fix":"59391","desc":"57943"},{"messageId":"57938","fix":"59392","desc":"57940"},{"messageId":"57941","fix":"59393","desc":"57943"},{"messageId":"57938","fix":"59394","desc":"57940"},{"messageId":"57941","fix":"59395","desc":"57943"},{"messageId":"57938","fix":"59396","desc":"57940"},{"messageId":"57941","fix":"59397","desc":"57943"},{"messageId":"57938","fix":"59398","desc":"57940"},{"messageId":"57941","fix":"59399","desc":"57943"},{"messageId":"57938","fix":"59400","desc":"57940"},{"messageId":"57941","fix":"59401","desc":"57943"},{"messageId":"57938","fix":"59402","desc":"57940"},{"messageId":"57941","fix":"59403","desc":"57943"},{"messageId":"57938","fix":"59404","desc":"57940"},{"messageId":"57941","fix":"59405","desc":"57943"},{"messageId":"57938","fix":"59406","desc":"57940"},{"messageId":"57941","fix":"59407","desc":"57943"},{"messageId":"57938","fix":"59408","desc":"57940"},{"messageId":"57941","fix":"59409","desc":"57943"},{"messageId":"57938","fix":"59410","desc":"57940"},{"messageId":"57941","fix":"59411","desc":"57943"},{"messageId":"57938","fix":"59412","desc":"57940"},{"messageId":"57941","fix":"59413","desc":"57943"},{"messageId":"57938","fix":"59414","desc":"57940"},{"messageId":"57941","fix":"59415","desc":"57943"},{"messageId":"57938","fix":"59416","desc":"57940"},{"messageId":"57941","fix":"59417","desc":"57943"},{"messageId":"57938","fix":"59418","desc":"57940"},{"messageId":"57941","fix":"59419","desc":"57943"},{"messageId":"57938","fix":"59420","desc":"57940"},{"messageId":"57941","fix":"59421","desc":"57943"},{"messageId":"57938","fix":"59422","desc":"57940"},{"messageId":"57941","fix":"59423","desc":"57943"},{"messageId":"57938","fix":"59424","desc":"57940"},{"messageId":"57941","fix":"59425","desc":"57943"},{"messageId":"57938","fix":"59426","desc":"57940"},{"messageId":"57941","fix":"59427","desc":"57943"},{"messageId":"57938","fix":"59428","desc":"57940"},{"messageId":"57941","fix":"59429","desc":"57943"},{"messageId":"57938","fix":"59430","desc":"57940"},{"messageId":"57941","fix":"59431","desc":"57943"},{"messageId":"57938","fix":"59432","desc":"57940"},{"messageId":"57941","fix":"59433","desc":"57943"},{"messageId":"57938","fix":"59434","desc":"57940"},{"messageId":"57941","fix":"59435","desc":"57943"},{"messageId":"57938","fix":"59436","desc":"57940"},{"messageId":"57941","fix":"59437","desc":"57943"},{"messageId":"57938","fix":"59438","desc":"57940"},{"messageId":"57941","fix":"59439","desc":"57943"},{"messageId":"57938","fix":"59440","desc":"57940"},{"messageId":"57941","fix":"59441","desc":"57943"},{"messageId":"57938","fix":"59442","desc":"57940"},{"messageId":"57941","fix":"59443","desc":"57943"},{"messageId":"57938","fix":"59444","desc":"57940"},{"messageId":"57941","fix":"59445","desc":"57943"},{"messageId":"57938","fix":"59446","desc":"57940"},{"messageId":"57941","fix":"59447","desc":"57943"},{"messageId":"57938","fix":"59448","desc":"57940"},{"messageId":"57941","fix":"59449","desc":"57943"},{"messageId":"57938","fix":"59450","desc":"57940"},{"messageId":"57941","fix":"59451","desc":"57943"},{"messageId":"57938","fix":"59452","desc":"57940"},{"messageId":"57941","fix":"59453","desc":"57943"},{"messageId":"57938","fix":"59454","desc":"57940"},{"messageId":"57941","fix":"59455","desc":"57943"},{"messageId":"57938","fix":"59456","desc":"57940"},{"messageId":"57941","fix":"59457","desc":"57943"},{"messageId":"57938","fix":"59458","desc":"57940"},{"messageId":"57941","fix":"59459","desc":"57943"},{"messageId":"57938","fix":"59460","desc":"57940"},{"messageId":"57941","fix":"59461","desc":"57943"},{"messageId":"57938","fix":"59462","desc":"57940"},{"messageId":"57941","fix":"59463","desc":"57943"},{"messageId":"57938","fix":"59464","desc":"57940"},{"messageId":"57941","fix":"59465","desc":"57943"},{"messageId":"57938","fix":"59466","desc":"57940"},{"messageId":"57941","fix":"59467","desc":"57943"},{"messageId":"57938","fix":"59468","desc":"57940"},{"messageId":"57941","fix":"59469","desc":"57943"},{"messageId":"57938","fix":"59470","desc":"57940"},{"messageId":"57941","fix":"59471","desc":"57943"},{"messageId":"57938","fix":"59472","desc":"57940"},{"messageId":"57941","fix":"59473","desc":"57943"},{"messageId":"57938","fix":"59474","desc":"57940"},{"messageId":"57941","fix":"59475","desc":"57943"},{"messageId":"57938","fix":"59476","desc":"57940"},{"messageId":"57941","fix":"59477","desc":"57943"},{"messageId":"57938","fix":"59478","desc":"57940"},{"messageId":"57941","fix":"59479","desc":"57943"},{"messageId":"57938","fix":"59480","desc":"57940"},{"messageId":"57941","fix":"59481","desc":"57943"},{"messageId":"57938","fix":"59482","desc":"57940"},{"messageId":"57941","fix":"59483","desc":"57943"},{"messageId":"57938","fix":"59484","desc":"57940"},{"messageId":"57941","fix":"59485","desc":"57943"},{"messageId":"57938","fix":"59486","desc":"57940"},{"messageId":"57941","fix":"59487","desc":"57943"},{"messageId":"57938","fix":"59488","desc":"57940"},{"messageId":"57941","fix":"59489","desc":"57943"},{"messageId":"57938","fix":"59490","desc":"57940"},{"messageId":"57941","fix":"59491","desc":"57943"},{"messageId":"57938","fix":"59492","desc":"57940"},{"messageId":"57941","fix":"59493","desc":"57943"},{"messageId":"57938","fix":"59494","desc":"57940"},{"messageId":"57941","fix":"59495","desc":"57943"},{"messageId":"57938","fix":"59496","desc":"57940"},{"messageId":"57941","fix":"59497","desc":"57943"},{"messageId":"57938","fix":"59498","desc":"57940"},{"messageId":"57941","fix":"59499","desc":"57943"},{"messageId":"57938","fix":"59500","desc":"57940"},{"messageId":"57941","fix":"59501","desc":"57943"},{"messageId":"57938","fix":"59502","desc":"57940"},{"messageId":"57941","fix":"59503","desc":"57943"},{"messageId":"57938","fix":"59504","desc":"57940"},{"messageId":"57941","fix":"59505","desc":"57943"},{"messageId":"57938","fix":"59506","desc":"57940"},{"messageId":"57941","fix":"59507","desc":"57943"},{"messageId":"57938","fix":"59508","desc":"57940"},{"messageId":"57941","fix":"59509","desc":"57943"},{"messageId":"57938","fix":"59510","desc":"57940"},{"messageId":"57941","fix":"59511","desc":"57943"},{"messageId":"57938","fix":"59512","desc":"57940"},{"messageId":"57941","fix":"59513","desc":"57943"},{"messageId":"57938","fix":"59514","desc":"57940"},{"messageId":"57941","fix":"59515","desc":"57943"},{"messageId":"57938","fix":"59516","desc":"57940"},{"messageId":"57941","fix":"59517","desc":"57943"},{"messageId":"57938","fix":"59518","desc":"57940"},{"messageId":"57941","fix":"59519","desc":"57943"},{"messageId":"57938","fix":"59520","desc":"57940"},{"messageId":"57941","fix":"59521","desc":"57943"},{"messageId":"57938","fix":"59522","desc":"57940"},{"messageId":"57941","fix":"59523","desc":"57943"},{"messageId":"57938","fix":"59524","desc":"57940"},{"messageId":"57941","fix":"59525","desc":"57943"},{"messageId":"57938","fix":"59526","desc":"57940"},{"messageId":"57941","fix":"59527","desc":"57943"},{"messageId":"57938","fix":"59528","desc":"57940"},{"messageId":"57941","fix":"59529","desc":"57943"},{"messageId":"57938","fix":"59530","desc":"57940"},{"messageId":"57941","fix":"59531","desc":"57943"},{"messageId":"57938","fix":"59532","desc":"57940"},{"messageId":"57941","fix":"59533","desc":"57943"},{"messageId":"57938","fix":"59534","desc":"57940"},{"messageId":"57941","fix":"59535","desc":"57943"},{"messageId":"57938","fix":"59536","desc":"57940"},{"messageId":"57941","fix":"59537","desc":"57943"},{"messageId":"57938","fix":"59538","desc":"57940"},{"messageId":"57941","fix":"59539","desc":"57943"},{"messageId":"57938","fix":"59540","desc":"57940"},{"messageId":"57941","fix":"59541","desc":"57943"},{"messageId":"57938","fix":"59542","desc":"57940"},{"messageId":"57941","fix":"59543","desc":"57943"},{"messageId":"57938","fix":"59544","desc":"57940"},{"messageId":"57941","fix":"59545","desc":"57943"},{"messageId":"57938","fix":"59546","desc":"57940"},{"messageId":"57941","fix":"59547","desc":"57943"},{"messageId":"57938","fix":"59548","desc":"57940"},{"messageId":"57941","fix":"59549","desc":"57943"},{"messageId":"57938","fix":"59550","desc":"57940"},{"messageId":"57941","fix":"59551","desc":"57943"},{"messageId":"57938","fix":"59552","desc":"57940"},{"messageId":"57941","fix":"59553","desc":"57943"},{"messageId":"57938","fix":"59554","desc":"57940"},{"messageId":"57941","fix":"59555","desc":"57943"},{"messageId":"57938","fix":"59556","desc":"57940"},{"messageId":"57941","fix":"59557","desc":"57943"},{"messageId":"57938","fix":"59558","desc":"57940"},{"messageId":"57941","fix":"59559","desc":"57943"},{"messageId":"57938","fix":"59560","desc":"57940"},{"messageId":"57941","fix":"59561","desc":"57943"},{"messageId":"57938","fix":"59562","desc":"57940"},{"messageId":"57941","fix":"59563","desc":"57943"},{"messageId":"57938","fix":"59564","desc":"57940"},{"messageId":"57941","fix":"59565","desc":"57943"},{"messageId":"57938","fix":"59566","desc":"57940"},{"messageId":"57941","fix":"59567","desc":"57943"},{"messageId":"57938","fix":"59568","desc":"57940"},{"messageId":"57941","fix":"59569","desc":"57943"},{"messageId":"57938","fix":"59570","desc":"57940"},{"messageId":"57941","fix":"59571","desc":"57943"},{"messageId":"57938","fix":"59572","desc":"57940"},{"messageId":"57941","fix":"59573","desc":"57943"},{"messageId":"57938","fix":"59574","desc":"57940"},{"messageId":"57941","fix":"59575","desc":"57943"},{"messageId":"57938","fix":"59576","desc":"57940"},{"messageId":"57941","fix":"59577","desc":"57943"},{"messageId":"57938","fix":"59578","desc":"57940"},{"messageId":"57941","fix":"59579","desc":"57943"},{"messageId":"57938","fix":"59580","desc":"57940"},{"messageId":"57941","fix":"59581","desc":"57943"},{"messageId":"57938","fix":"59582","desc":"57940"},{"messageId":"57941","fix":"59583","desc":"57943"},{"messageId":"57938","fix":"59584","desc":"57940"},{"messageId":"57941","fix":"59585","desc":"57943"},{"messageId":"57938","fix":"59586","desc":"57940"},{"messageId":"57941","fix":"59587","desc":"57943"},{"messageId":"57938","fix":"59588","desc":"57940"},{"messageId":"57941","fix":"59589","desc":"57943"},{"messageId":"57938","fix":"59590","desc":"57940"},{"messageId":"57941","fix":"59591","desc":"57943"},{"messageId":"57938","fix":"59592","desc":"57940"},{"messageId":"57941","fix":"59593","desc":"57943"},{"messageId":"57938","fix":"59594","desc":"57940"},{"messageId":"57941","fix":"59595","desc":"57943"},{"messageId":"57938","fix":"59596","desc":"57940"},{"messageId":"57941","fix":"59597","desc":"57943"},{"messageId":"57938","fix":"59598","desc":"57940"},{"messageId":"57941","fix":"59599","desc":"57943"},{"messageId":"57938","fix":"59600","desc":"57940"},{"messageId":"57941","fix":"59601","desc":"57943"},{"messageId":"57938","fix":"59602","desc":"57940"},{"messageId":"57941","fix":"59603","desc":"57943"},{"messageId":"57938","fix":"59604","desc":"57940"},{"messageId":"57941","fix":"59605","desc":"57943"},{"messageId":"57938","fix":"59606","desc":"57940"},{"messageId":"57941","fix":"59607","desc":"57943"},{"messageId":"57938","fix":"59608","desc":"57940"},{"messageId":"57941","fix":"59609","desc":"57943"},{"messageId":"57938","fix":"59610","desc":"57940"},{"messageId":"57941","fix":"59611","desc":"57943"},{"messageId":"57938","fix":"59612","desc":"57940"},{"messageId":"57941","fix":"59613","desc":"57943"},{"messageId":"57938","fix":"59614","desc":"57940"},{"messageId":"57941","fix":"59615","desc":"57943"},{"messageId":"57938","fix":"59616","desc":"57940"},{"messageId":"57941","fix":"59617","desc":"57943"},{"messageId":"57938","fix":"59618","desc":"57940"},{"messageId":"57941","fix":"59619","desc":"57943"},{"messageId":"57938","fix":"59620","desc":"57940"},{"messageId":"57941","fix":"59621","desc":"57943"},{"messageId":"57938","fix":"59622","desc":"57940"},{"messageId":"57941","fix":"59623","desc":"57943"},{"messageId":"57938","fix":"59624","desc":"57940"},{"messageId":"57941","fix":"59625","desc":"57943"},{"messageId":"57938","fix":"59626","desc":"57940"},{"messageId":"57941","fix":"59627","desc":"57943"},{"messageId":"57938","fix":"59628","desc":"57940"},{"messageId":"57941","fix":"59629","desc":"57943"},{"messageId":"57938","fix":"59630","desc":"57940"},{"messageId":"57941","fix":"59631","desc":"57943"},{"messageId":"57938","fix":"59632","desc":"57940"},{"messageId":"57941","fix":"59633","desc":"57943"},{"messageId":"57938","fix":"59634","desc":"57940"},{"messageId":"57941","fix":"59635","desc":"57943"},{"messageId":"57938","fix":"59636","desc":"57940"},{"messageId":"57941","fix":"59637","desc":"57943"},{"messageId":"57938","fix":"59638","desc":"57940"},{"messageId":"57941","fix":"59639","desc":"57943"},{"messageId":"57938","fix":"59640","desc":"57940"},{"messageId":"57941","fix":"59641","desc":"57943"},{"messageId":"57938","fix":"59642","desc":"57940"},{"messageId":"57941","fix":"59643","desc":"57943"},{"messageId":"57938","fix":"59644","desc":"57940"},{"messageId":"57941","fix":"59645","desc":"57943"},{"messageId":"57938","fix":"59646","desc":"57940"},{"messageId":"57941","fix":"59647","desc":"57943"},{"messageId":"57938","fix":"59648","desc":"57940"},{"messageId":"57941","fix":"59649","desc":"57943"},{"messageId":"57938","fix":"59650","desc":"57940"},{"messageId":"57941","fix":"59651","desc":"57943"},{"messageId":"57938","fix":"59652","desc":"57940"},{"messageId":"57941","fix":"59653","desc":"57943"},{"messageId":"57938","fix":"59654","desc":"57940"},{"messageId":"57941","fix":"59655","desc":"57943"},{"messageId":"57938","fix":"59656","desc":"57940"},{"messageId":"57941","fix":"59657","desc":"57943"},{"messageId":"57938","fix":"59658","desc":"57940"},{"messageId":"57941","fix":"59659","desc":"57943"},{"messageId":"57938","fix":"59660","desc":"57940"},{"messageId":"57941","fix":"59661","desc":"57943"},{"messageId":"57938","fix":"59662","desc":"57940"},{"messageId":"57941","fix":"59663","desc":"57943"},{"messageId":"57938","fix":"59664","desc":"57940"},{"messageId":"57941","fix":"59665","desc":"57943"},{"messageId":"57938","fix":"59666","desc":"57940"},{"messageId":"57941","fix":"59667","desc":"57943"},{"messageId":"57938","fix":"59668","desc":"57940"},{"messageId":"57941","fix":"59669","desc":"57943"},{"messageId":"57938","fix":"59670","desc":"57940"},{"messageId":"57941","fix":"59671","desc":"57943"},{"messageId":"57938","fix":"59672","desc":"57940"},{"messageId":"57941","fix":"59673","desc":"57943"},{"messageId":"57938","fix":"59674","desc":"57940"},{"messageId":"57941","fix":"59675","desc":"57943"},{"messageId":"57938","fix":"59676","desc":"57940"},{"messageId":"57941","fix":"59677","desc":"57943"},{"messageId":"57938","fix":"59678","desc":"57940"},{"messageId":"57941","fix":"59679","desc":"57943"},{"messageId":"57938","fix":"59680","desc":"57940"},{"messageId":"57941","fix":"59681","desc":"57943"},{"messageId":"57938","fix":"59682","desc":"57940"},{"messageId":"57941","fix":"59683","desc":"57943"},{"messageId":"57938","fix":"59684","desc":"57940"},{"messageId":"57941","fix":"59685","desc":"57943"},{"messageId":"57938","fix":"59686","desc":"57940"},{"messageId":"57941","fix":"59687","desc":"57943"},{"messageId":"57938","fix":"59688","desc":"57940"},{"messageId":"57941","fix":"59689","desc":"57943"},{"messageId":"57938","fix":"59690","desc":"57940"},{"messageId":"57941","fix":"59691","desc":"57943"},{"messageId":"57938","fix":"59692","desc":"57940"},{"messageId":"57941","fix":"59693","desc":"57943"},{"messageId":"57938","fix":"59694","desc":"57940"},{"messageId":"57941","fix":"59695","desc":"57943"},{"messageId":"57938","fix":"59696","desc":"57940"},{"messageId":"57941","fix":"59697","desc":"57943"},{"messageId":"57938","fix":"59698","desc":"57940"},{"messageId":"57941","fix":"59699","desc":"57943"},{"messageId":"57938","fix":"59700","desc":"57940"},{"messageId":"57941","fix":"59701","desc":"57943"},{"messageId":"57938","fix":"59702","desc":"57940"},{"messageId":"57941","fix":"59703","desc":"57943"},{"messageId":"57938","fix":"59704","desc":"57940"},{"messageId":"57941","fix":"59705","desc":"57943"},{"messageId":"57938","fix":"59706","desc":"57940"},{"messageId":"57941","fix":"59707","desc":"57943"},{"messageId":"57938","fix":"59708","desc":"57940"},{"messageId":"57941","fix":"59709","desc":"57943"},{"messageId":"57938","fix":"59710","desc":"57940"},{"messageId":"57941","fix":"59711","desc":"57943"},{"messageId":"57938","fix":"59712","desc":"57940"},{"messageId":"57941","fix":"59713","desc":"57943"},{"messageId":"57938","fix":"59714","desc":"57940"},{"messageId":"57941","fix":"59715","desc":"57943"},{"messageId":"57938","fix":"59716","desc":"57940"},{"messageId":"57941","fix":"59717","desc":"57943"},{"messageId":"57938","fix":"59718","desc":"57940"},{"messageId":"57941","fix":"59719","desc":"57943"},{"messageId":"57938","fix":"59720","desc":"57940"},{"messageId":"57941","fix":"59721","desc":"57943"},{"messageId":"57938","fix":"59722","desc":"57940"},{"messageId":"57941","fix":"59723","desc":"57943"},{"messageId":"57938","fix":"59724","desc":"57940"},{"messageId":"57941","fix":"59725","desc":"57943"},{"messageId":"57938","fix":"59726","desc":"57940"},{"messageId":"57941","fix":"59727","desc":"57943"},{"messageId":"57938","fix":"59728","desc":"57940"},{"messageId":"57941","fix":"59729","desc":"57943"},{"messageId":"57938","fix":"59730","desc":"57940"},{"messageId":"57941","fix":"59731","desc":"57943"},{"messageId":"57938","fix":"59732","desc":"57940"},{"messageId":"57941","fix":"59733","desc":"57943"},{"messageId":"57938","fix":"59734","desc":"57940"},{"messageId":"57941","fix":"59735","desc":"57943"},{"messageId":"57938","fix":"59736","desc":"57940"},{"messageId":"57941","fix":"59737","desc":"57943"},{"messageId":"57938","fix":"59738","desc":"57940"},{"messageId":"57941","fix":"59739","desc":"57943"},{"messageId":"57938","fix":"59740","desc":"57940"},{"messageId":"57941","fix":"59741","desc":"57943"},{"messageId":"57938","fix":"59742","desc":"57940"},{"messageId":"57941","fix":"59743","desc":"57943"},{"messageId":"57938","fix":"59744","desc":"57940"},{"messageId":"57941","fix":"59745","desc":"57943"},{"messageId":"57938","fix":"59746","desc":"57940"},{"messageId":"57941","fix":"59747","desc":"57943"},{"messageId":"57938","fix":"59748","desc":"57940"},{"messageId":"57941","fix":"59749","desc":"57943"},{"messageId":"57938","fix":"59750","desc":"57940"},{"messageId":"57941","fix":"59751","desc":"57943"},{"messageId":"57938","fix":"59752","desc":"57940"},{"messageId":"57941","fix":"59753","desc":"57943"},{"messageId":"57938","fix":"59754","desc":"57940"},{"messageId":"57941","fix":"59755","desc":"57943"},{"messageId":"57938","fix":"59756","desc":"57940"},{"messageId":"57941","fix":"59757","desc":"57943"},{"messageId":"57938","fix":"59758","desc":"57940"},{"messageId":"57941","fix":"59759","desc":"57943"},{"messageId":"57938","fix":"59760","desc":"57940"},{"messageId":"57941","fix":"59761","desc":"57943"},{"messageId":"57938","fix":"59762","desc":"57940"},{"messageId":"57941","fix":"59763","desc":"57943"},{"messageId":"57938","fix":"59764","desc":"57940"},{"messageId":"57941","fix":"59765","desc":"57943"},{"messageId":"57938","fix":"59766","desc":"57940"},{"messageId":"57941","fix":"59767","desc":"57943"},{"messageId":"57938","fix":"59768","desc":"57940"},{"messageId":"57941","fix":"59769","desc":"57943"},{"messageId":"57938","fix":"59770","desc":"57940"},{"messageId":"57941","fix":"59771","desc":"57943"},{"messageId":"57938","fix":"59772","desc":"57940"},{"messageId":"57941","fix":"59773","desc":"57943"},{"messageId":"57938","fix":"59774","desc":"57940"},{"messageId":"57941","fix":"59775","desc":"57943"},{"messageId":"57938","fix":"59776","desc":"57940"},{"messageId":"57941","fix":"59777","desc":"57943"},{"messageId":"57938","fix":"59778","desc":"57940"},{"messageId":"57941","fix":"59779","desc":"57943"},{"messageId":"57938","fix":"59780","desc":"57940"},{"messageId":"57941","fix":"59781","desc":"57943"},{"messageId":"57938","fix":"59782","desc":"57940"},{"messageId":"57941","fix":"59783","desc":"57943"},{"messageId":"57938","fix":"59784","desc":"57940"},{"messageId":"57941","fix":"59785","desc":"57943"},{"messageId":"57938","fix":"59786","desc":"57940"},{"messageId":"57941","fix":"59787","desc":"57943"},{"messageId":"57938","fix":"59788","desc":"57940"},{"messageId":"57941","fix":"59789","desc":"57943"},{"messageId":"57938","fix":"59790","desc":"57940"},{"messageId":"57941","fix":"59791","desc":"57943"},{"messageId":"57938","fix":"59792","desc":"57940"},{"messageId":"57941","fix":"59793","desc":"57943"},{"messageId":"57938","fix":"59794","desc":"57940"},{"messageId":"57941","fix":"59795","desc":"57943"},{"messageId":"57938","fix":"59796","desc":"57940"},{"messageId":"57941","fix":"59797","desc":"57943"},{"messageId":"57938","fix":"59798","desc":"57940"},{"messageId":"57941","fix":"59799","desc":"57943"},{"messageId":"57938","fix":"59800","desc":"57940"},{"messageId":"57941","fix":"59801","desc":"57943"},{"messageId":"57938","fix":"59802","desc":"57940"},{"messageId":"57941","fix":"59803","desc":"57943"},{"messageId":"57938","fix":"59804","desc":"57940"},{"messageId":"57941","fix":"59805","desc":"57943"},{"messageId":"57938","fix":"59806","desc":"57940"},{"messageId":"57941","fix":"59807","desc":"57943"},{"messageId":"57938","fix":"59808","desc":"57940"},{"messageId":"57941","fix":"59809","desc":"57943"},{"messageId":"57938","fix":"59810","desc":"57940"},{"messageId":"57941","fix":"59811","desc":"57943"},{"messageId":"57938","fix":"59812","desc":"57940"},{"messageId":"57941","fix":"59813","desc":"57943"},{"messageId":"57938","fix":"59814","desc":"57940"},{"messageId":"57941","fix":"59815","desc":"57943"},{"messageId":"57938","fix":"59816","desc":"57940"},{"messageId":"57941","fix":"59817","desc":"57943"},{"messageId":"57938","fix":"59818","desc":"57940"},{"messageId":"57941","fix":"59819","desc":"57943"},{"messageId":"57938","fix":"59820","desc":"57940"},{"messageId":"57941","fix":"59821","desc":"57943"},{"messageId":"57938","fix":"59822","desc":"57940"},{"messageId":"57941","fix":"59823","desc":"57943"},{"messageId":"57938","fix":"59824","desc":"57940"},{"messageId":"57941","fix":"59825","desc":"57943"},{"messageId":"57938","fix":"59826","desc":"57940"},{"messageId":"57941","fix":"59827","desc":"57943"},{"messageId":"57938","fix":"59828","desc":"57940"},{"messageId":"57941","fix":"59829","desc":"57943"},{"messageId":"57938","fix":"59830","desc":"57940"},{"messageId":"57941","fix":"59831","desc":"57943"},{"messageId":"57938","fix":"59832","desc":"57940"},{"messageId":"57941","fix":"59833","desc":"57943"},{"messageId":"57938","fix":"59834","desc":"57940"},{"messageId":"57941","fix":"59835","desc":"57943"},{"messageId":"57938","fix":"59836","desc":"57940"},{"messageId":"57941","fix":"59837","desc":"57943"},{"messageId":"57938","fix":"59838","desc":"57940"},{"messageId":"57941","fix":"59839","desc":"57943"},{"messageId":"57938","fix":"59840","desc":"57940"},{"messageId":"57941","fix":"59841","desc":"57943"},{"messageId":"57938","fix":"59842","desc":"57940"},{"messageId":"57941","fix":"59843","desc":"57943"},{"messageId":"57938","fix":"59844","desc":"57940"},{"messageId":"57941","fix":"59845","desc":"57943"},{"messageId":"57938","fix":"59846","desc":"57940"},{"messageId":"57941","fix":"59847","desc":"57943"},{"messageId":"57938","fix":"59848","desc":"57940"},{"messageId":"57941","fix":"59849","desc":"57943"},{"messageId":"57938","fix":"59850","desc":"57940"},{"messageId":"57941","fix":"59851","desc":"57943"},{"messageId":"57938","fix":"59852","desc":"57940"},{"messageId":"57941","fix":"59853","desc":"57943"},{"messageId":"57938","fix":"59854","desc":"57940"},{"messageId":"57941","fix":"59855","desc":"57943"},{"messageId":"57938","fix":"59856","desc":"57940"},{"messageId":"57941","fix":"59857","desc":"57943"},{"messageId":"57938","fix":"59858","desc":"57940"},{"messageId":"57941","fix":"59859","desc":"57943"},{"messageId":"57938","fix":"59860","desc":"57940"},{"messageId":"57941","fix":"59861","desc":"57943"},{"messageId":"57938","fix":"59862","desc":"57940"},{"messageId":"57941","fix":"59863","desc":"57943"},{"messageId":"57938","fix":"59864","desc":"57940"},{"messageId":"57941","fix":"59865","desc":"57943"},{"messageId":"57938","fix":"59866","desc":"57940"},{"messageId":"57941","fix":"59867","desc":"57943"},{"messageId":"57938","fix":"59868","desc":"57940"},{"messageId":"57941","fix":"59869","desc":"57943"},{"messageId":"57938","fix":"59870","desc":"57940"},{"messageId":"57941","fix":"59871","desc":"57943"},{"messageId":"57938","fix":"59872","desc":"57940"},{"messageId":"57941","fix":"59873","desc":"57943"},{"messageId":"57938","fix":"59874","desc":"57940"},{"messageId":"57941","fix":"59875","desc":"57943"},{"messageId":"57938","fix":"59876","desc":"57940"},{"messageId":"57941","fix":"59877","desc":"57943"},{"messageId":"57938","fix":"59878","desc":"57940"},{"messageId":"57941","fix":"59879","desc":"57943"},{"messageId":"57938","fix":"59880","desc":"57940"},{"messageId":"57941","fix":"59881","desc":"57943"},{"messageId":"57938","fix":"59882","desc":"57940"},{"messageId":"57941","fix":"59883","desc":"57943"},{"messageId":"57938","fix":"59884","desc":"57940"},{"messageId":"57941","fix":"59885","desc":"57943"},{"messageId":"57938","fix":"59886","desc":"57940"},{"messageId":"57941","fix":"59887","desc":"57943"},{"messageId":"57938","fix":"59888","desc":"57940"},{"messageId":"57941","fix":"59889","desc":"57943"},{"messageId":"57938","fix":"59890","desc":"57940"},{"messageId":"57941","fix":"59891","desc":"57943"},{"messageId":"57938","fix":"59892","desc":"57940"},{"messageId":"57941","fix":"59893","desc":"57943"},{"messageId":"57938","fix":"59894","desc":"57940"},{"messageId":"57941","fix":"59895","desc":"57943"},{"messageId":"57938","fix":"59896","desc":"57940"},{"messageId":"57941","fix":"59897","desc":"57943"},{"messageId":"57938","fix":"59898","desc":"57940"},{"messageId":"57941","fix":"59899","desc":"57943"},{"messageId":"57938","fix":"59900","desc":"57940"},{"messageId":"57941","fix":"59901","desc":"57943"},{"messageId":"57938","fix":"59902","desc":"57940"},{"messageId":"57941","fix":"59903","desc":"57943"},{"messageId":"57938","fix":"59904","desc":"57940"},{"messageId":"57941","fix":"59905","desc":"57943"},{"messageId":"57938","fix":"59906","desc":"57940"},{"messageId":"57941","fix":"59907","desc":"57943"},{"messageId":"57938","fix":"59908","desc":"57940"},{"messageId":"57941","fix":"59909","desc":"57943"},{"messageId":"57938","fix":"59910","desc":"57940"},{"messageId":"57941","fix":"59911","desc":"57943"},{"messageId":"57938","fix":"59912","desc":"57940"},{"messageId":"57941","fix":"59913","desc":"57943"},{"messageId":"57938","fix":"59914","desc":"57940"},{"messageId":"57941","fix":"59915","desc":"57943"},{"messageId":"57938","fix":"59916","desc":"57940"},{"messageId":"57941","fix":"59917","desc":"57943"},{"messageId":"57938","fix":"59918","desc":"57940"},{"messageId":"57941","fix":"59919","desc":"57943"},{"messageId":"57938","fix":"59920","desc":"57940"},{"messageId":"57941","fix":"59921","desc":"57943"},{"messageId":"57938","fix":"59922","desc":"57940"},{"messageId":"57941","fix":"59923","desc":"57943"},{"messageId":"57938","fix":"59924","desc":"57940"},{"messageId":"57941","fix":"59925","desc":"57943"},{"messageId":"57938","fix":"59926","desc":"57940"},{"messageId":"57941","fix":"59927","desc":"57943"},{"messageId":"57938","fix":"59928","desc":"57940"},{"messageId":"57941","fix":"59929","desc":"57943"},{"messageId":"57938","fix":"59930","desc":"57940"},{"messageId":"57941","fix":"59931","desc":"57943"},{"messageId":"57938","fix":"59932","desc":"57940"},{"messageId":"57941","fix":"59933","desc":"57943"},{"messageId":"57938","fix":"59934","desc":"57940"},{"messageId":"57941","fix":"59935","desc":"57943"},{"messageId":"57938","fix":"59936","desc":"57940"},{"messageId":"57941","fix":"59937","desc":"57943"},{"messageId":"57938","fix":"59938","desc":"57940"},{"messageId":"57941","fix":"59939","desc":"57943"},{"messageId":"57938","fix":"59940","desc":"57940"},{"messageId":"57941","fix":"59941","desc":"57943"},{"messageId":"57938","fix":"59942","desc":"57940"},{"messageId":"57941","fix":"59943","desc":"57943"},{"messageId":"57938","fix":"59944","desc":"57940"},{"messageId":"57941","fix":"59945","desc":"57943"},{"messageId":"57938","fix":"59946","desc":"57940"},{"messageId":"57941","fix":"59947","desc":"57943"},{"messageId":"57938","fix":"59948","desc":"57940"},{"messageId":"57941","fix":"59949","desc":"57943"},{"messageId":"57938","fix":"59950","desc":"57940"},{"messageId":"57941","fix":"59951","desc":"57943"},{"messageId":"57938","fix":"59952","desc":"57940"},{"messageId":"57941","fix":"59953","desc":"57943"},{"messageId":"57938","fix":"59954","desc":"57940"},{"messageId":"57941","fix":"59955","desc":"57943"},{"messageId":"57938","fix":"59956","desc":"57940"},{"messageId":"57941","fix":"59957","desc":"57943"},{"messageId":"57938","fix":"59958","desc":"57940"},{"messageId":"57941","fix":"59959","desc":"57943"},{"messageId":"57938","fix":"59960","desc":"57940"},{"messageId":"57941","fix":"59961","desc":"57943"},{"messageId":"57938","fix":"59962","desc":"57940"},{"messageId":"57941","fix":"59963","desc":"57943"},{"messageId":"57938","fix":"59964","desc":"57940"},{"messageId":"57941","fix":"59965","desc":"57943"},{"messageId":"57938","fix":"59966","desc":"57940"},{"messageId":"57941","fix":"59967","desc":"57943"},{"messageId":"57938","fix":"59968","desc":"57940"},{"messageId":"57941","fix":"59969","desc":"57943"},{"messageId":"57938","fix":"59970","desc":"57940"},{"messageId":"57941","fix":"59971","desc":"57943"},{"messageId":"57938","fix":"59972","desc":"57940"},{"messageId":"57941","fix":"59973","desc":"57943"},{"messageId":"57938","fix":"59974","desc":"57940"},{"messageId":"57941","fix":"59975","desc":"57943"},{"messageId":"57938","fix":"59976","desc":"57940"},{"messageId":"57941","fix":"59977","desc":"57943"},{"messageId":"57938","fix":"59978","desc":"57940"},{"messageId":"57941","fix":"59979","desc":"57943"},{"messageId":"57938","fix":"59980","desc":"57940"},{"messageId":"57941","fix":"59981","desc":"57943"},{"messageId":"57938","fix":"59982","desc":"57940"},{"messageId":"57941","fix":"59983","desc":"57943"},{"messageId":"57938","fix":"59984","desc":"57940"},{"messageId":"57941","fix":"59985","desc":"57943"},{"messageId":"57938","fix":"59986","desc":"57940"},{"messageId":"57941","fix":"59987","desc":"57943"},{"messageId":"57938","fix":"59988","desc":"57940"},{"messageId":"57941","fix":"59989","desc":"57943"},{"messageId":"57938","fix":"59990","desc":"57940"},{"messageId":"57941","fix":"59991","desc":"57943"},{"messageId":"57938","fix":"59992","desc":"57940"},{"messageId":"57941","fix":"59993","desc":"57943"},{"messageId":"57938","fix":"59994","desc":"57940"},{"messageId":"57941","fix":"59995","desc":"57943"},{"messageId":"57938","fix":"59996","desc":"57940"},{"messageId":"57941","fix":"59997","desc":"57943"},{"messageId":"57938","fix":"59998","desc":"57940"},{"messageId":"57941","fix":"59999","desc":"57943"},{"messageId":"57938","fix":"60000","desc":"57940"},{"messageId":"57941","fix":"60001","desc":"57943"},{"messageId":"57938","fix":"60002","desc":"57940"},{"messageId":"57941","fix":"60003","desc":"57943"},{"messageId":"57938","fix":"60004","desc":"57940"},{"messageId":"57941","fix":"60005","desc":"57943"},{"messageId":"57938","fix":"60006","desc":"57940"},{"messageId":"57941","fix":"60007","desc":"57943"},{"messageId":"57938","fix":"60008","desc":"57940"},{"messageId":"57941","fix":"60009","desc":"57943"},{"messageId":"57938","fix":"60010","desc":"57940"},{"messageId":"57941","fix":"60011","desc":"57943"},{"messageId":"57938","fix":"60012","desc":"57940"},{"messageId":"57941","fix":"60013","desc":"57943"},{"messageId":"57938","fix":"60014","desc":"57940"},{"messageId":"57941","fix":"60015","desc":"57943"},{"messageId":"57938","fix":"60016","desc":"57940"},{"messageId":"57941","fix":"60017","desc":"57943"},{"messageId":"57938","fix":"60018","desc":"57940"},{"messageId":"57941","fix":"60019","desc":"57943"},{"messageId":"57938","fix":"60020","desc":"57940"},{"messageId":"57941","fix":"60021","desc":"57943"},{"messageId":"57938","fix":"60022","desc":"57940"},{"messageId":"57941","fix":"60023","desc":"57943"},{"messageId":"57938","fix":"60024","desc":"57940"},{"messageId":"57941","fix":"60025","desc":"57943"},{"messageId":"57938","fix":"60026","desc":"57940"},{"messageId":"57941","fix":"60027","desc":"57943"},{"messageId":"57938","fix":"60028","desc":"57940"},{"messageId":"57941","fix":"60029","desc":"57943"},{"messageId":"57938","fix":"60030","desc":"57940"},{"messageId":"57941","fix":"60031","desc":"57943"},{"messageId":"57938","fix":"60032","desc":"57940"},{"messageId":"57941","fix":"60033","desc":"57943"},{"messageId":"57938","fix":"60034","desc":"57940"},{"messageId":"57941","fix":"60035","desc":"57943"},{"messageId":"57938","fix":"60036","desc":"57940"},{"messageId":"57941","fix":"60037","desc":"57943"},{"messageId":"57938","fix":"60038","desc":"57940"},{"messageId":"57941","fix":"60039","desc":"57943"},{"messageId":"57938","fix":"60040","desc":"57940"},{"messageId":"57941","fix":"60041","desc":"57943"},{"messageId":"57938","fix":"60042","desc":"57940"},{"messageId":"57941","fix":"60043","desc":"57943"},{"messageId":"57938","fix":"60044","desc":"57940"},{"messageId":"57941","fix":"60045","desc":"57943"},{"messageId":"57938","fix":"60046","desc":"57940"},{"messageId":"57941","fix":"60047","desc":"57943"},{"messageId":"57938","fix":"60048","desc":"57940"},{"messageId":"57941","fix":"60049","desc":"57943"},{"messageId":"57938","fix":"60050","desc":"57940"},{"messageId":"57941","fix":"60051","desc":"57943"},{"messageId":"57938","fix":"60052","desc":"57940"},{"messageId":"57941","fix":"60053","desc":"57943"},{"messageId":"57938","fix":"60054","desc":"57940"},{"messageId":"57941","fix":"60055","desc":"57943"},{"messageId":"57938","fix":"60056","desc":"57940"},{"messageId":"57941","fix":"60057","desc":"57943"},{"messageId":"57938","fix":"60058","desc":"57940"},{"messageId":"57941","fix":"60059","desc":"57943"},{"messageId":"57938","fix":"60060","desc":"57940"},{"messageId":"57941","fix":"60061","desc":"57943"},{"messageId":"57938","fix":"60062","desc":"57940"},{"messageId":"57941","fix":"60063","desc":"57943"},{"messageId":"57938","fix":"60064","desc":"57940"},{"messageId":"57941","fix":"60065","desc":"57943"},{"messageId":"57938","fix":"60066","desc":"57940"},{"messageId":"57941","fix":"60067","desc":"57943"},{"messageId":"57938","fix":"60068","desc":"57940"},{"messageId":"57941","fix":"60069","desc":"57943"},{"messageId":"57938","fix":"60070","desc":"57940"},{"messageId":"57941","fix":"60071","desc":"57943"},{"messageId":"57938","fix":"60072","desc":"57940"},{"messageId":"57941","fix":"60073","desc":"57943"},{"messageId":"57938","fix":"60074","desc":"57940"},{"messageId":"57941","fix":"60075","desc":"57943"},{"messageId":"57938","fix":"60076","desc":"57940"},{"messageId":"57941","fix":"60077","desc":"57943"},{"messageId":"57938","fix":"60078","desc":"57940"},{"messageId":"57941","fix":"60079","desc":"57943"},{"messageId":"57938","fix":"60080","desc":"57940"},{"messageId":"57941","fix":"60081","desc":"57943"},{"messageId":"57938","fix":"60082","desc":"57940"},{"messageId":"57941","fix":"60083","desc":"57943"},{"messageId":"57938","fix":"60084","desc":"57940"},{"messageId":"57941","fix":"60085","desc":"57943"},{"messageId":"57938","fix":"60086","desc":"57940"},{"messageId":"57941","fix":"60087","desc":"57943"},{"messageId":"57938","fix":"60088","desc":"57940"},{"messageId":"57941","fix":"60089","desc":"57943"},{"messageId":"57938","fix":"60090","desc":"57940"},{"messageId":"57941","fix":"60091","desc":"57943"},{"messageId":"57938","fix":"60092","desc":"57940"},{"messageId":"57941","fix":"60093","desc":"57943"},{"messageId":"57938","fix":"60094","desc":"57940"},{"messageId":"57941","fix":"60095","desc":"57943"},{"messageId":"57938","fix":"60096","desc":"57940"},{"messageId":"57941","fix":"60097","desc":"57943"},{"messageId":"57938","fix":"60098","desc":"57940"},{"messageId":"57941","fix":"60099","desc":"57943"},{"messageId":"57938","fix":"60100","desc":"57940"},{"messageId":"57941","fix":"60101","desc":"57943"},{"messageId":"57938","fix":"60102","desc":"57940"},{"messageId":"57941","fix":"60103","desc":"57943"},{"messageId":"57938","fix":"60104","desc":"57940"},{"messageId":"57941","fix":"60105","desc":"57943"},{"messageId":"57938","fix":"60106","desc":"57940"},{"messageId":"57941","fix":"60107","desc":"57943"},{"messageId":"57938","fix":"60108","desc":"57940"},{"messageId":"57941","fix":"60109","desc":"57943"},{"messageId":"57938","fix":"60110","desc":"57940"},{"messageId":"57941","fix":"60111","desc":"57943"},{"messageId":"57938","fix":"60112","desc":"57940"},{"messageId":"57941","fix":"60113","desc":"57943"},{"messageId":"57938","fix":"60114","desc":"57940"},{"messageId":"57941","fix":"60115","desc":"57943"},{"messageId":"57938","fix":"60116","desc":"57940"},{"messageId":"57941","fix":"60117","desc":"57943"},{"messageId":"57938","fix":"60118","desc":"57940"},{"messageId":"57941","fix":"60119","desc":"57943"},{"messageId":"57938","fix":"60120","desc":"57940"},{"messageId":"57941","fix":"60121","desc":"57943"},{"messageId":"57938","fix":"60122","desc":"57940"},{"messageId":"57941","fix":"60123","desc":"57943"},{"messageId":"57938","fix":"60124","desc":"57940"},{"messageId":"57941","fix":"60125","desc":"57943"},{"messageId":"57938","fix":"60126","desc":"57940"},{"messageId":"57941","fix":"60127","desc":"57943"},{"messageId":"57938","fix":"60128","desc":"57940"},{"messageId":"57941","fix":"60129","desc":"57943"},{"messageId":"57938","fix":"60130","desc":"57940"},{"messageId":"57941","fix":"60131","desc":"57943"},{"messageId":"57938","fix":"60132","desc":"57940"},{"messageId":"57941","fix":"60133","desc":"57943"},{"messageId":"57938","fix":"60134","desc":"57940"},{"messageId":"57941","fix":"60135","desc":"57943"},{"messageId":"57938","fix":"60136","desc":"57940"},{"messageId":"57941","fix":"60137","desc":"57943"},{"messageId":"57938","fix":"60138","desc":"57940"},{"messageId":"57941","fix":"60139","desc":"57943"},{"messageId":"57938","fix":"60140","desc":"57940"},{"messageId":"57941","fix":"60141","desc":"57943"},{"messageId":"57938","fix":"60142","desc":"57940"},{"messageId":"57941","fix":"60143","desc":"57943"},{"messageId":"57938","fix":"60144","desc":"57940"},{"messageId":"57941","fix":"60145","desc":"57943"},{"messageId":"57938","fix":"60146","desc":"57940"},{"messageId":"57941","fix":"60147","desc":"57943"},{"messageId":"57938","fix":"60148","desc":"57940"},{"messageId":"57941","fix":"60149","desc":"57943"},{"messageId":"57938","fix":"60150","desc":"57940"},{"messageId":"57941","fix":"60151","desc":"57943"},{"messageId":"57938","fix":"60152","desc":"57940"},{"messageId":"57941","fix":"60153","desc":"57943"},{"messageId":"57938","fix":"60154","desc":"57940"},{"messageId":"57941","fix":"60155","desc":"57943"},{"messageId":"57938","fix":"60156","desc":"57940"},{"messageId":"57941","fix":"60157","desc":"57943"},{"messageId":"57938","fix":"60158","desc":"57940"},{"messageId":"57941","fix":"60159","desc":"57943"},{"messageId":"57938","fix":"60160","desc":"57940"},{"messageId":"57941","fix":"60161","desc":"57943"},{"messageId":"57938","fix":"60162","desc":"57940"},{"messageId":"57941","fix":"60163","desc":"57943"},{"messageId":"57938","fix":"60164","desc":"57940"},{"messageId":"57941","fix":"60165","desc":"57943"},{"messageId":"57938","fix":"60166","desc":"57940"},{"messageId":"57941","fix":"60167","desc":"57943"},{"messageId":"57938","fix":"60168","desc":"57940"},{"messageId":"57941","fix":"60169","desc":"57943"},{"messageId":"57938","fix":"60170","desc":"57940"},{"messageId":"57941","fix":"60171","desc":"57943"},{"messageId":"57938","fix":"60172","desc":"57940"},{"messageId":"57941","fix":"60173","desc":"57943"},{"messageId":"57938","fix":"60174","desc":"57940"},{"messageId":"57941","fix":"60175","desc":"57943"},{"messageId":"57938","fix":"60176","desc":"57940"},{"messageId":"57941","fix":"60177","desc":"57943"},{"messageId":"57938","fix":"60178","desc":"57940"},{"messageId":"57941","fix":"60179","desc":"57943"},{"messageId":"57938","fix":"60180","desc":"57940"},{"messageId":"57941","fix":"60181","desc":"57943"},{"messageId":"57938","fix":"60182","desc":"57940"},{"messageId":"57941","fix":"60183","desc":"57943"},{"messageId":"57938","fix":"60184","desc":"57940"},{"messageId":"57941","fix":"60185","desc":"57943"},{"messageId":"57938","fix":"60186","desc":"57940"},{"messageId":"57941","fix":"60187","desc":"57943"},{"messageId":"57938","fix":"60188","desc":"57940"},{"messageId":"57941","fix":"60189","desc":"57943"},{"messageId":"57938","fix":"60190","desc":"57940"},{"messageId":"57941","fix":"60191","desc":"57943"},{"messageId":"57938","fix":"60192","desc":"57940"},{"messageId":"57941","fix":"60193","desc":"57943"},{"messageId":"57938","fix":"60194","desc":"57940"},{"messageId":"57941","fix":"60195","desc":"57943"},{"messageId":"57938","fix":"60196","desc":"57940"},{"messageId":"57941","fix":"60197","desc":"57943"},{"messageId":"57938","fix":"60198","desc":"57940"},{"messageId":"57941","fix":"60199","desc":"57943"},{"messageId":"57938","fix":"60200","desc":"57940"},{"messageId":"57941","fix":"60201","desc":"57943"},{"messageId":"57938","fix":"60202","desc":"57940"},{"messageId":"57941","fix":"60203","desc":"57943"},{"messageId":"57938","fix":"60204","desc":"57940"},{"messageId":"57941","fix":"60205","desc":"57943"},{"messageId":"57938","fix":"60206","desc":"57940"},{"messageId":"57941","fix":"60207","desc":"57943"},{"messageId":"57938","fix":"60208","desc":"57940"},{"messageId":"57941","fix":"60209","desc":"57943"},{"messageId":"57938","fix":"60210","desc":"57940"},{"messageId":"57941","fix":"60211","desc":"57943"},{"messageId":"57938","fix":"60212","desc":"57940"},{"messageId":"57941","fix":"60213","desc":"57943"},{"messageId":"57938","fix":"60214","desc":"57940"},{"messageId":"57941","fix":"60215","desc":"57943"},{"messageId":"57938","fix":"60216","desc":"57940"},{"messageId":"57941","fix":"60217","desc":"57943"},{"messageId":"57938","fix":"60218","desc":"57940"},{"messageId":"57941","fix":"60219","desc":"57943"},{"messageId":"57938","fix":"60220","desc":"57940"},{"messageId":"57941","fix":"60221","desc":"57943"},{"messageId":"57938","fix":"60222","desc":"57940"},{"messageId":"57941","fix":"60223","desc":"57943"},{"messageId":"57938","fix":"60224","desc":"57940"},{"messageId":"57941","fix":"60225","desc":"57943"},{"messageId":"57938","fix":"60226","desc":"57940"},{"messageId":"57941","fix":"60227","desc":"57943"},{"messageId":"57938","fix":"60228","desc":"57940"},{"messageId":"57941","fix":"60229","desc":"57943"},{"messageId":"57938","fix":"60230","desc":"57940"},{"messageId":"57941","fix":"60231","desc":"57943"},{"messageId":"57938","fix":"60232","desc":"57940"},{"messageId":"57941","fix":"60233","desc":"57943"},{"messageId":"57938","fix":"60234","desc":"57940"},{"messageId":"57941","fix":"60235","desc":"57943"},{"messageId":"57938","fix":"60236","desc":"57940"},{"messageId":"57941","fix":"60237","desc":"57943"},{"messageId":"57938","fix":"60238","desc":"57940"},{"messageId":"57941","fix":"60239","desc":"57943"},{"messageId":"57938","fix":"60240","desc":"57940"},{"messageId":"57941","fix":"60241","desc":"57943"},{"messageId":"57938","fix":"60242","desc":"57940"},{"messageId":"57941","fix":"60243","desc":"57943"},{"messageId":"57938","fix":"60244","desc":"57940"},{"messageId":"57941","fix":"60245","desc":"57943"},{"messageId":"57938","fix":"60246","desc":"57940"},{"messageId":"57941","fix":"60247","desc":"57943"},{"messageId":"57938","fix":"60248","desc":"57940"},{"messageId":"57941","fix":"60249","desc":"57943"},{"messageId":"57938","fix":"60250","desc":"57940"},{"messageId":"57941","fix":"60251","desc":"57943"},{"messageId":"57938","fix":"60252","desc":"57940"},{"messageId":"57941","fix":"60253","desc":"57943"},{"messageId":"57938","fix":"60254","desc":"57940"},{"messageId":"57941","fix":"60255","desc":"57943"},{"messageId":"57938","fix":"60256","desc":"57940"},{"messageId":"57941","fix":"60257","desc":"57943"},{"messageId":"57938","fix":"60258","desc":"57940"},{"messageId":"57941","fix":"60259","desc":"57943"},{"messageId":"57938","fix":"60260","desc":"57940"},{"messageId":"57941","fix":"60261","desc":"57943"},{"messageId":"57938","fix":"60262","desc":"57940"},{"messageId":"57941","fix":"60263","desc":"57943"},{"messageId":"57938","fix":"60264","desc":"57940"},{"messageId":"57941","fix":"60265","desc":"57943"},{"messageId":"57938","fix":"60266","desc":"57940"},{"messageId":"57941","fix":"60267","desc":"57943"},{"messageId":"57938","fix":"60268","desc":"57940"},{"messageId":"57941","fix":"60269","desc":"57943"},{"messageId":"57938","fix":"60270","desc":"57940"},{"messageId":"57941","fix":"60271","desc":"57943"},{"messageId":"57938","fix":"60272","desc":"57940"},{"messageId":"57941","fix":"60273","desc":"57943"},{"messageId":"57938","fix":"60274","desc":"57940"},{"messageId":"57941","fix":"60275","desc":"57943"},{"messageId":"57938","fix":"60276","desc":"57940"},{"messageId":"57941","fix":"60277","desc":"57943"},{"messageId":"57938","fix":"60278","desc":"57940"},{"messageId":"57941","fix":"60279","desc":"57943"},{"messageId":"57938","fix":"60280","desc":"57940"},{"messageId":"57941","fix":"60281","desc":"57943"},{"messageId":"57938","fix":"60282","desc":"57940"},{"messageId":"57941","fix":"60283","desc":"57943"},{"messageId":"57938","fix":"60284","desc":"57940"},{"messageId":"57941","fix":"60285","desc":"57943"},{"messageId":"57938","fix":"60286","desc":"57940"},{"messageId":"57941","fix":"60287","desc":"57943"},{"messageId":"57938","fix":"60288","desc":"57940"},{"messageId":"57941","fix":"60289","desc":"57943"},{"messageId":"57938","fix":"60290","desc":"57940"},{"messageId":"57941","fix":"60291","desc":"57943"},{"messageId":"57938","fix":"60292","desc":"57940"},{"messageId":"57941","fix":"60293","desc":"57943"},{"messageId":"57938","fix":"60294","desc":"57940"},{"messageId":"57941","fix":"60295","desc":"57943"},{"messageId":"57938","fix":"60296","desc":"57940"},{"messageId":"57941","fix":"60297","desc":"57943"},{"messageId":"57938","fix":"60298","desc":"57940"},{"messageId":"57941","fix":"60299","desc":"57943"},{"messageId":"57938","fix":"60300","desc":"57940"},{"messageId":"57941","fix":"60301","desc":"57943"},{"messageId":"57938","fix":"60302","desc":"57940"},{"messageId":"57941","fix":"60303","desc":"57943"},{"messageId":"57938","fix":"60304","desc":"57940"},{"messageId":"57941","fix":"60305","desc":"57943"},{"messageId":"57938","fix":"60306","desc":"57940"},{"messageId":"57941","fix":"60307","desc":"57943"},{"messageId":"57938","fix":"60308","desc":"57940"},{"messageId":"57941","fix":"60309","desc":"57943"},{"messageId":"57938","fix":"60310","desc":"57940"},{"messageId":"57941","fix":"60311","desc":"57943"},{"messageId":"57938","fix":"60312","desc":"57940"},{"messageId":"57941","fix":"60313","desc":"57943"},{"messageId":"57938","fix":"60314","desc":"57940"},{"messageId":"57941","fix":"60315","desc":"57943"},{"messageId":"57938","fix":"60316","desc":"57940"},{"messageId":"57941","fix":"60317","desc":"57943"},{"messageId":"57938","fix":"60318","desc":"57940"},{"messageId":"57941","fix":"60319","desc":"57943"},{"messageId":"57938","fix":"60320","desc":"57940"},{"messageId":"57941","fix":"60321","desc":"57943"},{"messageId":"57938","fix":"60322","desc":"57940"},{"messageId":"57941","fix":"60323","desc":"57943"},{"messageId":"57938","fix":"60324","desc":"57940"},{"messageId":"57941","fix":"60325","desc":"57943"},{"messageId":"57938","fix":"60326","desc":"57940"},{"messageId":"57941","fix":"60327","desc":"57943"},{"messageId":"57938","fix":"60328","desc":"57940"},{"messageId":"57941","fix":"60329","desc":"57943"},{"messageId":"57938","fix":"60330","desc":"57940"},{"messageId":"57941","fix":"60331","desc":"57943"},{"messageId":"57938","fix":"60332","desc":"57940"},{"messageId":"57941","fix":"60333","desc":"57943"},{"kind":"58246","justification":"58247"},{"messageId":"57938","fix":"60334","desc":"57940"},{"messageId":"57941","fix":"60335","desc":"57943"},{"kind":"58246","justification":"58247"},{"messageId":"57938","fix":"60336","desc":"57940"},{"messageId":"57941","fix":"60337","desc":"57943"},{"messageId":"57938","fix":"60338","desc":"57940"},{"messageId":"57941","fix":"60339","desc":"57943"},{"messageId":"57938","fix":"60340","desc":"57940"},{"messageId":"57941","fix":"60341","desc":"57943"},{"messageId":"57938","fix":"60342","desc":"57940"},{"messageId":"57941","fix":"60343","desc":"57943"},{"messageId":"57938","fix":"60344","desc":"57940"},{"messageId":"57941","fix":"60345","desc":"57943"},{"messageId":"57938","fix":"60346","desc":"57940"},{"messageId":"57941","fix":"60347","desc":"57943"},{"messageId":"57938","fix":"60348","desc":"57940"},{"messageId":"57941","fix":"60349","desc":"57943"},{"messageId":"57938","fix":"60350","desc":"57940"},{"messageId":"57941","fix":"60351","desc":"57943"},{"messageId":"57938","fix":"60352","desc":"57940"},{"messageId":"57941","fix":"60353","desc":"57943"},{"messageId":"57938","fix":"60354","desc":"57940"},{"messageId":"57941","fix":"60355","desc":"57943"},{"messageId":"57938","fix":"60356","desc":"57940"},{"messageId":"57941","fix":"60357","desc":"57943"},{"messageId":"57938","fix":"60358","desc":"57940"},{"messageId":"57941","fix":"60359","desc":"57943"},{"messageId":"57938","fix":"60360","desc":"57940"},{"messageId":"57941","fix":"60361","desc":"57943"},{"messageId":"57938","fix":"60362","desc":"57940"},{"messageId":"57941","fix":"60363","desc":"57943"},{"messageId":"57938","fix":"60364","desc":"57940"},{"messageId":"57941","fix":"60365","desc":"57943"},{"messageId":"57938","fix":"60366","desc":"57940"},{"messageId":"57941","fix":"60367","desc":"57943"},{"messageId":"57938","fix":"60368","desc":"57940"},{"messageId":"57941","fix":"60369","desc":"57943"},{"messageId":"57938","fix":"60370","desc":"57940"},{"messageId":"57941","fix":"60371","desc":"57943"},{"messageId":"57938","fix":"60372","desc":"57940"},{"messageId":"57941","fix":"60373","desc":"57943"},{"messageId":"57938","fix":"60374","desc":"57940"},{"messageId":"57941","fix":"60375","desc":"57943"},{"messageId":"57938","fix":"60376","desc":"57940"},{"messageId":"57941","fix":"60377","desc":"57943"},{"messageId":"57938","fix":"60378","desc":"57940"},{"messageId":"57941","fix":"60379","desc":"57943"},{"messageId":"57938","fix":"60380","desc":"57940"},{"messageId":"57941","fix":"60381","desc":"57943"},{"messageId":"57938","fix":"60382","desc":"57940"},{"messageId":"57941","fix":"60383","desc":"57943"},{"messageId":"57938","fix":"60384","desc":"57940"},{"messageId":"57941","fix":"60385","desc":"57943"},{"messageId":"57938","fix":"60386","desc":"57940"},{"messageId":"57941","fix":"60387","desc":"57943"},{"messageId":"57938","fix":"60388","desc":"57940"},{"messageId":"57941","fix":"60389","desc":"57943"},{"messageId":"57938","fix":"60390","desc":"57940"},{"messageId":"57941","fix":"60391","desc":"57943"},{"messageId":"57938","fix":"60392","desc":"57940"},{"messageId":"57941","fix":"60393","desc":"57943"},{"messageId":"57938","fix":"60394","desc":"57940"},{"messageId":"57941","fix":"60395","desc":"57943"},{"messageId":"57938","fix":"60396","desc":"57940"},{"messageId":"57941","fix":"60397","desc":"57943"},{"messageId":"57938","fix":"60398","desc":"57940"},{"messageId":"57941","fix":"60399","desc":"57943"},{"messageId":"57938","fix":"60400","desc":"57940"},{"messageId":"57941","fix":"60401","desc":"57943"},{"messageId":"57938","fix":"60402","desc":"57940"},{"messageId":"57941","fix":"60403","desc":"57943"},{"messageId":"57938","fix":"60404","desc":"57940"},{"messageId":"57941","fix":"60405","desc":"57943"},{"messageId":"57938","fix":"60406","desc":"57940"},{"messageId":"57941","fix":"60407","desc":"57943"},{"messageId":"57938","fix":"60408","desc":"57940"},{"messageId":"57941","fix":"60409","desc":"57943"},{"messageId":"57938","fix":"60410","desc":"57940"},{"messageId":"57941","fix":"60411","desc":"57943"},{"messageId":"57938","fix":"60412","desc":"57940"},{"messageId":"57941","fix":"60413","desc":"57943"},{"messageId":"57938","fix":"60414","desc":"57940"},{"messageId":"57941","fix":"60415","desc":"57943"},{"messageId":"57938","fix":"60416","desc":"57940"},{"messageId":"57941","fix":"60417","desc":"57943"},{"messageId":"57938","fix":"60418","desc":"57940"},{"messageId":"57941","fix":"60419","desc":"57943"},{"messageId":"57938","fix":"60420","desc":"57940"},{"messageId":"57941","fix":"60421","desc":"57943"},{"messageId":"57938","fix":"60422","desc":"57940"},{"messageId":"57941","fix":"60423","desc":"57943"},{"messageId":"57938","fix":"60424","desc":"57940"},{"messageId":"57941","fix":"60425","desc":"57943"},{"messageId":"57938","fix":"60426","desc":"57940"},{"messageId":"57941","fix":"60427","desc":"57943"},{"messageId":"57938","fix":"60428","desc":"57940"},{"messageId":"57941","fix":"60429","desc":"57943"},{"messageId":"57938","fix":"60430","desc":"57940"},{"messageId":"57941","fix":"60431","desc":"57943"},{"messageId":"57938","fix":"60432","desc":"57940"},{"messageId":"57941","fix":"60433","desc":"57943"},{"messageId":"57938","fix":"60434","desc":"57940"},{"messageId":"57941","fix":"60435","desc":"57943"},{"messageId":"57938","fix":"60436","desc":"57940"},{"messageId":"57941","fix":"60437","desc":"57943"},{"messageId":"57938","fix":"60438","desc":"57940"},{"messageId":"57941","fix":"60439","desc":"57943"},{"messageId":"57938","fix":"60440","desc":"57940"},{"messageId":"57941","fix":"60441","desc":"57943"},{"messageId":"57938","fix":"60442","desc":"57940"},{"messageId":"57941","fix":"60443","desc":"57943"},{"messageId":"57938","fix":"60444","desc":"57940"},{"messageId":"57941","fix":"60445","desc":"57943"},{"messageId":"57938","fix":"60446","desc":"57940"},{"messageId":"57941","fix":"60447","desc":"57943"},{"messageId":"57938","fix":"60448","desc":"57940"},{"messageId":"57941","fix":"60449","desc":"57943"},{"messageId":"57938","fix":"60450","desc":"57940"},{"messageId":"57941","fix":"60451","desc":"57943"},{"messageId":"57938","fix":"60452","desc":"57940"},{"messageId":"57941","fix":"60453","desc":"57943"},{"messageId":"57938","fix":"60454","desc":"57940"},{"messageId":"57941","fix":"60455","desc":"57943"},{"messageId":"57938","fix":"60456","desc":"57940"},{"messageId":"57941","fix":"60457","desc":"57943"},{"messageId":"57938","fix":"60458","desc":"57940"},{"messageId":"57941","fix":"60459","desc":"57943"},{"messageId":"57938","fix":"60460","desc":"57940"},{"messageId":"57941","fix":"60461","desc":"57943"},{"messageId":"57938","fix":"60462","desc":"57940"},{"messageId":"57941","fix":"60463","desc":"57943"},{"messageId":"57938","fix":"60464","desc":"57940"},{"messageId":"57941","fix":"60465","desc":"57943"},{"messageId":"57938","fix":"60466","desc":"57940"},{"messageId":"57941","fix":"60467","desc":"57943"},{"messageId":"57938","fix":"60468","desc":"57940"},{"messageId":"57941","fix":"60469","desc":"57943"},{"messageId":"57938","fix":"60470","desc":"57940"},{"messageId":"57941","fix":"60471","desc":"57943"},{"messageId":"57938","fix":"60472","desc":"57940"},{"messageId":"57941","fix":"60473","desc":"57943"},{"messageId":"57938","fix":"60474","desc":"57940"},{"messageId":"57941","fix":"60475","desc":"57943"},{"messageId":"57938","fix":"60476","desc":"57940"},{"messageId":"57941","fix":"60477","desc":"57943"},{"messageId":"57938","fix":"60478","desc":"57940"},{"messageId":"57941","fix":"60479","desc":"57943"},{"messageId":"57938","fix":"60480","desc":"57940"},{"messageId":"57941","fix":"60481","desc":"57943"},{"messageId":"57938","fix":"60482","desc":"57940"},{"messageId":"57941","fix":"60483","desc":"57943"},{"messageId":"57938","fix":"60484","desc":"57940"},{"messageId":"57941","fix":"60485","desc":"57943"},{"messageId":"57938","fix":"60486","desc":"57940"},{"messageId":"57941","fix":"60487","desc":"57943"},{"messageId":"57938","fix":"60488","desc":"57940"},{"messageId":"57941","fix":"60489","desc":"57943"},{"messageId":"57938","fix":"60490","desc":"57940"},{"messageId":"57941","fix":"60491","desc":"57943"},{"messageId":"57938","fix":"60492","desc":"57940"},{"messageId":"57941","fix":"60493","desc":"57943"},{"messageId":"57938","fix":"60494","desc":"57940"},{"messageId":"57941","fix":"60495","desc":"57943"},{"messageId":"57938","fix":"60496","desc":"57940"},{"messageId":"57941","fix":"60497","desc":"57943"},{"messageId":"57938","fix":"60498","desc":"57940"},{"messageId":"57941","fix":"60499","desc":"57943"},{"messageId":"57938","fix":"60500","desc":"57940"},{"messageId":"57941","fix":"60501","desc":"57943"},{"messageId":"57938","fix":"60502","desc":"57940"},{"messageId":"57941","fix":"60503","desc":"57943"},{"messageId":"57938","fix":"60504","desc":"57940"},{"messageId":"57941","fix":"60505","desc":"57943"},{"messageId":"57938","fix":"60506","desc":"57940"},{"messageId":"57941","fix":"60507","desc":"57943"},{"messageId":"57938","fix":"60508","desc":"57940"},{"messageId":"57941","fix":"60509","desc":"57943"},{"messageId":"57938","fix":"60510","desc":"57940"},{"messageId":"57941","fix":"60511","desc":"57943"},{"messageId":"57938","fix":"60512","desc":"57940"},{"messageId":"57941","fix":"60513","desc":"57943"},{"messageId":"57938","fix":"60514","desc":"57940"},{"messageId":"57941","fix":"60515","desc":"57943"},{"messageId":"57938","fix":"60516","desc":"57940"},{"messageId":"57941","fix":"60517","desc":"57943"},{"messageId":"57938","fix":"60518","desc":"57940"},{"messageId":"57941","fix":"60519","desc":"57943"},{"messageId":"57938","fix":"60520","desc":"57940"},{"messageId":"57941","fix":"60521","desc":"57943"},{"messageId":"57938","fix":"60522","desc":"57940"},{"messageId":"57941","fix":"60523","desc":"57943"},{"messageId":"57938","fix":"60524","desc":"57940"},{"messageId":"57941","fix":"60525","desc":"57943"},{"messageId":"57938","fix":"60526","desc":"57940"},{"messageId":"57941","fix":"60527","desc":"57943"},{"messageId":"57938","fix":"60528","desc":"57940"},{"messageId":"57941","fix":"60529","desc":"57943"},{"messageId":"57938","fix":"60530","desc":"57940"},{"messageId":"57941","fix":"60531","desc":"57943"},{"messageId":"57938","fix":"60532","desc":"57940"},{"messageId":"57941","fix":"60533","desc":"57943"},{"messageId":"57938","fix":"60534","desc":"57940"},{"messageId":"57941","fix":"60535","desc":"57943"},{"messageId":"57938","fix":"60536","desc":"57940"},{"messageId":"57941","fix":"60537","desc":"57943"},{"messageId":"57938","fix":"60538","desc":"57940"},{"messageId":"57941","fix":"60539","desc":"57943"},{"messageId":"57938","fix":"60540","desc":"57940"},{"messageId":"57941","fix":"60541","desc":"57943"},{"messageId":"57938","fix":"60542","desc":"57940"},{"messageId":"57941","fix":"60543","desc":"57943"},{"messageId":"57938","fix":"60544","desc":"57940"},{"messageId":"57941","fix":"60545","desc":"57943"},{"messageId":"57938","fix":"60546","desc":"57940"},{"messageId":"57941","fix":"60547","desc":"57943"},{"messageId":"57938","fix":"60548","desc":"57940"},{"messageId":"57941","fix":"60549","desc":"57943"},{"messageId":"57938","fix":"60550","desc":"57940"},{"messageId":"57941","fix":"60551","desc":"57943"},{"messageId":"57938","fix":"60552","desc":"57940"},{"messageId":"57941","fix":"60553","desc":"57943"},{"messageId":"57938","fix":"60554","desc":"57940"},{"messageId":"57941","fix":"60555","desc":"57943"},{"messageId":"57938","fix":"60556","desc":"57940"},{"messageId":"57941","fix":"60557","desc":"57943"},{"messageId":"57938","fix":"60558","desc":"57940"},{"messageId":"57941","fix":"60559","desc":"57943"},{"messageId":"57938","fix":"60560","desc":"57940"},{"messageId":"57941","fix":"60561","desc":"57943"},{"messageId":"57938","fix":"60562","desc":"57940"},{"messageId":"57941","fix":"60563","desc":"57943"},{"messageId":"57938","fix":"60564","desc":"57940"},{"messageId":"57941","fix":"60565","desc":"57943"},{"messageId":"57938","fix":"60566","desc":"57940"},{"messageId":"57941","fix":"60567","desc":"57943"},{"messageId":"57938","fix":"60568","desc":"57940"},{"messageId":"57941","fix":"60569","desc":"57943"},{"messageId":"57938","fix":"60570","desc":"57940"},{"messageId":"57941","fix":"60571","desc":"57943"},{"messageId":"57938","fix":"60572","desc":"57940"},{"messageId":"57941","fix":"60573","desc":"57943"},{"messageId":"57938","fix":"60574","desc":"57940"},{"messageId":"57941","fix":"60575","desc":"57943"},{"messageId":"57938","fix":"60576","desc":"57940"},{"messageId":"57941","fix":"60577","desc":"57943"},{"messageId":"57938","fix":"60578","desc":"57940"},{"messageId":"57941","fix":"60579","desc":"57943"},{"messageId":"57938","fix":"60580","desc":"57940"},{"messageId":"57941","fix":"60581","desc":"57943"},{"messageId":"57938","fix":"60582","desc":"57940"},{"messageId":"57941","fix":"60583","desc":"57943"},{"messageId":"57938","fix":"60584","desc":"57940"},{"messageId":"57941","fix":"60585","desc":"57943"},{"messageId":"57938","fix":"60586","desc":"57940"},{"messageId":"57941","fix":"60587","desc":"57943"},{"messageId":"57938","fix":"60588","desc":"57940"},{"messageId":"57941","fix":"60589","desc":"57943"},{"messageId":"57938","fix":"60590","desc":"57940"},{"messageId":"57941","fix":"60591","desc":"57943"},{"messageId":"57938","fix":"60592","desc":"57940"},{"messageId":"57941","fix":"60593","desc":"57943"},{"messageId":"57938","fix":"60594","desc":"57940"},{"messageId":"57941","fix":"60595","desc":"57943"},{"messageId":"57938","fix":"60596","desc":"57940"},{"messageId":"57941","fix":"60597","desc":"57943"},{"messageId":"57938","fix":"60598","desc":"57940"},{"messageId":"57941","fix":"60599","desc":"57943"},{"messageId":"57938","fix":"60600","desc":"57940"},{"messageId":"57941","fix":"60601","desc":"57943"},{"messageId":"57938","fix":"60602","desc":"57940"},{"messageId":"57941","fix":"60603","desc":"57943"},{"messageId":"57938","fix":"60604","desc":"57940"},{"messageId":"57941","fix":"60605","desc":"57943"},{"messageId":"57938","fix":"60606","desc":"57940"},{"messageId":"57941","fix":"60607","desc":"57943"},{"messageId":"57938","fix":"60608","desc":"57940"},{"messageId":"57941","fix":"60609","desc":"57943"},{"messageId":"57938","fix":"60610","desc":"57940"},{"messageId":"57941","fix":"60611","desc":"57943"},{"messageId":"57938","fix":"60612","desc":"57940"},{"messageId":"57941","fix":"60613","desc":"57943"},{"messageId":"57938","fix":"60614","desc":"57940"},{"messageId":"57941","fix":"60615","desc":"57943"},{"messageId":"57938","fix":"60616","desc":"57940"},{"messageId":"57941","fix":"60617","desc":"57943"},{"messageId":"57938","fix":"60618","desc":"57940"},{"messageId":"57941","fix":"60619","desc":"57943"},{"messageId":"57938","fix":"60620","desc":"57940"},{"messageId":"57941","fix":"60621","desc":"57943"},{"messageId":"57938","fix":"60622","desc":"57940"},{"messageId":"57941","fix":"60623","desc":"57943"},{"messageId":"57938","fix":"60624","desc":"57940"},{"messageId":"57941","fix":"60625","desc":"57943"},{"messageId":"57938","fix":"60626","desc":"57940"},{"messageId":"57941","fix":"60627","desc":"57943"},{"messageId":"57938","fix":"60628","desc":"57940"},{"messageId":"57941","fix":"60629","desc":"57943"},{"messageId":"57938","fix":"60630","desc":"57940"},{"messageId":"57941","fix":"60631","desc":"57943"},{"messageId":"57938","fix":"60632","desc":"57940"},{"messageId":"57941","fix":"60633","desc":"57943"},{"messageId":"57938","fix":"60634","desc":"57940"},{"messageId":"57941","fix":"60635","desc":"57943"},{"messageId":"57938","fix":"60636","desc":"57940"},{"messageId":"57941","fix":"60637","desc":"57943"},{"messageId":"57938","fix":"60638","desc":"57940"},{"messageId":"57941","fix":"60639","desc":"57943"},{"messageId":"57938","fix":"60640","desc":"57940"},{"messageId":"57941","fix":"60641","desc":"57943"},{"messageId":"57938","fix":"60642","desc":"57940"},{"messageId":"57941","fix":"60643","desc":"57943"},{"messageId":"57938","fix":"60644","desc":"57940"},{"messageId":"57941","fix":"60645","desc":"57943"},{"messageId":"57938","fix":"60646","desc":"57940"},{"messageId":"57941","fix":"60647","desc":"57943"},{"messageId":"57938","fix":"60648","desc":"57940"},{"messageId":"57941","fix":"60649","desc":"57943"},{"messageId":"57938","fix":"60650","desc":"57940"},{"messageId":"57941","fix":"60651","desc":"57943"},{"messageId":"57938","fix":"60652","desc":"57940"},{"messageId":"57941","fix":"60653","desc":"57943"},{"messageId":"57938","fix":"60654","desc":"57940"},{"messageId":"57941","fix":"60655","desc":"57943"},{"messageId":"57938","fix":"60656","desc":"57940"},{"messageId":"57941","fix":"60657","desc":"57943"},{"messageId":"57938","fix":"60658","desc":"57940"},{"messageId":"57941","fix":"60659","desc":"57943"},{"messageId":"57938","fix":"60660","desc":"57940"},{"messageId":"57941","fix":"60661","desc":"57943"},{"messageId":"57938","fix":"60662","desc":"57940"},{"messageId":"57941","fix":"60663","desc":"57943"},{"messageId":"57938","fix":"60664","desc":"57940"},{"messageId":"57941","fix":"60665","desc":"57943"},{"messageId":"57938","fix":"60666","desc":"57940"},{"messageId":"57941","fix":"60667","desc":"57943"},{"messageId":"57938","fix":"60668","desc":"57940"},{"messageId":"57941","fix":"60669","desc":"57943"},{"messageId":"57938","fix":"60670","desc":"57940"},{"messageId":"57941","fix":"60671","desc":"57943"},{"messageId":"57938","fix":"60672","desc":"57940"},{"messageId":"57941","fix":"60673","desc":"57943"},{"messageId":"57938","fix":"60674","desc":"57940"},{"messageId":"57941","fix":"60675","desc":"57943"},{"messageId":"57938","fix":"60676","desc":"57940"},{"messageId":"57941","fix":"60677","desc":"57943"},{"messageId":"57938","fix":"60678","desc":"57940"},{"messageId":"57941","fix":"60679","desc":"57943"},{"messageId":"57938","fix":"60680","desc":"57940"},{"messageId":"57941","fix":"60681","desc":"57943"},{"messageId":"57938","fix":"60682","desc":"57940"},{"messageId":"57941","fix":"60683","desc":"57943"},{"messageId":"57938","fix":"60684","desc":"57940"},{"messageId":"57941","fix":"60685","desc":"57943"},{"messageId":"57938","fix":"60686","desc":"57940"},{"messageId":"57941","fix":"60687","desc":"57943"},{"messageId":"57938","fix":"60688","desc":"57940"},{"messageId":"57941","fix":"60689","desc":"57943"},{"messageId":"57938","fix":"60690","desc":"57940"},{"messageId":"57941","fix":"60691","desc":"57943"},{"messageId":"57938","fix":"60692","desc":"57940"},{"messageId":"57941","fix":"60693","desc":"57943"},{"messageId":"57938","fix":"60694","desc":"57940"},{"messageId":"57941","fix":"60695","desc":"57943"},{"messageId":"57938","fix":"60696","desc":"57940"},{"messageId":"57941","fix":"60697","desc":"57943"},{"messageId":"57938","fix":"60698","desc":"57940"},{"messageId":"57941","fix":"60699","desc":"57943"},{"messageId":"57938","fix":"60700","desc":"57940"},{"messageId":"57941","fix":"60701","desc":"57943"},{"messageId":"57938","fix":"60702","desc":"57940"},{"messageId":"57941","fix":"60703","desc":"57943"},{"messageId":"57938","fix":"60704","desc":"57940"},{"messageId":"57941","fix":"60705","desc":"57943"},{"messageId":"57938","fix":"60706","desc":"57940"},{"messageId":"57941","fix":"60707","desc":"57943"},{"messageId":"57938","fix":"60708","desc":"57940"},{"messageId":"57941","fix":"60709","desc":"57943"},{"messageId":"57938","fix":"60710","desc":"57940"},{"messageId":"57941","fix":"60711","desc":"57943"},{"messageId":"57938","fix":"60712","desc":"57940"},{"messageId":"57941","fix":"60713","desc":"57943"},{"messageId":"57938","fix":"60714","desc":"57940"},{"messageId":"57941","fix":"60715","desc":"57943"},{"messageId":"57938","fix":"60716","desc":"57940"},{"messageId":"57941","fix":"60717","desc":"57943"},{"messageId":"57938","fix":"60718","desc":"57940"},{"messageId":"57941","fix":"60719","desc":"57943"},{"messageId":"57938","fix":"60720","desc":"57940"},{"messageId":"57941","fix":"60721","desc":"57943"},{"messageId":"57938","fix":"60722","desc":"57940"},{"messageId":"57941","fix":"60723","desc":"57943"},{"messageId":"57938","fix":"60724","desc":"57940"},{"messageId":"57941","fix":"60725","desc":"57943"},{"messageId":"57938","fix":"60726","desc":"57940"},{"messageId":"57941","fix":"60727","desc":"57943"},{"messageId":"57938","fix":"60728","desc":"57940"},{"messageId":"57941","fix":"60729","desc":"57943"},{"messageId":"57938","fix":"60730","desc":"57940"},{"messageId":"57941","fix":"60731","desc":"57943"},{"messageId":"57938","fix":"60732","desc":"57940"},{"messageId":"57941","fix":"60733","desc":"57943"},{"messageId":"57938","fix":"60734","desc":"57940"},{"messageId":"57941","fix":"60735","desc":"57943"},{"messageId":"57938","fix":"60736","desc":"57940"},{"messageId":"57941","fix":"60737","desc":"57943"},{"messageId":"57938","fix":"60738","desc":"57940"},{"messageId":"57941","fix":"60739","desc":"57943"},{"messageId":"57938","fix":"60740","desc":"57940"},{"messageId":"57941","fix":"60741","desc":"57943"},{"messageId":"57938","fix":"60742","desc":"57940"},{"messageId":"57941","fix":"60743","desc":"57943"},{"messageId":"57938","fix":"60744","desc":"57940"},{"messageId":"57941","fix":"60745","desc":"57943"},{"messageId":"57938","fix":"60746","desc":"57940"},{"messageId":"57941","fix":"60747","desc":"57943"},{"messageId":"57938","fix":"60748","desc":"57940"},{"messageId":"57941","fix":"60749","desc":"57943"},{"messageId":"57938","fix":"60750","desc":"57940"},{"messageId":"57941","fix":"60751","desc":"57943"},{"messageId":"57938","fix":"60752","desc":"57940"},{"messageId":"57941","fix":"60753","desc":"57943"},{"messageId":"57938","fix":"60754","desc":"57940"},{"messageId":"57941","fix":"60755","desc":"57943"},{"messageId":"57938","fix":"60756","desc":"57940"},{"messageId":"57941","fix":"60757","desc":"57943"},{"messageId":"57938","fix":"60758","desc":"57940"},{"messageId":"57941","fix":"60759","desc":"57943"},{"messageId":"57938","fix":"60760","desc":"57940"},{"messageId":"57941","fix":"60761","desc":"57943"},{"messageId":"57938","fix":"60762","desc":"57940"},{"messageId":"57941","fix":"60763","desc":"57943"},{"messageId":"57938","fix":"60764","desc":"57940"},{"messageId":"57941","fix":"60765","desc":"57943"},{"messageId":"57938","fix":"60766","desc":"57940"},{"messageId":"57941","fix":"60767","desc":"57943"},{"messageId":"57938","fix":"60768","desc":"57940"},{"messageId":"57941","fix":"60769","desc":"57943"},{"messageId":"57938","fix":"60770","desc":"57940"},{"messageId":"57941","fix":"60771","desc":"57943"},{"messageId":"57938","fix":"60772","desc":"57940"},{"messageId":"57941","fix":"60773","desc":"57943"},{"messageId":"57938","fix":"60774","desc":"57940"},{"messageId":"57941","fix":"60775","desc":"57943"},{"messageId":"57938","fix":"60776","desc":"57940"},{"messageId":"57941","fix":"60777","desc":"57943"},{"messageId":"57938","fix":"60778","desc":"57940"},{"messageId":"57941","fix":"60779","desc":"57943"},{"messageId":"57938","fix":"60780","desc":"57940"},{"messageId":"57941","fix":"60781","desc":"57943"},{"messageId":"57938","fix":"60782","desc":"57940"},{"messageId":"57941","fix":"60783","desc":"57943"},{"messageId":"57938","fix":"60784","desc":"57940"},{"messageId":"57941","fix":"60785","desc":"57943"},{"messageId":"57938","fix":"60786","desc":"57940"},{"messageId":"57941","fix":"60787","desc":"57943"},{"messageId":"57938","fix":"60788","desc":"57940"},{"messageId":"57941","fix":"60789","desc":"57943"},{"messageId":"57938","fix":"60790","desc":"57940"},{"messageId":"57941","fix":"60791","desc":"57943"},{"messageId":"57938","fix":"60792","desc":"57940"},{"messageId":"57941","fix":"60793","desc":"57943"},{"messageId":"57938","fix":"60794","desc":"57940"},{"messageId":"57941","fix":"60795","desc":"57943"},{"messageId":"57938","fix":"60796","desc":"57940"},{"messageId":"57941","fix":"60797","desc":"57943"},{"messageId":"57938","fix":"60798","desc":"57940"},{"messageId":"57941","fix":"60799","desc":"57943"},{"messageId":"57938","fix":"60800","desc":"57940"},{"messageId":"57941","fix":"60801","desc":"57943"},{"messageId":"57938","fix":"60802","desc":"57940"},{"messageId":"57941","fix":"60803","desc":"57943"},{"messageId":"57938","fix":"60804","desc":"57940"},{"messageId":"57941","fix":"60805","desc":"57943"},{"messageId":"57938","fix":"60806","desc":"57940"},{"messageId":"57941","fix":"60807","desc":"57943"},{"messageId":"57938","fix":"60808","desc":"57940"},{"messageId":"57941","fix":"60809","desc":"57943"},{"messageId":"57938","fix":"60810","desc":"57940"},{"messageId":"57941","fix":"60811","desc":"57943"},{"messageId":"57938","fix":"60812","desc":"57940"},{"messageId":"57941","fix":"60813","desc":"57943"},{"messageId":"57938","fix":"60814","desc":"57940"},{"messageId":"57941","fix":"60815","desc":"57943"},{"messageId":"57938","fix":"60816","desc":"57940"},{"messageId":"57941","fix":"60817","desc":"57943"},{"messageId":"57938","fix":"60818","desc":"57940"},{"messageId":"57941","fix":"60819","desc":"57943"},{"messageId":"57938","fix":"60820","desc":"57940"},{"messageId":"57941","fix":"60821","desc":"57943"},{"messageId":"57938","fix":"60822","desc":"57940"},{"messageId":"57941","fix":"60823","desc":"57943"},{"messageId":"57938","fix":"60824","desc":"57940"},{"messageId":"57941","fix":"60825","desc":"57943"},{"messageId":"57938","fix":"60826","desc":"57940"},{"messageId":"57941","fix":"60827","desc":"57943"},{"messageId":"57938","fix":"60828","desc":"57940"},{"messageId":"57941","fix":"60829","desc":"57943"},{"messageId":"57938","fix":"60830","desc":"57940"},{"messageId":"57941","fix":"60831","desc":"57943"},{"messageId":"57938","fix":"60832","desc":"57940"},{"messageId":"57941","fix":"60833","desc":"57943"},{"messageId":"57938","fix":"60834","desc":"57940"},{"messageId":"57941","fix":"60835","desc":"57943"},{"messageId":"57938","fix":"60836","desc":"57940"},{"messageId":"57941","fix":"60837","desc":"57943"},{"messageId":"57938","fix":"60838","desc":"57940"},{"messageId":"57941","fix":"60839","desc":"57943"},{"messageId":"57938","fix":"60840","desc":"57940"},{"messageId":"57941","fix":"60841","desc":"57943"},{"messageId":"57938","fix":"60842","desc":"57940"},{"messageId":"57941","fix":"60843","desc":"57943"},{"messageId":"57938","fix":"60844","desc":"57940"},{"messageId":"57941","fix":"60845","desc":"57943"},{"messageId":"57938","fix":"60846","desc":"57940"},{"messageId":"57941","fix":"60847","desc":"57943"},{"messageId":"57938","fix":"60848","desc":"57940"},{"messageId":"57941","fix":"60849","desc":"57943"},{"messageId":"57938","fix":"60850","desc":"57940"},{"messageId":"57941","fix":"60851","desc":"57943"},{"messageId":"57938","fix":"60852","desc":"57940"},{"messageId":"57941","fix":"60853","desc":"57943"},{"messageId":"57938","fix":"60854","desc":"57940"},{"messageId":"57941","fix":"60855","desc":"57943"},{"messageId":"57938","fix":"60856","desc":"57940"},{"messageId":"57941","fix":"60857","desc":"57943"},{"messageId":"57938","fix":"60858","desc":"57940"},{"messageId":"57941","fix":"60859","desc":"57943"},{"messageId":"57938","fix":"60860","desc":"57940"},{"messageId":"57941","fix":"60861","desc":"57943"},{"messageId":"57938","fix":"60862","desc":"57940"},{"messageId":"57941","fix":"60863","desc":"57943"},{"messageId":"57938","fix":"60864","desc":"57940"},{"messageId":"57941","fix":"60865","desc":"57943"},{"messageId":"57938","fix":"60866","desc":"57940"},{"messageId":"57941","fix":"60867","desc":"57943"},{"messageId":"57938","fix":"60868","desc":"57940"},{"messageId":"57941","fix":"60869","desc":"57943"},{"messageId":"57938","fix":"60870","desc":"57940"},{"messageId":"57941","fix":"60871","desc":"57943"},{"messageId":"57938","fix":"60872","desc":"57940"},{"messageId":"57941","fix":"60873","desc":"57943"},{"messageId":"57938","fix":"60874","desc":"57940"},{"messageId":"57941","fix":"60875","desc":"57943"},{"messageId":"57938","fix":"60876","desc":"57940"},{"messageId":"57941","fix":"60877","desc":"57943"},{"messageId":"57938","fix":"60878","desc":"57940"},{"messageId":"57941","fix":"60879","desc":"57943"},{"messageId":"57938","fix":"60880","desc":"57940"},{"messageId":"57941","fix":"60881","desc":"57943"},{"messageId":"57938","fix":"60882","desc":"57940"},{"messageId":"57941","fix":"60883","desc":"57943"},{"messageId":"57938","fix":"60884","desc":"57940"},{"messageId":"57941","fix":"60885","desc":"57943"},{"messageId":"57938","fix":"60886","desc":"57940"},{"messageId":"57941","fix":"60887","desc":"57943"},{"messageId":"57938","fix":"60888","desc":"57940"},{"messageId":"57941","fix":"60889","desc":"57943"},{"messageId":"57938","fix":"60890","desc":"57940"},{"messageId":"57941","fix":"60891","desc":"57943"},{"messageId":"57938","fix":"60892","desc":"57940"},{"messageId":"57941","fix":"60893","desc":"57943"},{"messageId":"57938","fix":"60894","desc":"57940"},{"messageId":"57941","fix":"60895","desc":"57943"},{"messageId":"57938","fix":"60896","desc":"57940"},{"messageId":"57941","fix":"60897","desc":"57943"},{"messageId":"57938","fix":"60898","desc":"57940"},{"messageId":"57941","fix":"60899","desc":"57943"},{"messageId":"57938","fix":"60900","desc":"57940"},{"messageId":"57941","fix":"60901","desc":"57943"},{"messageId":"57938","fix":"60902","desc":"57940"},{"messageId":"57941","fix":"60903","desc":"57943"},{"messageId":"57938","fix":"60904","desc":"57940"},{"messageId":"57941","fix":"60905","desc":"57943"},{"messageId":"57938","fix":"60906","desc":"57940"},{"messageId":"57941","fix":"60907","desc":"57943"},{"messageId":"57938","fix":"60908","desc":"57940"},{"messageId":"57941","fix":"60909","desc":"57943"},{"messageId":"57938","fix":"60910","desc":"57940"},{"messageId":"57941","fix":"60911","desc":"57943"},{"messageId":"57938","fix":"60912","desc":"57940"},{"messageId":"57941","fix":"60913","desc":"57943"},{"messageId":"57938","fix":"60914","desc":"57940"},{"messageId":"57941","fix":"60915","desc":"57943"},{"messageId":"57938","fix":"60916","desc":"57940"},{"messageId":"57941","fix":"60917","desc":"57943"},{"messageId":"57938","fix":"60918","desc":"57940"},{"messageId":"57941","fix":"60919","desc":"57943"},{"messageId":"57938","fix":"60920","desc":"57940"},{"messageId":"57941","fix":"60921","desc":"57943"},{"messageId":"57938","fix":"60922","desc":"57940"},{"messageId":"57941","fix":"60923","desc":"57943"},{"messageId":"57938","fix":"60924","desc":"57940"},{"messageId":"57941","fix":"60925","desc":"57943"},{"messageId":"57938","fix":"60926","desc":"57940"},{"messageId":"57941","fix":"60927","desc":"57943"},{"messageId":"57938","fix":"60928","desc":"57940"},{"messageId":"57941","fix":"60929","desc":"57943"},{"messageId":"57938","fix":"60930","desc":"57940"},{"messageId":"57941","fix":"60931","desc":"57943"},{"messageId":"57938","fix":"60932","desc":"57940"},{"messageId":"57941","fix":"60933","desc":"57943"},{"messageId":"57938","fix":"60934","desc":"57940"},{"messageId":"57941","fix":"60935","desc":"57943"},{"messageId":"57938","fix":"60936","desc":"57940"},{"messageId":"57941","fix":"60937","desc":"57943"},{"messageId":"57938","fix":"60938","desc":"57940"},{"messageId":"57941","fix":"60939","desc":"57943"},{"messageId":"57938","fix":"60940","desc":"57940"},{"messageId":"57941","fix":"60941","desc":"57943"},{"messageId":"57938","fix":"60942","desc":"57940"},{"messageId":"57941","fix":"60943","desc":"57943"},{"messageId":"57938","fix":"60944","desc":"57940"},{"messageId":"57941","fix":"60945","desc":"57943"},{"messageId":"57938","fix":"60946","desc":"57940"},{"messageId":"57941","fix":"60947","desc":"57943"},{"messageId":"57938","fix":"60948","desc":"57940"},{"messageId":"57941","fix":"60949","desc":"57943"},{"messageId":"57938","fix":"60950","desc":"57940"},{"messageId":"57941","fix":"60951","desc":"57943"},{"messageId":"57938","fix":"60952","desc":"57940"},{"messageId":"57941","fix":"60953","desc":"57943"},{"messageId":"57938","fix":"60954","desc":"57940"},{"messageId":"57941","fix":"60955","desc":"57943"},{"messageId":"57938","fix":"60956","desc":"57940"},{"messageId":"57941","fix":"60957","desc":"57943"},{"messageId":"57938","fix":"60958","desc":"57940"},{"messageId":"57941","fix":"60959","desc":"57943"},{"messageId":"57938","fix":"60960","desc":"57940"},{"messageId":"57941","fix":"60961","desc":"57943"},{"messageId":"57938","fix":"60962","desc":"57940"},{"messageId":"57941","fix":"60963","desc":"57943"},{"messageId":"57938","fix":"60964","desc":"57940"},{"messageId":"57941","fix":"60965","desc":"57943"},{"messageId":"57938","fix":"60966","desc":"57940"},{"messageId":"57941","fix":"60967","desc":"57943"},{"messageId":"57938","fix":"60968","desc":"57940"},{"messageId":"57941","fix":"60969","desc":"57943"},{"messageId":"57938","fix":"60970","desc":"57940"},{"messageId":"57941","fix":"60971","desc":"57943"},{"messageId":"57938","fix":"60972","desc":"57940"},{"messageId":"57941","fix":"60973","desc":"57943"},{"messageId":"57938","fix":"60974","desc":"57940"},{"messageId":"57941","fix":"60975","desc":"57943"},{"messageId":"57938","fix":"60976","desc":"57940"},{"messageId":"57941","fix":"60977","desc":"57943"},{"messageId":"57938","fix":"60978","desc":"57940"},{"messageId":"57941","fix":"60979","desc":"57943"},{"messageId":"57938","fix":"60980","desc":"57940"},{"messageId":"57941","fix":"60981","desc":"57943"},{"messageId":"57938","fix":"60982","desc":"57940"},{"messageId":"57941","fix":"60983","desc":"57943"},{"messageId":"57938","fix":"60984","desc":"57940"},{"messageId":"57941","fix":"60985","desc":"57943"},{"messageId":"57938","fix":"60986","desc":"57940"},{"messageId":"57941","fix":"60987","desc":"57943"},{"messageId":"57938","fix":"60988","desc":"57940"},{"messageId":"57941","fix":"60989","desc":"57943"},{"messageId":"57938","fix":"60990","desc":"57940"},{"messageId":"57941","fix":"60991","desc":"57943"},{"messageId":"57938","fix":"60992","desc":"57940"},{"messageId":"57941","fix":"60993","desc":"57943"},{"messageId":"57938","fix":"60994","desc":"57940"},{"messageId":"57941","fix":"60995","desc":"57943"},{"messageId":"57938","fix":"60996","desc":"57940"},{"messageId":"57941","fix":"60997","desc":"57943"},{"messageId":"57938","fix":"60998","desc":"57940"},{"messageId":"57941","fix":"60999","desc":"57943"},{"messageId":"57938","fix":"61000","desc":"57940"},{"messageId":"57941","fix":"61001","desc":"57943"},{"messageId":"57938","fix":"61002","desc":"57940"},{"messageId":"57941","fix":"61003","desc":"57943"},{"messageId":"57938","fix":"61004","desc":"57940"},{"messageId":"57941","fix":"61005","desc":"57943"},{"messageId":"57938","fix":"61006","desc":"57940"},{"messageId":"57941","fix":"61007","desc":"57943"},{"messageId":"57938","fix":"61008","desc":"57940"},{"messageId":"57941","fix":"61009","desc":"57943"},{"messageId":"57938","fix":"61010","desc":"57940"},{"messageId":"57941","fix":"61011","desc":"57943"},{"messageId":"57938","fix":"61012","desc":"57940"},{"messageId":"57941","fix":"61013","desc":"57943"},{"messageId":"57938","fix":"61014","desc":"57940"},{"messageId":"57941","fix":"61015","desc":"57943"},{"messageId":"57938","fix":"61016","desc":"57940"},{"messageId":"57941","fix":"61017","desc":"57943"},{"messageId":"57938","fix":"61018","desc":"57940"},{"messageId":"57941","fix":"61019","desc":"57943"},{"messageId":"57938","fix":"61020","desc":"57940"},{"messageId":"57941","fix":"61021","desc":"57943"},{"messageId":"57938","fix":"61022","desc":"57940"},{"messageId":"57941","fix":"61023","desc":"57943"},{"messageId":"57938","fix":"61024","desc":"57940"},{"messageId":"57941","fix":"61025","desc":"57943"},{"messageId":"57938","fix":"61026","desc":"57940"},{"messageId":"57941","fix":"61027","desc":"57943"},{"messageId":"57938","fix":"61028","desc":"57940"},{"messageId":"57941","fix":"61029","desc":"57943"},{"messageId":"57938","fix":"61030","desc":"57940"},{"messageId":"57941","fix":"61031","desc":"57943"},{"messageId":"57938","fix":"61032","desc":"57940"},{"messageId":"57941","fix":"61033","desc":"57943"},{"messageId":"57938","fix":"61034","desc":"57940"},{"messageId":"57941","fix":"61035","desc":"57943"},{"messageId":"57938","fix":"61036","desc":"57940"},{"messageId":"57941","fix":"61037","desc":"57943"},{"messageId":"57938","fix":"61038","desc":"57940"},{"messageId":"57941","fix":"61039","desc":"57943"},{"messageId":"57938","fix":"61040","desc":"57940"},{"messageId":"57941","fix":"61041","desc":"57943"},{"messageId":"57938","fix":"61042","desc":"57940"},{"messageId":"57941","fix":"61043","desc":"57943"},{"messageId":"57938","fix":"61044","desc":"57940"},{"messageId":"57941","fix":"61045","desc":"57943"},{"messageId":"57938","fix":"61046","desc":"57940"},{"messageId":"57941","fix":"61047","desc":"57943"},{"messageId":"57938","fix":"61048","desc":"57940"},{"messageId":"57941","fix":"61049","desc":"57943"},{"messageId":"57938","fix":"61050","desc":"57940"},{"messageId":"57941","fix":"61051","desc":"57943"},{"messageId":"57938","fix":"61052","desc":"57940"},{"messageId":"57941","fix":"61053","desc":"57943"},{"messageId":"57938","fix":"61054","desc":"57940"},{"messageId":"57941","fix":"61055","desc":"57943"},{"messageId":"57938","fix":"61056","desc":"57940"},{"messageId":"57941","fix":"61057","desc":"57943"},{"messageId":"57938","fix":"61058","desc":"57940"},{"messageId":"57941","fix":"61059","desc":"57943"},{"messageId":"57938","fix":"61060","desc":"57940"},{"messageId":"57941","fix":"61061","desc":"57943"},{"messageId":"57938","fix":"61062","desc":"57940"},{"messageId":"57941","fix":"61063","desc":"57943"},{"messageId":"57938","fix":"61064","desc":"57940"},{"messageId":"57941","fix":"61065","desc":"57943"},{"messageId":"57938","fix":"61066","desc":"57940"},{"messageId":"57941","fix":"61067","desc":"57943"},{"messageId":"57938","fix":"61068","desc":"57940"},{"messageId":"57941","fix":"61069","desc":"57943"},{"messageId":"57938","fix":"61070","desc":"57940"},{"messageId":"57941","fix":"61071","desc":"57943"},{"messageId":"57938","fix":"61072","desc":"57940"},{"messageId":"57941","fix":"61073","desc":"57943"},{"messageId":"57938","fix":"61074","desc":"57940"},{"messageId":"57941","fix":"61075","desc":"57943"},{"messageId":"57938","fix":"61076","desc":"57940"},{"messageId":"57941","fix":"61077","desc":"57943"},{"messageId":"57938","fix":"61078","desc":"57940"},{"messageId":"57941","fix":"61079","desc":"57943"},{"messageId":"57938","fix":"61080","desc":"57940"},{"messageId":"57941","fix":"61081","desc":"57943"},{"messageId":"57938","fix":"61082","desc":"57940"},{"messageId":"57941","fix":"61083","desc":"57943"},{"messageId":"57938","fix":"61084","desc":"57940"},{"messageId":"57941","fix":"61085","desc":"57943"},{"messageId":"57938","fix":"61086","desc":"57940"},{"messageId":"57941","fix":"61087","desc":"57943"},{"messageId":"57938","fix":"61088","desc":"57940"},{"messageId":"57941","fix":"61089","desc":"57943"},{"messageId":"57938","fix":"61090","desc":"57940"},{"messageId":"57941","fix":"61091","desc":"57943"},{"messageId":"57938","fix":"61092","desc":"57940"},{"messageId":"57941","fix":"61093","desc":"57943"},{"messageId":"57938","fix":"61094","desc":"57940"},{"messageId":"57941","fix":"61095","desc":"57943"},{"messageId":"57938","fix":"61096","desc":"57940"},{"messageId":"57941","fix":"61097","desc":"57943"},{"messageId":"57938","fix":"61098","desc":"57940"},{"messageId":"57941","fix":"61099","desc":"57943"},{"messageId":"57938","fix":"61100","desc":"57940"},{"messageId":"57941","fix":"61101","desc":"57943"},{"messageId":"57938","fix":"61102","desc":"57940"},{"messageId":"57941","fix":"61103","desc":"57943"},{"messageId":"57938","fix":"61104","desc":"57940"},{"messageId":"57941","fix":"61105","desc":"57943"},{"messageId":"57938","fix":"61106","desc":"57940"},{"messageId":"57941","fix":"61107","desc":"57943"},{"messageId":"57938","fix":"61108","desc":"57940"},{"messageId":"57941","fix":"61109","desc":"57943"},{"messageId":"57938","fix":"61110","desc":"57940"},{"messageId":"57941","fix":"61111","desc":"57943"},{"messageId":"57938","fix":"61112","desc":"57940"},{"messageId":"57941","fix":"61113","desc":"57943"},{"messageId":"57938","fix":"61114","desc":"57940"},{"messageId":"57941","fix":"61115","desc":"57943"},{"messageId":"57938","fix":"61116","desc":"57940"},{"messageId":"57941","fix":"61117","desc":"57943"},{"messageId":"57938","fix":"61118","desc":"57940"},{"messageId":"57941","fix":"61119","desc":"57943"},{"messageId":"57938","fix":"61120","desc":"57940"},{"messageId":"57941","fix":"61121","desc":"57943"},{"messageId":"57938","fix":"61122","desc":"57940"},{"messageId":"57941","fix":"61123","desc":"57943"},{"messageId":"57938","fix":"61124","desc":"57940"},{"messageId":"57941","fix":"61125","desc":"57943"},{"messageId":"57938","fix":"61126","desc":"57940"},{"messageId":"57941","fix":"61127","desc":"57943"},{"messageId":"57938","fix":"61128","desc":"57940"},{"messageId":"57941","fix":"61129","desc":"57943"},{"messageId":"57938","fix":"61130","desc":"57940"},{"messageId":"57941","fix":"61131","desc":"57943"},{"messageId":"57938","fix":"61132","desc":"57940"},{"messageId":"57941","fix":"61133","desc":"57943"},{"messageId":"57938","fix":"61134","desc":"57940"},{"messageId":"57941","fix":"61135","desc":"57943"},{"messageId":"57938","fix":"61136","desc":"57940"},{"messageId":"57941","fix":"61137","desc":"57943"},{"messageId":"57938","fix":"61138","desc":"57940"},{"messageId":"57941","fix":"61139","desc":"57943"},{"messageId":"57938","fix":"61140","desc":"57940"},{"messageId":"57941","fix":"61141","desc":"57943"},{"messageId":"57938","fix":"61142","desc":"57940"},{"messageId":"57941","fix":"61143","desc":"57943"},{"messageId":"57938","fix":"61144","desc":"57940"},{"messageId":"57941","fix":"61145","desc":"57943"},{"messageId":"57938","fix":"61146","desc":"57940"},{"messageId":"57941","fix":"61147","desc":"57943"},{"messageId":"57938","fix":"61148","desc":"57940"},{"messageId":"57941","fix":"61149","desc":"57943"},{"messageId":"57938","fix":"61150","desc":"57940"},{"messageId":"57941","fix":"61151","desc":"57943"},{"messageId":"57938","fix":"61152","desc":"57940"},{"messageId":"57941","fix":"61153","desc":"57943"},{"messageId":"57938","fix":"61154","desc":"57940"},{"messageId":"57941","fix":"61155","desc":"57943"},{"messageId":"57938","fix":"61156","desc":"57940"},{"messageId":"57941","fix":"61157","desc":"57943"},{"messageId":"57938","fix":"61158","desc":"57940"},{"messageId":"57941","fix":"61159","desc":"57943"},{"messageId":"57938","fix":"61160","desc":"57940"},{"messageId":"57941","fix":"61161","desc":"57943"},{"messageId":"57938","fix":"61162","desc":"57940"},{"messageId":"57941","fix":"61163","desc":"57943"},{"messageId":"57938","fix":"61164","desc":"57940"},{"messageId":"57941","fix":"61165","desc":"57943"},{"messageId":"57938","fix":"61166","desc":"57940"},{"messageId":"57941","fix":"61167","desc":"57943"},{"messageId":"57938","fix":"61168","desc":"57940"},{"messageId":"57941","fix":"61169","desc":"57943"},{"messageId":"57938","fix":"61170","desc":"57940"},{"messageId":"57941","fix":"61171","desc":"57943"},{"messageId":"57938","fix":"61172","desc":"57940"},{"messageId":"57941","fix":"61173","desc":"57943"},{"messageId":"57938","fix":"61174","desc":"57940"},{"messageId":"57941","fix":"61175","desc":"57943"},{"messageId":"57938","fix":"61176","desc":"57940"},{"messageId":"57941","fix":"61177","desc":"57943"},{"messageId":"57938","fix":"61178","desc":"57940"},{"messageId":"57941","fix":"61179","desc":"57943"},{"messageId":"57938","fix":"61180","desc":"57940"},{"messageId":"57941","fix":"61181","desc":"57943"},{"messageId":"57938","fix":"61182","desc":"57940"},{"messageId":"57941","fix":"61183","desc":"57943"},{"messageId":"57938","fix":"61184","desc":"57940"},{"messageId":"57941","fix":"61185","desc":"57943"},{"messageId":"57938","fix":"61186","desc":"57940"},{"messageId":"57941","fix":"61187","desc":"57943"},{"messageId":"57938","fix":"61188","desc":"57940"},{"messageId":"57941","fix":"61189","desc":"57943"},{"messageId":"57938","fix":"61190","desc":"57940"},{"messageId":"57941","fix":"61191","desc":"57943"},{"messageId":"57938","fix":"61192","desc":"57940"},{"messageId":"57941","fix":"61193","desc":"57943"},{"messageId":"57938","fix":"61194","desc":"57940"},{"messageId":"57941","fix":"61195","desc":"57943"},{"messageId":"57938","fix":"61196","desc":"57940"},{"messageId":"57941","fix":"61197","desc":"57943"},{"messageId":"57938","fix":"61198","desc":"57940"},{"messageId":"57941","fix":"61199","desc":"57943"},{"kind":"58246","justification":"58247"},{"messageId":"57938","fix":"61200","desc":"57940"},{"messageId":"57941","fix":"61201","desc":"57943"},{"messageId":"57938","fix":"61202","desc":"57940"},{"messageId":"57941","fix":"61203","desc":"57943"},{"messageId":"57938","fix":"61204","desc":"57940"},{"messageId":"57941","fix":"61205","desc":"57943"},{"messageId":"57938","fix":"61206","desc":"57940"},{"messageId":"57941","fix":"61207","desc":"57943"},{"messageId":"57938","fix":"61208","desc":"57940"},{"messageId":"57941","fix":"61209","desc":"57943"},{"messageId":"57938","fix":"61210","desc":"57940"},{"messageId":"57941","fix":"61211","desc":"57943"},{"messageId":"57938","fix":"61212","desc":"57940"},{"messageId":"57941","fix":"61213","desc":"57943"},{"messageId":"57938","fix":"61214","desc":"57940"},{"messageId":"57941","fix":"61215","desc":"57943"},{"messageId":"57938","fix":"61216","desc":"57940"},{"messageId":"57941","fix":"61217","desc":"57943"},{"messageId":"57938","fix":"61218","desc":"57940"},{"messageId":"57941","fix":"61219","desc":"57943"},{"messageId":"57938","fix":"61220","desc":"57940"},{"messageId":"57941","fix":"61221","desc":"57943"},{"messageId":"57938","fix":"61222","desc":"57940"},{"messageId":"57941","fix":"61223","desc":"57943"},{"messageId":"57938","fix":"61224","desc":"57940"},{"messageId":"57941","fix":"61225","desc":"57943"},{"messageId":"57938","fix":"61226","desc":"57940"},{"messageId":"57941","fix":"61227","desc":"57943"},{"messageId":"57938","fix":"61228","desc":"57940"},{"messageId":"57941","fix":"61229","desc":"57943"},{"messageId":"57938","fix":"61230","desc":"57940"},{"messageId":"57941","fix":"61231","desc":"57943"},{"messageId":"57938","fix":"61232","desc":"57940"},{"messageId":"57941","fix":"61233","desc":"57943"},{"messageId":"57938","fix":"61234","desc":"57940"},{"messageId":"57941","fix":"61235","desc":"57943"},{"messageId":"57938","fix":"61236","desc":"57940"},{"messageId":"57941","fix":"61237","desc":"57943"},{"messageId":"57938","fix":"61238","desc":"57940"},{"messageId":"57941","fix":"61239","desc":"57943"},{"messageId":"57938","fix":"61240","desc":"57940"},{"messageId":"57941","fix":"61241","desc":"57943"},{"messageId":"57938","fix":"61242","desc":"57940"},{"messageId":"57941","fix":"61243","desc":"57943"},{"messageId":"57938","fix":"61244","desc":"57940"},{"messageId":"57941","fix":"61245","desc":"57943"},{"messageId":"57938","fix":"61246","desc":"57940"},{"messageId":"57941","fix":"61247","desc":"57943"},{"messageId":"57938","fix":"61248","desc":"57940"},{"messageId":"57941","fix":"61249","desc":"57943"},{"messageId":"57938","fix":"61250","desc":"57940"},{"messageId":"57941","fix":"61251","desc":"57943"},{"messageId":"57938","fix":"61252","desc":"57940"},{"messageId":"57941","fix":"61253","desc":"57943"},{"messageId":"57938","fix":"61254","desc":"57940"},{"messageId":"57941","fix":"61255","desc":"57943"},{"messageId":"57938","fix":"61256","desc":"57940"},{"messageId":"57941","fix":"61257","desc":"57943"},{"messageId":"57938","fix":"61258","desc":"57940"},{"messageId":"57941","fix":"61259","desc":"57943"},{"messageId":"57938","fix":"61260","desc":"57940"},{"messageId":"57941","fix":"61261","desc":"57943"},{"messageId":"57938","fix":"61262","desc":"57940"},{"messageId":"57941","fix":"61263","desc":"57943"},{"messageId":"57938","fix":"61264","desc":"57940"},{"messageId":"57941","fix":"61265","desc":"57943"},{"messageId":"57938","fix":"61266","desc":"57940"},{"messageId":"57941","fix":"61267","desc":"57943"},{"messageId":"57938","fix":"61268","desc":"57940"},{"messageId":"57941","fix":"61269","desc":"57943"},{"messageId":"57938","fix":"61270","desc":"57940"},{"messageId":"57941","fix":"61271","desc":"57943"},{"messageId":"57938","fix":"61272","desc":"57940"},{"messageId":"57941","fix":"61273","desc":"57943"},{"messageId":"57938","fix":"61274","desc":"57940"},{"messageId":"57941","fix":"61275","desc":"57943"},{"messageId":"57938","fix":"61276","desc":"57940"},{"messageId":"57941","fix":"61277","desc":"57943"},{"messageId":"57938","fix":"61278","desc":"57940"},{"messageId":"57941","fix":"61279","desc":"57943"},{"messageId":"57938","fix":"61280","desc":"57940"},{"messageId":"57941","fix":"61281","desc":"57943"},{"messageId":"57938","fix":"61282","desc":"57940"},{"messageId":"57941","fix":"61283","desc":"57943"},{"messageId":"57938","fix":"61284","desc":"57940"},{"messageId":"57941","fix":"61285","desc":"57943"},{"messageId":"57938","fix":"61286","desc":"57940"},{"messageId":"57941","fix":"61287","desc":"57943"},{"messageId":"57938","fix":"61288","desc":"57940"},{"messageId":"57941","fix":"61289","desc":"57943"},{"messageId":"57938","fix":"61290","desc":"57940"},{"messageId":"57941","fix":"61291","desc":"57943"},{"messageId":"57938","fix":"61292","desc":"57940"},{"messageId":"57941","fix":"61293","desc":"57943"},{"messageId":"57938","fix":"61294","desc":"57940"},{"messageId":"57941","fix":"61295","desc":"57943"},{"messageId":"57938","fix":"61296","desc":"57940"},{"messageId":"57941","fix":"61297","desc":"57943"},{"messageId":"57938","fix":"61298","desc":"57940"},{"messageId":"57941","fix":"61299","desc":"57943"},{"messageId":"57938","fix":"61300","desc":"57940"},{"messageId":"57941","fix":"61301","desc":"57943"},{"messageId":"57938","fix":"61302","desc":"57940"},{"messageId":"57941","fix":"61303","desc":"57943"},{"messageId":"57938","fix":"61304","desc":"57940"},{"messageId":"57941","fix":"61305","desc":"57943"},{"messageId":"57938","fix":"61306","desc":"57940"},{"messageId":"57941","fix":"61307","desc":"57943"},{"messageId":"57938","fix":"61308","desc":"57940"},{"messageId":"57941","fix":"61309","desc":"57943"},{"messageId":"57938","fix":"61310","desc":"57940"},{"messageId":"57941","fix":"61311","desc":"57943"},{"messageId":"57938","fix":"61312","desc":"57940"},{"messageId":"57941","fix":"61313","desc":"57943"},{"messageId":"57938","fix":"61314","desc":"57940"},{"messageId":"57941","fix":"61315","desc":"57943"},{"messageId":"57938","fix":"61316","desc":"57940"},{"messageId":"57941","fix":"61317","desc":"57943"},{"messageId":"57938","fix":"61318","desc":"57940"},{"messageId":"57941","fix":"61319","desc":"57943"},{"messageId":"57938","fix":"61320","desc":"57940"},{"messageId":"57941","fix":"61321","desc":"57943"},{"messageId":"57938","fix":"61322","desc":"57940"},{"messageId":"57941","fix":"61323","desc":"57943"},{"messageId":"57938","fix":"61324","desc":"57940"},{"messageId":"57941","fix":"61325","desc":"57943"},{"messageId":"57938","fix":"61326","desc":"57940"},{"messageId":"57941","fix":"61327","desc":"57943"},{"messageId":"57938","fix":"61328","desc":"57940"},{"messageId":"57941","fix":"61329","desc":"57943"},{"messageId":"57938","fix":"61330","desc":"57940"},{"messageId":"57941","fix":"61331","desc":"57943"},{"messageId":"57938","fix":"61332","desc":"57940"},{"messageId":"57941","fix":"61333","desc":"57943"},{"messageId":"57938","fix":"61334","desc":"57940"},{"messageId":"57941","fix":"61335","desc":"57943"},{"messageId":"57938","fix":"61336","desc":"57940"},{"messageId":"57941","fix":"61337","desc":"57943"},{"messageId":"57938","fix":"61338","desc":"57940"},{"messageId":"57941","fix":"61339","desc":"57943"},{"messageId":"57938","fix":"61340","desc":"57940"},{"messageId":"57941","fix":"61341","desc":"57943"},{"messageId":"57938","fix":"61342","desc":"57940"},{"messageId":"57941","fix":"61343","desc":"57943"},{"messageId":"57938","fix":"61344","desc":"57940"},{"messageId":"57941","fix":"61345","desc":"57943"},{"messageId":"57938","fix":"61346","desc":"57940"},{"messageId":"57941","fix":"61347","desc":"57943"},{"messageId":"57938","fix":"61348","desc":"57940"},{"messageId":"57941","fix":"61349","desc":"57943"},{"messageId":"57938","fix":"61350","desc":"57940"},{"messageId":"57941","fix":"61351","desc":"57943"},{"messageId":"57938","fix":"61352","desc":"57940"},{"messageId":"57941","fix":"61353","desc":"57943"},{"messageId":"57938","fix":"61354","desc":"57940"},{"messageId":"57941","fix":"61355","desc":"57943"},{"messageId":"57938","fix":"61356","desc":"57940"},{"messageId":"57941","fix":"61357","desc":"57943"},{"messageId":"57938","fix":"61358","desc":"57940"},{"messageId":"57941","fix":"61359","desc":"57943"},{"messageId":"57938","fix":"61360","desc":"57940"},{"messageId":"57941","fix":"61361","desc":"57943"},{"messageId":"57938","fix":"61362","desc":"57940"},{"messageId":"57941","fix":"61363","desc":"57943"},{"messageId":"57938","fix":"61364","desc":"57940"},{"messageId":"57941","fix":"61365","desc":"57943"},{"messageId":"57938","fix":"61366","desc":"57940"},{"messageId":"57941","fix":"61367","desc":"57943"},{"messageId":"57938","fix":"61368","desc":"57940"},{"messageId":"57941","fix":"61369","desc":"57943"},{"messageId":"57938","fix":"61370","desc":"57940"},{"messageId":"57941","fix":"61371","desc":"57943"},{"messageId":"57938","fix":"61372","desc":"57940"},{"messageId":"57941","fix":"61373","desc":"57943"},{"messageId":"57938","fix":"61374","desc":"57940"},{"messageId":"57941","fix":"61375","desc":"57943"},{"messageId":"57938","fix":"61376","desc":"57940"},{"messageId":"57941","fix":"61377","desc":"57943"},{"messageId":"57938","fix":"61378","desc":"57940"},{"messageId":"57941","fix":"61379","desc":"57943"},{"messageId":"57938","fix":"61380","desc":"57940"},{"messageId":"57941","fix":"61381","desc":"57943"},{"messageId":"57938","fix":"61382","desc":"57940"},{"messageId":"57941","fix":"61383","desc":"57943"},{"messageId":"57938","fix":"61384","desc":"57940"},{"messageId":"57941","fix":"61385","desc":"57943"},{"messageId":"57938","fix":"61386","desc":"57940"},{"messageId":"57941","fix":"61387","desc":"57943"},{"messageId":"57938","fix":"61388","desc":"57940"},{"messageId":"57941","fix":"61389","desc":"57943"},{"messageId":"57938","fix":"61390","desc":"57940"},{"messageId":"57941","fix":"61391","desc":"57943"},{"messageId":"57938","fix":"61392","desc":"57940"},{"messageId":"57941","fix":"61393","desc":"57943"},{"messageId":"57938","fix":"61394","desc":"57940"},{"messageId":"57941","fix":"61395","desc":"57943"},{"messageId":"57938","fix":"61396","desc":"57940"},{"messageId":"57941","fix":"61397","desc":"57943"},{"messageId":"57938","fix":"61398","desc":"57940"},{"messageId":"57941","fix":"61399","desc":"57943"},{"messageId":"57938","fix":"61400","desc":"57940"},{"messageId":"57941","fix":"61401","desc":"57943"},{"messageId":"57938","fix":"61402","desc":"57940"},{"messageId":"57941","fix":"61403","desc":"57943"},{"messageId":"57938","fix":"61404","desc":"57940"},{"messageId":"57941","fix":"61405","desc":"57943"},{"messageId":"57938","fix":"61406","desc":"57940"},{"messageId":"57941","fix":"61407","desc":"57943"},{"messageId":"57938","fix":"61408","desc":"57940"},{"messageId":"57941","fix":"61409","desc":"57943"},{"messageId":"57938","fix":"61410","desc":"57940"},{"messageId":"57941","fix":"61411","desc":"57943"},{"messageId":"57938","fix":"61412","desc":"57940"},{"messageId":"57941","fix":"61413","desc":"57943"},{"messageId":"57938","fix":"61414","desc":"57940"},{"messageId":"57941","fix":"61415","desc":"57943"},{"messageId":"57938","fix":"61416","desc":"57940"},{"messageId":"57941","fix":"61417","desc":"57943"},{"messageId":"57938","fix":"61418","desc":"57940"},{"messageId":"57941","fix":"61419","desc":"57943"},{"messageId":"57938","fix":"61420","desc":"57940"},{"messageId":"57941","fix":"61421","desc":"57943"},{"messageId":"57938","fix":"61422","desc":"57940"},{"messageId":"57941","fix":"61423","desc":"57943"},{"messageId":"57938","fix":"61424","desc":"57940"},{"messageId":"57941","fix":"61425","desc":"57943"},{"messageId":"57938","fix":"61426","desc":"57940"},{"messageId":"57941","fix":"61427","desc":"57943"},{"messageId":"57938","fix":"61428","desc":"57940"},{"messageId":"57941","fix":"61429","desc":"57943"},{"messageId":"57938","fix":"61430","desc":"57940"},{"messageId":"57941","fix":"61431","desc":"57943"},{"messageId":"57938","fix":"61432","desc":"57940"},{"messageId":"57941","fix":"61433","desc":"57943"},{"messageId":"57938","fix":"61434","desc":"57940"},{"messageId":"57941","fix":"61435","desc":"57943"},{"messageId":"57938","fix":"61436","desc":"57940"},{"messageId":"57941","fix":"61437","desc":"57943"},{"messageId":"57938","fix":"61438","desc":"57940"},{"messageId":"57941","fix":"61439","desc":"57943"},{"messageId":"57938","fix":"61440","desc":"57940"},{"messageId":"57941","fix":"61441","desc":"57943"},{"messageId":"57938","fix":"61442","desc":"57940"},{"messageId":"57941","fix":"61443","desc":"57943"},{"messageId":"57938","fix":"61444","desc":"57940"},{"messageId":"57941","fix":"61445","desc":"57943"},{"messageId":"57938","fix":"61446","desc":"57940"},{"messageId":"57941","fix":"61447","desc":"57943"},{"messageId":"57938","fix":"61448","desc":"57940"},{"messageId":"57941","fix":"61449","desc":"57943"},{"messageId":"57938","fix":"61450","desc":"57940"},{"messageId":"57941","fix":"61451","desc":"57943"},{"messageId":"57938","fix":"61452","desc":"57940"},{"messageId":"57941","fix":"61453","desc":"57943"},{"messageId":"57938","fix":"61454","desc":"57940"},{"messageId":"57941","fix":"61455","desc":"57943"},{"messageId":"57938","fix":"61456","desc":"57940"},{"messageId":"57941","fix":"61457","desc":"57943"},{"messageId":"57938","fix":"61458","desc":"57940"},{"messageId":"57941","fix":"61459","desc":"57943"},{"messageId":"57938","fix":"61460","desc":"57940"},{"messageId":"57941","fix":"61461","desc":"57943"},{"messageId":"57938","fix":"61462","desc":"57940"},{"messageId":"57941","fix":"61463","desc":"57943"},{"messageId":"57938","fix":"61464","desc":"57940"},{"messageId":"57941","fix":"61465","desc":"57943"},{"messageId":"57938","fix":"61466","desc":"57940"},{"messageId":"57941","fix":"61467","desc":"57943"},{"messageId":"57938","fix":"61468","desc":"57940"},{"messageId":"57941","fix":"61469","desc":"57943"},{"messageId":"57938","fix":"61470","desc":"57940"},{"messageId":"57941","fix":"61471","desc":"57943"},{"messageId":"57938","fix":"61472","desc":"57940"},{"messageId":"57941","fix":"61473","desc":"57943"},{"messageId":"57938","fix":"61474","desc":"57940"},{"messageId":"57941","fix":"61475","desc":"57943"},{"messageId":"57938","fix":"61476","desc":"57940"},{"messageId":"57941","fix":"61477","desc":"57943"},{"messageId":"57938","fix":"61478","desc":"57940"},{"messageId":"57941","fix":"61479","desc":"57943"},{"messageId":"57938","fix":"61480","desc":"57940"},{"messageId":"57941","fix":"61481","desc":"57943"},{"messageId":"57938","fix":"61482","desc":"57940"},{"messageId":"57941","fix":"61483","desc":"57943"},{"messageId":"57938","fix":"61484","desc":"57940"},{"messageId":"57941","fix":"61485","desc":"57943"},{"messageId":"57938","fix":"61486","desc":"57940"},{"messageId":"57941","fix":"61487","desc":"57943"},{"messageId":"57938","fix":"61488","desc":"57940"},{"messageId":"57941","fix":"61489","desc":"57943"},{"messageId":"57938","fix":"61490","desc":"57940"},{"messageId":"57941","fix":"61491","desc":"57943"},{"messageId":"57938","fix":"61492","desc":"57940"},{"messageId":"57941","fix":"61493","desc":"57943"},{"messageId":"57938","fix":"61494","desc":"57940"},{"messageId":"57941","fix":"61495","desc":"57943"},{"messageId":"57938","fix":"61496","desc":"57940"},{"messageId":"57941","fix":"61497","desc":"57943"},{"messageId":"57938","fix":"61498","desc":"57940"},{"messageId":"57941","fix":"61499","desc":"57943"},{"messageId":"57938","fix":"61500","desc":"57940"},{"messageId":"57941","fix":"61501","desc":"57943"},{"messageId":"57938","fix":"61502","desc":"57940"},{"messageId":"57941","fix":"61503","desc":"57943"},{"messageId":"57938","fix":"61504","desc":"57940"},{"messageId":"57941","fix":"61505","desc":"57943"},{"messageId":"57938","fix":"61506","desc":"57940"},{"messageId":"57941","fix":"61507","desc":"57943"},{"messageId":"57938","fix":"61508","desc":"57940"},{"messageId":"57941","fix":"61509","desc":"57943"},{"messageId":"57938","fix":"61510","desc":"57940"},{"messageId":"57941","fix":"61511","desc":"57943"},{"messageId":"57938","fix":"61512","desc":"57940"},{"messageId":"57941","fix":"61513","desc":"57943"},{"messageId":"57938","fix":"61514","desc":"57940"},{"messageId":"57941","fix":"61515","desc":"57943"},{"messageId":"57938","fix":"61516","desc":"57940"},{"messageId":"57941","fix":"61517","desc":"57943"},{"messageId":"57938","fix":"61518","desc":"57940"},{"messageId":"57941","fix":"61519","desc":"57943"},{"messageId":"57938","fix":"61520","desc":"57940"},{"messageId":"57941","fix":"61521","desc":"57943"},{"messageId":"57938","fix":"61522","desc":"57940"},{"messageId":"57941","fix":"61523","desc":"57943"},{"messageId":"57938","fix":"61524","desc":"57940"},{"messageId":"57941","fix":"61525","desc":"57943"},{"messageId":"57938","fix":"61526","desc":"57940"},{"messageId":"57941","fix":"61527","desc":"57943"},{"messageId":"57938","fix":"61528","desc":"57940"},{"messageId":"57941","fix":"61529","desc":"57943"},{"messageId":"57938","fix":"61530","desc":"57940"},{"messageId":"57941","fix":"61531","desc":"57943"},{"messageId":"57938","fix":"61532","desc":"57940"},{"messageId":"57941","fix":"61533","desc":"57943"},{"messageId":"57938","fix":"61534","desc":"57940"},{"messageId":"57941","fix":"61535","desc":"57943"},{"messageId":"57938","fix":"61536","desc":"57940"},{"messageId":"57941","fix":"61537","desc":"57943"},{"messageId":"57938","fix":"61538","desc":"57940"},{"messageId":"57941","fix":"61539","desc":"57943"},{"messageId":"57938","fix":"61540","desc":"57940"},{"messageId":"57941","fix":"61541","desc":"57943"},{"messageId":"57938","fix":"61542","desc":"57940"},{"messageId":"57941","fix":"61543","desc":"57943"},{"messageId":"57938","fix":"61544","desc":"57940"},{"messageId":"57941","fix":"61545","desc":"57943"},{"messageId":"57938","fix":"61546","desc":"57940"},{"messageId":"57941","fix":"61547","desc":"57943"},{"messageId":"57938","fix":"61548","desc":"57940"},{"messageId":"57941","fix":"61549","desc":"57943"},{"messageId":"57938","fix":"61550","desc":"57940"},{"messageId":"57941","fix":"61551","desc":"57943"},{"messageId":"57938","fix":"61552","desc":"57940"},{"messageId":"57941","fix":"61553","desc":"57943"},{"messageId":"57938","fix":"61554","desc":"57940"},{"messageId":"57941","fix":"61555","desc":"57943"},{"messageId":"57938","fix":"61556","desc":"57940"},{"messageId":"57941","fix":"61557","desc":"57943"},{"messageId":"57938","fix":"61558","desc":"57940"},{"messageId":"57941","fix":"61559","desc":"57943"},{"messageId":"57938","fix":"61560","desc":"57940"},{"messageId":"57941","fix":"61561","desc":"57943"},{"messageId":"57938","fix":"61562","desc":"57940"},{"messageId":"57941","fix":"61563","desc":"57943"},{"messageId":"57938","fix":"61564","desc":"57940"},{"messageId":"57941","fix":"61565","desc":"57943"},{"messageId":"57938","fix":"61566","desc":"57940"},{"messageId":"57941","fix":"61567","desc":"57943"},{"messageId":"57938","fix":"61568","desc":"57940"},{"messageId":"57941","fix":"61569","desc":"57943"},{"messageId":"57938","fix":"61570","desc":"57940"},{"messageId":"57941","fix":"61571","desc":"57943"},{"messageId":"57938","fix":"61572","desc":"57940"},{"messageId":"57941","fix":"61573","desc":"57943"},{"messageId":"57938","fix":"61574","desc":"57940"},{"messageId":"57941","fix":"61575","desc":"57943"},{"messageId":"57938","fix":"61576","desc":"57940"},{"messageId":"57941","fix":"61577","desc":"57943"},{"messageId":"57938","fix":"61578","desc":"57940"},{"messageId":"57941","fix":"61579","desc":"57943"},{"messageId":"57938","fix":"61580","desc":"57940"},{"messageId":"57941","fix":"61581","desc":"57943"},{"messageId":"57938","fix":"61582","desc":"57940"},{"messageId":"57941","fix":"61583","desc":"57943"},{"messageId":"57938","fix":"61584","desc":"57940"},{"messageId":"57941","fix":"61585","desc":"57943"},{"messageId":"57938","fix":"61586","desc":"57940"},{"messageId":"57941","fix":"61587","desc":"57943"},{"messageId":"57938","fix":"61588","desc":"57940"},{"messageId":"57941","fix":"61589","desc":"57943"},{"messageId":"57938","fix":"61590","desc":"57940"},{"messageId":"57941","fix":"61591","desc":"57943"},{"messageId":"57938","fix":"61592","desc":"57940"},{"messageId":"57941","fix":"61593","desc":"57943"},{"messageId":"57938","fix":"61594","desc":"57940"},{"messageId":"57941","fix":"61595","desc":"57943"},{"messageId":"57938","fix":"61596","desc":"57940"},{"messageId":"57941","fix":"61597","desc":"57943"},{"messageId":"57938","fix":"61598","desc":"57940"},{"messageId":"57941","fix":"61599","desc":"57943"},{"messageId":"57938","fix":"61600","desc":"57940"},{"messageId":"57941","fix":"61601","desc":"57943"},{"messageId":"57938","fix":"61602","desc":"57940"},{"messageId":"57941","fix":"61603","desc":"57943"},{"messageId":"57938","fix":"61604","desc":"57940"},{"messageId":"57941","fix":"61605","desc":"57943"},{"messageId":"57938","fix":"61606","desc":"57940"},{"messageId":"57941","fix":"61607","desc":"57943"},{"messageId":"57938","fix":"61608","desc":"57940"},{"messageId":"57941","fix":"61609","desc":"57943"},{"messageId":"57938","fix":"61610","desc":"57940"},{"messageId":"57941","fix":"61611","desc":"57943"},{"messageId":"57938","fix":"61612","desc":"57940"},{"messageId":"57941","fix":"61613","desc":"57943"},{"messageId":"57938","fix":"61614","desc":"57940"},{"messageId":"57941","fix":"61615","desc":"57943"},{"messageId":"57938","fix":"61616","desc":"57940"},{"messageId":"57941","fix":"61617","desc":"57943"},{"messageId":"57938","fix":"61618","desc":"57940"},{"messageId":"57941","fix":"61619","desc":"57943"},{"messageId":"57938","fix":"61620","desc":"57940"},{"messageId":"57941","fix":"61621","desc":"57943"},{"messageId":"57938","fix":"61622","desc":"57940"},{"messageId":"57941","fix":"61623","desc":"57943"},{"messageId":"57938","fix":"61624","desc":"57940"},{"messageId":"57941","fix":"61625","desc":"57943"},{"messageId":"57938","fix":"61626","desc":"57940"},{"messageId":"57941","fix":"61627","desc":"57943"},{"messageId":"57938","fix":"61628","desc":"57940"},{"messageId":"57941","fix":"61629","desc":"57943"},{"messageId":"57938","fix":"61630","desc":"57940"},{"messageId":"57941","fix":"61631","desc":"57943"},{"messageId":"57938","fix":"61632","desc":"57940"},{"messageId":"57941","fix":"61633","desc":"57943"},{"messageId":"57938","fix":"61634","desc":"57940"},{"messageId":"57941","fix":"61635","desc":"57943"},{"messageId":"57938","fix":"61636","desc":"57940"},{"messageId":"57941","fix":"61637","desc":"57943"},{"messageId":"57938","fix":"61638","desc":"57940"},{"messageId":"57941","fix":"61639","desc":"57943"},{"messageId":"57938","fix":"61640","desc":"57940"},{"messageId":"57941","fix":"61641","desc":"57943"},{"messageId":"57938","fix":"61642","desc":"57940"},{"messageId":"57941","fix":"61643","desc":"57943"},{"messageId":"57938","fix":"61644","desc":"57940"},{"messageId":"57941","fix":"61645","desc":"57943"},{"messageId":"57938","fix":"61646","desc":"57940"},{"messageId":"57941","fix":"61647","desc":"57943"},{"messageId":"57938","fix":"61648","desc":"57940"},{"messageId":"57941","fix":"61649","desc":"57943"},{"messageId":"57938","fix":"61650","desc":"57940"},{"messageId":"57941","fix":"61651","desc":"57943"},{"messageId":"57938","fix":"61652","desc":"57940"},{"messageId":"57941","fix":"61653","desc":"57943"},{"messageId":"57938","fix":"61654","desc":"57940"},{"messageId":"57941","fix":"61655","desc":"57943"},{"messageId":"57938","fix":"61656","desc":"57940"},{"messageId":"57941","fix":"61657","desc":"57943"},{"messageId":"57938","fix":"61658","desc":"57940"},{"messageId":"57941","fix":"61659","desc":"57943"},{"messageId":"57938","fix":"61660","desc":"57940"},{"messageId":"57941","fix":"61661","desc":"57943"},{"messageId":"57938","fix":"61662","desc":"57940"},{"messageId":"57941","fix":"61663","desc":"57943"},{"messageId":"57938","fix":"61664","desc":"57940"},{"messageId":"57941","fix":"61665","desc":"57943"},{"messageId":"57938","fix":"61666","desc":"57940"},{"messageId":"57941","fix":"61667","desc":"57943"},{"messageId":"57938","fix":"61668","desc":"57940"},{"messageId":"57941","fix":"61669","desc":"57943"},{"messageId":"57938","fix":"61670","desc":"57940"},{"messageId":"57941","fix":"61671","desc":"57943"},{"messageId":"57938","fix":"61672","desc":"57940"},{"messageId":"57941","fix":"61673","desc":"57943"},{"messageId":"57938","fix":"61674","desc":"57940"},{"messageId":"57941","fix":"61675","desc":"57943"},{"messageId":"57938","fix":"61676","desc":"57940"},{"messageId":"57941","fix":"61677","desc":"57943"},{"messageId":"57938","fix":"61678","desc":"57940"},{"messageId":"57941","fix":"61679","desc":"57943"},{"messageId":"57938","fix":"61680","desc":"57940"},{"messageId":"57941","fix":"61681","desc":"57943"},{"messageId":"57938","fix":"61682","desc":"57940"},{"messageId":"57941","fix":"61683","desc":"57943"},{"messageId":"57938","fix":"61684","desc":"57940"},{"messageId":"57941","fix":"61685","desc":"57943"},{"messageId":"57938","fix":"61686","desc":"57940"},{"messageId":"57941","fix":"61687","desc":"57943"},{"messageId":"57938","fix":"61688","desc":"57940"},{"messageId":"57941","fix":"61689","desc":"57943"},{"messageId":"57938","fix":"61690","desc":"57940"},{"messageId":"57941","fix":"61691","desc":"57943"},{"messageId":"57938","fix":"61692","desc":"57940"},{"messageId":"57941","fix":"61693","desc":"57943"},{"messageId":"57938","fix":"61694","desc":"57940"},{"messageId":"57941","fix":"61695","desc":"57943"},{"messageId":"57938","fix":"61696","desc":"57940"},{"messageId":"57941","fix":"61697","desc":"57943"},{"messageId":"57938","fix":"61698","desc":"57940"},{"messageId":"57941","fix":"61699","desc":"57943"},{"messageId":"57938","fix":"61700","desc":"57940"},{"messageId":"57941","fix":"61701","desc":"57943"},{"messageId":"57938","fix":"61702","desc":"57940"},{"messageId":"57941","fix":"61703","desc":"57943"},{"messageId":"57938","fix":"61704","desc":"57940"},{"messageId":"57941","fix":"61705","desc":"57943"},{"messageId":"57938","fix":"61706","desc":"57940"},{"messageId":"57941","fix":"61707","desc":"57943"},{"messageId":"57938","fix":"61708","desc":"57940"},{"messageId":"57941","fix":"61709","desc":"57943"},{"messageId":"57938","fix":"61710","desc":"57940"},{"messageId":"57941","fix":"61711","desc":"57943"},{"messageId":"57938","fix":"61712","desc":"57940"},{"messageId":"57941","fix":"61713","desc":"57943"},{"messageId":"57938","fix":"61714","desc":"57940"},{"messageId":"57941","fix":"61715","desc":"57943"},{"messageId":"57938","fix":"61716","desc":"57940"},{"messageId":"57941","fix":"61717","desc":"57943"},{"messageId":"57938","fix":"61718","desc":"57940"},{"messageId":"57941","fix":"61719","desc":"57943"},{"messageId":"57938","fix":"61720","desc":"57940"},{"messageId":"57941","fix":"61721","desc":"57943"},{"messageId":"57938","fix":"61722","desc":"57940"},{"messageId":"57941","fix":"61723","desc":"57943"},{"messageId":"57938","fix":"61724","desc":"57940"},{"messageId":"57941","fix":"61725","desc":"57943"},{"messageId":"57938","fix":"61726","desc":"57940"},{"messageId":"57941","fix":"61727","desc":"57943"},{"messageId":"57938","fix":"61728","desc":"57940"},{"messageId":"57941","fix":"61729","desc":"57943"},{"messageId":"57938","fix":"61730","desc":"57940"},{"messageId":"57941","fix":"61731","desc":"57943"},{"messageId":"57938","fix":"61732","desc":"57940"},{"messageId":"57941","fix":"61733","desc":"57943"},{"messageId":"57938","fix":"61734","desc":"57940"},{"messageId":"57941","fix":"61735","desc":"57943"},{"messageId":"57938","fix":"61736","desc":"57940"},{"messageId":"57941","fix":"61737","desc":"57943"},{"messageId":"57938","fix":"61738","desc":"57940"},{"messageId":"57941","fix":"61739","desc":"57943"},{"messageId":"57938","fix":"61740","desc":"57940"},{"messageId":"57941","fix":"61741","desc":"57943"},{"messageId":"57938","fix":"61742","desc":"57940"},{"messageId":"57941","fix":"61743","desc":"57943"},{"messageId":"57938","fix":"61744","desc":"57940"},{"messageId":"57941","fix":"61745","desc":"57943"},{"messageId":"57938","fix":"61746","desc":"57940"},{"messageId":"57941","fix":"61747","desc":"57943"},{"messageId":"57938","fix":"61748","desc":"57940"},{"messageId":"57941","fix":"61749","desc":"57943"},{"messageId":"57938","fix":"61750","desc":"57940"},{"messageId":"57941","fix":"61751","desc":"57943"},{"messageId":"57938","fix":"61752","desc":"57940"},{"messageId":"57941","fix":"61753","desc":"57943"},{"messageId":"57938","fix":"61754","desc":"57940"},{"messageId":"57941","fix":"61755","desc":"57943"},{"messageId":"57938","fix":"61756","desc":"57940"},{"messageId":"57941","fix":"61757","desc":"57943"},{"messageId":"57938","fix":"61758","desc":"57940"},{"messageId":"57941","fix":"61759","desc":"57943"},{"messageId":"57938","fix":"61760","desc":"57940"},{"messageId":"57941","fix":"61761","desc":"57943"},{"messageId":"57938","fix":"61762","desc":"57940"},{"messageId":"57941","fix":"61763","desc":"57943"},{"messageId":"57938","fix":"61764","desc":"57940"},{"messageId":"57941","fix":"61765","desc":"57943"},{"messageId":"57938","fix":"61766","desc":"57940"},{"messageId":"57941","fix":"61767","desc":"57943"},{"messageId":"57938","fix":"61768","desc":"57940"},{"messageId":"57941","fix":"61769","desc":"57943"},{"messageId":"57938","fix":"61770","desc":"57940"},{"messageId":"57941","fix":"61771","desc":"57943"},{"messageId":"57938","fix":"61772","desc":"57940"},{"messageId":"57941","fix":"61773","desc":"57943"},{"messageId":"57938","fix":"61774","desc":"57940"},{"messageId":"57941","fix":"61775","desc":"57943"},{"messageId":"57938","fix":"61776","desc":"57940"},{"messageId":"57941","fix":"61777","desc":"57943"},{"messageId":"57938","fix":"61778","desc":"57940"},{"messageId":"57941","fix":"61779","desc":"57943"},{"messageId":"57938","fix":"61780","desc":"57940"},{"messageId":"57941","fix":"61781","desc":"57943"},{"messageId":"57938","fix":"61782","desc":"57940"},{"messageId":"57941","fix":"61783","desc":"57943"},{"messageId":"57938","fix":"61784","desc":"57940"},{"messageId":"57941","fix":"61785","desc":"57943"},{"messageId":"57938","fix":"61786","desc":"57940"},{"messageId":"57941","fix":"61787","desc":"57943"},{"messageId":"57938","fix":"61788","desc":"57940"},{"messageId":"57941","fix":"61789","desc":"57943"},{"messageId":"57938","fix":"61790","desc":"57940"},{"messageId":"57941","fix":"61791","desc":"57943"},{"messageId":"57938","fix":"61792","desc":"57940"},{"messageId":"57941","fix":"61793","desc":"57943"},{"messageId":"57938","fix":"61794","desc":"57940"},{"messageId":"57941","fix":"61795","desc":"57943"},{"messageId":"57938","fix":"61796","desc":"57940"},{"messageId":"57941","fix":"61797","desc":"57943"},{"messageId":"57938","fix":"61798","desc":"57940"},{"messageId":"57941","fix":"61799","desc":"57943"},{"messageId":"57938","fix":"61800","desc":"57940"},{"messageId":"57941","fix":"61801","desc":"57943"},{"messageId":"57938","fix":"61802","desc":"57940"},{"messageId":"57941","fix":"61803","desc":"57943"},{"messageId":"57938","fix":"61804","desc":"57940"},{"messageId":"57941","fix":"61805","desc":"57943"},{"messageId":"57938","fix":"61806","desc":"57940"},{"messageId":"57941","fix":"61807","desc":"57943"},{"messageId":"57938","fix":"61808","desc":"57940"},{"messageId":"57941","fix":"61809","desc":"57943"},{"messageId":"57938","fix":"61810","desc":"57940"},{"messageId":"57941","fix":"61811","desc":"57943"},{"messageId":"57938","fix":"61812","desc":"57940"},{"messageId":"57941","fix":"61813","desc":"57943"},{"messageId":"57938","fix":"61814","desc":"57940"},{"messageId":"57941","fix":"61815","desc":"57943"},{"messageId":"57938","fix":"61816","desc":"57940"},{"messageId":"57941","fix":"61817","desc":"57943"},{"messageId":"57938","fix":"61818","desc":"57940"},{"messageId":"57941","fix":"61819","desc":"57943"},{"messageId":"57938","fix":"61820","desc":"57940"},{"messageId":"57941","fix":"61821","desc":"57943"},{"messageId":"57938","fix":"61822","desc":"57940"},{"messageId":"57941","fix":"61823","desc":"57943"},{"messageId":"57938","fix":"61824","desc":"57940"},{"messageId":"57941","fix":"61825","desc":"57943"},{"messageId":"57938","fix":"61826","desc":"57940"},{"messageId":"57941","fix":"61827","desc":"57943"},{"kind":"58246","justification":"58247"},{"messageId":"57938","fix":"61828","desc":"57940"},{"messageId":"57941","fix":"61829","desc":"57943"},{"kind":"58246","justification":"58247"},{"messageId":"57938","fix":"61830","desc":"57940"},{"messageId":"57941","fix":"61831","desc":"57943"},{"kind":"58246","justification":"58247"},{"messageId":"57938","fix":"61832","desc":"57940"},{"messageId":"57941","fix":"61833","desc":"57943"},{"kind":"58246","justification":"58247"},{"messageId":"57938","fix":"61834","desc":"57940"},{"messageId":"57941","fix":"61835","desc":"57943"},{"kind":"58246","justification":"58247"},{"messageId":"57938","fix":"61836","desc":"57940"},{"messageId":"57941","fix":"61837","desc":"57943"},{"kind":"58246","justification":"58247"},{"messageId":"57938","fix":"61838","desc":"57940"},{"messageId":"57941","fix":"61839","desc":"57943"},{"kind":"58246","justification":"58247"},{"messageId":"57938","fix":"61840","desc":"57940"},{"messageId":"57941","fix":"61841","desc":"57943"},{"kind":"58246","justification":"58247"},{"messageId":"57938","fix":"61842","desc":"57940"},{"messageId":"57941","fix":"61843","desc":"57943"},{"kind":"58246","justification":"58247"},{"messageId":"57938","fix":"61844","desc":"57940"},{"messageId":"57941","fix":"61845","desc":"57943"},{"kind":"58246","justification":"58247"},{"messageId":"57938","fix":"61846","desc":"57940"},{"messageId":"57941","fix":"61847","desc":"57943"},{"kind":"58246","justification":"58247"},{"messageId":"57938","fix":"61848","desc":"57940"},{"messageId":"57941","fix":"61849","desc":"57943"},{"kind":"58246","justification":"58247"},{"messageId":"57938","fix":"61850","desc":"57940"},{"messageId":"57941","fix":"61851","desc":"57943"},{"messageId":"57938","fix":"61852","desc":"57940"},{"messageId":"57941","fix":"61853","desc":"57943"},{"messageId":"57938","fix":"61854","desc":"57940"},{"messageId":"57941","fix":"61855","desc":"57943"},{"messageId":"57938","fix":"61856","desc":"57940"},{"messageId":"57941","fix":"61857","desc":"57943"},{"messageId":"57938","fix":"61858","desc":"57940"},{"messageId":"57941","fix":"61859","desc":"57943"},{"messageId":"57938","fix":"61860","desc":"57940"},{"messageId":"57941","fix":"61861","desc":"57943"},{"messageId":"57938","fix":"61862","desc":"57940"},{"messageId":"57941","fix":"61863","desc":"57943"},{"messageId":"57938","fix":"61864","desc":"57940"},{"messageId":"57941","fix":"61865","desc":"57943"},{"messageId":"57938","fix":"61866","desc":"57940"},{"messageId":"57941","fix":"61867","desc":"57943"},{"messageId":"57938","fix":"61868","desc":"57940"},{"messageId":"57941","fix":"61869","desc":"57943"},{"messageId":"57938","fix":"61870","desc":"57940"},{"messageId":"57941","fix":"61871","desc":"57943"},{"messageId":"57938","fix":"61872","desc":"57940"},{"messageId":"57941","fix":"61873","desc":"57943"},{"messageId":"57938","fix":"61874","desc":"57940"},{"messageId":"57941","fix":"61875","desc":"57943"},{"messageId":"57938","fix":"61876","desc":"57940"},{"messageId":"57941","fix":"61877","desc":"57943"},{"messageId":"57938","fix":"61878","desc":"57940"},{"messageId":"57941","fix":"61879","desc":"57943"},{"messageId":"57938","fix":"61880","desc":"57940"},{"messageId":"57941","fix":"61881","desc":"57943"},{"messageId":"57938","fix":"61882","desc":"57940"},{"messageId":"57941","fix":"61883","desc":"57943"},{"messageId":"57938","fix":"61884","desc":"57940"},{"messageId":"57941","fix":"61885","desc":"57943"},{"messageId":"57938","fix":"61886","desc":"57940"},{"messageId":"57941","fix":"61887","desc":"57943"},{"messageId":"57938","fix":"61888","desc":"57940"},{"messageId":"57941","fix":"61889","desc":"57943"},{"messageId":"57938","fix":"61890","desc":"57940"},{"messageId":"57941","fix":"61891","desc":"57943"},{"messageId":"57938","fix":"61892","desc":"57940"},{"messageId":"57941","fix":"61893","desc":"57943"},{"messageId":"57938","fix":"61894","desc":"57940"},{"messageId":"57941","fix":"61895","desc":"57943"},{"messageId":"57938","fix":"61896","desc":"57940"},{"messageId":"57941","fix":"61897","desc":"57943"},{"messageId":"57938","fix":"61898","desc":"57940"},{"messageId":"57941","fix":"61899","desc":"57943"},{"messageId":"57938","fix":"61900","desc":"57940"},{"messageId":"57941","fix":"61901","desc":"57943"},{"messageId":"57938","fix":"61902","desc":"57940"},{"messageId":"57941","fix":"61903","desc":"57943"},{"messageId":"57938","fix":"61904","desc":"57940"},{"messageId":"57941","fix":"61905","desc":"57943"},{"messageId":"57938","fix":"61906","desc":"57940"},{"messageId":"57941","fix":"61907","desc":"57943"},{"messageId":"57938","fix":"61908","desc":"57940"},{"messageId":"57941","fix":"61909","desc":"57943"},{"messageId":"57938","fix":"61910","desc":"57940"},{"messageId":"57941","fix":"61911","desc":"57943"},{"messageId":"57938","fix":"61912","desc":"57940"},{"messageId":"57941","fix":"61913","desc":"57943"},{"messageId":"57938","fix":"61914","desc":"57940"},{"messageId":"57941","fix":"61915","desc":"57943"},{"messageId":"57938","fix":"61916","desc":"57940"},{"messageId":"57941","fix":"61917","desc":"57943"},{"messageId":"57938","fix":"61918","desc":"57940"},{"messageId":"57941","fix":"61919","desc":"57943"},{"messageId":"57938","fix":"61920","desc":"57940"},{"messageId":"57941","fix":"61921","desc":"57943"},{"messageId":"57938","fix":"61922","desc":"57940"},{"messageId":"57941","fix":"61923","desc":"57943"},{"messageId":"57938","fix":"61924","desc":"57940"},{"messageId":"57941","fix":"61925","desc":"57943"},{"messageId":"57938","fix":"61926","desc":"57940"},{"messageId":"57941","fix":"61927","desc":"57943"},{"messageId":"57938","fix":"61928","desc":"57940"},{"messageId":"57941","fix":"61929","desc":"57943"},{"messageId":"57938","fix":"61930","desc":"57940"},{"messageId":"57941","fix":"61931","desc":"57943"},{"messageId":"57938","fix":"61932","desc":"57940"},{"messageId":"57941","fix":"61933","desc":"57943"},{"messageId":"57938","fix":"61934","desc":"57940"},{"messageId":"57941","fix":"61935","desc":"57943"},{"messageId":"57938","fix":"61936","desc":"57940"},{"messageId":"57941","fix":"61937","desc":"57943"},{"messageId":"57938","fix":"61938","desc":"57940"},{"messageId":"57941","fix":"61939","desc":"57943"},{"messageId":"57938","fix":"61940","desc":"57940"},{"messageId":"57941","fix":"61941","desc":"57943"},{"messageId":"57938","fix":"61942","desc":"57940"},{"messageId":"57941","fix":"61943","desc":"57943"},{"messageId":"57938","fix":"61944","desc":"57940"},{"messageId":"57941","fix":"61945","desc":"57943"},{"messageId":"57938","fix":"61946","desc":"57940"},{"messageId":"57941","fix":"61947","desc":"57943"},{"messageId":"57938","fix":"61948","desc":"57940"},{"messageId":"57941","fix":"61949","desc":"57943"},{"messageId":"57938","fix":"61950","desc":"57940"},{"messageId":"57941","fix":"61951","desc":"57943"},{"messageId":"57938","fix":"61952","desc":"57940"},{"messageId":"57941","fix":"61953","desc":"57943"},{"messageId":"57938","fix":"61954","desc":"57940"},{"messageId":"57941","fix":"61955","desc":"57943"},{"messageId":"57938","fix":"61956","desc":"57940"},{"messageId":"57941","fix":"61957","desc":"57943"},{"messageId":"57938","fix":"61958","desc":"57940"},{"messageId":"57941","fix":"61959","desc":"57943"},{"messageId":"57938","fix":"61960","desc":"57940"},{"messageId":"57941","fix":"61961","desc":"57943"},{"messageId":"57938","fix":"61962","desc":"57940"},{"messageId":"57941","fix":"61963","desc":"57943"},{"messageId":"57938","fix":"61964","desc":"57940"},{"messageId":"57941","fix":"61965","desc":"57943"},{"messageId":"57938","fix":"61966","desc":"57940"},{"messageId":"57941","fix":"61967","desc":"57943"},{"messageId":"57938","fix":"61968","desc":"57940"},{"messageId":"57941","fix":"61969","desc":"57943"},{"messageId":"57938","fix":"61970","desc":"57940"},{"messageId":"57941","fix":"61971","desc":"57943"},{"messageId":"57938","fix":"61972","desc":"57940"},{"messageId":"57941","fix":"61973","desc":"57943"},{"messageId":"57938","fix":"61974","desc":"57940"},{"messageId":"57941","fix":"61975","desc":"57943"},{"messageId":"57938","fix":"61976","desc":"57940"},{"messageId":"57941","fix":"61977","desc":"57943"},{"messageId":"57938","fix":"61978","desc":"57940"},{"messageId":"57941","fix":"61979","desc":"57943"},{"messageId":"57938","fix":"61980","desc":"57940"},{"messageId":"57941","fix":"61981","desc":"57943"},{"messageId":"57938","fix":"61982","desc":"57940"},{"messageId":"57941","fix":"61983","desc":"57943"},{"messageId":"57938","fix":"61984","desc":"57940"},{"messageId":"57941","fix":"61985","desc":"57943"},{"messageId":"57938","fix":"61986","desc":"57940"},{"messageId":"57941","fix":"61987","desc":"57943"},{"messageId":"57938","fix":"61988","desc":"57940"},{"messageId":"57941","fix":"61989","desc":"57943"},{"messageId":"57938","fix":"61990","desc":"57940"},{"messageId":"57941","fix":"61991","desc":"57943"},{"messageId":"57938","fix":"61992","desc":"57940"},{"messageId":"57941","fix":"61993","desc":"57943"},{"messageId":"57938","fix":"61994","desc":"57940"},{"messageId":"57941","fix":"61995","desc":"57943"},{"messageId":"57938","fix":"61996","desc":"57940"},{"messageId":"57941","fix":"61997","desc":"57943"},{"messageId":"57938","fix":"61998","desc":"57940"},{"messageId":"57941","fix":"61999","desc":"57943"},{"messageId":"57938","fix":"62000","desc":"57940"},{"messageId":"57941","fix":"62001","desc":"57943"},{"messageId":"57938","fix":"62002","desc":"57940"},{"messageId":"57941","fix":"62003","desc":"57943"},{"messageId":"57938","fix":"62004","desc":"57940"},{"messageId":"57941","fix":"62005","desc":"57943"},{"messageId":"57938","fix":"62006","desc":"57940"},{"messageId":"57941","fix":"62007","desc":"57943"},{"messageId":"57938","fix":"62008","desc":"57940"},{"messageId":"57941","fix":"62009","desc":"57943"},{"messageId":"57938","fix":"62010","desc":"57940"},{"messageId":"57941","fix":"62011","desc":"57943"},{"messageId":"57938","fix":"62012","desc":"57940"},{"messageId":"57941","fix":"62013","desc":"57943"},{"messageId":"57938","fix":"62014","desc":"57940"},{"messageId":"57941","fix":"62015","desc":"57943"},{"messageId":"57938","fix":"62016","desc":"57940"},{"messageId":"57941","fix":"62017","desc":"57943"},{"messageId":"57938","fix":"62018","desc":"57940"},{"messageId":"57941","fix":"62019","desc":"57943"},{"messageId":"57938","fix":"62020","desc":"57940"},{"messageId":"57941","fix":"62021","desc":"57943"},{"messageId":"57938","fix":"62022","desc":"57940"},{"messageId":"57941","fix":"62023","desc":"57943"},{"messageId":"57938","fix":"62024","desc":"57940"},{"messageId":"57941","fix":"62025","desc":"57943"},{"messageId":"57938","fix":"62026","desc":"57940"},{"messageId":"57941","fix":"62027","desc":"57943"},{"messageId":"57938","fix":"62028","desc":"57940"},{"messageId":"57941","fix":"62029","desc":"57943"},{"messageId":"57938","fix":"62030","desc":"57940"},{"messageId":"57941","fix":"62031","desc":"57943"},{"messageId":"57938","fix":"62032","desc":"57940"},{"messageId":"57941","fix":"62033","desc":"57943"},{"messageId":"57938","fix":"62034","desc":"57940"},{"messageId":"57941","fix":"62035","desc":"57943"},{"messageId":"57938","fix":"62036","desc":"57940"},{"messageId":"57941","fix":"62037","desc":"57943"},{"messageId":"57938","fix":"62038","desc":"57940"},{"messageId":"57941","fix":"62039","desc":"57943"},{"messageId":"57938","fix":"62040","desc":"57940"},{"messageId":"57941","fix":"62041","desc":"57943"},{"messageId":"57938","fix":"62042","desc":"57940"},{"messageId":"57941","fix":"62043","desc":"57943"},{"messageId":"57938","fix":"62044","desc":"57940"},{"messageId":"57941","fix":"62045","desc":"57943"},{"messageId":"57938","fix":"62046","desc":"57940"},{"messageId":"57941","fix":"62047","desc":"57943"},{"messageId":"57938","fix":"62048","desc":"57940"},{"messageId":"57941","fix":"62049","desc":"57943"},{"messageId":"57938","fix":"62050","desc":"57940"},{"messageId":"57941","fix":"62051","desc":"57943"},{"messageId":"57938","fix":"62052","desc":"57940"},{"messageId":"57941","fix":"62053","desc":"57943"},{"messageId":"57938","fix":"62054","desc":"57940"},{"messageId":"57941","fix":"62055","desc":"57943"},{"messageId":"57938","fix":"62056","desc":"57940"},{"messageId":"57941","fix":"62057","desc":"57943"},{"messageId":"57938","fix":"62058","desc":"57940"},{"messageId":"57941","fix":"62059","desc":"57943"},{"messageId":"57938","fix":"62060","desc":"57940"},{"messageId":"57941","fix":"62061","desc":"57943"},{"messageId":"57938","fix":"62062","desc":"57940"},{"messageId":"57941","fix":"62063","desc":"57943"},{"messageId":"57938","fix":"62064","desc":"57940"},{"messageId":"57941","fix":"62065","desc":"57943"},{"messageId":"57938","fix":"62066","desc":"57940"},{"messageId":"57941","fix":"62067","desc":"57943"},{"messageId":"57938","fix":"62068","desc":"57940"},{"messageId":"57941","fix":"62069","desc":"57943"},{"messageId":"57938","fix":"62070","desc":"57940"},{"messageId":"57941","fix":"62071","desc":"57943"},{"kind":"58246","justification":"58247"},{"messageId":"57938","fix":"62072","desc":"57940"},{"messageId":"57941","fix":"62073","desc":"57943"},{"kind":"58246","justification":"58247"},{"messageId":"57938","fix":"62074","desc":"57940"},{"messageId":"57941","fix":"62075","desc":"57943"},{"kind":"58246","justification":"58247"},{"messageId":"57938","fix":"62076","desc":"57940"},{"messageId":"57941","fix":"62077","desc":"57943"},{"messageId":"57938","fix":"62078","desc":"57940"},{"messageId":"57941","fix":"62079","desc":"57943"},{"messageId":"57938","fix":"62080","desc":"57940"},{"messageId":"57941","fix":"62081","desc":"57943"},{"messageId":"57938","fix":"62082","desc":"57940"},{"messageId":"57941","fix":"62083","desc":"57943"},{"messageId":"57938","fix":"62084","desc":"57940"},{"messageId":"57941","fix":"62085","desc":"57943"},{"messageId":"57938","fix":"62086","desc":"57940"},{"messageId":"57941","fix":"62087","desc":"57943"},{"messageId":"57938","fix":"62088","desc":"57940"},{"messageId":"57941","fix":"62089","desc":"57943"},{"messageId":"57938","fix":"62090","desc":"57940"},{"messageId":"57941","fix":"62091","desc":"57943"},{"messageId":"57938","fix":"62092","desc":"57940"},{"messageId":"57941","fix":"62093","desc":"57943"},{"messageId":"57938","fix":"62094","desc":"57940"},{"messageId":"57941","fix":"62095","desc":"57943"},{"messageId":"57938","fix":"62096","desc":"57940"},{"messageId":"57941","fix":"62097","desc":"57943"},{"messageId":"57938","fix":"62098","desc":"57940"},{"messageId":"57941","fix":"62099","desc":"57943"},{"messageId":"57938","fix":"62100","desc":"57940"},{"messageId":"57941","fix":"62101","desc":"57943"},{"messageId":"57938","fix":"62102","desc":"57940"},{"messageId":"57941","fix":"62103","desc":"57943"},{"messageId":"57938","fix":"62104","desc":"57940"},{"messageId":"57941","fix":"62105","desc":"57943"},{"messageId":"57938","fix":"62106","desc":"57940"},{"messageId":"57941","fix":"62107","desc":"57943"},{"messageId":"57938","fix":"62108","desc":"57940"},{"messageId":"57941","fix":"62109","desc":"57943"},{"messageId":"57938","fix":"62110","desc":"57940"},{"messageId":"57941","fix":"62111","desc":"57943"},{"messageId":"57938","fix":"62112","desc":"57940"},{"messageId":"57941","fix":"62113","desc":"57943"},{"messageId":"57938","fix":"62114","desc":"57940"},{"messageId":"57941","fix":"62115","desc":"57943"},{"kind":"58246","justification":"58247"},{"messageId":"57938","fix":"62116","desc":"57940"},{"messageId":"57941","fix":"62117","desc":"57943"},{"kind":"58246","justification":"58247"},{"messageId":"57938","fix":"62118","desc":"57940"},{"messageId":"57941","fix":"62119","desc":"57943"},{"messageId":"57938","fix":"62120","desc":"57940"},{"messageId":"57941","fix":"62121","desc":"57943"},{"messageId":"57938","fix":"62122","desc":"57940"},{"messageId":"57941","fix":"62123","desc":"57943"},{"messageId":"57938","fix":"62124","desc":"57940"},{"messageId":"57941","fix":"62125","desc":"57943"},{"messageId":"57938","fix":"62126","desc":"57940"},{"messageId":"57941","fix":"62127","desc":"57943"},{"messageId":"57938","fix":"62128","desc":"57940"},{"messageId":"57941","fix":"62129","desc":"57943"},{"messageId":"57938","fix":"62130","desc":"57940"},{"messageId":"57941","fix":"62131","desc":"57943"},{"messageId":"57938","fix":"62132","desc":"57940"},{"messageId":"57941","fix":"62133","desc":"57943"},{"kind":"58246","justification":"58247"},{"messageId":"57938","fix":"62134","desc":"57940"},{"messageId":"57941","fix":"62135","desc":"57943"},{"kind":"58246","justification":"58247"},{"messageId":"57938","fix":"62136","desc":"57940"},{"messageId":"57941","fix":"62137","desc":"57943"},{"messageId":"57938","fix":"62138","desc":"57940"},{"messageId":"57941","fix":"62139","desc":"57943"},{"messageId":"57938","fix":"62140","desc":"57940"},{"messageId":"57941","fix":"62141","desc":"57943"},{"messageId":"57938","fix":"62142","desc":"57940"},{"messageId":"57941","fix":"62143","desc":"57943"},{"messageId":"57938","fix":"62144","desc":"57940"},{"messageId":"57941","fix":"62145","desc":"57943"},{"messageId":"57938","fix":"62146","desc":"57940"},{"messageId":"57941","fix":"62147","desc":"57943"},{"messageId":"57938","fix":"62148","desc":"57940"},{"messageId":"57941","fix":"62149","desc":"57943"},{"messageId":"57938","fix":"62150","desc":"57940"},{"messageId":"57941","fix":"62151","desc":"57943"},{"messageId":"57938","fix":"62152","desc":"57940"},{"messageId":"57941","fix":"62153","desc":"57943"},{"messageId":"57938","fix":"62154","desc":"57940"},{"messageId":"57941","fix":"62155","desc":"57943"},{"messageId":"57938","fix":"62156","desc":"57940"},{"messageId":"57941","fix":"62157","desc":"57943"},{"messageId":"57938","fix":"62158","desc":"57940"},{"messageId":"57941","fix":"62159","desc":"57943"},{"messageId":"57938","fix":"62160","desc":"57940"},{"messageId":"57941","fix":"62161","desc":"57943"},{"messageId":"57938","fix":"62162","desc":"57940"},{"messageId":"57941","fix":"62163","desc":"57943"},{"messageId":"57938","fix":"62164","desc":"57940"},{"messageId":"57941","fix":"62165","desc":"57943"},{"messageId":"57938","fix":"62166","desc":"57940"},{"messageId":"57941","fix":"62167","desc":"57943"},{"messageId":"57938","fix":"62168","desc":"57940"},{"messageId":"57941","fix":"62169","desc":"57943"},{"messageId":"57938","fix":"62170","desc":"57940"},{"messageId":"57941","fix":"62171","desc":"57943"},{"messageId":"57938","fix":"62172","desc":"57940"},{"messageId":"57941","fix":"62173","desc":"57943"},{"messageId":"57938","fix":"62174","desc":"57940"},{"messageId":"57941","fix":"62175","desc":"57943"},{"messageId":"57938","fix":"62176","desc":"57940"},{"messageId":"57941","fix":"62177","desc":"57943"},{"messageId":"57938","fix":"62178","desc":"57940"},{"messageId":"57941","fix":"62179","desc":"57943"},{"messageId":"57938","fix":"62180","desc":"57940"},{"messageId":"57941","fix":"62181","desc":"57943"},{"messageId":"57938","fix":"62182","desc":"57940"},{"messageId":"57941","fix":"62183","desc":"57943"},{"messageId":"57938","fix":"62184","desc":"57940"},{"messageId":"57941","fix":"62185","desc":"57943"},{"messageId":"57938","fix":"62186","desc":"57940"},{"messageId":"57941","fix":"62187","desc":"57943"},{"messageId":"57938","fix":"62188","desc":"57940"},{"messageId":"57941","fix":"62189","desc":"57943"},{"messageId":"57938","fix":"62190","desc":"57940"},{"messageId":"57941","fix":"62191","desc":"57943"},{"messageId":"57938","fix":"62192","desc":"57940"},{"messageId":"57941","fix":"62193","desc":"57943"},{"messageId":"57938","fix":"62194","desc":"57940"},{"messageId":"57941","fix":"62195","desc":"57943"},{"messageId":"57938","fix":"62196","desc":"57940"},{"messageId":"57941","fix":"62197","desc":"57943"},{"messageId":"57938","fix":"62198","desc":"57940"},{"messageId":"57941","fix":"62199","desc":"57943"},{"messageId":"57938","fix":"62200","desc":"57940"},{"messageId":"57941","fix":"62201","desc":"57943"},{"messageId":"57938","fix":"62202","desc":"57940"},{"messageId":"57941","fix":"62203","desc":"57943"},{"messageId":"57938","fix":"62204","desc":"57940"},{"messageId":"57941","fix":"62205","desc":"57943"},{"messageId":"57938","fix":"62206","desc":"57940"},{"messageId":"57941","fix":"62207","desc":"57943"},{"messageId":"57938","fix":"62208","desc":"57940"},{"messageId":"57941","fix":"62209","desc":"57943"},{"messageId":"57938","fix":"62210","desc":"57940"},{"messageId":"57941","fix":"62211","desc":"57943"},{"messageId":"57938","fix":"62212","desc":"57940"},{"messageId":"57941","fix":"62213","desc":"57943"},{"messageId":"57938","fix":"62214","desc":"57940"},{"messageId":"57941","fix":"62215","desc":"57943"},{"messageId":"57938","fix":"62216","desc":"57940"},{"messageId":"57941","fix":"62217","desc":"57943"},{"messageId":"57938","fix":"62218","desc":"57940"},{"messageId":"57941","fix":"62219","desc":"57943"},{"messageId":"57938","fix":"62220","desc":"57940"},{"messageId":"57941","fix":"62221","desc":"57943"},{"messageId":"57938","fix":"62222","desc":"57940"},{"messageId":"57941","fix":"62223","desc":"57943"},{"messageId":"57938","fix":"62224","desc":"57940"},{"messageId":"57941","fix":"62225","desc":"57943"},{"messageId":"57938","fix":"62226","desc":"57940"},{"messageId":"57941","fix":"62227","desc":"57943"},{"messageId":"57938","fix":"62228","desc":"57940"},{"messageId":"57941","fix":"62229","desc":"57943"},{"messageId":"57938","fix":"62230","desc":"57940"},{"messageId":"57941","fix":"62231","desc":"57943"},{"messageId":"57938","fix":"62232","desc":"57940"},{"messageId":"57941","fix":"62233","desc":"57943"},{"messageId":"57938","fix":"62234","desc":"57940"},{"messageId":"57941","fix":"62235","desc":"57943"},{"messageId":"57938","fix":"62236","desc":"57940"},{"messageId":"57941","fix":"62237","desc":"57943"},{"messageId":"57938","fix":"62238","desc":"57940"},{"messageId":"57941","fix":"62239","desc":"57943"},{"messageId":"57938","fix":"62240","desc":"57940"},{"messageId":"57941","fix":"62241","desc":"57943"},{"messageId":"57938","fix":"62242","desc":"57940"},{"messageId":"57941","fix":"62243","desc":"57943"},{"messageId":"57938","fix":"62244","desc":"57940"},{"messageId":"57941","fix":"62245","desc":"57943"},{"messageId":"57938","fix":"62246","desc":"57940"},{"messageId":"57941","fix":"62247","desc":"57943"},{"messageId":"57938","fix":"62248","desc":"57940"},{"messageId":"57941","fix":"62249","desc":"57943"},{"messageId":"57938","fix":"62250","desc":"57940"},{"messageId":"57941","fix":"62251","desc":"57943"},{"messageId":"57938","fix":"62252","desc":"57940"},{"messageId":"57941","fix":"62253","desc":"57943"},{"messageId":"57938","fix":"62254","desc":"57940"},{"messageId":"57941","fix":"62255","desc":"57943"},{"messageId":"57938","fix":"62256","desc":"57940"},{"messageId":"57941","fix":"62257","desc":"57943"},{"messageId":"57938","fix":"62258","desc":"57940"},{"messageId":"57941","fix":"62259","desc":"57943"},{"messageId":"57938","fix":"62260","desc":"57940"},{"messageId":"57941","fix":"62261","desc":"57943"},{"messageId":"57938","fix":"62262","desc":"57940"},{"messageId":"57941","fix":"62263","desc":"57943"},{"messageId":"57938","fix":"62264","desc":"57940"},{"messageId":"57941","fix":"62265","desc":"57943"},{"messageId":"57938","fix":"62266","desc":"57940"},{"messageId":"57941","fix":"62267","desc":"57943"},{"messageId":"57938","fix":"62268","desc":"57940"},{"messageId":"57941","fix":"62269","desc":"57943"},{"messageId":"57938","fix":"62270","desc":"57940"},{"messageId":"57941","fix":"62271","desc":"57943"},{"messageId":"57938","fix":"62272","desc":"57940"},{"messageId":"57941","fix":"62273","desc":"57943"},{"messageId":"57938","fix":"62274","desc":"57940"},{"messageId":"57941","fix":"62275","desc":"57943"},{"messageId":"57938","fix":"62276","desc":"57940"},{"messageId":"57941","fix":"62277","desc":"57943"},{"messageId":"57938","fix":"62278","desc":"57940"},{"messageId":"57941","fix":"62279","desc":"57943"},{"messageId":"57938","fix":"62280","desc":"57940"},{"messageId":"57941","fix":"62281","desc":"57943"},{"messageId":"57938","fix":"62282","desc":"57940"},{"messageId":"57941","fix":"62283","desc":"57943"},{"messageId":"57938","fix":"62284","desc":"57940"},{"messageId":"57941","fix":"62285","desc":"57943"},{"messageId":"57938","fix":"62286","desc":"57940"},{"messageId":"57941","fix":"62287","desc":"57943"},{"messageId":"57938","fix":"62288","desc":"57940"},{"messageId":"57941","fix":"62289","desc":"57943"},{"messageId":"57938","fix":"62290","desc":"57940"},{"messageId":"57941","fix":"62291","desc":"57943"},{"messageId":"57938","fix":"62292","desc":"57940"},{"messageId":"57941","fix":"62293","desc":"57943"},{"messageId":"57938","fix":"62294","desc":"57940"},{"messageId":"57941","fix":"62295","desc":"57943"},{"messageId":"57938","fix":"62296","desc":"57940"},{"messageId":"57941","fix":"62297","desc":"57943"},{"messageId":"57938","fix":"62298","desc":"57940"},{"messageId":"57941","fix":"62299","desc":"57943"},{"messageId":"57938","fix":"62300","desc":"57940"},{"messageId":"57941","fix":"62301","desc":"57943"},{"messageId":"57938","fix":"62302","desc":"57940"},{"messageId":"57941","fix":"62303","desc":"57943"},{"messageId":"57938","fix":"62304","desc":"57940"},{"messageId":"57941","fix":"62305","desc":"57943"},{"messageId":"57938","fix":"62306","desc":"57940"},{"messageId":"57941","fix":"62307","desc":"57943"},{"messageId":"57938","fix":"62308","desc":"57940"},{"messageId":"57941","fix":"62309","desc":"57943"},{"messageId":"57938","fix":"62310","desc":"57940"},{"messageId":"57941","fix":"62311","desc":"57943"},{"messageId":"57938","fix":"62312","desc":"57940"},{"messageId":"57941","fix":"62313","desc":"57943"},{"messageId":"57938","fix":"62314","desc":"57940"},{"messageId":"57941","fix":"62315","desc":"57943"},{"messageId":"57938","fix":"62316","desc":"57940"},{"messageId":"57941","fix":"62317","desc":"57943"},{"messageId":"57938","fix":"62318","desc":"57940"},{"messageId":"57941","fix":"62319","desc":"57943"},{"messageId":"57938","fix":"62320","desc":"57940"},{"messageId":"57941","fix":"62321","desc":"57943"},{"messageId":"57938","fix":"62322","desc":"57940"},{"messageId":"57941","fix":"62323","desc":"57943"},{"messageId":"57938","fix":"62324","desc":"57940"},{"messageId":"57941","fix":"62325","desc":"57943"},{"messageId":"57938","fix":"62326","desc":"57940"},{"messageId":"57941","fix":"62327","desc":"57943"},{"messageId":"57938","fix":"62328","desc":"57940"},{"messageId":"57941","fix":"62329","desc":"57943"},{"messageId":"57938","fix":"62330","desc":"57940"},{"messageId":"57941","fix":"62331","desc":"57943"},{"messageId":"57938","fix":"62332","desc":"57940"},{"messageId":"57941","fix":"62333","desc":"57943"},{"messageId":"57938","fix":"62334","desc":"57940"},{"messageId":"57941","fix":"62335","desc":"57943"},{"messageId":"57938","fix":"62336","desc":"57940"},{"messageId":"57941","fix":"62337","desc":"57943"},{"messageId":"57938","fix":"62338","desc":"57940"},{"messageId":"57941","fix":"62339","desc":"57943"},{"messageId":"57938","fix":"62340","desc":"57940"},{"messageId":"57941","fix":"62341","desc":"57943"},{"messageId":"57938","fix":"62342","desc":"57940"},{"messageId":"57941","fix":"62343","desc":"57943"},{"messageId":"57938","fix":"62344","desc":"57940"},{"messageId":"57941","fix":"62345","desc":"57943"},{"messageId":"57938","fix":"62346","desc":"57940"},{"messageId":"57941","fix":"62347","desc":"57943"},{"messageId":"57938","fix":"62348","desc":"57940"},{"messageId":"57941","fix":"62349","desc":"57943"},{"messageId":"57938","fix":"62350","desc":"57940"},{"messageId":"57941","fix":"62351","desc":"57943"},{"messageId":"57938","fix":"62352","desc":"57940"},{"messageId":"57941","fix":"62353","desc":"57943"},{"messageId":"57938","fix":"62354","desc":"57940"},{"messageId":"57941","fix":"62355","desc":"57943"},{"messageId":"57938","fix":"62356","desc":"57940"},{"messageId":"57941","fix":"62357","desc":"57943"},{"messageId":"57938","fix":"62358","desc":"57940"},{"messageId":"57941","fix":"62359","desc":"57943"},{"messageId":"57938","fix":"62360","desc":"57940"},{"messageId":"57941","fix":"62361","desc":"57943"},{"messageId":"57938","fix":"62362","desc":"57940"},{"messageId":"57941","fix":"62363","desc":"57943"},{"messageId":"57938","fix":"62364","desc":"57940"},{"messageId":"57941","fix":"62365","desc":"57943"},{"messageId":"57938","fix":"62366","desc":"57940"},{"messageId":"57941","fix":"62367","desc":"57943"},{"messageId":"57938","fix":"62368","desc":"57940"},{"messageId":"57941","fix":"62369","desc":"57943"},{"messageId":"57938","fix":"62370","desc":"57940"},{"messageId":"57941","fix":"62371","desc":"57943"},{"messageId":"57938","fix":"62372","desc":"57940"},{"messageId":"57941","fix":"62373","desc":"57943"},{"messageId":"57938","fix":"62374","desc":"57940"},{"messageId":"57941","fix":"62375","desc":"57943"},{"messageId":"57938","fix":"62376","desc":"57940"},{"messageId":"57941","fix":"62377","desc":"57943"},{"messageId":"57938","fix":"62378","desc":"57940"},{"messageId":"57941","fix":"62379","desc":"57943"},{"messageId":"57938","fix":"62380","desc":"57940"},{"messageId":"57941","fix":"62381","desc":"57943"},{"messageId":"57938","fix":"62382","desc":"57940"},{"messageId":"57941","fix":"62383","desc":"57943"},{"messageId":"57938","fix":"62384","desc":"57940"},{"messageId":"57941","fix":"62385","desc":"57943"},{"messageId":"57938","fix":"62386","desc":"57940"},{"messageId":"57941","fix":"62387","desc":"57943"},{"messageId":"57938","fix":"62388","desc":"57940"},{"messageId":"57941","fix":"62389","desc":"57943"},{"messageId":"57938","fix":"62390","desc":"57940"},{"messageId":"57941","fix":"62391","desc":"57943"},{"messageId":"57938","fix":"62392","desc":"57940"},{"messageId":"57941","fix":"62393","desc":"57943"},{"messageId":"57938","fix":"62394","desc":"57940"},{"messageId":"57941","fix":"62395","desc":"57943"},{"messageId":"57938","fix":"62396","desc":"57940"},{"messageId":"57941","fix":"62397","desc":"57943"},{"messageId":"57938","fix":"62398","desc":"57940"},{"messageId":"57941","fix":"62399","desc":"57943"},{"messageId":"57938","fix":"62400","desc":"57940"},{"messageId":"57941","fix":"62401","desc":"57943"},{"messageId":"57938","fix":"62402","desc":"57940"},{"messageId":"57941","fix":"62403","desc":"57943"},{"messageId":"57938","fix":"62404","desc":"57940"},{"messageId":"57941","fix":"62405","desc":"57943"},{"messageId":"57938","fix":"62406","desc":"57940"},{"messageId":"57941","fix":"62407","desc":"57943"},{"messageId":"57938","fix":"62408","desc":"57940"},{"messageId":"57941","fix":"62409","desc":"57943"},{"messageId":"57938","fix":"62410","desc":"57940"},{"messageId":"57941","fix":"62411","desc":"57943"},{"messageId":"57938","fix":"62412","desc":"57940"},{"messageId":"57941","fix":"62413","desc":"57943"},{"messageId":"57938","fix":"62414","desc":"57940"},{"messageId":"57941","fix":"62415","desc":"57943"},{"messageId":"57938","fix":"62416","desc":"57940"},{"messageId":"57941","fix":"62417","desc":"57943"},{"messageId":"57938","fix":"62418","desc":"57940"},{"messageId":"57941","fix":"62419","desc":"57943"},{"messageId":"57938","fix":"62420","desc":"57940"},{"messageId":"57941","fix":"62421","desc":"57943"},{"messageId":"57938","fix":"62422","desc":"57940"},{"messageId":"57941","fix":"62423","desc":"57943"},{"messageId":"57938","fix":"62424","desc":"57940"},{"messageId":"57941","fix":"62425","desc":"57943"},{"messageId":"57938","fix":"62426","desc":"57940"},{"messageId":"57941","fix":"62427","desc":"57943"},{"messageId":"57938","fix":"62428","desc":"57940"},{"messageId":"57941","fix":"62429","desc":"57943"},{"messageId":"57938","fix":"62430","desc":"57940"},{"messageId":"57941","fix":"62431","desc":"57943"},{"messageId":"57938","fix":"62432","desc":"57940"},{"messageId":"57941","fix":"62433","desc":"57943"},{"messageId":"57938","fix":"62434","desc":"57940"},{"messageId":"57941","fix":"62435","desc":"57943"},{"messageId":"57938","fix":"62436","desc":"57940"},{"messageId":"57941","fix":"62437","desc":"57943"},{"messageId":"57938","fix":"62438","desc":"57940"},{"messageId":"57941","fix":"62439","desc":"57943"},{"messageId":"57938","fix":"62440","desc":"57940"},{"messageId":"57941","fix":"62441","desc":"57943"},{"messageId":"57938","fix":"62442","desc":"57940"},{"messageId":"57941","fix":"62443","desc":"57943"},{"messageId":"57938","fix":"62444","desc":"57940"},{"messageId":"57941","fix":"62445","desc":"57943"},{"messageId":"57938","fix":"62446","desc":"57940"},{"messageId":"57941","fix":"62447","desc":"57943"},{"messageId":"57938","fix":"62448","desc":"57940"},{"messageId":"57941","fix":"62449","desc":"57943"},{"messageId":"57938","fix":"62450","desc":"57940"},{"messageId":"57941","fix":"62451","desc":"57943"},{"messageId":"57938","fix":"62452","desc":"57940"},{"messageId":"57941","fix":"62453","desc":"57943"},{"messageId":"57938","fix":"62454","desc":"57940"},{"messageId":"57941","fix":"62455","desc":"57943"},{"messageId":"57938","fix":"62456","desc":"57940"},{"messageId":"57941","fix":"62457","desc":"57943"},{"messageId":"57938","fix":"62458","desc":"57940"},{"messageId":"57941","fix":"62459","desc":"57943"},{"kind":"58246","justification":"58247"},{"messageId":"57938","fix":"62460","desc":"57940"},{"messageId":"57941","fix":"62461","desc":"57943"},{"messageId":"57938","fix":"62462","desc":"57940"},{"messageId":"57941","fix":"62463","desc":"57943"},{"messageId":"57938","fix":"62464","desc":"57940"},{"messageId":"57941","fix":"62465","desc":"57943"},{"messageId":"57938","fix":"62466","desc":"57940"},{"messageId":"57941","fix":"62467","desc":"57943"},{"messageId":"57938","fix":"62468","desc":"57940"},{"messageId":"57941","fix":"62469","desc":"57943"},{"messageId":"57938","fix":"62470","desc":"57940"},{"messageId":"57941","fix":"62471","desc":"57943"},{"messageId":"57938","fix":"62472","desc":"57940"},{"messageId":"57941","fix":"62473","desc":"57943"},{"messageId":"57938","fix":"62474","desc":"57940"},{"messageId":"57941","fix":"62475","desc":"57943"},{"messageId":"57938","fix":"62476","desc":"57940"},{"messageId":"57941","fix":"62477","desc":"57943"},{"messageId":"57938","fix":"62478","desc":"57940"},{"messageId":"57941","fix":"62479","desc":"57943"},{"messageId":"57938","fix":"62480","desc":"57940"},{"messageId":"57941","fix":"62481","desc":"57943"},{"messageId":"57938","fix":"62482","desc":"57940"},{"messageId":"57941","fix":"62483","desc":"57943"},{"messageId":"57938","fix":"62484","desc":"57940"},{"messageId":"57941","fix":"62485","desc":"57943"},{"messageId":"57938","fix":"62486","desc":"57940"},{"messageId":"57941","fix":"62487","desc":"57943"},{"messageId":"57938","fix":"62488","desc":"57940"},{"messageId":"57941","fix":"62489","desc":"57943"},{"messageId":"57938","fix":"62490","desc":"57940"},{"messageId":"57941","fix":"62491","desc":"57943"},{"messageId":"57938","fix":"62492","desc":"57940"},{"messageId":"57941","fix":"62493","desc":"57943"},{"messageId":"57938","fix":"62494","desc":"57940"},{"messageId":"57941","fix":"62495","desc":"57943"},{"messageId":"57938","fix":"62496","desc":"57940"},{"messageId":"57941","fix":"62497","desc":"57943"},{"messageId":"57938","fix":"62498","desc":"57940"},{"messageId":"57941","fix":"62499","desc":"57943"},{"messageId":"57938","fix":"62500","desc":"57940"},{"messageId":"57941","fix":"62501","desc":"57943"},{"messageId":"57938","fix":"62502","desc":"57940"},{"messageId":"57941","fix":"62503","desc":"57943"},{"messageId":"57938","fix":"62504","desc":"57940"},{"messageId":"57941","fix":"62505","desc":"57943"},{"messageId":"57938","fix":"62506","desc":"57940"},{"messageId":"57941","fix":"62507","desc":"57943"},{"messageId":"57938","fix":"62508","desc":"57940"},{"messageId":"57941","fix":"62509","desc":"57943"},{"messageId":"57938","fix":"62510","desc":"57940"},{"messageId":"57941","fix":"62511","desc":"57943"},{"messageId":"57938","fix":"62512","desc":"57940"},{"messageId":"57941","fix":"62513","desc":"57943"},{"messageId":"57938","fix":"62514","desc":"57940"},{"messageId":"57941","fix":"62515","desc":"57943"},{"messageId":"57938","fix":"62516","desc":"57940"},{"messageId":"57941","fix":"62517","desc":"57943"},{"messageId":"57938","fix":"62518","desc":"57940"},{"messageId":"57941","fix":"62519","desc":"57943"},{"messageId":"57938","fix":"62520","desc":"57940"},{"messageId":"57941","fix":"62521","desc":"57943"},{"messageId":"57938","fix":"62522","desc":"57940"},{"messageId":"57941","fix":"62523","desc":"57943"},{"messageId":"57938","fix":"62524","desc":"57940"},{"messageId":"57941","fix":"62525","desc":"57943"},{"messageId":"57938","fix":"62526","desc":"57940"},{"messageId":"57941","fix":"62527","desc":"57943"},{"messageId":"57938","fix":"62528","desc":"57940"},{"messageId":"57941","fix":"62529","desc":"57943"},{"messageId":"57938","fix":"62530","desc":"57940"},{"messageId":"57941","fix":"62531","desc":"57943"},{"messageId":"57938","fix":"62532","desc":"57940"},{"messageId":"57941","fix":"62533","desc":"57943"},{"messageId":"57938","fix":"62534","desc":"57940"},{"messageId":"57941","fix":"62535","desc":"57943"},{"messageId":"57938","fix":"62536","desc":"57940"},{"messageId":"57941","fix":"62537","desc":"57943"},{"messageId":"57938","fix":"62538","desc":"57940"},{"messageId":"57941","fix":"62539","desc":"57943"},{"messageId":"57938","fix":"62540","desc":"57940"},{"messageId":"57941","fix":"62541","desc":"57943"},{"messageId":"57938","fix":"62542","desc":"57940"},{"messageId":"57941","fix":"62543","desc":"57943"},{"messageId":"57938","fix":"62544","desc":"57940"},{"messageId":"57941","fix":"62545","desc":"57943"},{"messageId":"57938","fix":"62546","desc":"57940"},{"messageId":"57941","fix":"62547","desc":"57943"},{"messageId":"57938","fix":"62548","desc":"57940"},{"messageId":"57941","fix":"62549","desc":"57943"},{"messageId":"57938","fix":"62550","desc":"57940"},{"messageId":"57941","fix":"62551","desc":"57943"},{"messageId":"57938","fix":"62552","desc":"57940"},{"messageId":"57941","fix":"62553","desc":"57943"},{"messageId":"57938","fix":"62554","desc":"57940"},{"messageId":"57941","fix":"62555","desc":"57943"},{"messageId":"57938","fix":"62556","desc":"57940"},{"messageId":"57941","fix":"62557","desc":"57943"},{"messageId":"57938","fix":"62558","desc":"57940"},{"messageId":"57941","fix":"62559","desc":"57943"},{"messageId":"57938","fix":"62560","desc":"57940"},{"messageId":"57941","fix":"62561","desc":"57943"},{"messageId":"57938","fix":"62562","desc":"57940"},{"messageId":"57941","fix":"62563","desc":"57943"},{"messageId":"57938","fix":"62564","desc":"57940"},{"messageId":"57941","fix":"62565","desc":"57943"},{"messageId":"57938","fix":"62566","desc":"57940"},{"messageId":"57941","fix":"62567","desc":"57943"},{"messageId":"57938","fix":"62568","desc":"57940"},{"messageId":"57941","fix":"62569","desc":"57943"},{"messageId":"57938","fix":"62570","desc":"57940"},{"messageId":"57941","fix":"62571","desc":"57943"},{"messageId":"57938","fix":"62572","desc":"57940"},{"messageId":"57941","fix":"62573","desc":"57943"},{"messageId":"57938","fix":"62574","desc":"57940"},{"messageId":"57941","fix":"62575","desc":"57943"},{"messageId":"57938","fix":"62576","desc":"57940"},{"messageId":"57941","fix":"62577","desc":"57943"},{"messageId":"57938","fix":"62578","desc":"57940"},{"messageId":"57941","fix":"62579","desc":"57943"},{"messageId":"57938","fix":"62580","desc":"57940"},{"messageId":"57941","fix":"62581","desc":"57943"},{"messageId":"57938","fix":"62582","desc":"57940"},{"messageId":"57941","fix":"62583","desc":"57943"},{"messageId":"57938","fix":"62584","desc":"57940"},{"messageId":"57941","fix":"62585","desc":"57943"},{"messageId":"57938","fix":"62586","desc":"57940"},{"messageId":"57941","fix":"62587","desc":"57943"},{"messageId":"57938","fix":"62588","desc":"57940"},{"messageId":"57941","fix":"62589","desc":"57943"},{"messageId":"57938","fix":"62590","desc":"57940"},{"messageId":"57941","fix":"62591","desc":"57943"},{"messageId":"57938","fix":"62592","desc":"57940"},{"messageId":"57941","fix":"62593","desc":"57943"},{"messageId":"57938","fix":"62594","desc":"57940"},{"messageId":"57941","fix":"62595","desc":"57943"},{"messageId":"57938","fix":"62596","desc":"57940"},{"messageId":"57941","fix":"62597","desc":"57943"},{"messageId":"57938","fix":"62598","desc":"57940"},{"messageId":"57941","fix":"62599","desc":"57943"},{"messageId":"57938","fix":"62600","desc":"57940"},{"messageId":"57941","fix":"62601","desc":"57943"},{"messageId":"57938","fix":"62602","desc":"57940"},{"messageId":"57941","fix":"62603","desc":"57943"},{"messageId":"57938","fix":"62604","desc":"57940"},{"messageId":"57941","fix":"62605","desc":"57943"},{"messageId":"57938","fix":"62606","desc":"57940"},{"messageId":"57941","fix":"62607","desc":"57943"},{"messageId":"57938","fix":"62608","desc":"57940"},{"messageId":"57941","fix":"62609","desc":"57943"},{"messageId":"57938","fix":"62610","desc":"57940"},{"messageId":"57941","fix":"62611","desc":"57943"},{"messageId":"57938","fix":"62612","desc":"57940"},{"messageId":"57941","fix":"62613","desc":"57943"},{"messageId":"57938","fix":"62614","desc":"57940"},{"messageId":"57941","fix":"62615","desc":"57943"},{"messageId":"57938","fix":"62616","desc":"57940"},{"messageId":"57941","fix":"62617","desc":"57943"},{"messageId":"57938","fix":"62618","desc":"57940"},{"messageId":"57941","fix":"62619","desc":"57943"},{"messageId":"57938","fix":"62620","desc":"57940"},{"messageId":"57941","fix":"62621","desc":"57943"},{"messageId":"57938","fix":"62622","desc":"57940"},{"messageId":"57941","fix":"62623","desc":"57943"},{"messageId":"57938","fix":"62624","desc":"57940"},{"messageId":"57941","fix":"62625","desc":"57943"},{"messageId":"57938","fix":"62626","desc":"57940"},{"messageId":"57941","fix":"62627","desc":"57943"},{"messageId":"57938","fix":"62628","desc":"57940"},{"messageId":"57941","fix":"62629","desc":"57943"},{"messageId":"57938","fix":"62630","desc":"57940"},{"messageId":"57941","fix":"62631","desc":"57943"},{"messageId":"57938","fix":"62632","desc":"57940"},{"messageId":"57941","fix":"62633","desc":"57943"},{"messageId":"57938","fix":"62634","desc":"57940"},{"messageId":"57941","fix":"62635","desc":"57943"},{"messageId":"57938","fix":"62636","desc":"57940"},{"messageId":"57941","fix":"62637","desc":"57943"},{"messageId":"57938","fix":"62638","desc":"57940"},{"messageId":"57941","fix":"62639","desc":"57943"},{"messageId":"57938","fix":"62640","desc":"57940"},{"messageId":"57941","fix":"62641","desc":"57943"},{"messageId":"57938","fix":"62642","desc":"57940"},{"messageId":"57941","fix":"62643","desc":"57943"},{"messageId":"57938","fix":"62644","desc":"57940"},{"messageId":"57941","fix":"62645","desc":"57943"},{"messageId":"57938","fix":"62646","desc":"57940"},{"messageId":"57941","fix":"62647","desc":"57943"},{"messageId":"57938","fix":"62648","desc":"57940"},{"messageId":"57941","fix":"62649","desc":"57943"},{"messageId":"57938","fix":"62650","desc":"57940"},{"messageId":"57941","fix":"62651","desc":"57943"},{"messageId":"57938","fix":"62652","desc":"57940"},{"messageId":"57941","fix":"62653","desc":"57943"},{"messageId":"57938","fix":"62654","desc":"57940"},{"messageId":"57941","fix":"62655","desc":"57943"},{"messageId":"57938","fix":"62656","desc":"57940"},{"messageId":"57941","fix":"62657","desc":"57943"},{"messageId":"57938","fix":"62658","desc":"57940"},{"messageId":"57941","fix":"62659","desc":"57943"},{"messageId":"57938","fix":"62660","desc":"57940"},{"messageId":"57941","fix":"62661","desc":"57943"},{"messageId":"57938","fix":"62662","desc":"57940"},{"messageId":"57941","fix":"62663","desc":"57943"},{"messageId":"57938","fix":"62664","desc":"57940"},{"messageId":"57941","fix":"62665","desc":"57943"},{"messageId":"57938","fix":"62666","desc":"57940"},{"messageId":"57941","fix":"62667","desc":"57943"},{"messageId":"57938","fix":"62668","desc":"57940"},{"messageId":"57941","fix":"62669","desc":"57943"},{"messageId":"57938","fix":"62670","desc":"57940"},{"messageId":"57941","fix":"62671","desc":"57943"},{"messageId":"57938","fix":"62672","desc":"57940"},{"messageId":"57941","fix":"62673","desc":"57943"},{"messageId":"57938","fix":"62674","desc":"57940"},{"messageId":"57941","fix":"62675","desc":"57943"},{"messageId":"57938","fix":"62676","desc":"57940"},{"messageId":"57941","fix":"62677","desc":"57943"},{"messageId":"57938","fix":"62678","desc":"57940"},{"messageId":"57941","fix":"62679","desc":"57943"},{"messageId":"57938","fix":"62680","desc":"57940"},{"messageId":"57941","fix":"62681","desc":"57943"},{"messageId":"57938","fix":"62682","desc":"57940"},{"messageId":"57941","fix":"62683","desc":"57943"},{"messageId":"57938","fix":"62684","desc":"57940"},{"messageId":"57941","fix":"62685","desc":"57943"},{"messageId":"57938","fix":"62686","desc":"57940"},{"messageId":"57941","fix":"62687","desc":"57943"},{"messageId":"57938","fix":"62688","desc":"57940"},{"messageId":"57941","fix":"62689","desc":"57943"},{"messageId":"57938","fix":"62690","desc":"57940"},{"messageId":"57941","fix":"62691","desc":"57943"},{"messageId":"57938","fix":"62692","desc":"57940"},{"messageId":"57941","fix":"62693","desc":"57943"},{"messageId":"57938","fix":"62694","desc":"57940"},{"messageId":"57941","fix":"62695","desc":"57943"},{"messageId":"57938","fix":"62696","desc":"57940"},{"messageId":"57941","fix":"62697","desc":"57943"},{"messageId":"57938","fix":"62698","desc":"57940"},{"messageId":"57941","fix":"62699","desc":"57943"},{"messageId":"57938","fix":"62700","desc":"57940"},{"messageId":"57941","fix":"62701","desc":"57943"},{"messageId":"57938","fix":"62702","desc":"57940"},{"messageId":"57941","fix":"62703","desc":"57943"},{"messageId":"57938","fix":"62704","desc":"57940"},{"messageId":"57941","fix":"62705","desc":"57943"},{"messageId":"57938","fix":"62706","desc":"57940"},{"messageId":"57941","fix":"62707","desc":"57943"},{"messageId":"57938","fix":"62708","desc":"57940"},{"messageId":"57941","fix":"62709","desc":"57943"},{"messageId":"57938","fix":"62710","desc":"57940"},{"messageId":"57941","fix":"62711","desc":"57943"},{"messageId":"57938","fix":"62712","desc":"57940"},{"messageId":"57941","fix":"62713","desc":"57943"},{"messageId":"57938","fix":"62714","desc":"57940"},{"messageId":"57941","fix":"62715","desc":"57943"},{"messageId":"57938","fix":"62716","desc":"57940"},{"messageId":"57941","fix":"62717","desc":"57943"},{"messageId":"57938","fix":"62718","desc":"57940"},{"messageId":"57941","fix":"62719","desc":"57943"},{"messageId":"57938","fix":"62720","desc":"57940"},{"messageId":"57941","fix":"62721","desc":"57943"},{"messageId":"57938","fix":"62722","desc":"57940"},{"messageId":"57941","fix":"62723","desc":"57943"},{"messageId":"57938","fix":"62724","desc":"57940"},{"messageId":"57941","fix":"62725","desc":"57943"},{"messageId":"57938","fix":"62726","desc":"57940"},{"messageId":"57941","fix":"62727","desc":"57943"},{"messageId":"57938","fix":"62728","desc":"57940"},{"messageId":"57941","fix":"62729","desc":"57943"},{"messageId":"57938","fix":"62730","desc":"57940"},{"messageId":"57941","fix":"62731","desc":"57943"},{"messageId":"57938","fix":"62732","desc":"57940"},{"messageId":"57941","fix":"62733","desc":"57943"},{"messageId":"57938","fix":"62734","desc":"57940"},{"messageId":"57941","fix":"62735","desc":"57943"},{"messageId":"57938","fix":"62736","desc":"57940"},{"messageId":"57941","fix":"62737","desc":"57943"},{"messageId":"57938","fix":"62738","desc":"57940"},{"messageId":"57941","fix":"62739","desc":"57943"},{"messageId":"57938","fix":"62740","desc":"57940"},{"messageId":"57941","fix":"62741","desc":"57943"},{"messageId":"57938","fix":"62742","desc":"57940"},{"messageId":"57941","fix":"62743","desc":"57943"},{"messageId":"57938","fix":"62744","desc":"57940"},{"messageId":"57941","fix":"62745","desc":"57943"},{"messageId":"57938","fix":"62746","desc":"57940"},{"messageId":"57941","fix":"62747","desc":"57943"},{"messageId":"57938","fix":"62748","desc":"57940"},{"messageId":"57941","fix":"62749","desc":"57943"},{"messageId":"57938","fix":"62750","desc":"57940"},{"messageId":"57941","fix":"62751","desc":"57943"},{"messageId":"57938","fix":"62752","desc":"57940"},{"messageId":"57941","fix":"62753","desc":"57943"},{"messageId":"57938","fix":"62754","desc":"57940"},{"messageId":"57941","fix":"62755","desc":"57943"},{"messageId":"57938","fix":"62756","desc":"57940"},{"messageId":"57941","fix":"62757","desc":"57943"},{"messageId":"57938","fix":"62758","desc":"57940"},{"messageId":"57941","fix":"62759","desc":"57943"},{"messageId":"57938","fix":"62760","desc":"57940"},{"messageId":"57941","fix":"62761","desc":"57943"},{"messageId":"57938","fix":"62762","desc":"57940"},{"messageId":"57941","fix":"62763","desc":"57943"},{"messageId":"57938","fix":"62764","desc":"57940"},{"messageId":"57941","fix":"62765","desc":"57943"},{"messageId":"57938","fix":"62766","desc":"57940"},{"messageId":"57941","fix":"62767","desc":"57943"},{"messageId":"57938","fix":"62768","desc":"57940"},{"messageId":"57941","fix":"62769","desc":"57943"},{"messageId":"57938","fix":"62770","desc":"57940"},{"messageId":"57941","fix":"62771","desc":"57943"},{"messageId":"57938","fix":"62772","desc":"57940"},{"messageId":"57941","fix":"62773","desc":"57943"},{"messageId":"57938","fix":"62774","desc":"57940"},{"messageId":"57941","fix":"62775","desc":"57943"},{"messageId":"57938","fix":"62776","desc":"57940"},{"messageId":"57941","fix":"62777","desc":"57943"},{"messageId":"57938","fix":"62778","desc":"57940"},{"messageId":"57941","fix":"62779","desc":"57943"},{"messageId":"57938","fix":"62780","desc":"57940"},{"messageId":"57941","fix":"62781","desc":"57943"},{"messageId":"57938","fix":"62782","desc":"57940"},{"messageId":"57941","fix":"62783","desc":"57943"},{"messageId":"57938","fix":"62784","desc":"57940"},{"messageId":"57941","fix":"62785","desc":"57943"},{"messageId":"57938","fix":"62786","desc":"57940"},{"messageId":"57941","fix":"62787","desc":"57943"},{"messageId":"57938","fix":"62788","desc":"57940"},{"messageId":"57941","fix":"62789","desc":"57943"},{"messageId":"57938","fix":"62790","desc":"57940"},{"messageId":"57941","fix":"62791","desc":"57943"},{"messageId":"57938","fix":"62792","desc":"57940"},{"messageId":"57941","fix":"62793","desc":"57943"},{"messageId":"57938","fix":"62794","desc":"57940"},{"messageId":"57941","fix":"62795","desc":"57943"},{"messageId":"57938","fix":"62796","desc":"57940"},{"messageId":"57941","fix":"62797","desc":"57943"},{"messageId":"57938","fix":"62798","desc":"57940"},{"messageId":"57941","fix":"62799","desc":"57943"},{"messageId":"57938","fix":"62800","desc":"57940"},{"messageId":"57941","fix":"62801","desc":"57943"},{"messageId":"57938","fix":"62802","desc":"57940"},{"messageId":"57941","fix":"62803","desc":"57943"},{"messageId":"57938","fix":"62804","desc":"57940"},{"messageId":"57941","fix":"62805","desc":"57943"},{"messageId":"57938","fix":"62806","desc":"57940"},{"messageId":"57941","fix":"62807","desc":"57943"},{"messageId":"57938","fix":"62808","desc":"57940"},{"messageId":"57941","fix":"62809","desc":"57943"},{"messageId":"57938","fix":"62810","desc":"57940"},{"messageId":"57941","fix":"62811","desc":"57943"},{"messageId":"57938","fix":"62812","desc":"57940"},{"messageId":"57941","fix":"62813","desc":"57943"},{"messageId":"57938","fix":"62814","desc":"57940"},{"messageId":"57941","fix":"62815","desc":"57943"},{"messageId":"57938","fix":"62816","desc":"57940"},{"messageId":"57941","fix":"62817","desc":"57943"},{"messageId":"57938","fix":"62818","desc":"57940"},{"messageId":"57941","fix":"62819","desc":"57943"},{"messageId":"57938","fix":"62820","desc":"57940"},{"messageId":"57941","fix":"62821","desc":"57943"},{"messageId":"57938","fix":"62822","desc":"57940"},{"messageId":"57941","fix":"62823","desc":"57943"},{"messageId":"57938","fix":"62824","desc":"57940"},{"messageId":"57941","fix":"62825","desc":"57943"},{"messageId":"57938","fix":"62826","desc":"57940"},{"messageId":"57941","fix":"62827","desc":"57943"},{"messageId":"57938","fix":"62828","desc":"57940"},{"messageId":"57941","fix":"62829","desc":"57943"},{"messageId":"57938","fix":"62830","desc":"57940"},{"messageId":"57941","fix":"62831","desc":"57943"},{"messageId":"57938","fix":"62832","desc":"57940"},{"messageId":"57941","fix":"62833","desc":"57943"},{"messageId":"57938","fix":"62834","desc":"57940"},{"messageId":"57941","fix":"62835","desc":"57943"},{"messageId":"57938","fix":"62836","desc":"57940"},{"messageId":"57941","fix":"62837","desc":"57943"},{"messageId":"57938","fix":"62838","desc":"57940"},{"messageId":"57941","fix":"62839","desc":"57943"},{"messageId":"57938","fix":"62840","desc":"57940"},{"messageId":"57941","fix":"62841","desc":"57943"},{"messageId":"57938","fix":"62842","desc":"57940"},{"messageId":"57941","fix":"62843","desc":"57943"},{"messageId":"57938","fix":"62844","desc":"57940"},{"messageId":"57941","fix":"62845","desc":"57943"},{"messageId":"57938","fix":"62846","desc":"57940"},{"messageId":"57941","fix":"62847","desc":"57943"},{"messageId":"57938","fix":"62848","desc":"57940"},{"messageId":"57941","fix":"62849","desc":"57943"},{"messageId":"57938","fix":"62850","desc":"57940"},{"messageId":"57941","fix":"62851","desc":"57943"},{"messageId":"57938","fix":"62852","desc":"57940"},{"messageId":"57941","fix":"62853","desc":"57943"},{"messageId":"57938","fix":"62854","desc":"57940"},{"messageId":"57941","fix":"62855","desc":"57943"},{"messageId":"57938","fix":"62856","desc":"57940"},{"messageId":"57941","fix":"62857","desc":"57943"},{"messageId":"57938","fix":"62858","desc":"57940"},{"messageId":"57941","fix":"62859","desc":"57943"},{"messageId":"57938","fix":"62860","desc":"57940"},{"messageId":"57941","fix":"62861","desc":"57943"},{"messageId":"57938","fix":"62862","desc":"57940"},{"messageId":"57941","fix":"62863","desc":"57943"},{"messageId":"57938","fix":"62864","desc":"57940"},{"messageId":"57941","fix":"62865","desc":"57943"},{"messageId":"57938","fix":"62866","desc":"57940"},{"messageId":"57941","fix":"62867","desc":"57943"},{"messageId":"57938","fix":"62868","desc":"57940"},{"messageId":"57941","fix":"62869","desc":"57943"},{"messageId":"57938","fix":"62870","desc":"57940"},{"messageId":"57941","fix":"62871","desc":"57943"},{"messageId":"57938","fix":"62872","desc":"57940"},{"messageId":"57941","fix":"62873","desc":"57943"},{"messageId":"57938","fix":"62874","desc":"57940"},{"messageId":"57941","fix":"62875","desc":"57943"},{"messageId":"57938","fix":"62876","desc":"57940"},{"messageId":"57941","fix":"62877","desc":"57943"},{"messageId":"57938","fix":"62878","desc":"57940"},{"messageId":"57941","fix":"62879","desc":"57943"},{"messageId":"57938","fix":"62880","desc":"57940"},{"messageId":"57941","fix":"62881","desc":"57943"},{"messageId":"57938","fix":"62882","desc":"57940"},{"messageId":"57941","fix":"62883","desc":"57943"},{"messageId":"57938","fix":"62884","desc":"57940"},{"messageId":"57941","fix":"62885","desc":"57943"},{"messageId":"57938","fix":"62886","desc":"57940"},{"messageId":"57941","fix":"62887","desc":"57943"},{"messageId":"57938","fix":"62888","desc":"57940"},{"messageId":"57941","fix":"62889","desc":"57943"},{"messageId":"57938","fix":"62890","desc":"57940"},{"messageId":"57941","fix":"62891","desc":"57943"},{"messageId":"57938","fix":"62892","desc":"57940"},{"messageId":"57941","fix":"62893","desc":"57943"},{"messageId":"57938","fix":"62894","desc":"57940"},{"messageId":"57941","fix":"62895","desc":"57943"},{"messageId":"57938","fix":"62896","desc":"57940"},{"messageId":"57941","fix":"62897","desc":"57943"},{"messageId":"57938","fix":"62898","desc":"57940"},{"messageId":"57941","fix":"62899","desc":"57943"},{"messageId":"57938","fix":"62900","desc":"57940"},{"messageId":"57941","fix":"62901","desc":"57943"},{"messageId":"57938","fix":"62902","desc":"57940"},{"messageId":"57941","fix":"62903","desc":"57943"},{"messageId":"57938","fix":"62904","desc":"57940"},{"messageId":"57941","fix":"62905","desc":"57943"},{"messageId":"57938","fix":"62906","desc":"57940"},{"messageId":"57941","fix":"62907","desc":"57943"},{"messageId":"57938","fix":"62908","desc":"57940"},{"messageId":"57941","fix":"62909","desc":"57943"},{"messageId":"57938","fix":"62910","desc":"57940"},{"messageId":"57941","fix":"62911","desc":"57943"},{"messageId":"57938","fix":"62912","desc":"57940"},{"messageId":"57941","fix":"62913","desc":"57943"},{"messageId":"57938","fix":"62914","desc":"57940"},{"messageId":"57941","fix":"62915","desc":"57943"},{"messageId":"57938","fix":"62916","desc":"57940"},{"messageId":"57941","fix":"62917","desc":"57943"},{"messageId":"57938","fix":"62918","desc":"57940"},{"messageId":"57941","fix":"62919","desc":"57943"},{"messageId":"57938","fix":"62920","desc":"57940"},{"messageId":"57941","fix":"62921","desc":"57943"},{"messageId":"57938","fix":"62922","desc":"57940"},{"messageId":"57941","fix":"62923","desc":"57943"},{"messageId":"57938","fix":"62924","desc":"57940"},{"messageId":"57941","fix":"62925","desc":"57943"},{"messageId":"57938","fix":"62926","desc":"57940"},{"messageId":"57941","fix":"62927","desc":"57943"},{"messageId":"57938","fix":"62928","desc":"57940"},{"messageId":"57941","fix":"62929","desc":"57943"},{"messageId":"57938","fix":"62930","desc":"57940"},{"messageId":"57941","fix":"62931","desc":"57943"},{"messageId":"57938","fix":"62932","desc":"57940"},{"messageId":"57941","fix":"62933","desc":"57943"},{"messageId":"57938","fix":"62934","desc":"57940"},{"messageId":"57941","fix":"62935","desc":"57943"},{"messageId":"57938","fix":"62936","desc":"57940"},{"messageId":"57941","fix":"62937","desc":"57943"},{"messageId":"57938","fix":"62938","desc":"57940"},{"messageId":"57941","fix":"62939","desc":"57943"},{"messageId":"57938","fix":"62940","desc":"57940"},{"messageId":"57941","fix":"62941","desc":"57943"},{"messageId":"57938","fix":"62942","desc":"57940"},{"messageId":"57941","fix":"62943","desc":"57943"},{"messageId":"57938","fix":"62944","desc":"57940"},{"messageId":"57941","fix":"62945","desc":"57943"},{"messageId":"57938","fix":"62946","desc":"57940"},{"messageId":"57941","fix":"62947","desc":"57943"},{"messageId":"57938","fix":"62948","desc":"57940"},{"messageId":"57941","fix":"62949","desc":"57943"},{"messageId":"57938","fix":"62950","desc":"57940"},{"messageId":"57941","fix":"62951","desc":"57943"},{"messageId":"57938","fix":"62952","desc":"57940"},{"messageId":"57941","fix":"62953","desc":"57943"},{"messageId":"57938","fix":"62954","desc":"57940"},{"messageId":"57941","fix":"62955","desc":"57943"},{"messageId":"57938","fix":"62956","desc":"57940"},{"messageId":"57941","fix":"62957","desc":"57943"},{"messageId":"57938","fix":"62958","desc":"57940"},{"messageId":"57941","fix":"62959","desc":"57943"},{"messageId":"57938","fix":"62960","desc":"57940"},{"messageId":"57941","fix":"62961","desc":"57943"},{"messageId":"57938","fix":"62962","desc":"57940"},{"messageId":"57941","fix":"62963","desc":"57943"},{"messageId":"57938","fix":"62964","desc":"57940"},{"messageId":"57941","fix":"62965","desc":"57943"},{"messageId":"57938","fix":"62966","desc":"57940"},{"messageId":"57941","fix":"62967","desc":"57943"},{"messageId":"57938","fix":"62968","desc":"57940"},{"messageId":"57941","fix":"62969","desc":"57943"},{"messageId":"57938","fix":"62970","desc":"57940"},{"messageId":"57941","fix":"62971","desc":"57943"},{"messageId":"57938","fix":"62972","desc":"57940"},{"messageId":"57941","fix":"62973","desc":"57943"},{"messageId":"57938","fix":"62974","desc":"57940"},{"messageId":"57941","fix":"62975","desc":"57943"},{"messageId":"57938","fix":"62976","desc":"57940"},{"messageId":"57941","fix":"62977","desc":"57943"},{"messageId":"57938","fix":"62978","desc":"57940"},{"messageId":"57941","fix":"62979","desc":"57943"},{"messageId":"57938","fix":"62980","desc":"57940"},{"messageId":"57941","fix":"62981","desc":"57943"},{"messageId":"57938","fix":"62982","desc":"57940"},{"messageId":"57941","fix":"62983","desc":"57943"},{"messageId":"57938","fix":"62984","desc":"57940"},{"messageId":"57941","fix":"62985","desc":"57943"},{"messageId":"57938","fix":"62986","desc":"57940"},{"messageId":"57941","fix":"62987","desc":"57943"},{"messageId":"57938","fix":"62988","desc":"57940"},{"messageId":"57941","fix":"62989","desc":"57943"},{"messageId":"57938","fix":"62990","desc":"57940"},{"messageId":"57941","fix":"62991","desc":"57943"},{"messageId":"57938","fix":"62992","desc":"57940"},{"messageId":"57941","fix":"62993","desc":"57943"},{"messageId":"57938","fix":"62994","desc":"57940"},{"messageId":"57941","fix":"62995","desc":"57943"},{"messageId":"57938","fix":"62996","desc":"57940"},{"messageId":"57941","fix":"62997","desc":"57943"},{"messageId":"57938","fix":"62998","desc":"57940"},{"messageId":"57941","fix":"62999","desc":"57943"},{"messageId":"57938","fix":"63000","desc":"57940"},{"messageId":"57941","fix":"63001","desc":"57943"},{"messageId":"57938","fix":"63002","desc":"57940"},{"messageId":"57941","fix":"63003","desc":"57943"},{"messageId":"57938","fix":"63004","desc":"57940"},{"messageId":"57941","fix":"63005","desc":"57943"},{"messageId":"57938","fix":"63006","desc":"57940"},{"messageId":"57941","fix":"63007","desc":"57943"},{"messageId":"57938","fix":"63008","desc":"57940"},{"messageId":"57941","fix":"63009","desc":"57943"},{"messageId":"57938","fix":"63010","desc":"57940"},{"messageId":"57941","fix":"63011","desc":"57943"},{"messageId":"57938","fix":"63012","desc":"57940"},{"messageId":"57941","fix":"63013","desc":"57943"},{"messageId":"57938","fix":"63014","desc":"57940"},{"messageId":"57941","fix":"63015","desc":"57943"},{"messageId":"57938","fix":"63016","desc":"57940"},{"messageId":"57941","fix":"63017","desc":"57943"},{"messageId":"57938","fix":"63018","desc":"57940"},{"messageId":"57941","fix":"63019","desc":"57943"},{"messageId":"57938","fix":"63020","desc":"57940"},{"messageId":"57941","fix":"63021","desc":"57943"},{"messageId":"57938","fix":"63022","desc":"57940"},{"messageId":"57941","fix":"63023","desc":"57943"},{"messageId":"57938","fix":"63024","desc":"57940"},{"messageId":"57941","fix":"63025","desc":"57943"},{"messageId":"57938","fix":"63026","desc":"57940"},{"messageId":"57941","fix":"63027","desc":"57943"},{"messageId":"57938","fix":"63028","desc":"57940"},{"messageId":"57941","fix":"63029","desc":"57943"},{"messageId":"57938","fix":"63030","desc":"57940"},{"messageId":"57941","fix":"63031","desc":"57943"},{"messageId":"57938","fix":"63032","desc":"57940"},{"messageId":"57941","fix":"63033","desc":"57943"},{"messageId":"57938","fix":"63034","desc":"57940"},{"messageId":"57941","fix":"63035","desc":"57943"},{"messageId":"57938","fix":"63036","desc":"57940"},{"messageId":"57941","fix":"63037","desc":"57943"},{"messageId":"57938","fix":"63038","desc":"57940"},{"messageId":"57941","fix":"63039","desc":"57943"},{"messageId":"57938","fix":"63040","desc":"57940"},{"messageId":"57941","fix":"63041","desc":"57943"},{"messageId":"57938","fix":"63042","desc":"57940"},{"messageId":"57941","fix":"63043","desc":"57943"},{"messageId":"57938","fix":"63044","desc":"57940"},{"messageId":"57941","fix":"63045","desc":"57943"},{"messageId":"57938","fix":"63046","desc":"57940"},{"messageId":"57941","fix":"63047","desc":"57943"},{"messageId":"57938","fix":"63048","desc":"57940"},{"messageId":"57941","fix":"63049","desc":"57943"},{"messageId":"57938","fix":"63050","desc":"57940"},{"messageId":"57941","fix":"63051","desc":"57943"},{"messageId":"57938","fix":"63052","desc":"57940"},{"messageId":"57941","fix":"63053","desc":"57943"},{"kind":"58246","justification":"58247"},{"messageId":"57938","fix":"63054","desc":"57940"},{"messageId":"57941","fix":"63055","desc":"57943"},{"messageId":"57938","fix":"63056","desc":"57940"},{"messageId":"57941","fix":"63057","desc":"57943"},{"messageId":"57938","fix":"63058","desc":"57940"},{"messageId":"57941","fix":"63059","desc":"57943"},{"messageId":"57938","fix":"63060","desc":"57940"},{"messageId":"57941","fix":"63061","desc":"57943"},{"messageId":"57938","fix":"63062","desc":"57940"},{"messageId":"57941","fix":"63063","desc":"57943"},{"messageId":"57938","fix":"63064","desc":"57940"},{"messageId":"57941","fix":"63065","desc":"57943"},{"messageId":"57938","fix":"63066","desc":"57940"},{"messageId":"57941","fix":"63067","desc":"57943"},{"messageId":"57938","fix":"63068","desc":"57940"},{"messageId":"57941","fix":"63069","desc":"57943"},{"messageId":"57938","fix":"63070","desc":"57940"},{"messageId":"57941","fix":"63071","desc":"57943"},{"messageId":"57938","fix":"63072","desc":"57940"},{"messageId":"57941","fix":"63073","desc":"57943"},{"messageId":"57938","fix":"63074","desc":"57940"},{"messageId":"57941","fix":"63075","desc":"57943"},{"messageId":"57938","fix":"63076","desc":"57940"},{"messageId":"57941","fix":"63077","desc":"57943"},{"messageId":"57938","fix":"63078","desc":"57940"},{"messageId":"57941","fix":"63079","desc":"57943"},{"messageId":"57938","fix":"63080","desc":"57940"},{"messageId":"57941","fix":"63081","desc":"57943"},{"messageId":"57938","fix":"63082","desc":"57940"},{"messageId":"57941","fix":"63083","desc":"57943"},{"messageId":"57938","fix":"63084","desc":"57940"},{"messageId":"57941","fix":"63085","desc":"57943"},{"messageId":"57938","fix":"63086","desc":"57940"},{"messageId":"57941","fix":"63087","desc":"57943"},{"messageId":"57938","fix":"63088","desc":"57940"},{"messageId":"57941","fix":"63089","desc":"57943"},{"messageId":"57938","fix":"63090","desc":"57940"},{"messageId":"57941","fix":"63091","desc":"57943"},{"messageId":"57938","fix":"63092","desc":"57940"},{"messageId":"57941","fix":"63093","desc":"57943"},{"messageId":"57938","fix":"63094","desc":"57940"},{"messageId":"57941","fix":"63095","desc":"57943"},{"messageId":"57938","fix":"63096","desc":"57940"},{"messageId":"57941","fix":"63097","desc":"57943"},{"messageId":"57938","fix":"63098","desc":"57940"},{"messageId":"57941","fix":"63099","desc":"57943"},{"messageId":"57938","fix":"63100","desc":"57940"},{"messageId":"57941","fix":"63101","desc":"57943"},{"messageId":"57938","fix":"63102","desc":"57940"},{"messageId":"57941","fix":"63103","desc":"57943"},{"messageId":"57938","fix":"63104","desc":"57940"},{"messageId":"57941","fix":"63105","desc":"57943"},{"messageId":"57938","fix":"63106","desc":"57940"},{"messageId":"57941","fix":"63107","desc":"57943"},{"messageId":"57938","fix":"63108","desc":"57940"},{"messageId":"57941","fix":"63109","desc":"57943"},{"messageId":"57938","fix":"63110","desc":"57940"},{"messageId":"57941","fix":"63111","desc":"57943"},{"messageId":"57938","fix":"63112","desc":"57940"},{"messageId":"57941","fix":"63113","desc":"57943"},{"messageId":"57938","fix":"63114","desc":"57940"},{"messageId":"57941","fix":"63115","desc":"57943"},{"messageId":"57938","fix":"63116","desc":"57940"},{"messageId":"57941","fix":"63117","desc":"57943"},{"messageId":"57938","fix":"63118","desc":"57940"},{"messageId":"57941","fix":"63119","desc":"57943"},{"messageId":"57938","fix":"63120","desc":"57940"},{"messageId":"57941","fix":"63121","desc":"57943"},{"messageId":"57938","fix":"63122","desc":"57940"},{"messageId":"57941","fix":"63123","desc":"57943"},{"messageId":"57938","fix":"63124","desc":"57940"},{"messageId":"57941","fix":"63125","desc":"57943"},{"messageId":"57938","fix":"63126","desc":"57940"},{"messageId":"57941","fix":"63127","desc":"57943"},{"messageId":"57938","fix":"63128","desc":"57940"},{"messageId":"57941","fix":"63129","desc":"57943"},{"messageId":"57938","fix":"63130","desc":"57940"},{"messageId":"57941","fix":"63131","desc":"57943"},{"messageId":"57938","fix":"63132","desc":"57940"},{"messageId":"57941","fix":"63133","desc":"57943"},{"messageId":"57938","fix":"63134","desc":"57940"},{"messageId":"57941","fix":"63135","desc":"57943"},{"messageId":"57938","fix":"63136","desc":"57940"},{"messageId":"57941","fix":"63137","desc":"57943"},{"messageId":"57938","fix":"63138","desc":"57940"},{"messageId":"57941","fix":"63139","desc":"57943"},{"messageId":"57938","fix":"63140","desc":"57940"},{"messageId":"57941","fix":"63141","desc":"57943"},{"messageId":"57938","fix":"63142","desc":"57940"},{"messageId":"57941","fix":"63143","desc":"57943"},{"messageId":"57938","fix":"63144","desc":"57940"},{"messageId":"57941","fix":"63145","desc":"57943"},{"messageId":"57938","fix":"63146","desc":"57940"},{"messageId":"57941","fix":"63147","desc":"57943"},{"messageId":"57938","fix":"63148","desc":"57940"},{"messageId":"57941","fix":"63149","desc":"57943"},{"messageId":"57938","fix":"63150","desc":"57940"},{"messageId":"57941","fix":"63151","desc":"57943"},{"messageId":"57938","fix":"63152","desc":"57940"},{"messageId":"57941","fix":"63153","desc":"57943"},{"messageId":"57938","fix":"63154","desc":"57940"},{"messageId":"57941","fix":"63155","desc":"57943"},{"messageId":"57938","fix":"63156","desc":"57940"},{"messageId":"57941","fix":"63157","desc":"57943"},{"messageId":"57938","fix":"63158","desc":"57940"},{"messageId":"57941","fix":"63159","desc":"57943"},{"messageId":"57938","fix":"63160","desc":"57940"},{"messageId":"57941","fix":"63161","desc":"57943"},{"messageId":"57938","fix":"63162","desc":"57940"},{"messageId":"57941","fix":"63163","desc":"57943"},{"messageId":"57938","fix":"63164","desc":"57940"},{"messageId":"57941","fix":"63165","desc":"57943"},{"messageId":"57938","fix":"63166","desc":"57940"},{"messageId":"57941","fix":"63167","desc":"57943"},{"messageId":"57938","fix":"63168","desc":"57940"},{"messageId":"57941","fix":"63169","desc":"57943"},{"messageId":"57938","fix":"63170","desc":"57940"},{"messageId":"57941","fix":"63171","desc":"57943"},{"messageId":"57938","fix":"63172","desc":"57940"},{"messageId":"57941","fix":"63173","desc":"57943"},{"messageId":"57938","fix":"63174","desc":"57940"},{"messageId":"57941","fix":"63175","desc":"57943"},{"messageId":"57938","fix":"63176","desc":"57940"},{"messageId":"57941","fix":"63177","desc":"57943"},{"messageId":"57938","fix":"63178","desc":"57940"},{"messageId":"57941","fix":"63179","desc":"57943"},{"messageId":"57938","fix":"63180","desc":"57940"},{"messageId":"57941","fix":"63181","desc":"57943"},{"messageId":"57938","fix":"63182","desc":"57940"},{"messageId":"57941","fix":"63183","desc":"57943"},{"messageId":"57938","fix":"63184","desc":"57940"},{"messageId":"57941","fix":"63185","desc":"57943"},{"messageId":"57938","fix":"63186","desc":"57940"},{"messageId":"57941","fix":"63187","desc":"57943"},{"messageId":"57938","fix":"63188","desc":"57940"},{"messageId":"57941","fix":"63189","desc":"57943"},{"messageId":"57938","fix":"63190","desc":"57940"},{"messageId":"57941","fix":"63191","desc":"57943"},{"messageId":"57938","fix":"63192","desc":"57940"},{"messageId":"57941","fix":"63193","desc":"57943"},{"messageId":"57938","fix":"63194","desc":"57940"},{"messageId":"57941","fix":"63195","desc":"57943"},{"messageId":"57938","fix":"63196","desc":"57940"},{"messageId":"57941","fix":"63197","desc":"57943"},{"messageId":"57938","fix":"63198","desc":"57940"},{"messageId":"57941","fix":"63199","desc":"57943"},{"messageId":"57938","fix":"63200","desc":"57940"},{"messageId":"57941","fix":"63201","desc":"57943"},{"messageId":"57938","fix":"63202","desc":"57940"},{"messageId":"57941","fix":"63203","desc":"57943"},{"messageId":"57938","fix":"63204","desc":"57940"},{"messageId":"57941","fix":"63205","desc":"57943"},{"messageId":"57938","fix":"63206","desc":"57940"},{"messageId":"57941","fix":"63207","desc":"57943"},{"messageId":"57938","fix":"63208","desc":"57940"},{"messageId":"57941","fix":"63209","desc":"57943"},{"messageId":"57938","fix":"63210","desc":"57940"},{"messageId":"57941","fix":"63211","desc":"57943"},{"messageId":"57938","fix":"63212","desc":"57940"},{"messageId":"57941","fix":"63213","desc":"57943"},{"messageId":"57938","fix":"63214","desc":"57940"},{"messageId":"57941","fix":"63215","desc":"57943"},{"messageId":"57938","fix":"63216","desc":"57940"},{"messageId":"57941","fix":"63217","desc":"57943"},{"messageId":"57938","fix":"63218","desc":"57940"},{"messageId":"57941","fix":"63219","desc":"57943"},{"messageId":"57938","fix":"63220","desc":"57940"},{"messageId":"57941","fix":"63221","desc":"57943"},{"messageId":"57938","fix":"63222","desc":"57940"},{"messageId":"57941","fix":"63223","desc":"57943"},{"messageId":"57938","fix":"63224","desc":"57940"},{"messageId":"57941","fix":"63225","desc":"57943"},{"messageId":"57938","fix":"63226","desc":"57940"},{"messageId":"57941","fix":"63227","desc":"57943"},{"messageId":"57938","fix":"63228","desc":"57940"},{"messageId":"57941","fix":"63229","desc":"57943"},{"messageId":"57938","fix":"63230","desc":"57940"},{"messageId":"57941","fix":"63231","desc":"57943"},{"messageId":"57938","fix":"63232","desc":"57940"},{"messageId":"57941","fix":"63233","desc":"57943"},{"messageId":"57938","fix":"63234","desc":"57940"},{"messageId":"57941","fix":"63235","desc":"57943"},{"messageId":"57938","fix":"63236","desc":"57940"},{"messageId":"57941","fix":"63237","desc":"57943"},{"messageId":"57938","fix":"63238","desc":"57940"},{"messageId":"57941","fix":"63239","desc":"57943"},{"messageId":"57938","fix":"63240","desc":"57940"},{"messageId":"57941","fix":"63241","desc":"57943"},{"messageId":"57938","fix":"63242","desc":"57940"},{"messageId":"57941","fix":"63243","desc":"57943"},{"messageId":"57938","fix":"63244","desc":"57940"},{"messageId":"57941","fix":"63245","desc":"57943"},{"messageId":"57938","fix":"63246","desc":"57940"},{"messageId":"57941","fix":"63247","desc":"57943"},{"messageId":"57938","fix":"63248","desc":"57940"},{"messageId":"57941","fix":"63249","desc":"57943"},{"messageId":"57938","fix":"63250","desc":"57940"},{"messageId":"57941","fix":"63251","desc":"57943"},{"messageId":"57938","fix":"63252","desc":"57940"},{"messageId":"57941","fix":"63253","desc":"57943"},{"messageId":"57938","fix":"63254","desc":"57940"},{"messageId":"57941","fix":"63255","desc":"57943"},{"messageId":"57938","fix":"63256","desc":"57940"},{"messageId":"57941","fix":"63257","desc":"57943"},{"messageId":"57938","fix":"63258","desc":"57940"},{"messageId":"57941","fix":"63259","desc":"57943"},{"messageId":"57938","fix":"63260","desc":"57940"},{"messageId":"57941","fix":"63261","desc":"57943"},{"messageId":"57938","fix":"63262","desc":"57940"},{"messageId":"57941","fix":"63263","desc":"57943"},{"messageId":"57938","fix":"63264","desc":"57940"},{"messageId":"57941","fix":"63265","desc":"57943"},{"messageId":"57938","fix":"63266","desc":"57940"},{"messageId":"57941","fix":"63267","desc":"57943"},{"messageId":"57938","fix":"63268","desc":"57940"},{"messageId":"57941","fix":"63269","desc":"57943"},{"messageId":"57938","fix":"63270","desc":"57940"},{"messageId":"57941","fix":"63271","desc":"57943"},{"messageId":"57938","fix":"63272","desc":"57940"},{"messageId":"57941","fix":"63273","desc":"57943"},{"messageId":"57938","fix":"63274","desc":"57940"},{"messageId":"57941","fix":"63275","desc":"57943"},{"messageId":"57938","fix":"63276","desc":"57940"},{"messageId":"57941","fix":"63277","desc":"57943"},{"messageId":"57938","fix":"63278","desc":"57940"},{"messageId":"57941","fix":"63279","desc":"57943"},{"messageId":"57938","fix":"63280","desc":"57940"},{"messageId":"57941","fix":"63281","desc":"57943"},{"messageId":"57938","fix":"63282","desc":"57940"},{"messageId":"57941","fix":"63283","desc":"57943"},{"messageId":"57938","fix":"63284","desc":"57940"},{"messageId":"57941","fix":"63285","desc":"57943"},{"messageId":"57938","fix":"63286","desc":"57940"},{"messageId":"57941","fix":"63287","desc":"57943"},{"messageId":"57938","fix":"63288","desc":"57940"},{"messageId":"57941","fix":"63289","desc":"57943"},{"messageId":"57938","fix":"63290","desc":"57940"},{"messageId":"57941","fix":"63291","desc":"57943"},{"messageId":"57938","fix":"63292","desc":"57940"},{"messageId":"57941","fix":"63293","desc":"57943"},{"messageId":"57938","fix":"63294","desc":"57940"},{"messageId":"57941","fix":"63295","desc":"57943"},{"messageId":"57938","fix":"63296","desc":"57940"},{"messageId":"57941","fix":"63297","desc":"57943"},{"messageId":"57938","fix":"63298","desc":"57940"},{"messageId":"57941","fix":"63299","desc":"57943"},{"messageId":"57938","fix":"63300","desc":"57940"},{"messageId":"57941","fix":"63301","desc":"57943"},{"messageId":"57938","fix":"63302","desc":"57940"},{"messageId":"57941","fix":"63303","desc":"57943"},{"messageId":"57938","fix":"63304","desc":"57940"},{"messageId":"57941","fix":"63305","desc":"57943"},{"messageId":"57938","fix":"63306","desc":"57940"},{"messageId":"57941","fix":"63307","desc":"57943"},{"messageId":"57938","fix":"63308","desc":"57940"},{"messageId":"57941","fix":"63309","desc":"57943"},{"messageId":"57938","fix":"63310","desc":"57940"},{"messageId":"57941","fix":"63311","desc":"57943"},{"messageId":"57938","fix":"63312","desc":"57940"},{"messageId":"57941","fix":"63313","desc":"57943"},{"messageId":"57938","fix":"63314","desc":"57940"},{"messageId":"57941","fix":"63315","desc":"57943"},{"messageId":"57938","fix":"63316","desc":"57940"},{"messageId":"57941","fix":"63317","desc":"57943"},{"messageId":"57938","fix":"63318","desc":"57940"},{"messageId":"57941","fix":"63319","desc":"57943"},{"messageId":"57938","fix":"63320","desc":"57940"},{"messageId":"57941","fix":"63321","desc":"57943"},{"messageId":"57938","fix":"63322","desc":"57940"},{"messageId":"57941","fix":"63323","desc":"57943"},{"messageId":"57938","fix":"63324","desc":"57940"},{"messageId":"57941","fix":"63325","desc":"57943"},{"messageId":"57938","fix":"63326","desc":"57940"},{"messageId":"57941","fix":"63327","desc":"57943"},{"messageId":"57938","fix":"63328","desc":"57940"},{"messageId":"57941","fix":"63329","desc":"57943"},{"messageId":"57938","fix":"63330","desc":"57940"},{"messageId":"57941","fix":"63331","desc":"57943"},{"messageId":"57938","fix":"63332","desc":"57940"},{"messageId":"57941","fix":"63333","desc":"57943"},{"messageId":"57938","fix":"63334","desc":"57940"},{"messageId":"57941","fix":"63335","desc":"57943"},{"messageId":"57938","fix":"63336","desc":"57940"},{"messageId":"57941","fix":"63337","desc":"57943"},{"messageId":"57938","fix":"63338","desc":"57940"},{"messageId":"57941","fix":"63339","desc":"57943"},{"messageId":"57938","fix":"63340","desc":"57940"},{"messageId":"57941","fix":"63341","desc":"57943"},{"messageId":"57938","fix":"63342","desc":"57940"},{"messageId":"57941","fix":"63343","desc":"57943"},{"messageId":"57938","fix":"63344","desc":"57940"},{"messageId":"57941","fix":"63345","desc":"57943"},{"messageId":"57938","fix":"63346","desc":"57940"},{"messageId":"57941","fix":"63347","desc":"57943"},{"messageId":"57938","fix":"63348","desc":"57940"},{"messageId":"57941","fix":"63349","desc":"57943"},{"messageId":"57938","fix":"63350","desc":"57940"},{"messageId":"57941","fix":"63351","desc":"57943"},{"messageId":"57938","fix":"63352","desc":"57940"},{"messageId":"57941","fix":"63353","desc":"57943"},{"messageId":"57938","fix":"63354","desc":"57940"},{"messageId":"57941","fix":"63355","desc":"57943"},{"messageId":"57938","fix":"63356","desc":"57940"},{"messageId":"57941","fix":"63357","desc":"57943"},{"messageId":"57938","fix":"63358","desc":"57940"},{"messageId":"57941","fix":"63359","desc":"57943"},{"messageId":"57938","fix":"63360","desc":"57940"},{"messageId":"57941","fix":"63361","desc":"57943"},{"messageId":"57938","fix":"63362","desc":"57940"},{"messageId":"57941","fix":"63363","desc":"57943"},{"messageId":"57938","fix":"63364","desc":"57940"},{"messageId":"57941","fix":"63365","desc":"57943"},{"messageId":"57938","fix":"63366","desc":"57940"},{"messageId":"57941","fix":"63367","desc":"57943"},{"messageId":"57938","fix":"63368","desc":"57940"},{"messageId":"57941","fix":"63369","desc":"57943"},{"messageId":"57938","fix":"63370","desc":"57940"},{"messageId":"57941","fix":"63371","desc":"57943"},{"messageId":"57938","fix":"63372","desc":"57940"},{"messageId":"57941","fix":"63373","desc":"57943"},{"messageId":"57938","fix":"63374","desc":"57940"},{"messageId":"57941","fix":"63375","desc":"57943"},{"messageId":"57938","fix":"63376","desc":"57940"},{"messageId":"57941","fix":"63377","desc":"57943"},{"messageId":"57938","fix":"63378","desc":"57940"},{"messageId":"57941","fix":"63379","desc":"57943"},{"messageId":"57938","fix":"63380","desc":"57940"},{"messageId":"57941","fix":"63381","desc":"57943"},{"messageId":"57938","fix":"63382","desc":"57940"},{"messageId":"57941","fix":"63383","desc":"57943"},{"messageId":"57938","fix":"63384","desc":"57940"},{"messageId":"57941","fix":"63385","desc":"57943"},{"messageId":"57938","fix":"63386","desc":"57940"},{"messageId":"57941","fix":"63387","desc":"57943"},{"messageId":"57938","fix":"63388","desc":"57940"},{"messageId":"57941","fix":"63389","desc":"57943"},{"messageId":"57938","fix":"63390","desc":"57940"},{"messageId":"57941","fix":"63391","desc":"57943"},{"messageId":"57938","fix":"63392","desc":"57940"},{"messageId":"57941","fix":"63393","desc":"57943"},{"messageId":"57938","fix":"63394","desc":"57940"},{"messageId":"57941","fix":"63395","desc":"57943"},{"messageId":"57938","fix":"63396","desc":"57940"},{"messageId":"57941","fix":"63397","desc":"57943"},{"messageId":"57938","fix":"63398","desc":"57940"},{"messageId":"57941","fix":"63399","desc":"57943"},{"messageId":"57938","fix":"63400","desc":"57940"},{"messageId":"57941","fix":"63401","desc":"57943"},{"messageId":"57938","fix":"63402","desc":"57940"},{"messageId":"57941","fix":"63403","desc":"57943"},{"messageId":"57938","fix":"63404","desc":"57940"},{"messageId":"57941","fix":"63405","desc":"57943"},{"messageId":"57938","fix":"63406","desc":"57940"},{"messageId":"57941","fix":"63407","desc":"57943"},{"messageId":"57938","fix":"63408","desc":"57940"},{"messageId":"57941","fix":"63409","desc":"57943"},{"messageId":"57938","fix":"63410","desc":"57940"},{"messageId":"57941","fix":"63411","desc":"57943"},{"messageId":"57938","fix":"63412","desc":"57940"},{"messageId":"57941","fix":"63413","desc":"57943"},{"messageId":"57938","fix":"63414","desc":"57940"},{"messageId":"57941","fix":"63415","desc":"57943"},{"messageId":"57938","fix":"63416","desc":"57940"},{"messageId":"57941","fix":"63417","desc":"57943"},{"messageId":"57938","fix":"63418","desc":"57940"},{"messageId":"57941","fix":"63419","desc":"57943"},{"messageId":"57938","fix":"63420","desc":"57940"},{"messageId":"57941","fix":"63421","desc":"57943"},{"messageId":"57938","fix":"63422","desc":"57940"},{"messageId":"57941","fix":"63423","desc":"57943"},{"messageId":"57938","fix":"63424","desc":"57940"},{"messageId":"57941","fix":"63425","desc":"57943"},{"messageId":"57938","fix":"63426","desc":"57940"},{"messageId":"57941","fix":"63427","desc":"57943"},{"messageId":"57938","fix":"63428","desc":"57940"},{"messageId":"57941","fix":"63429","desc":"57943"},{"messageId":"57938","fix":"63430","desc":"57940"},{"messageId":"57941","fix":"63431","desc":"57943"},{"messageId":"57938","fix":"63432","desc":"57940"},{"messageId":"57941","fix":"63433","desc":"57943"},{"messageId":"57938","fix":"63434","desc":"57940"},{"messageId":"57941","fix":"63435","desc":"57943"},{"messageId":"57938","fix":"63436","desc":"57940"},{"messageId":"57941","fix":"63437","desc":"57943"},{"messageId":"57938","fix":"63438","desc":"57940"},{"messageId":"57941","fix":"63439","desc":"57943"},{"messageId":"57938","fix":"63440","desc":"57940"},{"messageId":"57941","fix":"63441","desc":"57943"},{"messageId":"57938","fix":"63442","desc":"57940"},{"messageId":"57941","fix":"63443","desc":"57943"},{"messageId":"57938","fix":"63444","desc":"57940"},{"messageId":"57941","fix":"63445","desc":"57943"},{"messageId":"57938","fix":"63446","desc":"57940"},{"messageId":"57941","fix":"63447","desc":"57943"},{"messageId":"57938","fix":"63448","desc":"57940"},{"messageId":"57941","fix":"63449","desc":"57943"},{"messageId":"57938","fix":"63450","desc":"57940"},{"messageId":"57941","fix":"63451","desc":"57943"},{"messageId":"57938","fix":"63452","desc":"57940"},{"messageId":"57941","fix":"63453","desc":"57943"},{"messageId":"57938","fix":"63454","desc":"57940"},{"messageId":"57941","fix":"63455","desc":"57943"},{"messageId":"57938","fix":"63456","desc":"57940"},{"messageId":"57941","fix":"63457","desc":"57943"},{"messageId":"57938","fix":"63458","desc":"57940"},{"messageId":"57941","fix":"63459","desc":"57943"},{"messageId":"57938","fix":"63460","desc":"57940"},{"messageId":"57941","fix":"63461","desc":"57943"},{"messageId":"57938","fix":"63462","desc":"57940"},{"messageId":"57941","fix":"63463","desc":"57943"},{"messageId":"57938","fix":"63464","desc":"57940"},{"messageId":"57941","fix":"63465","desc":"57943"},{"messageId":"57938","fix":"63466","desc":"57940"},{"messageId":"57941","fix":"63467","desc":"57943"},{"messageId":"57938","fix":"63468","desc":"57940"},{"messageId":"57941","fix":"63469","desc":"57943"},{"messageId":"57938","fix":"63470","desc":"57940"},{"messageId":"57941","fix":"63471","desc":"57943"},{"messageId":"57938","fix":"63472","desc":"57940"},{"messageId":"57941","fix":"63473","desc":"57943"},{"messageId":"57938","fix":"63474","desc":"57940"},{"messageId":"57941","fix":"63475","desc":"57943"},{"messageId":"57938","fix":"63476","desc":"57940"},{"messageId":"57941","fix":"63477","desc":"57943"},{"messageId":"57938","fix":"63478","desc":"57940"},{"messageId":"57941","fix":"63479","desc":"57943"},{"messageId":"57938","fix":"63480","desc":"57940"},{"messageId":"57941","fix":"63481","desc":"57943"},{"messageId":"57938","fix":"63482","desc":"57940"},{"messageId":"57941","fix":"63483","desc":"57943"},{"messageId":"57938","fix":"63484","desc":"57940"},{"messageId":"57941","fix":"63485","desc":"57943"},{"messageId":"57938","fix":"63486","desc":"57940"},{"messageId":"57941","fix":"63487","desc":"57943"},{"messageId":"57938","fix":"63488","desc":"57940"},{"messageId":"57941","fix":"63489","desc":"57943"},{"messageId":"57938","fix":"63490","desc":"57940"},{"messageId":"57941","fix":"63491","desc":"57943"},{"messageId":"57938","fix":"63492","desc":"57940"},{"messageId":"57941","fix":"63493","desc":"57943"},{"messageId":"57938","fix":"63494","desc":"57940"},{"messageId":"57941","fix":"63495","desc":"57943"},{"messageId":"57938","fix":"63496","desc":"57940"},{"messageId":"57941","fix":"63497","desc":"57943"},{"messageId":"57938","fix":"63498","desc":"57940"},{"messageId":"57941","fix":"63499","desc":"57943"},{"messageId":"57938","fix":"63500","desc":"57940"},{"messageId":"57941","fix":"63501","desc":"57943"},{"messageId":"57938","fix":"63502","desc":"57940"},{"messageId":"57941","fix":"63503","desc":"57943"},{"messageId":"57938","fix":"63504","desc":"57940"},{"messageId":"57941","fix":"63505","desc":"57943"},{"messageId":"57938","fix":"63506","desc":"57940"},{"messageId":"57941","fix":"63507","desc":"57943"},{"messageId":"57938","fix":"63508","desc":"57940"},{"messageId":"57941","fix":"63509","desc":"57943"},{"messageId":"57938","fix":"63510","desc":"57940"},{"messageId":"57941","fix":"63511","desc":"57943"},{"messageId":"57938","fix":"63512","desc":"57940"},{"messageId":"57941","fix":"63513","desc":"57943"},{"messageId":"57938","fix":"63514","desc":"57940"},{"messageId":"57941","fix":"63515","desc":"57943"},{"messageId":"57938","fix":"63516","desc":"57940"},{"messageId":"57941","fix":"63517","desc":"57943"},{"messageId":"57938","fix":"63518","desc":"57940"},{"messageId":"57941","fix":"63519","desc":"57943"},{"messageId":"57938","fix":"63520","desc":"57940"},{"messageId":"57941","fix":"63521","desc":"57943"},{"messageId":"57938","fix":"63522","desc":"57940"},{"messageId":"57941","fix":"63523","desc":"57943"},{"messageId":"57938","fix":"63524","desc":"57940"},{"messageId":"57941","fix":"63525","desc":"57943"},{"messageId":"57938","fix":"63526","desc":"57940"},{"messageId":"57941","fix":"63527","desc":"57943"},{"messageId":"57938","fix":"63528","desc":"57940"},{"messageId":"57941","fix":"63529","desc":"57943"},{"messageId":"57938","fix":"63530","desc":"57940"},{"messageId":"57941","fix":"63531","desc":"57943"},{"messageId":"57938","fix":"63532","desc":"57940"},{"messageId":"57941","fix":"63533","desc":"57943"},{"messageId":"57938","fix":"63534","desc":"57940"},{"messageId":"57941","fix":"63535","desc":"57943"},{"messageId":"57938","fix":"63536","desc":"57940"},{"messageId":"57941","fix":"63537","desc":"57943"},{"messageId":"57938","fix":"63538","desc":"57940"},{"messageId":"57941","fix":"63539","desc":"57943"},{"messageId":"57938","fix":"63540","desc":"57940"},{"messageId":"57941","fix":"63541","desc":"57943"},{"messageId":"57938","fix":"63542","desc":"57940"},{"messageId":"57941","fix":"63543","desc":"57943"},{"messageId":"57938","fix":"63544","desc":"57940"},{"messageId":"57941","fix":"63545","desc":"57943"},{"messageId":"57938","fix":"63546","desc":"57940"},{"messageId":"57941","fix":"63547","desc":"57943"},{"messageId":"57938","fix":"63548","desc":"57940"},{"messageId":"57941","fix":"63549","desc":"57943"},{"messageId":"57938","fix":"63550","desc":"57940"},{"messageId":"57941","fix":"63551","desc":"57943"},{"messageId":"57938","fix":"63552","desc":"57940"},{"messageId":"57941","fix":"63553","desc":"57943"},{"messageId":"57938","fix":"63554","desc":"57940"},{"messageId":"57941","fix":"63555","desc":"57943"},{"messageId":"57938","fix":"63556","desc":"57940"},{"messageId":"57941","fix":"63557","desc":"57943"},{"messageId":"57938","fix":"63558","desc":"57940"},{"messageId":"57941","fix":"63559","desc":"57943"},{"messageId":"57938","fix":"63560","desc":"57940"},{"messageId":"57941","fix":"63561","desc":"57943"},{"messageId":"57938","fix":"63562","desc":"57940"},{"messageId":"57941","fix":"63563","desc":"57943"},{"messageId":"57938","fix":"63564","desc":"57940"},{"messageId":"57941","fix":"63565","desc":"57943"},{"messageId":"57938","fix":"63566","desc":"57940"},{"messageId":"57941","fix":"63567","desc":"57943"},{"messageId":"57938","fix":"63568","desc":"57940"},{"messageId":"57941","fix":"63569","desc":"57943"},{"messageId":"57938","fix":"63570","desc":"57940"},{"messageId":"57941","fix":"63571","desc":"57943"},{"messageId":"57938","fix":"63572","desc":"57940"},{"messageId":"57941","fix":"63573","desc":"57943"},{"messageId":"57938","fix":"63574","desc":"57940"},{"messageId":"57941","fix":"63575","desc":"57943"},{"messageId":"57938","fix":"63576","desc":"57940"},{"messageId":"57941","fix":"63577","desc":"57943"},{"messageId":"57938","fix":"63578","desc":"57940"},{"messageId":"57941","fix":"63579","desc":"57943"},{"messageId":"57938","fix":"63580","desc":"57940"},{"messageId":"57941","fix":"63581","desc":"57943"},{"messageId":"57938","fix":"63582","desc":"57940"},{"messageId":"57941","fix":"63583","desc":"57943"},{"messageId":"57938","fix":"63584","desc":"57940"},{"messageId":"57941","fix":"63585","desc":"57943"},{"messageId":"57938","fix":"63586","desc":"57940"},{"messageId":"57941","fix":"63587","desc":"57943"},{"messageId":"57938","fix":"63588","desc":"57940"},{"messageId":"57941","fix":"63589","desc":"57943"},{"messageId":"57938","fix":"63590","desc":"57940"},{"messageId":"57941","fix":"63591","desc":"57943"},{"messageId":"57938","fix":"63592","desc":"57940"},{"messageId":"57941","fix":"63593","desc":"57943"},{"messageId":"57938","fix":"63594","desc":"57940"},{"messageId":"57941","fix":"63595","desc":"57943"},{"messageId":"57938","fix":"63596","desc":"57940"},{"messageId":"57941","fix":"63597","desc":"57943"},{"messageId":"57938","fix":"63598","desc":"57940"},{"messageId":"57941","fix":"63599","desc":"57943"},{"messageId":"57938","fix":"63600","desc":"57940"},{"messageId":"57941","fix":"63601","desc":"57943"},{"messageId":"57938","fix":"63602","desc":"57940"},{"messageId":"57941","fix":"63603","desc":"57943"},{"messageId":"57938","fix":"63604","desc":"57940"},{"messageId":"57941","fix":"63605","desc":"57943"},{"messageId":"57938","fix":"63606","desc":"57940"},{"messageId":"57941","fix":"63607","desc":"57943"},{"messageId":"57938","fix":"63608","desc":"57940"},{"messageId":"57941","fix":"63609","desc":"57943"},{"messageId":"57938","fix":"63610","desc":"57940"},{"messageId":"57941","fix":"63611","desc":"57943"},{"messageId":"57938","fix":"63612","desc":"57940"},{"messageId":"57941","fix":"63613","desc":"57943"},{"messageId":"57938","fix":"63614","desc":"57940"},{"messageId":"57941","fix":"63615","desc":"57943"},{"messageId":"57938","fix":"63616","desc":"57940"},{"messageId":"57941","fix":"63617","desc":"57943"},{"messageId":"57938","fix":"63618","desc":"57940"},{"messageId":"57941","fix":"63619","desc":"57943"},{"messageId":"57938","fix":"63620","desc":"57940"},{"messageId":"57941","fix":"63621","desc":"57943"},{"messageId":"57938","fix":"63622","desc":"57940"},{"messageId":"57941","fix":"63623","desc":"57943"},{"messageId":"57938","fix":"63624","desc":"57940"},{"messageId":"57941","fix":"63625","desc":"57943"},{"messageId":"57938","fix":"63626","desc":"57940"},{"messageId":"57941","fix":"63627","desc":"57943"},{"messageId":"57938","fix":"63628","desc":"57940"},{"messageId":"57941","fix":"63629","desc":"57943"},{"messageId":"57938","fix":"63630","desc":"57940"},{"messageId":"57941","fix":"63631","desc":"57943"},{"messageId":"57938","fix":"63632","desc":"57940"},{"messageId":"57941","fix":"63633","desc":"57943"},{"messageId":"57938","fix":"63634","desc":"57940"},{"messageId":"57941","fix":"63635","desc":"57943"},{"messageId":"57938","fix":"63636","desc":"57940"},{"messageId":"57941","fix":"63637","desc":"57943"},{"messageId":"57938","fix":"63638","desc":"57940"},{"messageId":"57941","fix":"63639","desc":"57943"},{"messageId":"57938","fix":"63640","desc":"57940"},{"messageId":"57941","fix":"63641","desc":"57943"},{"messageId":"57938","fix":"63642","desc":"57940"},{"messageId":"57941","fix":"63643","desc":"57943"},{"messageId":"57938","fix":"63644","desc":"57940"},{"messageId":"57941","fix":"63645","desc":"57943"},{"messageId":"57938","fix":"63646","desc":"57940"},{"messageId":"57941","fix":"63647","desc":"57943"},{"messageId":"57938","fix":"63648","desc":"57940"},{"messageId":"57941","fix":"63649","desc":"57943"},{"messageId":"57938","fix":"63650","desc":"57940"},{"messageId":"57941","fix":"63651","desc":"57943"},{"messageId":"57938","fix":"63652","desc":"57940"},{"messageId":"57941","fix":"63653","desc":"57943"},{"messageId":"57938","fix":"63654","desc":"57940"},{"messageId":"57941","fix":"63655","desc":"57943"},{"messageId":"57938","fix":"63656","desc":"57940"},{"messageId":"57941","fix":"63657","desc":"57943"},{"messageId":"57938","fix":"63658","desc":"57940"},{"messageId":"57941","fix":"63659","desc":"57943"},{"messageId":"57938","fix":"63660","desc":"57940"},{"messageId":"57941","fix":"63661","desc":"57943"},{"messageId":"57938","fix":"63662","desc":"57940"},{"messageId":"57941","fix":"63663","desc":"57943"},{"messageId":"57938","fix":"63664","desc":"57940"},{"messageId":"57941","fix":"63665","desc":"57943"},{"messageId":"57938","fix":"63666","desc":"57940"},{"messageId":"57941","fix":"63667","desc":"57943"},{"messageId":"57938","fix":"63668","desc":"57940"},{"messageId":"57941","fix":"63669","desc":"57943"},{"messageId":"57938","fix":"63670","desc":"57940"},{"messageId":"57941","fix":"63671","desc":"57943"},{"messageId":"57938","fix":"63672","desc":"57940"},{"messageId":"57941","fix":"63673","desc":"57943"},{"messageId":"57938","fix":"63674","desc":"57940"},{"messageId":"57941","fix":"63675","desc":"57943"},{"messageId":"57938","fix":"63676","desc":"57940"},{"messageId":"57941","fix":"63677","desc":"57943"},{"messageId":"57938","fix":"63678","desc":"57940"},{"messageId":"57941","fix":"63679","desc":"57943"},{"messageId":"57938","fix":"63680","desc":"57940"},{"messageId":"57941","fix":"63681","desc":"57943"},{"messageId":"57938","fix":"63682","desc":"57940"},{"messageId":"57941","fix":"63683","desc":"57943"},{"messageId":"57938","fix":"63684","desc":"57940"},{"messageId":"57941","fix":"63685","desc":"57943"},{"messageId":"57938","fix":"63686","desc":"57940"},{"messageId":"57941","fix":"63687","desc":"57943"},{"messageId":"57938","fix":"63688","desc":"57940"},{"messageId":"57941","fix":"63689","desc":"57943"},{"messageId":"57938","fix":"63690","desc":"57940"},{"messageId":"57941","fix":"63691","desc":"57943"},{"messageId":"57938","fix":"63692","desc":"57940"},{"messageId":"57941","fix":"63693","desc":"57943"},{"messageId":"57938","fix":"63694","desc":"57940"},{"messageId":"57941","fix":"63695","desc":"57943"},{"messageId":"57938","fix":"63696","desc":"57940"},{"messageId":"57941","fix":"63697","desc":"57943"},{"messageId":"57938","fix":"63698","desc":"57940"},{"messageId":"57941","fix":"63699","desc":"57943"},{"messageId":"57938","fix":"63700","desc":"57940"},{"messageId":"57941","fix":"63701","desc":"57943"},{"messageId":"57938","fix":"63702","desc":"57940"},{"messageId":"57941","fix":"63703","desc":"57943"},{"messageId":"57938","fix":"63704","desc":"57940"},{"messageId":"57941","fix":"63705","desc":"57943"},{"messageId":"57938","fix":"63706","desc":"57940"},{"messageId":"57941","fix":"63707","desc":"57943"},{"messageId":"57938","fix":"63708","desc":"57940"},{"messageId":"57941","fix":"63709","desc":"57943"},{"messageId":"57938","fix":"63710","desc":"57940"},{"messageId":"57941","fix":"63711","desc":"57943"},{"messageId":"57938","fix":"63712","desc":"57940"},{"messageId":"57941","fix":"63713","desc":"57943"},{"messageId":"57938","fix":"63714","desc":"57940"},{"messageId":"57941","fix":"63715","desc":"57943"},{"messageId":"57938","fix":"63716","desc":"57940"},{"messageId":"57941","fix":"63717","desc":"57943"},{"messageId":"57938","fix":"63718","desc":"57940"},{"messageId":"57941","fix":"63719","desc":"57943"},{"messageId":"57938","fix":"63720","desc":"57940"},{"messageId":"57941","fix":"63721","desc":"57943"},{"messageId":"57938","fix":"63722","desc":"57940"},{"messageId":"57941","fix":"63723","desc":"57943"},{"messageId":"57938","fix":"63724","desc":"57940"},{"messageId":"57941","fix":"63725","desc":"57943"},{"messageId":"57938","fix":"63726","desc":"57940"},{"messageId":"57941","fix":"63727","desc":"57943"},{"messageId":"57938","fix":"63728","desc":"57940"},{"messageId":"57941","fix":"63729","desc":"57943"},{"messageId":"57938","fix":"63730","desc":"57940"},{"messageId":"57941","fix":"63731","desc":"57943"},{"messageId":"57938","fix":"63732","desc":"57940"},{"messageId":"57941","fix":"63733","desc":"57943"},{"messageId":"57938","fix":"63734","desc":"57940"},{"messageId":"57941","fix":"63735","desc":"57943"},{"messageId":"57938","fix":"63736","desc":"57940"},{"messageId":"57941","fix":"63737","desc":"57943"},{"messageId":"57938","fix":"63738","desc":"57940"},{"messageId":"57941","fix":"63739","desc":"57943"},{"messageId":"57938","fix":"63740","desc":"57940"},{"messageId":"57941","fix":"63741","desc":"57943"},{"messageId":"57938","fix":"63742","desc":"57940"},{"messageId":"57941","fix":"63743","desc":"57943"},{"messageId":"57938","fix":"63744","desc":"57940"},{"messageId":"57941","fix":"63745","desc":"57943"},{"messageId":"57938","fix":"63746","desc":"57940"},{"messageId":"57941","fix":"63747","desc":"57943"},{"messageId":"57938","fix":"63748","desc":"57940"},{"messageId":"57941","fix":"63749","desc":"57943"},{"messageId":"57938","fix":"63750","desc":"57940"},{"messageId":"57941","fix":"63751","desc":"57943"},{"messageId":"57938","fix":"63752","desc":"57940"},{"messageId":"57941","fix":"63753","desc":"57943"},{"messageId":"57938","fix":"63754","desc":"57940"},{"messageId":"57941","fix":"63755","desc":"57943"},{"messageId":"57938","fix":"63756","desc":"57940"},{"messageId":"57941","fix":"63757","desc":"57943"},{"messageId":"57938","fix":"63758","desc":"57940"},{"messageId":"57941","fix":"63759","desc":"57943"},{"messageId":"57938","fix":"63760","desc":"57940"},{"messageId":"57941","fix":"63761","desc":"57943"},{"messageId":"57938","fix":"63762","desc":"57940"},{"messageId":"57941","fix":"63763","desc":"57943"},{"messageId":"57938","fix":"63764","desc":"57940"},{"messageId":"57941","fix":"63765","desc":"57943"},{"messageId":"57938","fix":"63766","desc":"57940"},{"messageId":"57941","fix":"63767","desc":"57943"},{"messageId":"57938","fix":"63768","desc":"57940"},{"messageId":"57941","fix":"63769","desc":"57943"},{"messageId":"57938","fix":"63770","desc":"57940"},{"messageId":"57941","fix":"63771","desc":"57943"},{"messageId":"57938","fix":"63772","desc":"57940"},{"messageId":"57941","fix":"63773","desc":"57943"},{"messageId":"57938","fix":"63774","desc":"57940"},{"messageId":"57941","fix":"63775","desc":"57943"},{"messageId":"57938","fix":"63776","desc":"57940"},{"messageId":"57941","fix":"63777","desc":"57943"},{"messageId":"57938","fix":"63778","desc":"57940"},{"messageId":"57941","fix":"63779","desc":"57943"},{"messageId":"57938","fix":"63780","desc":"57940"},{"messageId":"57941","fix":"63781","desc":"57943"},{"messageId":"57938","fix":"63782","desc":"57940"},{"messageId":"57941","fix":"63783","desc":"57943"},{"messageId":"57938","fix":"63784","desc":"57940"},{"messageId":"57941","fix":"63785","desc":"57943"},{"messageId":"57938","fix":"63786","desc":"57940"},{"messageId":"57941","fix":"63787","desc":"57943"},{"messageId":"57938","fix":"63788","desc":"57940"},{"messageId":"57941","fix":"63789","desc":"57943"},{"messageId":"57938","fix":"63790","desc":"57940"},{"messageId":"57941","fix":"63791","desc":"57943"},{"messageId":"57938","fix":"63792","desc":"57940"},{"messageId":"57941","fix":"63793","desc":"57943"},{"messageId":"57938","fix":"63794","desc":"57940"},{"messageId":"57941","fix":"63795","desc":"57943"},{"messageId":"57938","fix":"63796","desc":"57940"},{"messageId":"57941","fix":"63797","desc":"57943"},{"messageId":"57938","fix":"63798","desc":"57940"},{"messageId":"57941","fix":"63799","desc":"57943"},{"messageId":"57938","fix":"63800","desc":"57940"},{"messageId":"57941","fix":"63801","desc":"57943"},{"messageId":"57938","fix":"63802","desc":"57940"},{"messageId":"57941","fix":"63803","desc":"57943"},{"messageId":"57938","fix":"63804","desc":"57940"},{"messageId":"57941","fix":"63805","desc":"57943"},{"messageId":"57938","fix":"63806","desc":"57940"},{"messageId":"57941","fix":"63807","desc":"57943"},{"messageId":"57938","fix":"63808","desc":"57940"},{"messageId":"57941","fix":"63809","desc":"57943"},{"messageId":"57938","fix":"63810","desc":"57940"},{"messageId":"57941","fix":"63811","desc":"57943"},{"messageId":"57938","fix":"63812","desc":"57940"},{"messageId":"57941","fix":"63813","desc":"57943"},{"messageId":"57938","fix":"63814","desc":"57940"},{"messageId":"57941","fix":"63815","desc":"57943"},{"messageId":"57938","fix":"63816","desc":"57940"},{"messageId":"57941","fix":"63817","desc":"57943"},{"messageId":"57938","fix":"63818","desc":"57940"},{"messageId":"57941","fix":"63819","desc":"57943"},{"messageId":"57938","fix":"63820","desc":"57940"},{"messageId":"57941","fix":"63821","desc":"57943"},{"messageId":"57938","fix":"63822","desc":"57940"},{"messageId":"57941","fix":"63823","desc":"57943"},{"messageId":"57938","fix":"63824","desc":"57940"},{"messageId":"57941","fix":"63825","desc":"57943"},{"messageId":"57938","fix":"63826","desc":"57940"},{"messageId":"57941","fix":"63827","desc":"57943"},{"messageId":"57938","fix":"63828","desc":"57940"},{"messageId":"57941","fix":"63829","desc":"57943"},{"messageId":"57938","fix":"63830","desc":"57940"},{"messageId":"57941","fix":"63831","desc":"57943"},{"messageId":"57938","fix":"63832","desc":"57940"},{"messageId":"57941","fix":"63833","desc":"57943"},{"messageId":"57938","fix":"63834","desc":"57940"},{"messageId":"57941","fix":"63835","desc":"57943"},{"messageId":"57938","fix":"63836","desc":"57940"},{"messageId":"57941","fix":"63837","desc":"57943"},{"messageId":"57938","fix":"63838","desc":"57940"},{"messageId":"57941","fix":"63839","desc":"57943"},{"messageId":"57938","fix":"63840","desc":"57940"},{"messageId":"57941","fix":"63841","desc":"57943"},{"messageId":"57938","fix":"63842","desc":"57940"},{"messageId":"57941","fix":"63843","desc":"57943"},{"messageId":"57938","fix":"63844","desc":"57940"},{"messageId":"57941","fix":"63845","desc":"57943"},{"messageId":"57938","fix":"63846","desc":"57940"},{"messageId":"57941","fix":"63847","desc":"57943"},{"messageId":"57938","fix":"63848","desc":"57940"},{"messageId":"57941","fix":"63849","desc":"57943"},{"messageId":"57938","fix":"63850","desc":"57940"},{"messageId":"57941","fix":"63851","desc":"57943"},{"messageId":"57938","fix":"63852","desc":"57940"},{"messageId":"57941","fix":"63853","desc":"57943"},{"messageId":"57938","fix":"63854","desc":"57940"},{"messageId":"57941","fix":"63855","desc":"57943"},{"messageId":"57938","fix":"63856","desc":"57940"},{"messageId":"57941","fix":"63857","desc":"57943"},{"messageId":"57938","fix":"63858","desc":"57940"},{"messageId":"57941","fix":"63859","desc":"57943"},{"messageId":"57938","fix":"63860","desc":"57940"},{"messageId":"57941","fix":"63861","desc":"57943"},{"messageId":"57938","fix":"63862","desc":"57940"},{"messageId":"57941","fix":"63863","desc":"57943"},{"messageId":"57938","fix":"63864","desc":"57940"},{"messageId":"57941","fix":"63865","desc":"57943"},{"messageId":"57938","fix":"63866","desc":"57940"},{"messageId":"57941","fix":"63867","desc":"57943"},{"messageId":"57938","fix":"63868","desc":"57940"},{"messageId":"57941","fix":"63869","desc":"57943"},{"messageId":"57938","fix":"63870","desc":"57940"},{"messageId":"57941","fix":"63871","desc":"57943"},{"messageId":"57938","fix":"63872","desc":"57940"},{"messageId":"57941","fix":"63873","desc":"57943"},{"messageId":"57938","fix":"63874","desc":"57940"},{"messageId":"57941","fix":"63875","desc":"57943"},{"messageId":"57938","fix":"63876","desc":"57940"},{"messageId":"57941","fix":"63877","desc":"57943"},{"messageId":"57938","fix":"63878","desc":"57940"},{"messageId":"57941","fix":"63879","desc":"57943"},{"messageId":"57938","fix":"63880","desc":"57940"},{"messageId":"57941","fix":"63881","desc":"57943"},{"messageId":"57938","fix":"63882","desc":"57940"},{"messageId":"57941","fix":"63883","desc":"57943"},{"messageId":"57938","fix":"63884","desc":"57940"},{"messageId":"57941","fix":"63885","desc":"57943"},{"messageId":"57938","fix":"63886","desc":"57940"},{"messageId":"57941","fix":"63887","desc":"57943"},{"messageId":"57938","fix":"63888","desc":"57940"},{"messageId":"57941","fix":"63889","desc":"57943"},{"messageId":"57938","fix":"63890","desc":"57940"},{"messageId":"57941","fix":"63891","desc":"57943"},{"messageId":"57938","fix":"63892","desc":"57940"},{"messageId":"57941","fix":"63893","desc":"57943"},{"messageId":"57938","fix":"63894","desc":"57940"},{"messageId":"57941","fix":"63895","desc":"57943"},{"messageId":"57938","fix":"63896","desc":"57940"},{"messageId":"57941","fix":"63897","desc":"57943"},{"messageId":"57938","fix":"63898","desc":"57940"},{"messageId":"57941","fix":"63899","desc":"57943"},{"messageId":"57938","fix":"63900","desc":"57940"},{"messageId":"57941","fix":"63901","desc":"57943"},{"messageId":"57938","fix":"63902","desc":"57940"},{"messageId":"57941","fix":"63903","desc":"57943"},{"messageId":"57938","fix":"63904","desc":"57940"},{"messageId":"57941","fix":"63905","desc":"57943"},{"messageId":"57938","fix":"63906","desc":"57940"},{"messageId":"57941","fix":"63907","desc":"57943"},{"messageId":"57938","fix":"63908","desc":"57940"},{"messageId":"57941","fix":"63909","desc":"57943"},{"messageId":"57938","fix":"63910","desc":"57940"},{"messageId":"57941","fix":"63911","desc":"57943"},{"messageId":"57938","fix":"63912","desc":"57940"},{"messageId":"57941","fix":"63913","desc":"57943"},{"messageId":"57938","fix":"63914","desc":"57940"},{"messageId":"57941","fix":"63915","desc":"57943"},{"messageId":"57938","fix":"63916","desc":"57940"},{"messageId":"57941","fix":"63917","desc":"57943"},{"messageId":"57938","fix":"63918","desc":"57940"},{"messageId":"57941","fix":"63919","desc":"57943"},{"messageId":"57938","fix":"63920","desc":"57940"},{"messageId":"57941","fix":"63921","desc":"57943"},{"messageId":"57938","fix":"63922","desc":"57940"},{"messageId":"57941","fix":"63923","desc":"57943"},{"messageId":"57938","fix":"63924","desc":"57940"},{"messageId":"57941","fix":"63925","desc":"57943"},{"messageId":"57938","fix":"63926","desc":"57940"},{"messageId":"57941","fix":"63927","desc":"57943"},{"messageId":"57938","fix":"63928","desc":"57940"},{"messageId":"57941","fix":"63929","desc":"57943"},{"messageId":"57938","fix":"63930","desc":"57940"},{"messageId":"57941","fix":"63931","desc":"57943"},{"messageId":"57938","fix":"63932","desc":"57940"},{"messageId":"57941","fix":"63933","desc":"57943"},{"messageId":"57938","fix":"63934","desc":"57940"},{"messageId":"57941","fix":"63935","desc":"57943"},{"messageId":"57938","fix":"63936","desc":"57940"},{"messageId":"57941","fix":"63937","desc":"57943"},{"messageId":"57938","fix":"63938","desc":"57940"},{"messageId":"57941","fix":"63939","desc":"57943"},{"messageId":"57938","fix":"63940","desc":"57940"},{"messageId":"57941","fix":"63941","desc":"57943"},{"messageId":"57938","fix":"63942","desc":"57940"},{"messageId":"57941","fix":"63943","desc":"57943"},{"messageId":"57938","fix":"63944","desc":"57940"},{"messageId":"57941","fix":"63945","desc":"57943"},{"messageId":"57938","fix":"63946","desc":"57940"},{"messageId":"57941","fix":"63947","desc":"57943"},{"messageId":"57938","fix":"63948","desc":"57940"},{"messageId":"57941","fix":"63949","desc":"57943"},{"messageId":"57938","fix":"63950","desc":"57940"},{"messageId":"57941","fix":"63951","desc":"57943"},{"messageId":"57938","fix":"63952","desc":"57940"},{"messageId":"57941","fix":"63953","desc":"57943"},{"messageId":"57938","fix":"63954","desc":"57940"},{"messageId":"57941","fix":"63955","desc":"57943"},{"messageId":"57938","fix":"63956","desc":"57940"},{"messageId":"57941","fix":"63957","desc":"57943"},{"messageId":"57938","fix":"63958","desc":"57940"},{"messageId":"57941","fix":"63959","desc":"57943"},{"messageId":"57938","fix":"63960","desc":"57940"},{"messageId":"57941","fix":"63961","desc":"57943"},{"messageId":"57938","fix":"63962","desc":"57940"},{"messageId":"57941","fix":"63963","desc":"57943"},{"messageId":"57938","fix":"63964","desc":"57940"},{"messageId":"57941","fix":"63965","desc":"57943"},{"messageId":"57938","fix":"63966","desc":"57940"},{"messageId":"57941","fix":"63967","desc":"57943"},{"messageId":"57938","fix":"63968","desc":"57940"},{"messageId":"57941","fix":"63969","desc":"57943"},{"messageId":"57938","fix":"63970","desc":"57940"},{"messageId":"57941","fix":"63971","desc":"57943"},{"messageId":"57938","fix":"63972","desc":"57940"},{"messageId":"57941","fix":"63973","desc":"57943"},{"messageId":"57938","fix":"63974","desc":"57940"},{"messageId":"57941","fix":"63975","desc":"57943"},{"messageId":"57938","fix":"63976","desc":"57940"},{"messageId":"57941","fix":"63977","desc":"57943"},{"messageId":"57938","fix":"63978","desc":"57940"},{"messageId":"57941","fix":"63979","desc":"57943"},{"messageId":"57938","fix":"63980","desc":"57940"},{"messageId":"57941","fix":"63981","desc":"57943"},{"messageId":"57938","fix":"63982","desc":"57940"},{"messageId":"57941","fix":"63983","desc":"57943"},{"messageId":"57938","fix":"63984","desc":"57940"},{"messageId":"57941","fix":"63985","desc":"57943"},{"messageId":"57938","fix":"63986","desc":"57940"},{"messageId":"57941","fix":"63987","desc":"57943"},{"messageId":"57938","fix":"63988","desc":"57940"},{"messageId":"57941","fix":"63989","desc":"57943"},{"messageId":"57938","fix":"63990","desc":"57940"},{"messageId":"57941","fix":"63991","desc":"57943"},{"messageId":"57938","fix":"63992","desc":"57940"},{"messageId":"57941","fix":"63993","desc":"57943"},{"messageId":"57938","fix":"63994","desc":"57940"},{"messageId":"57941","fix":"63995","desc":"57943"},{"messageId":"57938","fix":"63996","desc":"57940"},{"messageId":"57941","fix":"63997","desc":"57943"},{"messageId":"57938","fix":"63998","desc":"57940"},{"messageId":"57941","fix":"63999","desc":"57943"},{"messageId":"57938","fix":"64000","desc":"57940"},{"messageId":"57941","fix":"64001","desc":"57943"},{"messageId":"57938","fix":"64002","desc":"57940"},{"messageId":"57941","fix":"64003","desc":"57943"},{"messageId":"57938","fix":"64004","desc":"57940"},{"messageId":"57941","fix":"64005","desc":"57943"},{"messageId":"57938","fix":"64006","desc":"57940"},{"messageId":"57941","fix":"64007","desc":"57943"},{"messageId":"57938","fix":"64008","desc":"57940"},{"messageId":"57941","fix":"64009","desc":"57943"},{"messageId":"57938","fix":"64010","desc":"57940"},{"messageId":"57941","fix":"64011","desc":"57943"},{"messageId":"57938","fix":"64012","desc":"57940"},{"messageId":"57941","fix":"64013","desc":"57943"},{"messageId":"57938","fix":"64014","desc":"57940"},{"messageId":"57941","fix":"64015","desc":"57943"},{"messageId":"57938","fix":"64016","desc":"57940"},{"messageId":"57941","fix":"64017","desc":"57943"},{"messageId":"57938","fix":"64018","desc":"57940"},{"messageId":"57941","fix":"64019","desc":"57943"},{"messageId":"57938","fix":"64020","desc":"57940"},{"messageId":"57941","fix":"64021","desc":"57943"},{"messageId":"57938","fix":"64022","desc":"57940"},{"messageId":"57941","fix":"64023","desc":"57943"},{"messageId":"57938","fix":"64024","desc":"57940"},{"messageId":"57941","fix":"64025","desc":"57943"},{"messageId":"57938","fix":"64026","desc":"57940"},{"messageId":"57941","fix":"64027","desc":"57943"},{"messageId":"57938","fix":"64028","desc":"57940"},{"messageId":"57941","fix":"64029","desc":"57943"},{"messageId":"57938","fix":"64030","desc":"57940"},{"messageId":"57941","fix":"64031","desc":"57943"},{"messageId":"57938","fix":"64032","desc":"57940"},{"messageId":"57941","fix":"64033","desc":"57943"},{"messageId":"57938","fix":"64034","desc":"57940"},{"messageId":"57941","fix":"64035","desc":"57943"},{"messageId":"57938","fix":"64036","desc":"57940"},{"messageId":"57941","fix":"64037","desc":"57943"},{"messageId":"57938","fix":"64038","desc":"57940"},{"messageId":"57941","fix":"64039","desc":"57943"},{"messageId":"57938","fix":"64040","desc":"57940"},{"messageId":"57941","fix":"64041","desc":"57943"},{"messageId":"57938","fix":"64042","desc":"57940"},{"messageId":"57941","fix":"64043","desc":"57943"},{"messageId":"57938","fix":"64044","desc":"57940"},{"messageId":"57941","fix":"64045","desc":"57943"},{"messageId":"57938","fix":"64046","desc":"57940"},{"messageId":"57941","fix":"64047","desc":"57943"},{"messageId":"57938","fix":"64048","desc":"57940"},{"messageId":"57941","fix":"64049","desc":"57943"},{"messageId":"57938","fix":"64050","desc":"57940"},{"messageId":"57941","fix":"64051","desc":"57943"},{"messageId":"57938","fix":"64052","desc":"57940"},{"messageId":"57941","fix":"64053","desc":"57943"},{"messageId":"57938","fix":"64054","desc":"57940"},{"messageId":"57941","fix":"64055","desc":"57943"},{"messageId":"57938","fix":"64056","desc":"57940"},{"messageId":"57941","fix":"64057","desc":"57943"},{"messageId":"57938","fix":"64058","desc":"57940"},{"messageId":"57941","fix":"64059","desc":"57943"},{"messageId":"57938","fix":"64060","desc":"57940"},{"messageId":"57941","fix":"64061","desc":"57943"},{"messageId":"57938","fix":"64062","desc":"57940"},{"messageId":"57941","fix":"64063","desc":"57943"},{"messageId":"57938","fix":"64064","desc":"57940"},{"messageId":"57941","fix":"64065","desc":"57943"},{"messageId":"57938","fix":"64066","desc":"57940"},{"messageId":"57941","fix":"64067","desc":"57943"},{"messageId":"57938","fix":"64068","desc":"57940"},{"messageId":"57941","fix":"64069","desc":"57943"},{"messageId":"57938","fix":"64070","desc":"57940"},{"messageId":"57941","fix":"64071","desc":"57943"},{"messageId":"57938","fix":"64072","desc":"57940"},{"messageId":"57941","fix":"64073","desc":"57943"},{"messageId":"57938","fix":"64074","desc":"57940"},{"messageId":"57941","fix":"64075","desc":"57943"},{"messageId":"57938","fix":"64076","desc":"57940"},{"messageId":"57941","fix":"64077","desc":"57943"},{"messageId":"57938","fix":"64078","desc":"57940"},{"messageId":"57941","fix":"64079","desc":"57943"},{"messageId":"57938","fix":"64080","desc":"57940"},{"messageId":"57941","fix":"64081","desc":"57943"},{"messageId":"57938","fix":"64082","desc":"57940"},{"messageId":"57941","fix":"64083","desc":"57943"},{"messageId":"57938","fix":"64084","desc":"57940"},{"messageId":"57941","fix":"64085","desc":"57943"},{"messageId":"57938","fix":"64086","desc":"57940"},{"messageId":"57941","fix":"64087","desc":"57943"},{"messageId":"57938","fix":"64088","desc":"57940"},{"messageId":"57941","fix":"64089","desc":"57943"},{"messageId":"57938","fix":"64090","desc":"57940"},{"messageId":"57941","fix":"64091","desc":"57943"},{"messageId":"57938","fix":"64092","desc":"57940"},{"messageId":"57941","fix":"64093","desc":"57943"},{"messageId":"57938","fix":"64094","desc":"57940"},{"messageId":"57941","fix":"64095","desc":"57943"},{"messageId":"57938","fix":"64096","desc":"57940"},{"messageId":"57941","fix":"64097","desc":"57943"},{"messageId":"57938","fix":"64098","desc":"57940"},{"messageId":"57941","fix":"64099","desc":"57943"},{"messageId":"57938","fix":"64100","desc":"57940"},{"messageId":"57941","fix":"64101","desc":"57943"},{"messageId":"57938","fix":"64102","desc":"57940"},{"messageId":"57941","fix":"64103","desc":"57943"},{"messageId":"57938","fix":"64104","desc":"57940"},{"messageId":"57941","fix":"64105","desc":"57943"},{"messageId":"57938","fix":"64106","desc":"57940"},{"messageId":"57941","fix":"64107","desc":"57943"},{"messageId":"57938","fix":"64108","desc":"57940"},{"messageId":"57941","fix":"64109","desc":"57943"},{"messageId":"57938","fix":"64110","desc":"57940"},{"messageId":"57941","fix":"64111","desc":"57943"},{"messageId":"57938","fix":"64112","desc":"57940"},{"messageId":"57941","fix":"64113","desc":"57943"},{"messageId":"57938","fix":"64114","desc":"57940"},{"messageId":"57941","fix":"64115","desc":"57943"},{"messageId":"57938","fix":"64116","desc":"57940"},{"messageId":"57941","fix":"64117","desc":"57943"},{"messageId":"57938","fix":"64118","desc":"57940"},{"messageId":"57941","fix":"64119","desc":"57943"},{"messageId":"57938","fix":"64120","desc":"57940"},{"messageId":"57941","fix":"64121","desc":"57943"},{"messageId":"57938","fix":"64122","desc":"57940"},{"messageId":"57941","fix":"64123","desc":"57943"},{"messageId":"57938","fix":"64124","desc":"57940"},{"messageId":"57941","fix":"64125","desc":"57943"},{"messageId":"57938","fix":"64126","desc":"57940"},{"messageId":"57941","fix":"64127","desc":"57943"},{"messageId":"57938","fix":"64128","desc":"57940"},{"messageId":"57941","fix":"64129","desc":"57943"},{"messageId":"57938","fix":"64130","desc":"57940"},{"messageId":"57941","fix":"64131","desc":"57943"},{"messageId":"57938","fix":"64132","desc":"57940"},{"messageId":"57941","fix":"64133","desc":"57943"},{"messageId":"57938","fix":"64134","desc":"57940"},{"messageId":"57941","fix":"64135","desc":"57943"},{"messageId":"57938","fix":"64136","desc":"57940"},{"messageId":"57941","fix":"64137","desc":"57943"},{"messageId":"57938","fix":"64138","desc":"57940"},{"messageId":"57941","fix":"64139","desc":"57943"},{"messageId":"57938","fix":"64140","desc":"57940"},{"messageId":"57941","fix":"64141","desc":"57943"},{"messageId":"57938","fix":"64142","desc":"57940"},{"messageId":"57941","fix":"64143","desc":"57943"},{"messageId":"57938","fix":"64144","desc":"57940"},{"messageId":"57941","fix":"64145","desc":"57943"},{"messageId":"57938","fix":"64146","desc":"57940"},{"messageId":"57941","fix":"64147","desc":"57943"},{"messageId":"57938","fix":"64148","desc":"57940"},{"messageId":"57941","fix":"64149","desc":"57943"},{"messageId":"57938","fix":"64150","desc":"57940"},{"messageId":"57941","fix":"64151","desc":"57943"},{"messageId":"57938","fix":"64152","desc":"57940"},{"messageId":"57941","fix":"64153","desc":"57943"},{"messageId":"57938","fix":"64154","desc":"57940"},{"messageId":"57941","fix":"64155","desc":"57943"},{"messageId":"57938","fix":"64156","desc":"57940"},{"messageId":"57941","fix":"64157","desc":"57943"},{"messageId":"57938","fix":"64158","desc":"57940"},{"messageId":"57941","fix":"64159","desc":"57943"},{"messageId":"57938","fix":"64160","desc":"57940"},{"messageId":"57941","fix":"64161","desc":"57943"},{"messageId":"57938","fix":"64162","desc":"57940"},{"messageId":"57941","fix":"64163","desc":"57943"},{"messageId":"57938","fix":"64164","desc":"57940"},{"messageId":"57941","fix":"64165","desc":"57943"},{"messageId":"57938","fix":"64166","desc":"57940"},{"messageId":"57941","fix":"64167","desc":"57943"},{"messageId":"57938","fix":"64168","desc":"57940"},{"messageId":"57941","fix":"64169","desc":"57943"},{"messageId":"57938","fix":"64170","desc":"57940"},{"messageId":"57941","fix":"64171","desc":"57943"},{"messageId":"57938","fix":"64172","desc":"57940"},{"messageId":"57941","fix":"64173","desc":"57943"},{"messageId":"57938","fix":"64174","desc":"57940"},{"messageId":"57941","fix":"64175","desc":"57943"},{"kind":"58246","justification":"58247"},{"messageId":"57938","fix":"64176","desc":"57940"},{"messageId":"57941","fix":"64177","desc":"57943"},{"kind":"58246","justification":"58247"},{"messageId":"57938","fix":"64178","desc":"57940"},{"messageId":"57941","fix":"64179","desc":"57943"},{"messageId":"57938","fix":"64180","desc":"57940"},{"messageId":"57941","fix":"64181","desc":"57943"},{"messageId":"57938","fix":"64182","desc":"57940"},{"messageId":"57941","fix":"64183","desc":"57943"},{"messageId":"57938","fix":"64184","desc":"57940"},{"messageId":"57941","fix":"64185","desc":"57943"},{"messageId":"57938","fix":"64186","desc":"57940"},{"messageId":"57941","fix":"64187","desc":"57943"},{"messageId":"57938","fix":"64188","desc":"57940"},{"messageId":"57941","fix":"64189","desc":"57943"},{"messageId":"57938","fix":"64190","desc":"57940"},{"messageId":"57941","fix":"64191","desc":"57943"},{"messageId":"57938","fix":"64192","desc":"57940"},{"messageId":"57941","fix":"64193","desc":"57943"},{"messageId":"57938","fix":"64194","desc":"57940"},{"messageId":"57941","fix":"64195","desc":"57943"},{"messageId":"57938","fix":"64196","desc":"57940"},{"messageId":"57941","fix":"64197","desc":"57943"},{"messageId":"57938","fix":"64198","desc":"57940"},{"messageId":"57941","fix":"64199","desc":"57943"},{"messageId":"57938","fix":"64200","desc":"57940"},{"messageId":"57941","fix":"64201","desc":"57943"},{"messageId":"57938","fix":"64202","desc":"57940"},{"messageId":"57941","fix":"64203","desc":"57943"},{"messageId":"57938","fix":"64204","desc":"57940"},{"messageId":"57941","fix":"64205","desc":"57943"},{"messageId":"57938","fix":"64206","desc":"57940"},{"messageId":"57941","fix":"64207","desc":"57943"},{"messageId":"57938","fix":"64208","desc":"57940"},{"messageId":"57941","fix":"64209","desc":"57943"},{"messageId":"57938","fix":"64210","desc":"57940"},{"messageId":"57941","fix":"64211","desc":"57943"},{"messageId":"57938","fix":"64212","desc":"57940"},{"messageId":"57941","fix":"64213","desc":"57943"},{"messageId":"57938","fix":"64214","desc":"57940"},{"messageId":"57941","fix":"64215","desc":"57943"},{"messageId":"57938","fix":"64216","desc":"57940"},{"messageId":"57941","fix":"64217","desc":"57943"},{"messageId":"57938","fix":"64218","desc":"57940"},{"messageId":"57941","fix":"64219","desc":"57943"},{"messageId":"57938","fix":"64220","desc":"57940"},{"messageId":"57941","fix":"64221","desc":"57943"},{"messageId":"57938","fix":"64222","desc":"57940"},{"messageId":"57941","fix":"64223","desc":"57943"},{"messageId":"57938","fix":"64224","desc":"57940"},{"messageId":"57941","fix":"64225","desc":"57943"},{"messageId":"57938","fix":"64226","desc":"57940"},{"messageId":"57941","fix":"64227","desc":"57943"},{"messageId":"57938","fix":"64228","desc":"57940"},{"messageId":"57941","fix":"64229","desc":"57943"},{"messageId":"57938","fix":"64230","desc":"57940"},{"messageId":"57941","fix":"64231","desc":"57943"},{"messageId":"57938","fix":"64232","desc":"57940"},{"messageId":"57941","fix":"64233","desc":"57943"},{"messageId":"57938","fix":"64234","desc":"57940"},{"messageId":"57941","fix":"64235","desc":"57943"},{"messageId":"57938","fix":"64236","desc":"57940"},{"messageId":"57941","fix":"64237","desc":"57943"},{"messageId":"57938","fix":"64238","desc":"57940"},{"messageId":"57941","fix":"64239","desc":"57943"},{"messageId":"57938","fix":"64240","desc":"57940"},{"messageId":"57941","fix":"64241","desc":"57943"},{"messageId":"57938","fix":"64242","desc":"57940"},{"messageId":"57941","fix":"64243","desc":"57943"},{"messageId":"57938","fix":"64244","desc":"57940"},{"messageId":"57941","fix":"64245","desc":"57943"},{"messageId":"57938","fix":"64246","desc":"57940"},{"messageId":"57941","fix":"64247","desc":"57943"},{"messageId":"57938","fix":"64248","desc":"57940"},{"messageId":"57941","fix":"64249","desc":"57943"},{"messageId":"57938","fix":"64250","desc":"57940"},{"messageId":"57941","fix":"64251","desc":"57943"},{"messageId":"57938","fix":"64252","desc":"57940"},{"messageId":"57941","fix":"64253","desc":"57943"},{"messageId":"57938","fix":"64254","desc":"57940"},{"messageId":"57941","fix":"64255","desc":"57943"},{"messageId":"57938","fix":"64256","desc":"57940"},{"messageId":"57941","fix":"64257","desc":"57943"},{"messageId":"57938","fix":"64258","desc":"57940"},{"messageId":"57941","fix":"64259","desc":"57943"},{"messageId":"57938","fix":"64260","desc":"57940"},{"messageId":"57941","fix":"64261","desc":"57943"},{"messageId":"57938","fix":"64262","desc":"57940"},{"messageId":"57941","fix":"64263","desc":"57943"},{"messageId":"57938","fix":"64264","desc":"57940"},{"messageId":"57941","fix":"64265","desc":"57943"},{"messageId":"57938","fix":"64266","desc":"57940"},{"messageId":"57941","fix":"64267","desc":"57943"},{"messageId":"57938","fix":"64268","desc":"57940"},{"messageId":"57941","fix":"64269","desc":"57943"},{"messageId":"57938","fix":"64270","desc":"57940"},{"messageId":"57941","fix":"64271","desc":"57943"},{"messageId":"57938","fix":"64272","desc":"57940"},{"messageId":"57941","fix":"64273","desc":"57943"},{"messageId":"57938","fix":"64274","desc":"57940"},{"messageId":"57941","fix":"64275","desc":"57943"},{"messageId":"57938","fix":"64276","desc":"57940"},{"messageId":"57941","fix":"64277","desc":"57943"},{"messageId":"57938","fix":"64278","desc":"57940"},{"messageId":"57941","fix":"64279","desc":"57943"},{"messageId":"57938","fix":"64280","desc":"57940"},{"messageId":"57941","fix":"64281","desc":"57943"},{"messageId":"57938","fix":"64282","desc":"57940"},{"messageId":"57941","fix":"64283","desc":"57943"},{"messageId":"57938","fix":"64284","desc":"57940"},{"messageId":"57941","fix":"64285","desc":"57943"},{"messageId":"57938","fix":"64286","desc":"57940"},{"messageId":"57941","fix":"64287","desc":"57943"},{"messageId":"57938","fix":"64288","desc":"57940"},{"messageId":"57941","fix":"64289","desc":"57943"},{"messageId":"57938","fix":"64290","desc":"57940"},{"messageId":"57941","fix":"64291","desc":"57943"},{"messageId":"57938","fix":"64292","desc":"57940"},{"messageId":"57941","fix":"64293","desc":"57943"},{"messageId":"57938","fix":"64294","desc":"57940"},{"messageId":"57941","fix":"64295","desc":"57943"},{"messageId":"57938","fix":"64296","desc":"57940"},{"messageId":"57941","fix":"64297","desc":"57943"},{"messageId":"57938","fix":"64298","desc":"57940"},{"messageId":"57941","fix":"64299","desc":"57943"},{"messageId":"57938","fix":"64300","desc":"57940"},{"messageId":"57941","fix":"64301","desc":"57943"},{"messageId":"57938","fix":"64302","desc":"57940"},{"messageId":"57941","fix":"64303","desc":"57943"},{"messageId":"57938","fix":"64304","desc":"57940"},{"messageId":"57941","fix":"64305","desc":"57943"},{"messageId":"57938","fix":"64306","desc":"57940"},{"messageId":"57941","fix":"64307","desc":"57943"},{"messageId":"57938","fix":"64308","desc":"57940"},{"messageId":"57941","fix":"64309","desc":"57943"},{"messageId":"57938","fix":"64310","desc":"57940"},{"messageId":"57941","fix":"64311","desc":"57943"},{"messageId":"57938","fix":"64312","desc":"57940"},{"messageId":"57941","fix":"64313","desc":"57943"},{"messageId":"57938","fix":"64314","desc":"57940"},{"messageId":"57941","fix":"64315","desc":"57943"},{"messageId":"57938","fix":"64316","desc":"57940"},{"messageId":"57941","fix":"64317","desc":"57943"},{"messageId":"57938","fix":"64318","desc":"57940"},{"messageId":"57941","fix":"64319","desc":"57943"},{"messageId":"57938","fix":"64320","desc":"57940"},{"messageId":"57941","fix":"64321","desc":"57943"},{"messageId":"57938","fix":"64322","desc":"57940"},{"messageId":"57941","fix":"64323","desc":"57943"},{"messageId":"57938","fix":"64324","desc":"57940"},{"messageId":"57941","fix":"64325","desc":"57943"},{"messageId":"57938","fix":"64326","desc":"57940"},{"messageId":"57941","fix":"64327","desc":"57943"},{"messageId":"57938","fix":"64328","desc":"57940"},{"messageId":"57941","fix":"64329","desc":"57943"},{"messageId":"57938","fix":"64330","desc":"57940"},{"messageId":"57941","fix":"64331","desc":"57943"},{"messageId":"57938","fix":"64332","desc":"57940"},{"messageId":"57941","fix":"64333","desc":"57943"},{"messageId":"57938","fix":"64334","desc":"57940"},{"messageId":"57941","fix":"64335","desc":"57943"},{"messageId":"57938","fix":"64336","desc":"57940"},{"messageId":"57941","fix":"64337","desc":"57943"},{"messageId":"57938","fix":"64338","desc":"57940"},{"messageId":"57941","fix":"64339","desc":"57943"},{"messageId":"57938","fix":"64340","desc":"57940"},{"messageId":"57941","fix":"64341","desc":"57943"},{"messageId":"57938","fix":"64342","desc":"57940"},{"messageId":"57941","fix":"64343","desc":"57943"},{"messageId":"57938","fix":"64344","desc":"57940"},{"messageId":"57941","fix":"64345","desc":"57943"},{"messageId":"57938","fix":"64346","desc":"57940"},{"messageId":"57941","fix":"64347","desc":"57943"},{"messageId":"57938","fix":"64348","desc":"57940"},{"messageId":"57941","fix":"64349","desc":"57943"},{"messageId":"57938","fix":"64350","desc":"57940"},{"messageId":"57941","fix":"64351","desc":"57943"},{"messageId":"57938","fix":"64352","desc":"57940"},{"messageId":"57941","fix":"64353","desc":"57943"},{"messageId":"57938","fix":"64354","desc":"57940"},{"messageId":"57941","fix":"64355","desc":"57943"},{"messageId":"57938","fix":"64356","desc":"57940"},{"messageId":"57941","fix":"64357","desc":"57943"},{"messageId":"57938","fix":"64358","desc":"57940"},{"messageId":"57941","fix":"64359","desc":"57943"},{"messageId":"57938","fix":"64360","desc":"57940"},{"messageId":"57941","fix":"64361","desc":"57943"},{"messageId":"57938","fix":"64362","desc":"57940"},{"messageId":"57941","fix":"64363","desc":"57943"},{"messageId":"57938","fix":"64364","desc":"57940"},{"messageId":"57941","fix":"64365","desc":"57943"},{"messageId":"57938","fix":"64366","desc":"57940"},{"messageId":"57941","fix":"64367","desc":"57943"},{"messageId":"57938","fix":"64368","desc":"57940"},{"messageId":"57941","fix":"64369","desc":"57943"},{"messageId":"57938","fix":"64370","desc":"57940"},{"messageId":"57941","fix":"64371","desc":"57943"},{"messageId":"57938","fix":"64372","desc":"57940"},{"messageId":"57941","fix":"64373","desc":"57943"},{"messageId":"57938","fix":"64374","desc":"57940"},{"messageId":"57941","fix":"64375","desc":"57943"},{"messageId":"57938","fix":"64376","desc":"57940"},{"messageId":"57941","fix":"64377","desc":"57943"},{"messageId":"57938","fix":"64378","desc":"57940"},{"messageId":"57941","fix":"64379","desc":"57943"},{"messageId":"57938","fix":"64380","desc":"57940"},{"messageId":"57941","fix":"64381","desc":"57943"},{"messageId":"57938","fix":"64382","desc":"57940"},{"messageId":"57941","fix":"64383","desc":"57943"},{"messageId":"57938","fix":"64384","desc":"57940"},{"messageId":"57941","fix":"64385","desc":"57943"},{"messageId":"57938","fix":"64386","desc":"57940"},{"messageId":"57941","fix":"64387","desc":"57943"},{"messageId":"57938","fix":"64388","desc":"57940"},{"messageId":"57941","fix":"64389","desc":"57943"},{"messageId":"57938","fix":"64390","desc":"57940"},{"messageId":"57941","fix":"64391","desc":"57943"},{"messageId":"57938","fix":"64392","desc":"57940"},{"messageId":"57941","fix":"64393","desc":"57943"},{"messageId":"57938","fix":"64394","desc":"57940"},{"messageId":"57941","fix":"64395","desc":"57943"},{"messageId":"57938","fix":"64396","desc":"57940"},{"messageId":"57941","fix":"64397","desc":"57943"},{"messageId":"57938","fix":"64398","desc":"57940"},{"messageId":"57941","fix":"64399","desc":"57943"},{"messageId":"57938","fix":"64400","desc":"57940"},{"messageId":"57941","fix":"64401","desc":"57943"},{"messageId":"57938","fix":"64402","desc":"57940"},{"messageId":"57941","fix":"64403","desc":"57943"},{"messageId":"57938","fix":"64404","desc":"57940"},{"messageId":"57941","fix":"64405","desc":"57943"},{"messageId":"57938","fix":"64406","desc":"57940"},{"messageId":"57941","fix":"64407","desc":"57943"},{"messageId":"57938","fix":"64408","desc":"57940"},{"messageId":"57941","fix":"64409","desc":"57943"},{"messageId":"57938","fix":"64410","desc":"57940"},{"messageId":"57941","fix":"64411","desc":"57943"},{"messageId":"57938","fix":"64412","desc":"57940"},{"messageId":"57941","fix":"64413","desc":"57943"},{"messageId":"57938","fix":"64414","desc":"57940"},{"messageId":"57941","fix":"64415","desc":"57943"},{"messageId":"57938","fix":"64416","desc":"57940"},{"messageId":"57941","fix":"64417","desc":"57943"},{"messageId":"57938","fix":"64418","desc":"57940"},{"messageId":"57941","fix":"64419","desc":"57943"},{"messageId":"57938","fix":"64420","desc":"57940"},{"messageId":"57941","fix":"64421","desc":"57943"},{"messageId":"57938","fix":"64422","desc":"57940"},{"messageId":"57941","fix":"64423","desc":"57943"},{"messageId":"57938","fix":"64424","desc":"57940"},{"messageId":"57941","fix":"64425","desc":"57943"},{"messageId":"57938","fix":"64426","desc":"57940"},{"messageId":"57941","fix":"64427","desc":"57943"},{"messageId":"57938","fix":"64428","desc":"57940"},{"messageId":"57941","fix":"64429","desc":"57943"},{"messageId":"57938","fix":"64430","desc":"57940"},{"messageId":"57941","fix":"64431","desc":"57943"},{"messageId":"57938","fix":"64432","desc":"57940"},{"messageId":"57941","fix":"64433","desc":"57943"},{"messageId":"57938","fix":"64434","desc":"57940"},{"messageId":"57941","fix":"64435","desc":"57943"},{"messageId":"57938","fix":"64436","desc":"57940"},{"messageId":"57941","fix":"64437","desc":"57943"},{"messageId":"57938","fix":"64438","desc":"57940"},{"messageId":"57941","fix":"64439","desc":"57943"},{"messageId":"57938","fix":"64440","desc":"57940"},{"messageId":"57941","fix":"64441","desc":"57943"},{"messageId":"57938","fix":"64442","desc":"57940"},{"messageId":"57941","fix":"64443","desc":"57943"},{"messageId":"57938","fix":"64444","desc":"57940"},{"messageId":"57941","fix":"64445","desc":"57943"},{"messageId":"57938","fix":"64446","desc":"57940"},{"messageId":"57941","fix":"64447","desc":"57943"},{"messageId":"57938","fix":"64448","desc":"57940"},{"messageId":"57941","fix":"64449","desc":"57943"},{"messageId":"57938","fix":"64450","desc":"57940"},{"messageId":"57941","fix":"64451","desc":"57943"},{"messageId":"57938","fix":"64452","desc":"57940"},{"messageId":"57941","fix":"64453","desc":"57943"},{"messageId":"57938","fix":"64454","desc":"57940"},{"messageId":"57941","fix":"64455","desc":"57943"},{"messageId":"57938","fix":"64456","desc":"57940"},{"messageId":"57941","fix":"64457","desc":"57943"},{"messageId":"57938","fix":"64458","desc":"57940"},{"messageId":"57941","fix":"64459","desc":"57943"},{"messageId":"57938","fix":"64460","desc":"57940"},{"messageId":"57941","fix":"64461","desc":"57943"},{"messageId":"57938","fix":"64462","desc":"57940"},{"messageId":"57941","fix":"64463","desc":"57943"},{"messageId":"57938","fix":"64464","desc":"57940"},{"messageId":"57941","fix":"64465","desc":"57943"},{"messageId":"57938","fix":"64466","desc":"57940"},{"messageId":"57941","fix":"64467","desc":"57943"},{"messageId":"57938","fix":"64468","desc":"57940"},{"messageId":"57941","fix":"64469","desc":"57943"},{"messageId":"57938","fix":"64470","desc":"57940"},{"messageId":"57941","fix":"64471","desc":"57943"},{"messageId":"57938","fix":"64472","desc":"57940"},{"messageId":"57941","fix":"64473","desc":"57943"},{"messageId":"57938","fix":"64474","desc":"57940"},{"messageId":"57941","fix":"64475","desc":"57943"},{"messageId":"57938","fix":"64476","desc":"57940"},{"messageId":"57941","fix":"64477","desc":"57943"},{"messageId":"57938","fix":"64478","desc":"57940"},{"messageId":"57941","fix":"64479","desc":"57943"},{"messageId":"57938","fix":"64480","desc":"57940"},{"messageId":"57941","fix":"64481","desc":"57943"},{"messageId":"57938","fix":"64482","desc":"57940"},{"messageId":"57941","fix":"64483","desc":"57943"},{"messageId":"57938","fix":"64484","desc":"57940"},{"messageId":"57941","fix":"64485","desc":"57943"},{"messageId":"57938","fix":"64486","desc":"57940"},{"messageId":"57941","fix":"64487","desc":"57943"},{"messageId":"57938","fix":"64488","desc":"57940"},{"messageId":"57941","fix":"64489","desc":"57943"},{"messageId":"57938","fix":"64490","desc":"57940"},{"messageId":"57941","fix":"64491","desc":"57943"},{"messageId":"57938","fix":"64492","desc":"57940"},{"messageId":"57941","fix":"64493","desc":"57943"},{"messageId":"57938","fix":"64494","desc":"57940"},{"messageId":"57941","fix":"64495","desc":"57943"},{"messageId":"57938","fix":"64496","desc":"57940"},{"messageId":"57941","fix":"64497","desc":"57943"},{"messageId":"57938","fix":"64498","desc":"57940"},{"messageId":"57941","fix":"64499","desc":"57943"},{"messageId":"57938","fix":"64500","desc":"57940"},{"messageId":"57941","fix":"64501","desc":"57943"},{"messageId":"57938","fix":"64502","desc":"57940"},{"messageId":"57941","fix":"64503","desc":"57943"},{"messageId":"57938","fix":"64504","desc":"57940"},{"messageId":"57941","fix":"64505","desc":"57943"},{"messageId":"57938","fix":"64506","desc":"57940"},{"messageId":"57941","fix":"64507","desc":"57943"},{"messageId":"57938","fix":"64508","desc":"57940"},{"messageId":"57941","fix":"64509","desc":"57943"},{"messageId":"57938","fix":"64510","desc":"57940"},{"messageId":"57941","fix":"64511","desc":"57943"},{"messageId":"57938","fix":"64512","desc":"57940"},{"messageId":"57941","fix":"64513","desc":"57943"},{"messageId":"57938","fix":"64514","desc":"57940"},{"messageId":"57941","fix":"64515","desc":"57943"},{"messageId":"57938","fix":"64516","desc":"57940"},{"messageId":"57941","fix":"64517","desc":"57943"},{"messageId":"57938","fix":"64518","desc":"57940"},{"messageId":"57941","fix":"64519","desc":"57943"},{"messageId":"57938","fix":"64520","desc":"57940"},{"messageId":"57941","fix":"64521","desc":"57943"},{"messageId":"57938","fix":"64522","desc":"57940"},{"messageId":"57941","fix":"64523","desc":"57943"},{"messageId":"57938","fix":"64524","desc":"57940"},{"messageId":"57941","fix":"64525","desc":"57943"},{"messageId":"57938","fix":"64526","desc":"57940"},{"messageId":"57941","fix":"64527","desc":"57943"},{"messageId":"57938","fix":"64528","desc":"57940"},{"messageId":"57941","fix":"64529","desc":"57943"},{"messageId":"57938","fix":"64530","desc":"57940"},{"messageId":"57941","fix":"64531","desc":"57943"},{"messageId":"57938","fix":"64532","desc":"57940"},{"messageId":"57941","fix":"64533","desc":"57943"},{"messageId":"57938","fix":"64534","desc":"57940"},{"messageId":"57941","fix":"64535","desc":"57943"},{"messageId":"57938","fix":"64536","desc":"57940"},{"messageId":"57941","fix":"64537","desc":"57943"},{"messageId":"57938","fix":"64538","desc":"57940"},{"messageId":"57941","fix":"64539","desc":"57943"},{"messageId":"57938","fix":"64540","desc":"57940"},{"messageId":"57941","fix":"64541","desc":"57943"},{"messageId":"57938","fix":"64542","desc":"57940"},{"messageId":"57941","fix":"64543","desc":"57943"},{"messageId":"57938","fix":"64544","desc":"57940"},{"messageId":"57941","fix":"64545","desc":"57943"},{"messageId":"57938","fix":"64546","desc":"57940"},{"messageId":"57941","fix":"64547","desc":"57943"},{"messageId":"57938","fix":"64548","desc":"57940"},{"messageId":"57941","fix":"64549","desc":"57943"},{"messageId":"57938","fix":"64550","desc":"57940"},{"messageId":"57941","fix":"64551","desc":"57943"},{"messageId":"57938","fix":"64552","desc":"57940"},{"messageId":"57941","fix":"64553","desc":"57943"},{"messageId":"57938","fix":"64554","desc":"57940"},{"messageId":"57941","fix":"64555","desc":"57943"},{"messageId":"57938","fix":"64556","desc":"57940"},{"messageId":"57941","fix":"64557","desc":"57943"},{"messageId":"57938","fix":"64558","desc":"57940"},{"messageId":"57941","fix":"64559","desc":"57943"},{"messageId":"57938","fix":"64560","desc":"57940"},{"messageId":"57941","fix":"64561","desc":"57943"},{"messageId":"57938","fix":"64562","desc":"57940"},{"messageId":"57941","fix":"64563","desc":"57943"},{"messageId":"57938","fix":"64564","desc":"57940"},{"messageId":"57941","fix":"64565","desc":"57943"},{"messageId":"57938","fix":"64566","desc":"57940"},{"messageId":"57941","fix":"64567","desc":"57943"},{"messageId":"57938","fix":"64568","desc":"57940"},{"messageId":"57941","fix":"64569","desc":"57943"},{"messageId":"57938","fix":"64570","desc":"57940"},{"messageId":"57941","fix":"64571","desc":"57943"},{"messageId":"57938","fix":"64572","desc":"57940"},{"messageId":"57941","fix":"64573","desc":"57943"},{"messageId":"57938","fix":"64574","desc":"57940"},{"messageId":"57941","fix":"64575","desc":"57943"},{"messageId":"57938","fix":"64576","desc":"57940"},{"messageId":"57941","fix":"64577","desc":"57943"},{"messageId":"57938","fix":"64578","desc":"57940"},{"messageId":"57941","fix":"64579","desc":"57943"},{"messageId":"57938","fix":"64580","desc":"57940"},{"messageId":"57941","fix":"64581","desc":"57943"},{"messageId":"57938","fix":"64582","desc":"57940"},{"messageId":"57941","fix":"64583","desc":"57943"},{"messageId":"57938","fix":"64584","desc":"57940"},{"messageId":"57941","fix":"64585","desc":"57943"},{"messageId":"57938","fix":"64586","desc":"57940"},{"messageId":"57941","fix":"64587","desc":"57943"},{"messageId":"57938","fix":"64588","desc":"57940"},{"messageId":"57941","fix":"64589","desc":"57943"},{"messageId":"57938","fix":"64590","desc":"57940"},{"messageId":"57941","fix":"64591","desc":"57943"},{"messageId":"57938","fix":"64592","desc":"57940"},{"messageId":"57941","fix":"64593","desc":"57943"},{"messageId":"57938","fix":"64594","desc":"57940"},{"messageId":"57941","fix":"64595","desc":"57943"},{"messageId":"57938","fix":"64596","desc":"57940"},{"messageId":"57941","fix":"64597","desc":"57943"},{"messageId":"57938","fix":"64598","desc":"57940"},{"messageId":"57941","fix":"64599","desc":"57943"},{"messageId":"57938","fix":"64600","desc":"57940"},{"messageId":"57941","fix":"64601","desc":"57943"},{"messageId":"57938","fix":"64602","desc":"57940"},{"messageId":"57941","fix":"64603","desc":"57943"},{"messageId":"57938","fix":"64604","desc":"57940"},{"messageId":"57941","fix":"64605","desc":"57943"},{"messageId":"57938","fix":"64606","desc":"57940"},{"messageId":"57941","fix":"64607","desc":"57943"},{"messageId":"57938","fix":"64608","desc":"57940"},{"messageId":"57941","fix":"64609","desc":"57943"},{"messageId":"57938","fix":"64610","desc":"57940"},{"messageId":"57941","fix":"64611","desc":"57943"},{"messageId":"57938","fix":"64612","desc":"57940"},{"messageId":"57941","fix":"64613","desc":"57943"},{"messageId":"57938","fix":"64614","desc":"57940"},{"messageId":"57941","fix":"64615","desc":"57943"},{"messageId":"57938","fix":"64616","desc":"57940"},{"messageId":"57941","fix":"64617","desc":"57943"},{"messageId":"57938","fix":"64618","desc":"57940"},{"messageId":"57941","fix":"64619","desc":"57943"},{"messageId":"57938","fix":"64620","desc":"57940"},{"messageId":"57941","fix":"64621","desc":"57943"},{"messageId":"57938","fix":"64622","desc":"57940"},{"messageId":"57941","fix":"64623","desc":"57943"},{"messageId":"57938","fix":"64624","desc":"57940"},{"messageId":"57941","fix":"64625","desc":"57943"},{"messageId":"57938","fix":"64626","desc":"57940"},{"messageId":"57941","fix":"64627","desc":"57943"},{"messageId":"57938","fix":"64628","desc":"57940"},{"messageId":"57941","fix":"64629","desc":"57943"},{"messageId":"57938","fix":"64630","desc":"57940"},{"messageId":"57941","fix":"64631","desc":"57943"},{"messageId":"57938","fix":"64632","desc":"57940"},{"messageId":"57941","fix":"64633","desc":"57943"},{"messageId":"57938","fix":"64634","desc":"57940"},{"messageId":"57941","fix":"64635","desc":"57943"},{"messageId":"57938","fix":"64636","desc":"57940"},{"messageId":"57941","fix":"64637","desc":"57943"},{"messageId":"57938","fix":"64638","desc":"57940"},{"messageId":"57941","fix":"64639","desc":"57943"},{"messageId":"57938","fix":"64640","desc":"57940"},{"messageId":"57941","fix":"64641","desc":"57943"},{"messageId":"57938","fix":"64642","desc":"57940"},{"messageId":"57941","fix":"64643","desc":"57943"},{"messageId":"57938","fix":"64644","desc":"57940"},{"messageId":"57941","fix":"64645","desc":"57943"},{"messageId":"57938","fix":"64646","desc":"57940"},{"messageId":"57941","fix":"64647","desc":"57943"},{"messageId":"57938","fix":"64648","desc":"57940"},{"messageId":"57941","fix":"64649","desc":"57943"},{"messageId":"57938","fix":"64650","desc":"57940"},{"messageId":"57941","fix":"64651","desc":"57943"},{"messageId":"57938","fix":"64652","desc":"57940"},{"messageId":"57941","fix":"64653","desc":"57943"},{"messageId":"57938","fix":"64654","desc":"57940"},{"messageId":"57941","fix":"64655","desc":"57943"},{"messageId":"57938","fix":"64656","desc":"57940"},{"messageId":"57941","fix":"64657","desc":"57943"},{"messageId":"57938","fix":"64658","desc":"57940"},{"messageId":"57941","fix":"64659","desc":"57943"},{"messageId":"57938","fix":"64660","desc":"57940"},{"messageId":"57941","fix":"64661","desc":"57943"},{"messageId":"57938","fix":"64662","desc":"57940"},{"messageId":"57941","fix":"64663","desc":"57943"},{"messageId":"57938","fix":"64664","desc":"57940"},{"messageId":"57941","fix":"64665","desc":"57943"},{"messageId":"57938","fix":"64666","desc":"57940"},{"messageId":"57941","fix":"64667","desc":"57943"},{"messageId":"57938","fix":"64668","desc":"57940"},{"messageId":"57941","fix":"64669","desc":"57943"},{"messageId":"57938","fix":"64670","desc":"57940"},{"messageId":"57941","fix":"64671","desc":"57943"},{"messageId":"57938","fix":"64672","desc":"57940"},{"messageId":"57941","fix":"64673","desc":"57943"},{"messageId":"57938","fix":"64674","desc":"57940"},{"messageId":"57941","fix":"64675","desc":"57943"},{"messageId":"57938","fix":"64676","desc":"57940"},{"messageId":"57941","fix":"64677","desc":"57943"},{"messageId":"57938","fix":"64678","desc":"57940"},{"messageId":"57941","fix":"64679","desc":"57943"},{"messageId":"57938","fix":"64680","desc":"57940"},{"messageId":"57941","fix":"64681","desc":"57943"},{"messageId":"57938","fix":"64682","desc":"57940"},{"messageId":"57941","fix":"64683","desc":"57943"},{"messageId":"57938","fix":"64684","desc":"57940"},{"messageId":"57941","fix":"64685","desc":"57943"},{"messageId":"57938","fix":"64686","desc":"57940"},{"messageId":"57941","fix":"64687","desc":"57943"},{"messageId":"57938","fix":"64688","desc":"57940"},{"messageId":"57941","fix":"64689","desc":"57943"},{"messageId":"57938","fix":"64690","desc":"57940"},{"messageId":"57941","fix":"64691","desc":"57943"},{"messageId":"57938","fix":"64692","desc":"57940"},{"messageId":"57941","fix":"64693","desc":"57943"},{"messageId":"57938","fix":"64694","desc":"57940"},{"messageId":"57941","fix":"64695","desc":"57943"},{"messageId":"57938","fix":"64696","desc":"57940"},{"messageId":"57941","fix":"64697","desc":"57943"},{"messageId":"57938","fix":"64698","desc":"57940"},{"messageId":"57941","fix":"64699","desc":"57943"},{"messageId":"57938","fix":"64700","desc":"57940"},{"messageId":"57941","fix":"64701","desc":"57943"},{"messageId":"57938","fix":"64702","desc":"57940"},{"messageId":"57941","fix":"64703","desc":"57943"},{"messageId":"57938","fix":"64704","desc":"57940"},{"messageId":"57941","fix":"64705","desc":"57943"},{"messageId":"57938","fix":"64706","desc":"57940"},{"messageId":"57941","fix":"64707","desc":"57943"},{"messageId":"57938","fix":"64708","desc":"57940"},{"messageId":"57941","fix":"64709","desc":"57943"},{"messageId":"57938","fix":"64710","desc":"57940"},{"messageId":"57941","fix":"64711","desc":"57943"},{"messageId":"57938","fix":"64712","desc":"57940"},{"messageId":"57941","fix":"64713","desc":"57943"},{"messageId":"57938","fix":"64714","desc":"57940"},{"messageId":"57941","fix":"64715","desc":"57943"},{"messageId":"57938","fix":"64716","desc":"57940"},{"messageId":"57941","fix":"64717","desc":"57943"},{"messageId":"57938","fix":"64718","desc":"57940"},{"messageId":"57941","fix":"64719","desc":"57943"},{"messageId":"57938","fix":"64720","desc":"57940"},{"messageId":"57941","fix":"64721","desc":"57943"},{"messageId":"57938","fix":"64722","desc":"57940"},{"messageId":"57941","fix":"64723","desc":"57943"},{"messageId":"57938","fix":"64724","desc":"57940"},{"messageId":"57941","fix":"64725","desc":"57943"},{"messageId":"57938","fix":"64726","desc":"57940"},{"messageId":"57941","fix":"64727","desc":"57943"},{"messageId":"57938","fix":"64728","desc":"57940"},{"messageId":"57941","fix":"64729","desc":"57943"},{"messageId":"57938","fix":"64730","desc":"57940"},{"messageId":"57941","fix":"64731","desc":"57943"},{"messageId":"57938","fix":"64732","desc":"57940"},{"messageId":"57941","fix":"64733","desc":"57943"},{"messageId":"57938","fix":"64734","desc":"57940"},{"messageId":"57941","fix":"64735","desc":"57943"},{"messageId":"57938","fix":"64736","desc":"57940"},{"messageId":"57941","fix":"64737","desc":"57943"},{"messageId":"57938","fix":"64738","desc":"57940"},{"messageId":"57941","fix":"64739","desc":"57943"},{"messageId":"57938","fix":"64740","desc":"57940"},{"messageId":"57941","fix":"64741","desc":"57943"},{"messageId":"57938","fix":"64742","desc":"57940"},{"messageId":"57941","fix":"64743","desc":"57943"},{"messageId":"57938","fix":"64744","desc":"57940"},{"messageId":"57941","fix":"64745","desc":"57943"},{"messageId":"57938","fix":"64746","desc":"57940"},{"messageId":"57941","fix":"64747","desc":"57943"},{"messageId":"57938","fix":"64748","desc":"57940"},{"messageId":"57941","fix":"64749","desc":"57943"},{"messageId":"57938","fix":"64750","desc":"57940"},{"messageId":"57941","fix":"64751","desc":"57943"},{"messageId":"57938","fix":"64752","desc":"57940"},{"messageId":"57941","fix":"64753","desc":"57943"},{"messageId":"57938","fix":"64754","desc":"57940"},{"messageId":"57941","fix":"64755","desc":"57943"},{"messageId":"57938","fix":"64756","desc":"57940"},{"messageId":"57941","fix":"64757","desc":"57943"},{"messageId":"57938","fix":"64758","desc":"57940"},{"messageId":"57941","fix":"64759","desc":"57943"},{"messageId":"57938","fix":"64760","desc":"57940"},{"messageId":"57941","fix":"64761","desc":"57943"},{"messageId":"57938","fix":"64762","desc":"57940"},{"messageId":"57941","fix":"64763","desc":"57943"},{"messageId":"57938","fix":"64764","desc":"57940"},{"messageId":"57941","fix":"64765","desc":"57943"},{"messageId":"57938","fix":"64766","desc":"57940"},{"messageId":"57941","fix":"64767","desc":"57943"},{"messageId":"57938","fix":"64768","desc":"57940"},{"messageId":"57941","fix":"64769","desc":"57943"},{"messageId":"57938","fix":"64770","desc":"57940"},{"messageId":"57941","fix":"64771","desc":"57943"},{"messageId":"57938","fix":"64772","desc":"57940"},{"messageId":"57941","fix":"64773","desc":"57943"},{"messageId":"57938","fix":"64774","desc":"57940"},{"messageId":"57941","fix":"64775","desc":"57943"},{"messageId":"57938","fix":"64776","desc":"57940"},{"messageId":"57941","fix":"64777","desc":"57943"},{"messageId":"57938","fix":"64778","desc":"57940"},{"messageId":"57941","fix":"64779","desc":"57943"},{"messageId":"57938","fix":"64780","desc":"57940"},{"messageId":"57941","fix":"64781","desc":"57943"},{"messageId":"57938","fix":"64782","desc":"57940"},{"messageId":"57941","fix":"64783","desc":"57943"},{"messageId":"57938","fix":"64784","desc":"57940"},{"messageId":"57941","fix":"64785","desc":"57943"},{"messageId":"57938","fix":"64786","desc":"57940"},{"messageId":"57941","fix":"64787","desc":"57943"},{"messageId":"57938","fix":"64788","desc":"57940"},{"messageId":"57941","fix":"64789","desc":"57943"},{"messageId":"57938","fix":"64790","desc":"57940"},{"messageId":"57941","fix":"64791","desc":"57943"},{"messageId":"57938","fix":"64792","desc":"57940"},{"messageId":"57941","fix":"64793","desc":"57943"},{"messageId":"57938","fix":"64794","desc":"57940"},{"messageId":"57941","fix":"64795","desc":"57943"},{"messageId":"57938","fix":"64796","desc":"57940"},{"messageId":"57941","fix":"64797","desc":"57943"},{"messageId":"57938","fix":"64798","desc":"57940"},{"messageId":"57941","fix":"64799","desc":"57943"},{"messageId":"57938","fix":"64800","desc":"57940"},{"messageId":"57941","fix":"64801","desc":"57943"},{"messageId":"57938","fix":"64802","desc":"57940"},{"messageId":"57941","fix":"64803","desc":"57943"},{"messageId":"57938","fix":"64804","desc":"57940"},{"messageId":"57941","fix":"64805","desc":"57943"},{"messageId":"57938","fix":"64806","desc":"57940"},{"messageId":"57941","fix":"64807","desc":"57943"},{"messageId":"57938","fix":"64808","desc":"57940"},{"messageId":"57941","fix":"64809","desc":"57943"},{"messageId":"57938","fix":"64810","desc":"57940"},{"messageId":"57941","fix":"64811","desc":"57943"},{"messageId":"57938","fix":"64812","desc":"57940"},{"messageId":"57941","fix":"64813","desc":"57943"},{"messageId":"57938","fix":"64814","desc":"57940"},{"messageId":"57941","fix":"64815","desc":"57943"},{"messageId":"57938","fix":"64816","desc":"57940"},{"messageId":"57941","fix":"64817","desc":"57943"},{"messageId":"57938","fix":"64818","desc":"57940"},{"messageId":"57941","fix":"64819","desc":"57943"},{"messageId":"57938","fix":"64820","desc":"57940"},{"messageId":"57941","fix":"64821","desc":"57943"},{"messageId":"57938","fix":"64822","desc":"57940"},{"messageId":"57941","fix":"64823","desc":"57943"},{"messageId":"57938","fix":"64824","desc":"57940"},{"messageId":"57941","fix":"64825","desc":"57943"},{"messageId":"57938","fix":"64826","desc":"57940"},{"messageId":"57941","fix":"64827","desc":"57943"},{"messageId":"57938","fix":"64828","desc":"57940"},{"messageId":"57941","fix":"64829","desc":"57943"},{"messageId":"57938","fix":"64830","desc":"57940"},{"messageId":"57941","fix":"64831","desc":"57943"},{"messageId":"57938","fix":"64832","desc":"57940"},{"messageId":"57941","fix":"64833","desc":"57943"},{"messageId":"57938","fix":"64834","desc":"57940"},{"messageId":"57941","fix":"64835","desc":"57943"},{"messageId":"57938","fix":"64836","desc":"57940"},{"messageId":"57941","fix":"64837","desc":"57943"},{"messageId":"57938","fix":"64838","desc":"57940"},{"messageId":"57941","fix":"64839","desc":"57943"},{"messageId":"57938","fix":"64840","desc":"57940"},{"messageId":"57941","fix":"64841","desc":"57943"},{"messageId":"57938","fix":"64842","desc":"57940"},{"messageId":"57941","fix":"64843","desc":"57943"},{"messageId":"57938","fix":"64844","desc":"57940"},{"messageId":"57941","fix":"64845","desc":"57943"},{"messageId":"57938","fix":"64846","desc":"57940"},{"messageId":"57941","fix":"64847","desc":"57943"},{"messageId":"57938","fix":"64848","desc":"57940"},{"messageId":"57941","fix":"64849","desc":"57943"},{"messageId":"57938","fix":"64850","desc":"57940"},{"messageId":"57941","fix":"64851","desc":"57943"},{"messageId":"57938","fix":"64852","desc":"57940"},{"messageId":"57941","fix":"64853","desc":"57943"},{"messageId":"57938","fix":"64854","desc":"57940"},{"messageId":"57941","fix":"64855","desc":"57943"},{"messageId":"57938","fix":"64856","desc":"57940"},{"messageId":"57941","fix":"64857","desc":"57943"},{"messageId":"57938","fix":"64858","desc":"57940"},{"messageId":"57941","fix":"64859","desc":"57943"},{"messageId":"57938","fix":"64860","desc":"57940"},{"messageId":"57941","fix":"64861","desc":"57943"},{"messageId":"57938","fix":"64862","desc":"57940"},{"messageId":"57941","fix":"64863","desc":"57943"},{"messageId":"57938","fix":"64864","desc":"57940"},{"messageId":"57941","fix":"64865","desc":"57943"},{"messageId":"57938","fix":"64866","desc":"57940"},{"messageId":"57941","fix":"64867","desc":"57943"},{"messageId":"57938","fix":"64868","desc":"57940"},{"messageId":"57941","fix":"64869","desc":"57943"},{"messageId":"57938","fix":"64870","desc":"57940"},{"messageId":"57941","fix":"64871","desc":"57943"},{"messageId":"57938","fix":"64872","desc":"57940"},{"messageId":"57941","fix":"64873","desc":"57943"},{"messageId":"57938","fix":"64874","desc":"57940"},{"messageId":"57941","fix":"64875","desc":"57943"},{"messageId":"57938","fix":"64876","desc":"57940"},{"messageId":"57941","fix":"64877","desc":"57943"},{"messageId":"57938","fix":"64878","desc":"57940"},{"messageId":"57941","fix":"64879","desc":"57943"},{"messageId":"57938","fix":"64880","desc":"57940"},{"messageId":"57941","fix":"64881","desc":"57943"},{"messageId":"57938","fix":"64882","desc":"57940"},{"messageId":"57941","fix":"64883","desc":"57943"},{"messageId":"57938","fix":"64884","desc":"57940"},{"messageId":"57941","fix":"64885","desc":"57943"},{"messageId":"57938","fix":"64886","desc":"57940"},{"messageId":"57941","fix":"64887","desc":"57943"},{"messageId":"57938","fix":"64888","desc":"57940"},{"messageId":"57941","fix":"64889","desc":"57943"},{"messageId":"57938","fix":"64890","desc":"57940"},{"messageId":"57941","fix":"64891","desc":"57943"},{"messageId":"57938","fix":"64892","desc":"57940"},{"messageId":"57941","fix":"64893","desc":"57943"},{"messageId":"57938","fix":"64894","desc":"57940"},{"messageId":"57941","fix":"64895","desc":"57943"},{"messageId":"57938","fix":"64896","desc":"57940"},{"messageId":"57941","fix":"64897","desc":"57943"},{"messageId":"57938","fix":"64898","desc":"57940"},{"messageId":"57941","fix":"64899","desc":"57943"},{"messageId":"57938","fix":"64900","desc":"57940"},{"messageId":"57941","fix":"64901","desc":"57943"},{"messageId":"57938","fix":"64902","desc":"57940"},{"messageId":"57941","fix":"64903","desc":"57943"},{"messageId":"57938","fix":"64904","desc":"57940"},{"messageId":"57941","fix":"64905","desc":"57943"},{"messageId":"57938","fix":"64906","desc":"57940"},{"messageId":"57941","fix":"64907","desc":"57943"},{"messageId":"57938","fix":"64908","desc":"57940"},{"messageId":"57941","fix":"64909","desc":"57943"},{"messageId":"57938","fix":"64910","desc":"57940"},{"messageId":"57941","fix":"64911","desc":"57943"},{"messageId":"57938","fix":"64912","desc":"57940"},{"messageId":"57941","fix":"64913","desc":"57943"},{"messageId":"57938","fix":"64914","desc":"57940"},{"messageId":"57941","fix":"64915","desc":"57943"},{"messageId":"57938","fix":"64916","desc":"57940"},{"messageId":"57941","fix":"64917","desc":"57943"},{"messageId":"57938","fix":"64918","desc":"57940"},{"messageId":"57941","fix":"64919","desc":"57943"},{"messageId":"57938","fix":"64920","desc":"57940"},{"messageId":"57941","fix":"64921","desc":"57943"},{"messageId":"57938","fix":"64922","desc":"57940"},{"messageId":"57941","fix":"64923","desc":"57943"},{"messageId":"57938","fix":"64924","desc":"57940"},{"messageId":"57941","fix":"64925","desc":"57943"},{"messageId":"57938","fix":"64926","desc":"57940"},{"messageId":"57941","fix":"64927","desc":"57943"},{"messageId":"57938","fix":"64928","desc":"57940"},{"messageId":"57941","fix":"64929","desc":"57943"},{"messageId":"57938","fix":"64930","desc":"57940"},{"messageId":"57941","fix":"64931","desc":"57943"},{"messageId":"57938","fix":"64932","desc":"57940"},{"messageId":"57941","fix":"64933","desc":"57943"},{"messageId":"57938","fix":"64934","desc":"57940"},{"messageId":"57941","fix":"64935","desc":"57943"},{"messageId":"57938","fix":"64936","desc":"57940"},{"messageId":"57941","fix":"64937","desc":"57943"},{"messageId":"57938","fix":"64938","desc":"57940"},{"messageId":"57941","fix":"64939","desc":"57943"},{"messageId":"57938","fix":"64940","desc":"57940"},{"messageId":"57941","fix":"64941","desc":"57943"},{"messageId":"57938","fix":"64942","desc":"57940"},{"messageId":"57941","fix":"64943","desc":"57943"},{"messageId":"57938","fix":"64944","desc":"57940"},{"messageId":"57941","fix":"64945","desc":"57943"},{"messageId":"57938","fix":"64946","desc":"57940"},{"messageId":"57941","fix":"64947","desc":"57943"},{"messageId":"57938","fix":"64948","desc":"57940"},{"messageId":"57941","fix":"64949","desc":"57943"},{"messageId":"57938","fix":"64950","desc":"57940"},{"messageId":"57941","fix":"64951","desc":"57943"},{"messageId":"57938","fix":"64952","desc":"57940"},{"messageId":"57941","fix":"64953","desc":"57943"},{"messageId":"57938","fix":"64954","desc":"57940"},{"messageId":"57941","fix":"64955","desc":"57943"},{"messageId":"57938","fix":"64956","desc":"57940"},{"messageId":"57941","fix":"64957","desc":"57943"},{"messageId":"57938","fix":"64958","desc":"57940"},{"messageId":"57941","fix":"64959","desc":"57943"},{"messageId":"57938","fix":"64960","desc":"57940"},{"messageId":"57941","fix":"64961","desc":"57943"},{"messageId":"57938","fix":"64962","desc":"57940"},{"messageId":"57941","fix":"64963","desc":"57943"},{"messageId":"57938","fix":"64964","desc":"57940"},{"messageId":"57941","fix":"64965","desc":"57943"},{"messageId":"57938","fix":"64966","desc":"57940"},{"messageId":"57941","fix":"64967","desc":"57943"},{"messageId":"57938","fix":"64968","desc":"57940"},{"messageId":"57941","fix":"64969","desc":"57943"},{"messageId":"57938","fix":"64970","desc":"57940"},{"messageId":"57941","fix":"64971","desc":"57943"},{"messageId":"57938","fix":"64972","desc":"57940"},{"messageId":"57941","fix":"64973","desc":"57943"},{"messageId":"57938","fix":"64974","desc":"57940"},{"messageId":"57941","fix":"64975","desc":"57943"},{"messageId":"57938","fix":"64976","desc":"57940"},{"messageId":"57941","fix":"64977","desc":"57943"},{"messageId":"57938","fix":"64978","desc":"57940"},{"messageId":"57941","fix":"64979","desc":"57943"},{"messageId":"57938","fix":"64980","desc":"57940"},{"messageId":"57941","fix":"64981","desc":"57943"},{"messageId":"57938","fix":"64982","desc":"57940"},{"messageId":"57941","fix":"64983","desc":"57943"},{"messageId":"57938","fix":"64984","desc":"57940"},{"messageId":"57941","fix":"64985","desc":"57943"},{"messageId":"57938","fix":"64986","desc":"57940"},{"messageId":"57941","fix":"64987","desc":"57943"},{"messageId":"57938","fix":"64988","desc":"57940"},{"messageId":"57941","fix":"64989","desc":"57943"},{"messageId":"57938","fix":"64990","desc":"57940"},{"messageId":"57941","fix":"64991","desc":"57943"},{"messageId":"57938","fix":"64992","desc":"57940"},{"messageId":"57941","fix":"64993","desc":"57943"},{"messageId":"57938","fix":"64994","desc":"57940"},{"messageId":"57941","fix":"64995","desc":"57943"},{"messageId":"57938","fix":"64996","desc":"57940"},{"messageId":"57941","fix":"64997","desc":"57943"},{"messageId":"57938","fix":"64998","desc":"57940"},{"messageId":"57941","fix":"64999","desc":"57943"},{"messageId":"57938","fix":"65000","desc":"57940"},{"messageId":"57941","fix":"65001","desc":"57943"},{"messageId":"57938","fix":"65002","desc":"57940"},{"messageId":"57941","fix":"65003","desc":"57943"},{"messageId":"57938","fix":"65004","desc":"57940"},{"messageId":"57941","fix":"65005","desc":"57943"},{"messageId":"57938","fix":"65006","desc":"57940"},{"messageId":"57941","fix":"65007","desc":"57943"},{"messageId":"57938","fix":"65008","desc":"57940"},{"messageId":"57941","fix":"65009","desc":"57943"},{"messageId":"57938","fix":"65010","desc":"57940"},{"messageId":"57941","fix":"65011","desc":"57943"},{"messageId":"57938","fix":"65012","desc":"57940"},{"messageId":"57941","fix":"65013","desc":"57943"},{"messageId":"57938","fix":"65014","desc":"57940"},{"messageId":"57941","fix":"65015","desc":"57943"},{"messageId":"57938","fix":"65016","desc":"57940"},{"messageId":"57941","fix":"65017","desc":"57943"},{"messageId":"57938","fix":"65018","desc":"57940"},{"messageId":"57941","fix":"65019","desc":"57943"},{"messageId":"57938","fix":"65020","desc":"57940"},{"messageId":"57941","fix":"65021","desc":"57943"},{"messageId":"57938","fix":"65022","desc":"57940"},{"messageId":"57941","fix":"65023","desc":"57943"},{"messageId":"57938","fix":"65024","desc":"57940"},{"messageId":"57941","fix":"65025","desc":"57943"},{"messageId":"57938","fix":"65026","desc":"57940"},{"messageId":"57941","fix":"65027","desc":"57943"},{"messageId":"57938","fix":"65028","desc":"57940"},{"messageId":"57941","fix":"65029","desc":"57943"},{"messageId":"57938","fix":"65030","desc":"57940"},{"messageId":"57941","fix":"65031","desc":"57943"},{"messageId":"57938","fix":"65032","desc":"57940"},{"messageId":"57941","fix":"65033","desc":"57943"},{"messageId":"57938","fix":"65034","desc":"57940"},{"messageId":"57941","fix":"65035","desc":"57943"},{"messageId":"57938","fix":"65036","desc":"57940"},{"messageId":"57941","fix":"65037","desc":"57943"},{"messageId":"57938","fix":"65038","desc":"57940"},{"messageId":"57941","fix":"65039","desc":"57943"},{"messageId":"57938","fix":"65040","desc":"57940"},{"messageId":"57941","fix":"65041","desc":"57943"},{"messageId":"57938","fix":"65042","desc":"57940"},{"messageId":"57941","fix":"65043","desc":"57943"},{"messageId":"57938","fix":"65044","desc":"57940"},{"messageId":"57941","fix":"65045","desc":"57943"},{"messageId":"57938","fix":"65046","desc":"57940"},{"messageId":"57941","fix":"65047","desc":"57943"},{"messageId":"57938","fix":"65048","desc":"57940"},{"messageId":"57941","fix":"65049","desc":"57943"},{"messageId":"57938","fix":"65050","desc":"57940"},{"messageId":"57941","fix":"65051","desc":"57943"},{"messageId":"57938","fix":"65052","desc":"57940"},{"messageId":"57941","fix":"65053","desc":"57943"},{"messageId":"57938","fix":"65054","desc":"57940"},{"messageId":"57941","fix":"65055","desc":"57943"},{"messageId":"57938","fix":"65056","desc":"57940"},{"messageId":"57941","fix":"65057","desc":"57943"},{"messageId":"57938","fix":"65058","desc":"57940"},{"messageId":"57941","fix":"65059","desc":"57943"},{"messageId":"57938","fix":"65060","desc":"57940"},{"messageId":"57941","fix":"65061","desc":"57943"},{"messageId":"57938","fix":"65062","desc":"57940"},{"messageId":"57941","fix":"65063","desc":"57943"},{"messageId":"57938","fix":"65064","desc":"57940"},{"messageId":"57941","fix":"65065","desc":"57943"},{"messageId":"57938","fix":"65066","desc":"57940"},{"messageId":"57941","fix":"65067","desc":"57943"},{"messageId":"57938","fix":"65068","desc":"57940"},{"messageId":"57941","fix":"65069","desc":"57943"},{"messageId":"57938","fix":"65070","desc":"57940"},{"messageId":"57941","fix":"65071","desc":"57943"},{"messageId":"57938","fix":"65072","desc":"57940"},{"messageId":"57941","fix":"65073","desc":"57943"},{"messageId":"57938","fix":"65074","desc":"57940"},{"messageId":"57941","fix":"65075","desc":"57943"},{"messageId":"57938","fix":"65076","desc":"57940"},{"messageId":"57941","fix":"65077","desc":"57943"},{"messageId":"57938","fix":"65078","desc":"57940"},{"messageId":"57941","fix":"65079","desc":"57943"},{"messageId":"57938","fix":"65080","desc":"57940"},{"messageId":"57941","fix":"65081","desc":"57943"},{"messageId":"57938","fix":"65082","desc":"57940"},{"messageId":"57941","fix":"65083","desc":"57943"},{"messageId":"57938","fix":"65084","desc":"57940"},{"messageId":"57941","fix":"65085","desc":"57943"},{"messageId":"57938","fix":"65086","desc":"57940"},{"messageId":"57941","fix":"65087","desc":"57943"},{"messageId":"57938","fix":"65088","desc":"57940"},{"messageId":"57941","fix":"65089","desc":"57943"},{"messageId":"57938","fix":"65090","desc":"57940"},{"messageId":"57941","fix":"65091","desc":"57943"},{"messageId":"57938","fix":"65092","desc":"57940"},{"messageId":"57941","fix":"65093","desc":"57943"},{"messageId":"57938","fix":"65094","desc":"57940"},{"messageId":"57941","fix":"65095","desc":"57943"},{"messageId":"57938","fix":"65096","desc":"57940"},{"messageId":"57941","fix":"65097","desc":"57943"},{"messageId":"57938","fix":"65098","desc":"57940"},{"messageId":"57941","fix":"65099","desc":"57943"},{"messageId":"57938","fix":"65100","desc":"57940"},{"messageId":"57941","fix":"65101","desc":"57943"},{"messageId":"57938","fix":"65102","desc":"57940"},{"messageId":"57941","fix":"65103","desc":"57943"},{"messageId":"57938","fix":"65104","desc":"57940"},{"messageId":"57941","fix":"65105","desc":"57943"},{"messageId":"57938","fix":"65106","desc":"57940"},{"messageId":"57941","fix":"65107","desc":"57943"},{"messageId":"57938","fix":"65108","desc":"57940"},{"messageId":"57941","fix":"65109","desc":"57943"},{"messageId":"57938","fix":"65110","desc":"57940"},{"messageId":"57941","fix":"65111","desc":"57943"},{"messageId":"57938","fix":"65112","desc":"57940"},{"messageId":"57941","fix":"65113","desc":"57943"},{"messageId":"57938","fix":"65114","desc":"57940"},{"messageId":"57941","fix":"65115","desc":"57943"},{"messageId":"57938","fix":"65116","desc":"57940"},{"messageId":"57941","fix":"65117","desc":"57943"},{"messageId":"57938","fix":"65118","desc":"57940"},{"messageId":"57941","fix":"65119","desc":"57943"},{"messageId":"57938","fix":"65120","desc":"57940"},{"messageId":"57941","fix":"65121","desc":"57943"},{"messageId":"57938","fix":"65122","desc":"57940"},{"messageId":"57941","fix":"65123","desc":"57943"},{"messageId":"57938","fix":"65124","desc":"57940"},{"messageId":"57941","fix":"65125","desc":"57943"},{"messageId":"57938","fix":"65126","desc":"57940"},{"messageId":"57941","fix":"65127","desc":"57943"},{"messageId":"57938","fix":"65128","desc":"57940"},{"messageId":"57941","fix":"65129","desc":"57943"},{"messageId":"57938","fix":"65130","desc":"57940"},{"messageId":"57941","fix":"65131","desc":"57943"},{"messageId":"57938","fix":"65132","desc":"57940"},{"messageId":"57941","fix":"65133","desc":"57943"},{"messageId":"57938","fix":"65134","desc":"57940"},{"messageId":"57941","fix":"65135","desc":"57943"},{"messageId":"57938","fix":"65136","desc":"57940"},{"messageId":"57941","fix":"65137","desc":"57943"},{"messageId":"57938","fix":"65138","desc":"57940"},{"messageId":"57941","fix":"65139","desc":"57943"},{"messageId":"57938","fix":"65140","desc":"57940"},{"messageId":"57941","fix":"65141","desc":"57943"},{"messageId":"57938","fix":"65142","desc":"57940"},{"messageId":"57941","fix":"65143","desc":"57943"},{"messageId":"57938","fix":"65144","desc":"57940"},{"messageId":"57941","fix":"65145","desc":"57943"},{"messageId":"57938","fix":"65146","desc":"57940"},{"messageId":"57941","fix":"65147","desc":"57943"},{"messageId":"57938","fix":"65148","desc":"57940"},{"messageId":"57941","fix":"65149","desc":"57943"},{"messageId":"57938","fix":"65150","desc":"57940"},{"messageId":"57941","fix":"65151","desc":"57943"},{"messageId":"57938","fix":"65152","desc":"57940"},{"messageId":"57941","fix":"65153","desc":"57943"},{"messageId":"57938","fix":"65154","desc":"57940"},{"messageId":"57941","fix":"65155","desc":"57943"},{"messageId":"57938","fix":"65156","desc":"57940"},{"messageId":"57941","fix":"65157","desc":"57943"},{"messageId":"57938","fix":"65158","desc":"57940"},{"messageId":"57941","fix":"65159","desc":"57943"},{"messageId":"57938","fix":"65160","desc":"57940"},{"messageId":"57941","fix":"65161","desc":"57943"},{"messageId":"57938","fix":"65162","desc":"57940"},{"messageId":"57941","fix":"65163","desc":"57943"},{"messageId":"57938","fix":"65164","desc":"57940"},{"messageId":"57941","fix":"65165","desc":"57943"},{"messageId":"57938","fix":"65166","desc":"57940"},{"messageId":"57941","fix":"65167","desc":"57943"},{"messageId":"57938","fix":"65168","desc":"57940"},{"messageId":"57941","fix":"65169","desc":"57943"},{"messageId":"57938","fix":"65170","desc":"57940"},{"messageId":"57941","fix":"65171","desc":"57943"},{"messageId":"57938","fix":"65172","desc":"57940"},{"messageId":"57941","fix":"65173","desc":"57943"},{"messageId":"57938","fix":"65174","desc":"57940"},{"messageId":"57941","fix":"65175","desc":"57943"},{"messageId":"57938","fix":"65176","desc":"57940"},{"messageId":"57941","fix":"65177","desc":"57943"},{"messageId":"57938","fix":"65178","desc":"57940"},{"messageId":"57941","fix":"65179","desc":"57943"},{"messageId":"57938","fix":"65180","desc":"57940"},{"messageId":"57941","fix":"65181","desc":"57943"},{"messageId":"57938","fix":"65182","desc":"57940"},{"messageId":"57941","fix":"65183","desc":"57943"},{"messageId":"57938","fix":"65184","desc":"57940"},{"messageId":"57941","fix":"65185","desc":"57943"},{"messageId":"57938","fix":"65186","desc":"57940"},{"messageId":"57941","fix":"65187","desc":"57943"},{"messageId":"57938","fix":"65188","desc":"57940"},{"messageId":"57941","fix":"65189","desc":"57943"},{"messageId":"57938","fix":"65190","desc":"57940"},{"messageId":"57941","fix":"65191","desc":"57943"},{"messageId":"57938","fix":"65192","desc":"57940"},{"messageId":"57941","fix":"65193","desc":"57943"},{"messageId":"57938","fix":"65194","desc":"57940"},{"messageId":"57941","fix":"65195","desc":"57943"},{"messageId":"57938","fix":"65196","desc":"57940"},{"messageId":"57941","fix":"65197","desc":"57943"},{"messageId":"57938","fix":"65198","desc":"57940"},{"messageId":"57941","fix":"65199","desc":"57943"},{"messageId":"57938","fix":"65200","desc":"57940"},{"messageId":"57941","fix":"65201","desc":"57943"},{"messageId":"57938","fix":"65202","desc":"57940"},{"messageId":"57941","fix":"65203","desc":"57943"},{"messageId":"57938","fix":"65204","desc":"57940"},{"messageId":"57941","fix":"65205","desc":"57943"},{"messageId":"57938","fix":"65206","desc":"57940"},{"messageId":"57941","fix":"65207","desc":"57943"},{"messageId":"57938","fix":"65208","desc":"57940"},{"messageId":"57941","fix":"65209","desc":"57943"},{"messageId":"57938","fix":"65210","desc":"57940"},{"messageId":"57941","fix":"65211","desc":"57943"},{"messageId":"57938","fix":"65212","desc":"57940"},{"messageId":"57941","fix":"65213","desc":"57943"},{"messageId":"57938","fix":"65214","desc":"57940"},{"messageId":"57941","fix":"65215","desc":"57943"},{"messageId":"57938","fix":"65216","desc":"57940"},{"messageId":"57941","fix":"65217","desc":"57943"},{"messageId":"57938","fix":"65218","desc":"57940"},{"messageId":"57941","fix":"65219","desc":"57943"},{"messageId":"57938","fix":"65220","desc":"57940"},{"messageId":"57941","fix":"65221","desc":"57943"},{"messageId":"57938","fix":"65222","desc":"57940"},{"messageId":"57941","fix":"65223","desc":"57943"},{"messageId":"57938","fix":"65224","desc":"57940"},{"messageId":"57941","fix":"65225","desc":"57943"},{"messageId":"57938","fix":"65226","desc":"57940"},{"messageId":"57941","fix":"65227","desc":"57943"},{"messageId":"57938","fix":"65228","desc":"57940"},{"messageId":"57941","fix":"65229","desc":"57943"},{"messageId":"57938","fix":"65230","desc":"57940"},{"messageId":"57941","fix":"65231","desc":"57943"},{"messageId":"57938","fix":"65232","desc":"57940"},{"messageId":"57941","fix":"65233","desc":"57943"},{"messageId":"57938","fix":"65234","desc":"57940"},{"messageId":"57941","fix":"65235","desc":"57943"},{"messageId":"57938","fix":"65236","desc":"57940"},{"messageId":"57941","fix":"65237","desc":"57943"},{"messageId":"57938","fix":"65238","desc":"57940"},{"messageId":"57941","fix":"65239","desc":"57943"},{"messageId":"57938","fix":"65240","desc":"57940"},{"messageId":"57941","fix":"65241","desc":"57943"},{"messageId":"57938","fix":"65242","desc":"57940"},{"messageId":"57941","fix":"65243","desc":"57943"},{"messageId":"57938","fix":"65244","desc":"57940"},{"messageId":"57941","fix":"65245","desc":"57943"},{"messageId":"57938","fix":"65246","desc":"57940"},{"messageId":"57941","fix":"65247","desc":"57943"},{"messageId":"57938","fix":"65248","desc":"57940"},{"messageId":"57941","fix":"65249","desc":"57943"},{"messageId":"57938","fix":"65250","desc":"57940"},{"messageId":"57941","fix":"65251","desc":"57943"},{"messageId":"57938","fix":"65252","desc":"57940"},{"messageId":"57941","fix":"65253","desc":"57943"},{"messageId":"57938","fix":"65254","desc":"57940"},{"messageId":"57941","fix":"65255","desc":"57943"},{"messageId":"57938","fix":"65256","desc":"57940"},{"messageId":"57941","fix":"65257","desc":"57943"},{"messageId":"57938","fix":"65258","desc":"57940"},{"messageId":"57941","fix":"65259","desc":"57943"},{"messageId":"57938","fix":"65260","desc":"57940"},{"messageId":"57941","fix":"65261","desc":"57943"},{"messageId":"57938","fix":"65262","desc":"57940"},{"messageId":"57941","fix":"65263","desc":"57943"},{"messageId":"57938","fix":"65264","desc":"57940"},{"messageId":"57941","fix":"65265","desc":"57943"},{"messageId":"57938","fix":"65266","desc":"57940"},{"messageId":"57941","fix":"65267","desc":"57943"},{"messageId":"57938","fix":"65268","desc":"57940"},{"messageId":"57941","fix":"65269","desc":"57943"},{"messageId":"57938","fix":"65270","desc":"57940"},{"messageId":"57941","fix":"65271","desc":"57943"},{"messageId":"57938","fix":"65272","desc":"57940"},{"messageId":"57941","fix":"65273","desc":"57943"},{"messageId":"57938","fix":"65274","desc":"57940"},{"messageId":"57941","fix":"65275","desc":"57943"},{"messageId":"57938","fix":"65276","desc":"57940"},{"messageId":"57941","fix":"65277","desc":"57943"},{"messageId":"57938","fix":"65278","desc":"57940"},{"messageId":"57941","fix":"65279","desc":"57943"},{"messageId":"57938","fix":"65280","desc":"57940"},{"messageId":"57941","fix":"65281","desc":"57943"},{"messageId":"57938","fix":"65282","desc":"57940"},{"messageId":"57941","fix":"65283","desc":"57943"},{"messageId":"57938","fix":"65284","desc":"57940"},{"messageId":"57941","fix":"65285","desc":"57943"},{"messageId":"57938","fix":"65286","desc":"57940"},{"messageId":"57941","fix":"65287","desc":"57943"},{"messageId":"57938","fix":"65288","desc":"57940"},{"messageId":"57941","fix":"65289","desc":"57943"},{"messageId":"57938","fix":"65290","desc":"57940"},{"messageId":"57941","fix":"65291","desc":"57943"},{"messageId":"57938","fix":"65292","desc":"57940"},{"messageId":"57941","fix":"65293","desc":"57943"},{"messageId":"57938","fix":"65294","desc":"57940"},{"messageId":"57941","fix":"65295","desc":"57943"},{"messageId":"57938","fix":"65296","desc":"57940"},{"messageId":"57941","fix":"65297","desc":"57943"},{"messageId":"57938","fix":"65298","desc":"57940"},{"messageId":"57941","fix":"65299","desc":"57943"},{"messageId":"57938","fix":"65300","desc":"57940"},{"messageId":"57941","fix":"65301","desc":"57943"},{"messageId":"57938","fix":"65302","desc":"57940"},{"messageId":"57941","fix":"65303","desc":"57943"},{"messageId":"57938","fix":"65304","desc":"57940"},{"messageId":"57941","fix":"65305","desc":"57943"},{"messageId":"57938","fix":"65306","desc":"57940"},{"messageId":"57941","fix":"65307","desc":"57943"},{"messageId":"57938","fix":"65308","desc":"57940"},{"messageId":"57941","fix":"65309","desc":"57943"},{"messageId":"57938","fix":"65310","desc":"57940"},{"messageId":"57941","fix":"65311","desc":"57943"},{"messageId":"57938","fix":"65312","desc":"57940"},{"messageId":"57941","fix":"65313","desc":"57943"},{"messageId":"57938","fix":"65314","desc":"57940"},{"messageId":"57941","fix":"65315","desc":"57943"},{"messageId":"57938","fix":"65316","desc":"57940"},{"messageId":"57941","fix":"65317","desc":"57943"},{"messageId":"57938","fix":"65318","desc":"57940"},{"messageId":"57941","fix":"65319","desc":"57943"},{"messageId":"57938","fix":"65320","desc":"57940"},{"messageId":"57941","fix":"65321","desc":"57943"},{"messageId":"57938","fix":"65322","desc":"57940"},{"messageId":"57941","fix":"65323","desc":"57943"},{"messageId":"57938","fix":"65324","desc":"57940"},{"messageId":"57941","fix":"65325","desc":"57943"},{"messageId":"57938","fix":"65326","desc":"57940"},{"messageId":"57941","fix":"65327","desc":"57943"},{"messageId":"57938","fix":"65328","desc":"57940"},{"messageId":"57941","fix":"65329","desc":"57943"},{"messageId":"57938","fix":"65330","desc":"57940"},{"messageId":"57941","fix":"65331","desc":"57943"},{"messageId":"57938","fix":"65332","desc":"57940"},{"messageId":"57941","fix":"65333","desc":"57943"},{"messageId":"57938","fix":"65334","desc":"57940"},{"messageId":"57941","fix":"65335","desc":"57943"},{"messageId":"57938","fix":"65336","desc":"57940"},{"messageId":"57941","fix":"65337","desc":"57943"},{"messageId":"57938","fix":"65338","desc":"57940"},{"messageId":"57941","fix":"65339","desc":"57943"},{"messageId":"57938","fix":"65340","desc":"57940"},{"messageId":"57941","fix":"65341","desc":"57943"},{"messageId":"57938","fix":"65342","desc":"57940"},{"messageId":"57941","fix":"65343","desc":"57943"},{"messageId":"57938","fix":"65344","desc":"57940"},{"messageId":"57941","fix":"65345","desc":"57943"},{"messageId":"57938","fix":"65346","desc":"57940"},{"messageId":"57941","fix":"65347","desc":"57943"},{"messageId":"57938","fix":"65348","desc":"57940"},{"messageId":"57941","fix":"65349","desc":"57943"},{"messageId":"57938","fix":"65350","desc":"57940"},{"messageId":"57941","fix":"65351","desc":"57943"},{"messageId":"57938","fix":"65352","desc":"57940"},{"messageId":"57941","fix":"65353","desc":"57943"},{"messageId":"57938","fix":"65354","desc":"57940"},{"messageId":"57941","fix":"65355","desc":"57943"},{"messageId":"57938","fix":"65356","desc":"57940"},{"messageId":"57941","fix":"65357","desc":"57943"},{"messageId":"57938","fix":"65358","desc":"57940"},{"messageId":"57941","fix":"65359","desc":"57943"},{"messageId":"57938","fix":"65360","desc":"57940"},{"messageId":"57941","fix":"65361","desc":"57943"},{"messageId":"57938","fix":"65362","desc":"57940"},{"messageId":"57941","fix":"65363","desc":"57943"},{"messageId":"57938","fix":"65364","desc":"57940"},{"messageId":"57941","fix":"65365","desc":"57943"},{"messageId":"57938","fix":"65366","desc":"57940"},{"messageId":"57941","fix":"65367","desc":"57943"},{"messageId":"57938","fix":"65368","desc":"57940"},{"messageId":"57941","fix":"65369","desc":"57943"},{"messageId":"57938","fix":"65370","desc":"57940"},{"messageId":"57941","fix":"65371","desc":"57943"},{"messageId":"57938","fix":"65372","desc":"57940"},{"messageId":"57941","fix":"65373","desc":"57943"},{"messageId":"57938","fix":"65374","desc":"57940"},{"messageId":"57941","fix":"65375","desc":"57943"},{"messageId":"57938","fix":"65376","desc":"57940"},{"messageId":"57941","fix":"65377","desc":"57943"},{"messageId":"57938","fix":"65378","desc":"57940"},{"messageId":"57941","fix":"65379","desc":"57943"},{"messageId":"57938","fix":"65380","desc":"57940"},{"messageId":"57941","fix":"65381","desc":"57943"},{"messageId":"57938","fix":"65382","desc":"57940"},{"messageId":"57941","fix":"65383","desc":"57943"},{"messageId":"57938","fix":"65384","desc":"57940"},{"messageId":"57941","fix":"65385","desc":"57943"},{"messageId":"57938","fix":"65386","desc":"57940"},{"messageId":"57941","fix":"65387","desc":"57943"},{"messageId":"57938","fix":"65388","desc":"57940"},{"messageId":"57941","fix":"65389","desc":"57943"},{"messageId":"57938","fix":"65390","desc":"57940"},{"messageId":"57941","fix":"65391","desc":"57943"},{"messageId":"57938","fix":"65392","desc":"57940"},{"messageId":"57941","fix":"65393","desc":"57943"},{"messageId":"57938","fix":"65394","desc":"57940"},{"messageId":"57941","fix":"65395","desc":"57943"},{"messageId":"57938","fix":"65396","desc":"57940"},{"messageId":"57941","fix":"65397","desc":"57943"},{"messageId":"57938","fix":"65398","desc":"57940"},{"messageId":"57941","fix":"65399","desc":"57943"},{"messageId":"57938","fix":"65400","desc":"57940"},{"messageId":"57941","fix":"65401","desc":"57943"},{"messageId":"57938","fix":"65402","desc":"57940"},{"messageId":"57941","fix":"65403","desc":"57943"},{"messageId":"57938","fix":"65404","desc":"57940"},{"messageId":"57941","fix":"65405","desc":"57943"},{"messageId":"57938","fix":"65406","desc":"57940"},{"messageId":"57941","fix":"65407","desc":"57943"},{"messageId":"57938","fix":"65408","desc":"57940"},{"messageId":"57941","fix":"65409","desc":"57943"},{"messageId":"57938","fix":"65410","desc":"57940"},{"messageId":"57941","fix":"65411","desc":"57943"},{"messageId":"57938","fix":"65412","desc":"57940"},{"messageId":"57941","fix":"65413","desc":"57943"},{"messageId":"57938","fix":"65414","desc":"57940"},{"messageId":"57941","fix":"65415","desc":"57943"},{"messageId":"57938","fix":"65416","desc":"57940"},{"messageId":"57941","fix":"65417","desc":"57943"},{"messageId":"57938","fix":"65418","desc":"57940"},{"messageId":"57941","fix":"65419","desc":"57943"},{"messageId":"57938","fix":"65420","desc":"57940"},{"messageId":"57941","fix":"65421","desc":"57943"},{"messageId":"57938","fix":"65422","desc":"57940"},{"messageId":"57941","fix":"65423","desc":"57943"},{"messageId":"57938","fix":"65424","desc":"57940"},{"messageId":"57941","fix":"65425","desc":"57943"},{"messageId":"57938","fix":"65426","desc":"57940"},{"messageId":"57941","fix":"65427","desc":"57943"},{"messageId":"57938","fix":"65428","desc":"57940"},{"messageId":"57941","fix":"65429","desc":"57943"},{"messageId":"57938","fix":"65430","desc":"57940"},{"messageId":"57941","fix":"65431","desc":"57943"},{"messageId":"57938","fix":"65432","desc":"57940"},{"messageId":"57941","fix":"65433","desc":"57943"},{"messageId":"57938","fix":"65434","desc":"57940"},{"messageId":"57941","fix":"65435","desc":"57943"},{"messageId":"57938","fix":"65436","desc":"57940"},{"messageId":"57941","fix":"65437","desc":"57943"},{"messageId":"57938","fix":"65438","desc":"57940"},{"messageId":"57941","fix":"65439","desc":"57943"},{"messageId":"57938","fix":"65440","desc":"57940"},{"messageId":"57941","fix":"65441","desc":"57943"},{"messageId":"57938","fix":"65442","desc":"57940"},{"messageId":"57941","fix":"65443","desc":"57943"},{"messageId":"57938","fix":"65444","desc":"57940"},{"messageId":"57941","fix":"65445","desc":"57943"},{"messageId":"57938","fix":"65446","desc":"57940"},{"messageId":"57941","fix":"65447","desc":"57943"},{"messageId":"57938","fix":"65448","desc":"57940"},{"messageId":"57941","fix":"65449","desc":"57943"},{"messageId":"57938","fix":"65450","desc":"57940"},{"messageId":"57941","fix":"65451","desc":"57943"},{"messageId":"57938","fix":"65452","desc":"57940"},{"messageId":"57941","fix":"65453","desc":"57943"},{"messageId":"57938","fix":"65454","desc":"57940"},{"messageId":"57941","fix":"65455","desc":"57943"},{"messageId":"57938","fix":"65456","desc":"57940"},{"messageId":"57941","fix":"65457","desc":"57943"},{"messageId":"57938","fix":"65458","desc":"57940"},{"messageId":"57941","fix":"65459","desc":"57943"},{"messageId":"57938","fix":"65460","desc":"57940"},{"messageId":"57941","fix":"65461","desc":"57943"},{"messageId":"57938","fix":"65462","desc":"57940"},{"messageId":"57941","fix":"65463","desc":"57943"},{"messageId":"57938","fix":"65464","desc":"57940"},{"messageId":"57941","fix":"65465","desc":"57943"},{"messageId":"57938","fix":"65466","desc":"57940"},{"messageId":"57941","fix":"65467","desc":"57943"},{"messageId":"57938","fix":"65468","desc":"57940"},{"messageId":"57941","fix":"65469","desc":"57943"},{"messageId":"57938","fix":"65470","desc":"57940"},{"messageId":"57941","fix":"65471","desc":"57943"},{"messageId":"57938","fix":"65472","desc":"57940"},{"messageId":"57941","fix":"65473","desc":"57943"},{"messageId":"57938","fix":"65474","desc":"57940"},{"messageId":"57941","fix":"65475","desc":"57943"},{"messageId":"57938","fix":"65476","desc":"57940"},{"messageId":"57941","fix":"65477","desc":"57943"},{"messageId":"57938","fix":"65478","desc":"57940"},{"messageId":"57941","fix":"65479","desc":"57943"},{"messageId":"57938","fix":"65480","desc":"57940"},{"messageId":"57941","fix":"65481","desc":"57943"},{"messageId":"57938","fix":"65482","desc":"57940"},{"messageId":"57941","fix":"65483","desc":"57943"},{"messageId":"57938","fix":"65484","desc":"57940"},{"messageId":"57941","fix":"65485","desc":"57943"},{"messageId":"57938","fix":"65486","desc":"57940"},{"messageId":"57941","fix":"65487","desc":"57943"},{"messageId":"57938","fix":"65488","desc":"57940"},{"messageId":"57941","fix":"65489","desc":"57943"},{"messageId":"57938","fix":"65490","desc":"57940"},{"messageId":"57941","fix":"65491","desc":"57943"},{"messageId":"57938","fix":"65492","desc":"57940"},{"messageId":"57941","fix":"65493","desc":"57943"},{"messageId":"57938","fix":"65494","desc":"57940"},{"messageId":"57941","fix":"65495","desc":"57943"},{"messageId":"57938","fix":"65496","desc":"57940"},{"messageId":"57941","fix":"65497","desc":"57943"},{"messageId":"57938","fix":"65498","desc":"57940"},{"messageId":"57941","fix":"65499","desc":"57943"},{"messageId":"57938","fix":"65500","desc":"57940"},{"messageId":"57941","fix":"65501","desc":"57943"},{"messageId":"57938","fix":"65502","desc":"57940"},{"messageId":"57941","fix":"65503","desc":"57943"},{"messageId":"57938","fix":"65504","desc":"57940"},{"messageId":"57941","fix":"65505","desc":"57943"},{"messageId":"57938","fix":"65506","desc":"57940"},{"messageId":"57941","fix":"65507","desc":"57943"},{"messageId":"57938","fix":"65508","desc":"57940"},{"messageId":"57941","fix":"65509","desc":"57943"},{"messageId":"57938","fix":"65510","desc":"57940"},{"messageId":"57941","fix":"65511","desc":"57943"},{"messageId":"57938","fix":"65512","desc":"57940"},{"messageId":"57941","fix":"65513","desc":"57943"},{"messageId":"57938","fix":"65514","desc":"57940"},{"messageId":"57941","fix":"65515","desc":"57943"},{"messageId":"57938","fix":"65516","desc":"57940"},{"messageId":"57941","fix":"65517","desc":"57943"},{"messageId":"57938","fix":"65518","desc":"57940"},{"messageId":"57941","fix":"65519","desc":"57943"},{"messageId":"57938","fix":"65520","desc":"57940"},{"messageId":"57941","fix":"65521","desc":"57943"},{"messageId":"57938","fix":"65522","desc":"57940"},{"messageId":"57941","fix":"65523","desc":"57943"},{"messageId":"57938","fix":"65524","desc":"57940"},{"messageId":"57941","fix":"65525","desc":"57943"},{"messageId":"57938","fix":"65526","desc":"57940"},{"messageId":"57941","fix":"65527","desc":"57943"},{"messageId":"57938","fix":"65528","desc":"57940"},{"messageId":"57941","fix":"65529","desc":"57943"},{"messageId":"57938","fix":"65530","desc":"57940"},{"messageId":"57941","fix":"65531","desc":"57943"},{"messageId":"57938","fix":"65532","desc":"57940"},{"messageId":"57941","fix":"65533","desc":"57943"},{"messageId":"57938","fix":"65534","desc":"57940"},{"messageId":"57941","fix":"65535","desc":"57943"},{"messageId":"57938","fix":"65536","desc":"57940"},{"messageId":"57941","fix":"65537","desc":"57943"},{"messageId":"57938","fix":"65538","desc":"57940"},{"messageId":"57941","fix":"65539","desc":"57943"},{"messageId":"57938","fix":"65540","desc":"57940"},{"messageId":"57941","fix":"65541","desc":"57943"},{"messageId":"57938","fix":"65542","desc":"57940"},{"messageId":"57941","fix":"65543","desc":"57943"},{"messageId":"57938","fix":"65544","desc":"57940"},{"messageId":"57941","fix":"65545","desc":"57943"},{"messageId":"57938","fix":"65546","desc":"57940"},{"messageId":"57941","fix":"65547","desc":"57943"},{"messageId":"57938","fix":"65548","desc":"57940"},{"messageId":"57941","fix":"65549","desc":"57943"},{"messageId":"57938","fix":"65550","desc":"57940"},{"messageId":"57941","fix":"65551","desc":"57943"},{"messageId":"57938","fix":"65552","desc":"57940"},{"messageId":"57941","fix":"65553","desc":"57943"},{"messageId":"57938","fix":"65554","desc":"57940"},{"messageId":"57941","fix":"65555","desc":"57943"},{"messageId":"57938","fix":"65556","desc":"57940"},{"messageId":"57941","fix":"65557","desc":"57943"},{"messageId":"57938","fix":"65558","desc":"57940"},{"messageId":"57941","fix":"65559","desc":"57943"},{"messageId":"57938","fix":"65560","desc":"57940"},{"messageId":"57941","fix":"65561","desc":"57943"},{"messageId":"57938","fix":"65562","desc":"57940"},{"messageId":"57941","fix":"65563","desc":"57943"},{"messageId":"57938","fix":"65564","desc":"57940"},{"messageId":"57941","fix":"65565","desc":"57943"},{"messageId":"57938","fix":"65566","desc":"57940"},{"messageId":"57941","fix":"65567","desc":"57943"},{"messageId":"57938","fix":"65568","desc":"57940"},{"messageId":"57941","fix":"65569","desc":"57943"},{"messageId":"57938","fix":"65570","desc":"57940"},{"messageId":"57941","fix":"65571","desc":"57943"},{"messageId":"57938","fix":"65572","desc":"57940"},{"messageId":"57941","fix":"65573","desc":"57943"},{"messageId":"57938","fix":"65574","desc":"57940"},{"messageId":"57941","fix":"65575","desc":"57943"},{"messageId":"57938","fix":"65576","desc":"57940"},{"messageId":"57941","fix":"65577","desc":"57943"},{"messageId":"57938","fix":"65578","desc":"57940"},{"messageId":"57941","fix":"65579","desc":"57943"},{"messageId":"57938","fix":"65580","desc":"57940"},{"messageId":"57941","fix":"65581","desc":"57943"},{"messageId":"57938","fix":"65582","desc":"57940"},{"messageId":"57941","fix":"65583","desc":"57943"},{"messageId":"57938","fix":"65584","desc":"57940"},{"messageId":"57941","fix":"65585","desc":"57943"},{"messageId":"57938","fix":"65586","desc":"57940"},{"messageId":"57941","fix":"65587","desc":"57943"},{"messageId":"57938","fix":"65588","desc":"57940"},{"messageId":"57941","fix":"65589","desc":"57943"},{"messageId":"57938","fix":"65590","desc":"57940"},{"messageId":"57941","fix":"65591","desc":"57943"},{"messageId":"57938","fix":"65592","desc":"57940"},{"messageId":"57941","fix":"65593","desc":"57943"},{"messageId":"57938","fix":"65594","desc":"57940"},{"messageId":"57941","fix":"65595","desc":"57943"},{"messageId":"57938","fix":"65596","desc":"57940"},{"messageId":"57941","fix":"65597","desc":"57943"},{"messageId":"57938","fix":"65598","desc":"57940"},{"messageId":"57941","fix":"65599","desc":"57943"},{"messageId":"57938","fix":"65600","desc":"57940"},{"messageId":"57941","fix":"65601","desc":"57943"},{"messageId":"57938","fix":"65602","desc":"57940"},{"messageId":"57941","fix":"65603","desc":"57943"},{"messageId":"57938","fix":"65604","desc":"57940"},{"messageId":"57941","fix":"65605","desc":"57943"},{"messageId":"57938","fix":"65606","desc":"57940"},{"messageId":"57941","fix":"65607","desc":"57943"},{"messageId":"57938","fix":"65608","desc":"57940"},{"messageId":"57941","fix":"65609","desc":"57943"},{"messageId":"57938","fix":"65610","desc":"57940"},{"messageId":"57941","fix":"65611","desc":"57943"},{"messageId":"57938","fix":"65612","desc":"57940"},{"messageId":"57941","fix":"65613","desc":"57943"},{"messageId":"57938","fix":"65614","desc":"57940"},{"messageId":"57941","fix":"65615","desc":"57943"},{"messageId":"57938","fix":"65616","desc":"57940"},{"messageId":"57941","fix":"65617","desc":"57943"},{"messageId":"57938","fix":"65618","desc":"57940"},{"messageId":"57941","fix":"65619","desc":"57943"},{"messageId":"57938","fix":"65620","desc":"57940"},{"messageId":"57941","fix":"65621","desc":"57943"},{"messageId":"57938","fix":"65622","desc":"57940"},{"messageId":"57941","fix":"65623","desc":"57943"},{"messageId":"57938","fix":"65624","desc":"57940"},{"messageId":"57941","fix":"65625","desc":"57943"},{"messageId":"57938","fix":"65626","desc":"57940"},{"messageId":"57941","fix":"65627","desc":"57943"},{"messageId":"57938","fix":"65628","desc":"57940"},{"messageId":"57941","fix":"65629","desc":"57943"},{"messageId":"57938","fix":"65630","desc":"57940"},{"messageId":"57941","fix":"65631","desc":"57943"},{"messageId":"57938","fix":"65632","desc":"57940"},{"messageId":"57941","fix":"65633","desc":"57943"},{"messageId":"57938","fix":"65634","desc":"57940"},{"messageId":"57941","fix":"65635","desc":"57943"},{"messageId":"57938","fix":"65636","desc":"57940"},{"messageId":"57941","fix":"65637","desc":"57943"},{"messageId":"57938","fix":"65638","desc":"57940"},{"messageId":"57941","fix":"65639","desc":"57943"},{"messageId":"57938","fix":"65640","desc":"57940"},{"messageId":"57941","fix":"65641","desc":"57943"},{"messageId":"57938","fix":"65642","desc":"57940"},{"messageId":"57941","fix":"65643","desc":"57943"},{"messageId":"57938","fix":"65644","desc":"57940"},{"messageId":"57941","fix":"65645","desc":"57943"},{"messageId":"57938","fix":"65646","desc":"57940"},{"messageId":"57941","fix":"65647","desc":"57943"},{"messageId":"57938","fix":"65648","desc":"57940"},{"messageId":"57941","fix":"65649","desc":"57943"},{"messageId":"57938","fix":"65650","desc":"57940"},{"messageId":"57941","fix":"65651","desc":"57943"},{"messageId":"57938","fix":"65652","desc":"57940"},{"messageId":"57941","fix":"65653","desc":"57943"},{"messageId":"57938","fix":"65654","desc":"57940"},{"messageId":"57941","fix":"65655","desc":"57943"},{"messageId":"57938","fix":"65656","desc":"57940"},{"messageId":"57941","fix":"65657","desc":"57943"},{"messageId":"57938","fix":"65658","desc":"57940"},{"messageId":"57941","fix":"65659","desc":"57943"},{"messageId":"57938","fix":"65660","desc":"57940"},{"messageId":"57941","fix":"65661","desc":"57943"},{"messageId":"57938","fix":"65662","desc":"57940"},{"messageId":"57941","fix":"65663","desc":"57943"},{"messageId":"57938","fix":"65664","desc":"57940"},{"messageId":"57941","fix":"65665","desc":"57943"},{"messageId":"57938","fix":"65666","desc":"57940"},{"messageId":"57941","fix":"65667","desc":"57943"},{"messageId":"57938","fix":"65668","desc":"57940"},{"messageId":"57941","fix":"65669","desc":"57943"},{"messageId":"57938","fix":"65670","desc":"57940"},{"messageId":"57941","fix":"65671","desc":"57943"},{"messageId":"57938","fix":"65672","desc":"57940"},{"messageId":"57941","fix":"65673","desc":"57943"},{"messageId":"57938","fix":"65674","desc":"57940"},{"messageId":"57941","fix":"65675","desc":"57943"},{"messageId":"57938","fix":"65676","desc":"57940"},{"messageId":"57941","fix":"65677","desc":"57943"},{"messageId":"57938","fix":"65678","desc":"57940"},{"messageId":"57941","fix":"65679","desc":"57943"},{"messageId":"57938","fix":"65680","desc":"57940"},{"messageId":"57941","fix":"65681","desc":"57943"},{"messageId":"57938","fix":"65682","desc":"57940"},{"messageId":"57941","fix":"65683","desc":"57943"},{"messageId":"57938","fix":"65684","desc":"57940"},{"messageId":"57941","fix":"65685","desc":"57943"},{"messageId":"57938","fix":"65686","desc":"57940"},{"messageId":"57941","fix":"65687","desc":"57943"},{"messageId":"57938","fix":"65688","desc":"57940"},{"messageId":"57941","fix":"65689","desc":"57943"},{"messageId":"57938","fix":"65690","desc":"57940"},{"messageId":"57941","fix":"65691","desc":"57943"},{"messageId":"57938","fix":"65692","desc":"57940"},{"messageId":"57941","fix":"65693","desc":"57943"},{"messageId":"57938","fix":"65694","desc":"57940"},{"messageId":"57941","fix":"65695","desc":"57943"},{"messageId":"57938","fix":"65696","desc":"57940"},{"messageId":"57941","fix":"65697","desc":"57943"},{"messageId":"57938","fix":"65698","desc":"57940"},{"messageId":"57941","fix":"65699","desc":"57943"},{"messageId":"57938","fix":"65700","desc":"57940"},{"messageId":"57941","fix":"65701","desc":"57943"},{"messageId":"57938","fix":"65702","desc":"57940"},{"messageId":"57941","fix":"65703","desc":"57943"},{"messageId":"57938","fix":"65704","desc":"57940"},{"messageId":"57941","fix":"65705","desc":"57943"},{"messageId":"57938","fix":"65706","desc":"57940"},{"messageId":"57941","fix":"65707","desc":"57943"},{"messageId":"57938","fix":"65708","desc":"57940"},{"messageId":"57941","fix":"65709","desc":"57943"},{"messageId":"57938","fix":"65710","desc":"57940"},{"messageId":"57941","fix":"65711","desc":"57943"},{"messageId":"57938","fix":"65712","desc":"57940"},{"messageId":"57941","fix":"65713","desc":"57943"},{"messageId":"57938","fix":"65714","desc":"57940"},{"messageId":"57941","fix":"65715","desc":"57943"},{"messageId":"57938","fix":"65716","desc":"57940"},{"messageId":"57941","fix":"65717","desc":"57943"},{"messageId":"57938","fix":"65718","desc":"57940"},{"messageId":"57941","fix":"65719","desc":"57943"},{"messageId":"57938","fix":"65720","desc":"57940"},{"messageId":"57941","fix":"65721","desc":"57943"},{"messageId":"57938","fix":"65722","desc":"57940"},{"messageId":"57941","fix":"65723","desc":"57943"},{"messageId":"57938","fix":"65724","desc":"57940"},{"messageId":"57941","fix":"65725","desc":"57943"},{"messageId":"57938","fix":"65726","desc":"57940"},{"messageId":"57941","fix":"65727","desc":"57943"},{"messageId":"57938","fix":"65728","desc":"57940"},{"messageId":"57941","fix":"65729","desc":"57943"},{"messageId":"57938","fix":"65730","desc":"57940"},{"messageId":"57941","fix":"65731","desc":"57943"},{"messageId":"57938","fix":"65732","desc":"57940"},{"messageId":"57941","fix":"65733","desc":"57943"},{"messageId":"57938","fix":"65734","desc":"57940"},{"messageId":"57941","fix":"65735","desc":"57943"},{"messageId":"57938","fix":"65736","desc":"57940"},{"messageId":"57941","fix":"65737","desc":"57943"},{"messageId":"57938","fix":"65738","desc":"57940"},{"messageId":"57941","fix":"65739","desc":"57943"},{"messageId":"57938","fix":"65740","desc":"57940"},{"messageId":"57941","fix":"65741","desc":"57943"},{"messageId":"57938","fix":"65742","desc":"57940"},{"messageId":"57941","fix":"65743","desc":"57943"},{"messageId":"57938","fix":"65744","desc":"57940"},{"messageId":"57941","fix":"65745","desc":"57943"},{"messageId":"57938","fix":"65746","desc":"57940"},{"messageId":"57941","fix":"65747","desc":"57943"},{"messageId":"57938","fix":"65748","desc":"57940"},{"messageId":"57941","fix":"65749","desc":"57943"},{"messageId":"57938","fix":"65750","desc":"57940"},{"messageId":"57941","fix":"65751","desc":"57943"},{"messageId":"57938","fix":"65752","desc":"57940"},{"messageId":"57941","fix":"65753","desc":"57943"},{"messageId":"57938","fix":"65754","desc":"57940"},{"messageId":"57941","fix":"65755","desc":"57943"},{"messageId":"57938","fix":"65756","desc":"57940"},{"messageId":"57941","fix":"65757","desc":"57943"},{"messageId":"57938","fix":"65758","desc":"57940"},{"messageId":"57941","fix":"65759","desc":"57943"},{"messageId":"57938","fix":"65760","desc":"57940"},{"messageId":"57941","fix":"65761","desc":"57943"},{"messageId":"57938","fix":"65762","desc":"57940"},{"messageId":"57941","fix":"65763","desc":"57943"},{"messageId":"57938","fix":"65764","desc":"57940"},{"messageId":"57941","fix":"65765","desc":"57943"},{"messageId":"57938","fix":"65766","desc":"57940"},{"messageId":"57941","fix":"65767","desc":"57943"},{"messageId":"57938","fix":"65768","desc":"57940"},{"messageId":"57941","fix":"65769","desc":"57943"},{"messageId":"57938","fix":"65770","desc":"57940"},{"messageId":"57941","fix":"65771","desc":"57943"},{"messageId":"57938","fix":"65772","desc":"57940"},{"messageId":"57941","fix":"65773","desc":"57943"},{"messageId":"57938","fix":"65774","desc":"57940"},{"messageId":"57941","fix":"65775","desc":"57943"},{"messageId":"57938","fix":"65776","desc":"57940"},{"messageId":"57941","fix":"65777","desc":"57943"},{"messageId":"57938","fix":"65778","desc":"57940"},{"messageId":"57941","fix":"65779","desc":"57943"},{"messageId":"57938","fix":"65780","desc":"57940"},{"messageId":"57941","fix":"65781","desc":"57943"},{"messageId":"57938","fix":"65782","desc":"57940"},{"messageId":"57941","fix":"65783","desc":"57943"},{"messageId":"57938","fix":"65784","desc":"57940"},{"messageId":"57941","fix":"65785","desc":"57943"},{"messageId":"57938","fix":"65786","desc":"57940"},{"messageId":"57941","fix":"65787","desc":"57943"},{"messageId":"57938","fix":"65788","desc":"57940"},{"messageId":"57941","fix":"65789","desc":"57943"},{"messageId":"57938","fix":"65790","desc":"57940"},{"messageId":"57941","fix":"65791","desc":"57943"},{"messageId":"57938","fix":"65792","desc":"57940"},{"messageId":"57941","fix":"65793","desc":"57943"},{"messageId":"57938","fix":"65794","desc":"57940"},{"messageId":"57941","fix":"65795","desc":"57943"},{"messageId":"57938","fix":"65796","desc":"57940"},{"messageId":"57941","fix":"65797","desc":"57943"},{"messageId":"57938","fix":"65798","desc":"57940"},{"messageId":"57941","fix":"65799","desc":"57943"},{"messageId":"57938","fix":"65800","desc":"57940"},{"messageId":"57941","fix":"65801","desc":"57943"},{"messageId":"57938","fix":"65802","desc":"57940"},{"messageId":"57941","fix":"65803","desc":"57943"},{"messageId":"57938","fix":"65804","desc":"57940"},{"messageId":"57941","fix":"65805","desc":"57943"},{"messageId":"57938","fix":"65806","desc":"57940"},{"messageId":"57941","fix":"65807","desc":"57943"},{"messageId":"57938","fix":"65808","desc":"57940"},{"messageId":"57941","fix":"65809","desc":"57943"},{"messageId":"57938","fix":"65810","desc":"57940"},{"messageId":"57941","fix":"65811","desc":"57943"},{"messageId":"57938","fix":"65812","desc":"57940"},{"messageId":"57941","fix":"65813","desc":"57943"},{"messageId":"57938","fix":"65814","desc":"57940"},{"messageId":"57941","fix":"65815","desc":"57943"},{"messageId":"57938","fix":"65816","desc":"57940"},{"messageId":"57941","fix":"65817","desc":"57943"},{"messageId":"57938","fix":"65818","desc":"57940"},{"messageId":"57941","fix":"65819","desc":"57943"},{"messageId":"57938","fix":"65820","desc":"57940"},{"messageId":"57941","fix":"65821","desc":"57943"},{"messageId":"57938","fix":"65822","desc":"57940"},{"messageId":"57941","fix":"65823","desc":"57943"},{"messageId":"57938","fix":"65824","desc":"57940"},{"messageId":"57941","fix":"65825","desc":"57943"},{"kind":"58246","justification":"58247"},{"kind":"58246","justification":"65826"},{"kind":"58246","justification":"65826"},{"kind":"58246","justification":"65827"},{"kind":"58246","justification":"65827"},{"kind":"58246","justification":"65827"},{"kind":"58246","justification":"65827"},{"kind":"58246","justification":"65827"},{"messageId":"57938","fix":"65828","desc":"57940"},{"messageId":"57941","fix":"65829","desc":"57943"},{"messageId":"57938","fix":"65830","desc":"57940"},{"messageId":"57941","fix":"65831","desc":"57943"},{"messageId":"57938","fix":"65832","desc":"57940"},{"messageId":"57941","fix":"65833","desc":"57943"},{"messageId":"57938","fix":"65834","desc":"57940"},{"messageId":"57941","fix":"65835","desc":"57943"},{"messageId":"57938","fix":"65836","desc":"57940"},{"messageId":"57941","fix":"65837","desc":"57943"},{"messageId":"57938","fix":"65838","desc":"57940"},{"messageId":"57941","fix":"65839","desc":"57943"},{"messageId":"57938","fix":"65840","desc":"57940"},{"messageId":"57941","fix":"65841","desc":"57943"},{"messageId":"57938","fix":"65842","desc":"57940"},{"messageId":"57941","fix":"65843","desc":"57943"},{"messageId":"57938","fix":"65844","desc":"57940"},{"messageId":"57941","fix":"65845","desc":"57943"},{"messageId":"57938","fix":"65846","desc":"57940"},{"messageId":"57941","fix":"65847","desc":"57943"},{"messageId":"57938","fix":"65848","desc":"57940"},{"messageId":"57941","fix":"65849","desc":"57943"},{"messageId":"57938","fix":"65850","desc":"57940"},{"messageId":"57941","fix":"65851","desc":"57943"},{"messageId":"57938","fix":"65852","desc":"57940"},{"messageId":"57941","fix":"65853","desc":"57943"},{"messageId":"57938","fix":"65854","desc":"57940"},{"messageId":"57941","fix":"65855","desc":"57943"},{"messageId":"57938","fix":"65856","desc":"57940"},{"messageId":"57941","fix":"65857","desc":"57943"},{"messageId":"57938","fix":"65858","desc":"57940"},{"messageId":"57941","fix":"65859","desc":"57943"},{"messageId":"57938","fix":"65860","desc":"57940"},{"messageId":"57941","fix":"65861","desc":"57943"},{"messageId":"57938","fix":"65862","desc":"57940"},{"messageId":"57941","fix":"65863","desc":"57943"},{"messageId":"57938","fix":"65864","desc":"57940"},{"messageId":"57941","fix":"65865","desc":"57943"},{"messageId":"57938","fix":"65866","desc":"57940"},{"messageId":"57941","fix":"65867","desc":"57943"},{"messageId":"57938","fix":"65868","desc":"57940"},{"messageId":"57941","fix":"65869","desc":"57943"},{"messageId":"57938","fix":"65870","desc":"57940"},{"messageId":"57941","fix":"65871","desc":"57943"},{"messageId":"57938","fix":"65872","desc":"57940"},{"messageId":"57941","fix":"65873","desc":"57943"},{"messageId":"57938","fix":"65874","desc":"57940"},{"messageId":"57941","fix":"65875","desc":"57943"},{"messageId":"57938","fix":"65876","desc":"57940"},{"messageId":"57941","fix":"65877","desc":"57943"},{"messageId":"57938","fix":"65878","desc":"57940"},{"messageId":"57941","fix":"65879","desc":"57943"},{"messageId":"57938","fix":"65880","desc":"57940"},{"messageId":"57941","fix":"65881","desc":"57943"},{"messageId":"57938","fix":"65882","desc":"57940"},{"messageId":"57941","fix":"65883","desc":"57943"},{"messageId":"57938","fix":"65884","desc":"57940"},{"messageId":"57941","fix":"65885","desc":"57943"},{"messageId":"57938","fix":"65886","desc":"57940"},{"messageId":"57941","fix":"65887","desc":"57943"},{"messageId":"57938","fix":"65888","desc":"57940"},{"messageId":"57941","fix":"65889","desc":"57943"},{"messageId":"57938","fix":"65890","desc":"57940"},{"messageId":"57941","fix":"65891","desc":"57943"},{"messageId":"57938","fix":"65892","desc":"57940"},{"messageId":"57941","fix":"65893","desc":"57943"},{"messageId":"57938","fix":"65894","desc":"57940"},{"messageId":"57941","fix":"65895","desc":"57943"},{"messageId":"57938","fix":"65896","desc":"57940"},{"messageId":"57941","fix":"65897","desc":"57943"},{"messageId":"57938","fix":"65898","desc":"57940"},{"messageId":"57941","fix":"65899","desc":"57943"},{"messageId":"57938","fix":"65900","desc":"57940"},{"messageId":"57941","fix":"65901","desc":"57943"},{"messageId":"57938","fix":"65902","desc":"57940"},{"messageId":"57941","fix":"65903","desc":"57943"},{"messageId":"57938","fix":"65904","desc":"57940"},{"messageId":"57941","fix":"65905","desc":"57943"},{"messageId":"57938","fix":"65906","desc":"57940"},{"messageId":"57941","fix":"65907","desc":"57943"},{"messageId":"57938","fix":"65908","desc":"57940"},{"messageId":"57941","fix":"65909","desc":"57943"},{"messageId":"57938","fix":"65910","desc":"57940"},{"messageId":"57941","fix":"65911","desc":"57943"},{"messageId":"57938","fix":"65912","desc":"57940"},{"messageId":"57941","fix":"65913","desc":"57943"},{"messageId":"57938","fix":"65914","desc":"57940"},{"messageId":"57941","fix":"65915","desc":"57943"},{"messageId":"57938","fix":"65916","desc":"57940"},{"messageId":"57941","fix":"65917","desc":"57943"},{"messageId":"57938","fix":"65918","desc":"57940"},{"messageId":"57941","fix":"65919","desc":"57943"},{"messageId":"57938","fix":"65920","desc":"57940"},{"messageId":"57941","fix":"65921","desc":"57943"},{"messageId":"57938","fix":"65922","desc":"57940"},{"messageId":"57941","fix":"65923","desc":"57943"},{"messageId":"57938","fix":"65924","desc":"57940"},{"messageId":"57941","fix":"65925","desc":"57943"},{"messageId":"57938","fix":"65926","desc":"57940"},{"messageId":"57941","fix":"65927","desc":"57943"},{"messageId":"57938","fix":"65928","desc":"57940"},{"messageId":"57941","fix":"65929","desc":"57943"},{"messageId":"57938","fix":"65930","desc":"57940"},{"messageId":"57941","fix":"65931","desc":"57943"},{"messageId":"57938","fix":"65932","desc":"57940"},{"messageId":"57941","fix":"65933","desc":"57943"},{"messageId":"57938","fix":"65934","desc":"57940"},{"messageId":"57941","fix":"65935","desc":"57943"},{"messageId":"57938","fix":"65936","desc":"57940"},{"messageId":"57941","fix":"65937","desc":"57943"},{"messageId":"57938","fix":"65938","desc":"57940"},{"messageId":"57941","fix":"65939","desc":"57943"},{"messageId":"57938","fix":"65940","desc":"57940"},{"messageId":"57941","fix":"65941","desc":"57943"},{"messageId":"57938","fix":"65942","desc":"57940"},{"messageId":"57941","fix":"65943","desc":"57943"},{"messageId":"57938","fix":"65944","desc":"57940"},{"messageId":"57941","fix":"65945","desc":"57943"},{"messageId":"57938","fix":"65946","desc":"57940"},{"messageId":"57941","fix":"65947","desc":"57943"},{"messageId":"57938","fix":"65948","desc":"57940"},{"messageId":"57941","fix":"65949","desc":"57943"},{"messageId":"57938","fix":"65950","desc":"57940"},{"messageId":"57941","fix":"65951","desc":"57943"},{"messageId":"57938","fix":"65952","desc":"57940"},{"messageId":"57941","fix":"65953","desc":"57943"},{"messageId":"57938","fix":"65954","desc":"57940"},{"messageId":"57941","fix":"65955","desc":"57943"},{"messageId":"57938","fix":"65956","desc":"57940"},{"messageId":"57941","fix":"65957","desc":"57943"},{"messageId":"57938","fix":"65958","desc":"57940"},{"messageId":"57941","fix":"65959","desc":"57943"},{"messageId":"57938","fix":"65960","desc":"57940"},{"messageId":"57941","fix":"65961","desc":"57943"},{"messageId":"57938","fix":"65962","desc":"57940"},{"messageId":"57941","fix":"65963","desc":"57943"},{"messageId":"57938","fix":"65964","desc":"57940"},{"messageId":"57941","fix":"65965","desc":"57943"},{"messageId":"57938","fix":"65966","desc":"57940"},{"messageId":"57941","fix":"65967","desc":"57943"},{"messageId":"57938","fix":"65968","desc":"57940"},{"messageId":"57941","fix":"65969","desc":"57943"},{"messageId":"57938","fix":"65970","desc":"57940"},{"messageId":"57941","fix":"65971","desc":"57943"},{"messageId":"57938","fix":"65972","desc":"57940"},{"messageId":"57941","fix":"65973","desc":"57943"},{"messageId":"57938","fix":"65974","desc":"57940"},{"messageId":"57941","fix":"65975","desc":"57943"},{"messageId":"57938","fix":"65976","desc":"57940"},{"messageId":"57941","fix":"65977","desc":"57943"},{"messageId":"57938","fix":"65978","desc":"57940"},{"messageId":"57941","fix":"65979","desc":"57943"},{"messageId":"57938","fix":"65980","desc":"57940"},{"messageId":"57941","fix":"65981","desc":"57943"},{"messageId":"57938","fix":"65982","desc":"57940"},{"messageId":"57941","fix":"65983","desc":"57943"},{"messageId":"57938","fix":"65984","desc":"57940"},{"messageId":"57941","fix":"65985","desc":"57943"},{"messageId":"57938","fix":"65986","desc":"57940"},{"messageId":"57941","fix":"65987","desc":"57943"},{"messageId":"57938","fix":"65988","desc":"57940"},{"messageId":"57941","fix":"65989","desc":"57943"},{"messageId":"57938","fix":"65990","desc":"57940"},{"messageId":"57941","fix":"65991","desc":"57943"},{"messageId":"57938","fix":"65992","desc":"57940"},{"messageId":"57941","fix":"65993","desc":"57943"},{"messageId":"57938","fix":"65994","desc":"57940"},{"messageId":"57941","fix":"65995","desc":"57943"},{"messageId":"57938","fix":"65996","desc":"57940"},{"messageId":"57941","fix":"65997","desc":"57943"},{"messageId":"57938","fix":"65998","desc":"57940"},{"messageId":"57941","fix":"65999","desc":"57943"},{"messageId":"57938","fix":"66000","desc":"57940"},{"messageId":"57941","fix":"66001","desc":"57943"},{"messageId":"57938","fix":"66002","desc":"57940"},{"messageId":"57941","fix":"66003","desc":"57943"},{"messageId":"57938","fix":"66004","desc":"57940"},{"messageId":"57941","fix":"66005","desc":"57943"},{"messageId":"57938","fix":"66006","desc":"57940"},{"messageId":"57941","fix":"66007","desc":"57943"},{"messageId":"57938","fix":"66008","desc":"57940"},{"messageId":"57941","fix":"66009","desc":"57943"},{"messageId":"57938","fix":"66010","desc":"57940"},{"messageId":"57941","fix":"66011","desc":"57943"},{"messageId":"57938","fix":"66012","desc":"57940"},{"messageId":"57941","fix":"66013","desc":"57943"},{"messageId":"57938","fix":"66014","desc":"57940"},{"messageId":"57941","fix":"66015","desc":"57943"},{"messageId":"57938","fix":"66016","desc":"57940"},{"messageId":"57941","fix":"66017","desc":"57943"},{"messageId":"57938","fix":"66018","desc":"57940"},{"messageId":"57941","fix":"66019","desc":"57943"},{"messageId":"57938","fix":"66020","desc":"57940"},{"messageId":"57941","fix":"66021","desc":"57943"},{"messageId":"57938","fix":"66022","desc":"57940"},{"messageId":"57941","fix":"66023","desc":"57943"},{"messageId":"57938","fix":"66024","desc":"57940"},{"messageId":"57941","fix":"66025","desc":"57943"},{"messageId":"57938","fix":"66026","desc":"57940"},{"messageId":"57941","fix":"66027","desc":"57943"},{"messageId":"57938","fix":"66028","desc":"57940"},{"messageId":"57941","fix":"66029","desc":"57943"},{"messageId":"57938","fix":"66030","desc":"57940"},{"messageId":"57941","fix":"66031","desc":"57943"},{"messageId":"57938","fix":"66032","desc":"57940"},{"messageId":"57941","fix":"66033","desc":"57943"},{"messageId":"57938","fix":"66034","desc":"57940"},{"messageId":"57941","fix":"66035","desc":"57943"},{"messageId":"57938","fix":"66036","desc":"57940"},{"messageId":"57941","fix":"66037","desc":"57943"},{"messageId":"57938","fix":"66038","desc":"57940"},{"messageId":"57941","fix":"66039","desc":"57943"},{"messageId":"57938","fix":"66040","desc":"57940"},{"messageId":"57941","fix":"66041","desc":"57943"},{"messageId":"57938","fix":"66042","desc":"57940"},{"messageId":"57941","fix":"66043","desc":"57943"},{"messageId":"57938","fix":"66044","desc":"57940"},{"messageId":"57941","fix":"66045","desc":"57943"},{"messageId":"57938","fix":"66046","desc":"57940"},{"messageId":"57941","fix":"66047","desc":"57943"},{"messageId":"57938","fix":"66048","desc":"57940"},{"messageId":"57941","fix":"66049","desc":"57943"},{"messageId":"57938","fix":"66050","desc":"57940"},{"messageId":"57941","fix":"66051","desc":"57943"},{"messageId":"57938","fix":"66052","desc":"57940"},{"messageId":"57941","fix":"66053","desc":"57943"},{"messageId":"57938","fix":"66054","desc":"57940"},{"messageId":"57941","fix":"66055","desc":"57943"},{"messageId":"57938","fix":"66056","desc":"57940"},{"messageId":"57941","fix":"66057","desc":"57943"},{"messageId":"57938","fix":"66058","desc":"57940"},{"messageId":"57941","fix":"66059","desc":"57943"},{"messageId":"57938","fix":"66060","desc":"57940"},{"messageId":"57941","fix":"66061","desc":"57943"},{"messageId":"57938","fix":"66062","desc":"57940"},{"messageId":"57941","fix":"66063","desc":"57943"},{"messageId":"57938","fix":"66064","desc":"57940"},{"messageId":"57941","fix":"66065","desc":"57943"},{"messageId":"57938","fix":"66066","desc":"57940"},{"messageId":"57941","fix":"66067","desc":"57943"},{"messageId":"57938","fix":"66068","desc":"57940"},{"messageId":"57941","fix":"66069","desc":"57943"},{"messageId":"57938","fix":"66070","desc":"57940"},{"messageId":"57941","fix":"66071","desc":"57943"},{"messageId":"57938","fix":"66072","desc":"57940"},{"messageId":"57941","fix":"66073","desc":"57943"},{"messageId":"57938","fix":"66074","desc":"57940"},{"messageId":"57941","fix":"66075","desc":"57943"},{"messageId":"57938","fix":"66076","desc":"57940"},{"messageId":"57941","fix":"66077","desc":"57943"},{"messageId":"57938","fix":"66078","desc":"57940"},{"messageId":"57941","fix":"66079","desc":"57943"},{"messageId":"57938","fix":"66080","desc":"57940"},{"messageId":"57941","fix":"66081","desc":"57943"},{"messageId":"57938","fix":"66082","desc":"57940"},{"messageId":"57941","fix":"66083","desc":"57943"},{"messageId":"57938","fix":"66084","desc":"57940"},{"messageId":"57941","fix":"66085","desc":"57943"},{"messageId":"57938","fix":"66086","desc":"57940"},{"messageId":"57941","fix":"66087","desc":"57943"},{"messageId":"57938","fix":"66088","desc":"57940"},{"messageId":"57941","fix":"66089","desc":"57943"},{"messageId":"57938","fix":"66090","desc":"57940"},{"messageId":"57941","fix":"66091","desc":"57943"},{"messageId":"57938","fix":"66092","desc":"57940"},{"messageId":"57941","fix":"66093","desc":"57943"},{"messageId":"57938","fix":"66094","desc":"57940"},{"messageId":"57941","fix":"66095","desc":"57943"},{"messageId":"57938","fix":"66096","desc":"57940"},{"messageId":"57941","fix":"66097","desc":"57943"},{"messageId":"57938","fix":"66098","desc":"57940"},{"messageId":"57941","fix":"66099","desc":"57943"},{"messageId":"57938","fix":"66100","desc":"57940"},{"messageId":"57941","fix":"66101","desc":"57943"},{"messageId":"57938","fix":"66102","desc":"57940"},{"messageId":"57941","fix":"66103","desc":"57943"},{"messageId":"57938","fix":"66104","desc":"57940"},{"messageId":"57941","fix":"66105","desc":"57943"},{"messageId":"57938","fix":"66106","desc":"57940"},{"messageId":"57941","fix":"66107","desc":"57943"},{"messageId":"57938","fix":"66108","desc":"57940"},{"messageId":"57941","fix":"66109","desc":"57943"},{"messageId":"57938","fix":"66110","desc":"57940"},{"messageId":"57941","fix":"66111","desc":"57943"},{"messageId":"57938","fix":"66112","desc":"57940"},{"messageId":"57941","fix":"66113","desc":"57943"},{"messageId":"57938","fix":"66114","desc":"57940"},{"messageId":"57941","fix":"66115","desc":"57943"},{"messageId":"57938","fix":"66116","desc":"57940"},{"messageId":"57941","fix":"66117","desc":"57943"},{"messageId":"57938","fix":"66118","desc":"57940"},{"messageId":"57941","fix":"66119","desc":"57943"},{"messageId":"57938","fix":"66120","desc":"57940"},{"messageId":"57941","fix":"66121","desc":"57943"},{"messageId":"57938","fix":"66122","desc":"57940"},{"messageId":"57941","fix":"66123","desc":"57943"},{"messageId":"57938","fix":"66124","desc":"57940"},{"messageId":"57941","fix":"66125","desc":"57943"},{"messageId":"57938","fix":"66126","desc":"57940"},{"messageId":"57941","fix":"66127","desc":"57943"},{"messageId":"57938","fix":"66128","desc":"57940"},{"messageId":"57941","fix":"66129","desc":"57943"},{"messageId":"57938","fix":"66130","desc":"57940"},{"messageId":"57941","fix":"66131","desc":"57943"},{"messageId":"57938","fix":"66132","desc":"57940"},{"messageId":"57941","fix":"66133","desc":"57943"},{"messageId":"57938","fix":"66134","desc":"57940"},{"messageId":"57941","fix":"66135","desc":"57943"},{"messageId":"57938","fix":"66136","desc":"57940"},{"messageId":"57941","fix":"66137","desc":"57943"},{"messageId":"57938","fix":"66138","desc":"57940"},{"messageId":"57941","fix":"66139","desc":"57943"},{"messageId":"57938","fix":"66140","desc":"57940"},{"messageId":"57941","fix":"66141","desc":"57943"},{"messageId":"57938","fix":"66142","desc":"57940"},{"messageId":"57941","fix":"66143","desc":"57943"},{"messageId":"57938","fix":"66144","desc":"57940"},{"messageId":"57941","fix":"66145","desc":"57943"},{"messageId":"57938","fix":"66146","desc":"57940"},{"messageId":"57941","fix":"66147","desc":"57943"},{"messageId":"57938","fix":"66148","desc":"57940"},{"messageId":"57941","fix":"66149","desc":"57943"},{"messageId":"57938","fix":"66150","desc":"57940"},{"messageId":"57941","fix":"66151","desc":"57943"},{"messageId":"57938","fix":"66152","desc":"57940"},{"messageId":"57941","fix":"66153","desc":"57943"},{"messageId":"57938","fix":"66154","desc":"57940"},{"messageId":"57941","fix":"66155","desc":"57943"},{"messageId":"57938","fix":"66156","desc":"57940"},{"messageId":"57941","fix":"66157","desc":"57943"},{"messageId":"57938","fix":"66158","desc":"57940"},{"messageId":"57941","fix":"66159","desc":"57943"},{"messageId":"57938","fix":"66160","desc":"57940"},{"messageId":"57941","fix":"66161","desc":"57943"},{"messageId":"57938","fix":"66162","desc":"57940"},{"messageId":"57941","fix":"66163","desc":"57943"},{"messageId":"57938","fix":"66164","desc":"57940"},{"messageId":"57941","fix":"66165","desc":"57943"},{"messageId":"57938","fix":"66166","desc":"57940"},{"messageId":"57941","fix":"66167","desc":"57943"},{"messageId":"57938","fix":"66168","desc":"57940"},{"messageId":"57941","fix":"66169","desc":"57943"},{"messageId":"57938","fix":"66170","desc":"57940"},{"messageId":"57941","fix":"66171","desc":"57943"},{"messageId":"57938","fix":"66172","desc":"57940"},{"messageId":"57941","fix":"66173","desc":"57943"},{"messageId":"57938","fix":"66174","desc":"57940"},{"messageId":"57941","fix":"66175","desc":"57943"},{"messageId":"57938","fix":"66176","desc":"57940"},{"messageId":"57941","fix":"66177","desc":"57943"},{"messageId":"57938","fix":"66178","desc":"57940"},{"messageId":"57941","fix":"66179","desc":"57943"},{"messageId":"57938","fix":"66180","desc":"57940"},{"messageId":"57941","fix":"66181","desc":"57943"},{"messageId":"57938","fix":"66182","desc":"57940"},{"messageId":"57941","fix":"66183","desc":"57943"},{"messageId":"57938","fix":"66184","desc":"57940"},{"messageId":"57941","fix":"66185","desc":"57943"},{"messageId":"57938","fix":"66186","desc":"57940"},{"messageId":"57941","fix":"66187","desc":"57943"},{"messageId":"57938","fix":"66188","desc":"57940"},{"messageId":"57941","fix":"66189","desc":"57943"},{"messageId":"57938","fix":"66190","desc":"57940"},{"messageId":"57941","fix":"66191","desc":"57943"},{"messageId":"57938","fix":"66192","desc":"57940"},{"messageId":"57941","fix":"66193","desc":"57943"},{"messageId":"57938","fix":"66194","desc":"57940"},{"messageId":"57941","fix":"66195","desc":"57943"},{"messageId":"57938","fix":"66196","desc":"57940"},{"messageId":"57941","fix":"66197","desc":"57943"},"suggestUnknown",{"range":"66198","text":"66199"},"Use `unknown` instead, this will force you to explicitly, and safely assert the type is correct.","suggestNever",{"range":"66200","text":"66201"},"Use `never` instead, this is useful when instantiating generic type parameters that you don't need to know the type of.",{"range":"66202","text":"66199"},{"range":"66203","text":"66201"},{"range":"66204","text":"66199"},{"range":"66205","text":"66201"},{"range":"66206","text":"66199"},{"range":"66207","text":"66201"},{"range":"66208","text":"66199"},{"range":"66209","text":"66201"},{"range":"66210","text":"66199"},{"range":"66211","text":"66201"},{"range":"66212","text":"66199"},{"range":"66213","text":"66201"},{"range":"66214","text":"66199"},{"range":"66215","text":"66201"},{"range":"66216","text":"66199"},{"range":"66217","text":"66201"},{"range":"66218","text":"66199"},{"range":"66219","text":"66201"},{"range":"66220","text":"66199"},{"range":"66221","text":"66201"},{"range":"66222","text":"66199"},{"range":"66223","text":"66201"},{"range":"66224","text":"66199"},{"range":"66225","text":"66201"},{"range":"66226","text":"66199"},{"range":"66227","text":"66201"},{"range":"66228","text":"66199"},{"range":"66229","text":"66201"},{"range":"66230","text":"66199"},{"range":"66231","text":"66201"},{"range":"66232","text":"66199"},{"range":"66233","text":"66201"},{"range":"66234","text":"66199"},{"range":"66235","text":"66201"},{"range":"66236","text":"66199"},{"range":"66237","text":"66201"},{"range":"66238","text":"66199"},{"range":"66239","text":"66201"},{"range":"66240","text":"66199"},{"range":"66241","text":"66201"},{"range":"66242","text":"66199"},{"range":"66243","text":"66201"},{"range":"66244","text":"66199"},{"range":"66245","text":"66201"},{"range":"66246","text":"66199"},{"range":"66247","text":"66201"},{"range":"66248","text":"66199"},{"range":"66249","text":"66201"},{"range":"66250","text":"66199"},{"range":"66251","text":"66201"},{"range":"66252","text":"66199"},{"range":"66253","text":"66201"},{"range":"66254","text":"66199"},{"range":"66255","text":"66201"},{"range":"66256","text":"66199"},{"range":"66257","text":"66201"},{"range":"66258","text":"66199"},{"range":"66259","text":"66201"},{"range":"66260","text":"66199"},{"range":"66261","text":"66201"},{"range":"66262","text":"66199"},{"range":"66263","text":"66201"},{"range":"66264","text":"66199"},{"range":"66265","text":"66201"},{"range":"66266","text":"66199"},{"range":"66267","text":"66201"},{"range":"66268","text":"66199"},{"range":"66269","text":"66201"},{"range":"66270","text":"66199"},{"range":"66271","text":"66201"},{"range":"66272","text":"66199"},{"range":"66273","text":"66201"},{"range":"66274","text":"66199"},{"range":"66275","text":"66201"},{"range":"66276","text":"66199"},{"range":"66277","text":"66201"},{"range":"66278","text":"66199"},{"range":"66279","text":"66201"},{"range":"66280","text":"66199"},{"range":"66281","text":"66201"},{"range":"66282","text":"66199"},{"range":"66283","text":"66201"},{"range":"66284","text":"66199"},{"range":"66285","text":"66201"},{"range":"66286","text":"66199"},{"range":"66287","text":"66201"},{"range":"66288","text":"66199"},{"range":"66289","text":"66201"},{"range":"66290","text":"66199"},{"range":"66291","text":"66201"},{"range":"66292","text":"66199"},{"range":"66293","text":"66201"},{"range":"66294","text":"66199"},{"range":"66295","text":"66201"},{"range":"66296","text":"66199"},{"range":"66297","text":"66201"},{"range":"66298","text":"66199"},{"range":"66299","text":"66201"},{"range":"66300","text":"66199"},{"range":"66301","text":"66201"},{"range":"66302","text":"66199"},{"range":"66303","text":"66201"},{"range":"66304","text":"66199"},{"range":"66305","text":"66201"},{"range":"66306","text":"66199"},{"range":"66307","text":"66201"},{"range":"66308","text":"66199"},{"range":"66309","text":"66201"},{"range":"66310","text":"66199"},{"range":"66311","text":"66201"},{"range":"66312","text":"66199"},{"range":"66313","text":"66201"},{"range":"66314","text":"66199"},{"range":"66315","text":"66201"},{"range":"66316","text":"66199"},{"range":"66317","text":"66201"},{"range":"66318","text":"66199"},{"range":"66319","text":"66201"},{"range":"66320","text":"66199"},{"range":"66321","text":"66201"},{"range":"66322","text":"66199"},{"range":"66323","text":"66201"},{"range":"66324","text":"66199"},{"range":"66325","text":"66201"},{"range":"66326","text":"66199"},{"range":"66327","text":"66201"},{"range":"66328","text":"66199"},{"range":"66329","text":"66201"},{"range":"66330","text":"66199"},{"range":"66331","text":"66201"},{"range":"66332","text":"66199"},{"range":"66333","text":"66201"},{"range":"66334","text":"66199"},{"range":"66335","text":"66201"},{"range":"66336","text":"66199"},{"range":"66337","text":"66201"},{"range":"66338","text":"66199"},{"range":"66339","text":"66201"},{"range":"66340","text":"66199"},{"range":"66341","text":"66201"},{"range":"66342","text":"66199"},{"range":"66343","text":"66201"},{"range":"66344","text":"66199"},{"range":"66345","text":"66201"},{"range":"66346","text":"66199"},{"range":"66347","text":"66201"},{"range":"66348","text":"66199"},{"range":"66349","text":"66201"},{"range":"66350","text":"66199"},{"range":"66351","text":"66201"},{"range":"66352","text":"66199"},{"range":"66353","text":"66201"},{"range":"66354","text":"66199"},{"range":"66355","text":"66201"},{"range":"66356","text":"66199"},{"range":"66357","text":"66201"},{"range":"66358","text":"66199"},{"range":"66359","text":"66201"},{"range":"66360","text":"66199"},{"range":"66361","text":"66201"},{"range":"66362","text":"66199"},{"range":"66363","text":"66201"},{"range":"66364","text":"66199"},{"range":"66365","text":"66201"},{"range":"66366","text":"66199"},{"range":"66367","text":"66201"},{"range":"66368","text":"66199"},{"range":"66369","text":"66201"},{"range":"66370","text":"66199"},{"range":"66371","text":"66201"},{"range":"66372","text":"66199"},{"range":"66373","text":"66201"},{"range":"66374","text":"66199"},{"range":"66375","text":"66201"},{"range":"66376","text":"66199"},{"range":"66377","text":"66201"},{"range":"66378","text":"66199"},{"range":"66379","text":"66201"},{"range":"66380","text":"66199"},{"range":"66381","text":"66201"},{"range":"66382","text":"66199"},{"range":"66383","text":"66201"},{"range":"66384","text":"66199"},{"range":"66385","text":"66201"},{"range":"66386","text":"66199"},{"range":"66387","text":"66201"},{"range":"66388","text":"66199"},{"range":"66389","text":"66201"},{"range":"66390","text":"66199"},{"range":"66391","text":"66201"},{"range":"66392","text":"66199"},{"range":"66393","text":"66201"},{"range":"66394","text":"66199"},{"range":"66395","text":"66201"},{"range":"66396","text":"66199"},{"range":"66397","text":"66201"},{"range":"66398","text":"66199"},{"range":"66399","text":"66201"},{"range":"66400","text":"66199"},{"range":"66401","text":"66201"},{"range":"66402","text":"66199"},{"range":"66403","text":"66201"},{"range":"66404","text":"66199"},{"range":"66405","text":"66201"},{"range":"66406","text":"66199"},{"range":"66407","text":"66201"},{"range":"66408","text":"66199"},{"range":"66409","text":"66201"},{"range":"66410","text":"66199"},{"range":"66411","text":"66201"},{"range":"66412","text":"66199"},{"range":"66413","text":"66201"},{"range":"66414","text":"66199"},{"range":"66415","text":"66201"},{"range":"66416","text":"66199"},{"range":"66417","text":"66201"},{"range":"66418","text":"66199"},{"range":"66419","text":"66201"},{"range":"66420","text":"66199"},{"range":"66421","text":"66201"},{"range":"66422","text":"66199"},{"range":"66423","text":"66201"},{"range":"66424","text":"66199"},{"range":"66425","text":"66201"},{"range":"66426","text":"66199"},{"range":"66427","text":"66201"},{"range":"66428","text":"66199"},{"range":"66429","text":"66201"},{"range":"66430","text":"66199"},{"range":"66431","text":"66201"},{"range":"66432","text":"66199"},{"range":"66433","text":"66201"},{"range":"66434","text":"66199"},{"range":"66435","text":"66201"},{"range":"66436","text":"66199"},{"range":"66437","text":"66201"},{"range":"66438","text":"66199"},{"range":"66439","text":"66201"},{"range":"66440","text":"66199"},{"range":"66441","text":"66201"},{"range":"66442","text":"66199"},{"range":"66443","text":"66201"},{"range":"66444","text":"66199"},{"range":"66445","text":"66201"},{"range":"66446","text":"66199"},{"range":"66447","text":"66201"},{"range":"66448","text":"66199"},{"range":"66449","text":"66201"},{"range":"66450","text":"66199"},{"range":"66451","text":"66201"},{"range":"66452","text":"66199"},{"range":"66453","text":"66201"},{"range":"66454","text":"66199"},{"range":"66455","text":"66201"},{"range":"66456","text":"66199"},{"range":"66457","text":"66201"},{"range":"66458","text":"66199"},{"range":"66459","text":"66201"},{"range":"66460","text":"66199"},{"range":"66461","text":"66201"},{"range":"66462","text":"66199"},{"range":"66463","text":"66201"},{"range":"66464","text":"66199"},{"range":"66465","text":"66201"},{"range":"66466","text":"66199"},{"range":"66467","text":"66201"},{"range":"66468","text":"66199"},{"range":"66469","text":"66201"},{"range":"66470","text":"66199"},{"range":"66471","text":"66201"},{"range":"66472","text":"66199"},{"range":"66473","text":"66201"},{"range":"66474","text":"66199"},{"range":"66475","text":"66201"},{"range":"66476","text":"66199"},{"range":"66477","text":"66201"},{"range":"66478","text":"66199"},{"range":"66479","text":"66201"},{"range":"66480","text":"66199"},{"range":"66481","text":"66201"},{"range":"66482","text":"66199"},{"range":"66483","text":"66201"},{"range":"66484","text":"66199"},{"range":"66485","text":"66201"},{"range":"66486","text":"66199"},{"range":"66487","text":"66201"},{"range":"66488","text":"66199"},{"range":"66489","text":"66201"},{"range":"66490","text":"66199"},{"range":"66491","text":"66201"},{"range":"66492","text":"66199"},{"range":"66493","text":"66201"},{"range":"66494","text":"66199"},{"range":"66495","text":"66201"},{"range":"66496","text":"66199"},{"range":"66497","text":"66201"},{"range":"66498","text":"66199"},{"range":"66499","text":"66201"},{"range":"66500","text":"66199"},{"range":"66501","text":"66201"},{"range":"66502","text":"66199"},{"range":"66503","text":"66201"},"directive","",{"range":"66504","text":"66199"},{"range":"66505","text":"66201"},{"range":"66506","text":"66199"},{"range":"66507","text":"66201"},{"range":"66508","text":"66199"},{"range":"66509","text":"66201"},{"range":"66510","text":"66199"},{"range":"66511","text":"66201"},{"range":"66512","text":"66199"},{"range":"66513","text":"66201"},{"range":"66514","text":"66199"},{"range":"66515","text":"66201"},{"range":"66516","text":"66199"},{"range":"66517","text":"66201"},{"range":"66518","text":"66199"},{"range":"66519","text":"66201"},{"range":"66520","text":"66199"},{"range":"66521","text":"66201"},{"range":"66522","text":"66199"},{"range":"66523","text":"66201"},{"range":"66524","text":"66199"},{"range":"66525","text":"66201"},{"range":"66526","text":"66199"},{"range":"66527","text":"66201"},{"range":"66528","text":"66199"},{"range":"66529","text":"66201"},{"range":"66530","text":"66199"},{"range":"66531","text":"66201"},{"range":"66532","text":"66199"},{"range":"66533","text":"66201"},{"range":"66534","text":"66199"},{"range":"66535","text":"66201"},{"range":"66536","text":"66199"},{"range":"66537","text":"66201"},{"range":"66538","text":"66199"},{"range":"66539","text":"66201"},{"range":"66540","text":"66199"},{"range":"66541","text":"66201"},{"range":"66542","text":"66199"},{"range":"66543","text":"66201"},"Update the dependencies array to be: [versionInfo, platform]",{"range":"66544","text":"66545"},"Update the dependencies array to be: [fetchData]",{"range":"66546","text":"66547"},"initial dashboard load only","localStorage hydration, runs once","Update the dependencies array to be: [jsonl, endpoint, onResult, t]",{"range":"66548","text":"66549"},"teknik string kontrolü, kullanıcı metni araması değil","Update the dependencies array to be: [LOCAL_PROVIDERS]",{"range":"66550","text":"66551"},"Update the dependencies array to be: [isExpanded, loadSavedMappings, status]",{"range":"66552","text":"66553"},"data URI, no loader needed","Update the dependencies array to be: [plans, primaryConnectionId, selectedConn]",{"range":"66554","text":"66555"},"Update the dependencies array to be: [open, editPool, initialGroupId, editPoolExclusive, plans]",{"range":"66556","text":"66557"},"Update the dependencies array to be: [open, editPool, groups, groupId]",{"range":"66558","text":"66559"},"Update the dependencies array to be: [pools]",{"range":"66560","text":"66561"},"Update the dependencies array to be: [availableModels, configState, configState.model, setConfigState]",{"range":"66562","text":"66563"},"Update the dependencies array to be: [configState, reasoningSpec, reasoningSpec.show, setConfigState]",{"range":"66564","text":"66565"},"Wrap the definition of 'clearResults' in its own useCallback() Hook.",{"range":"66566","text":"66567"},"Update the dependencies array to be: [getUpstreamHeadersRecord, open, protocol]",{"range":"66568","text":"66569"},"see above","Update the dependencies array to be: [searchParams, setProviderDisplayMode]",{"range":"66570","text":"66571"},"Update the dependencies array to be: [searchParams, setActiveCategory, setActiveServiceKind, setModelSearchQuery, setSearchQuery, setShowFreeOnly]",{"range":"66572","text":"66573"},"Update the dependencies array to be: [L]",{"range":"66574","text":"66575"},"Update the dependencies array to be: [customThemeColor]",{"range":"66576","text":"66577"},"Update the dependencies array to be: [notify, t]",{"range":"66578","text":"66579"},"Update the dependencies array to be: [load, providerKey]",{"range":"66580","text":"66581"},"Update the dependencies array to be: [t]",{"range":"66582","text":"66583"},"async data fetch on filter change","Update the dependencies array to be: [forceOpen, onOpenChange]",{"range":"66584","text":"66585"},"Update the dependencies array to be: [defaultOpen, forceOpen, onOpenChange]",{"range":"66586","text":"66587"},"Update the dependencies array to be: [onFirstOpen]",{"range":"66588","text":"66589"},{"range":"66590","text":"66579"},"Update the dependencies array to be: [providers, activeSet, lastSet, errorSet]",{"range":"66591","text":"66592"},"Update the dependencies array to be: [apiKey, effectiveWsUrl, channels, autoReconnect, connection.reconnectAttempt]",{"range":"66593","text":"66594"},"Update the dependencies array to be: [isOpen, t]",{"range":"66595","text":"66596"},"Update the dependencies array to be: [router]",{"range":"66597","text":"66598"},"Update the dependencies array to be: [isOpen, activeProviders, fetchProviderModels]",{"range":"66599","text":"66600"},"operator-supplied remote URL, not a static/known asset","external SVG from thesvg.org, not a static/known asset","Update the dependencies array to be: [isOpen, level, levelId, resetFields, t]",{"range":"66601","text":"66602"},"Update the dependencies array to be: [columnSortMap]",{"range":"66603","text":"66604"},"Update the dependencies array to be: [columnSortMap, sortBy]",{"range":"66605","text":"66606"},"Wrap the definition of 'openDetail' in its own useCallback() Hook.",{"range":"66607","text":"66608"},"Update the dependencies array to be: [initialSelectedId, openDetail]",{"range":"66609","text":"66610"},"Update the dependencies array to be: [closeDetail, currentLogIndex, openDetail, sortedLogsForNav]",{"range":"66611","text":"66612"},{"range":"66613","text":"66612"},"Update the dependencies array to be: [activeHref, collapsed, pinnedSections, sidebarExpansionLoaded, visibleSections]",{"range":"66614","text":"66615"},{"range":"66616","text":"66199"},{"range":"66617","text":"66201"},{"range":"66618","text":"66199"},{"range":"66619","text":"66201"},{"range":"66620","text":"66199"},{"range":"66621","text":"66201"},{"range":"66622","text":"66199"},{"range":"66623","text":"66201"},{"range":"66624","text":"66199"},{"range":"66625","text":"66201"},{"range":"66626","text":"66199"},{"range":"66627","text":"66201"},{"range":"66628","text":"66199"},{"range":"66629","text":"66201"},{"range":"66630","text":"66199"},{"range":"66631","text":"66201"},{"range":"66632","text":"66199"},{"range":"66633","text":"66201"},{"range":"66634","text":"66199"},{"range":"66635","text":"66201"},{"range":"66636","text":"66199"},{"range":"66637","text":"66201"},{"range":"66638","text":"66199"},{"range":"66639","text":"66201"},{"range":"66640","text":"66199"},{"range":"66641","text":"66201"},{"range":"66642","text":"66199"},{"range":"66643","text":"66201"},{"range":"66644","text":"66199"},{"range":"66645","text":"66201"},{"range":"66646","text":"66199"},{"range":"66647","text":"66201"},{"range":"66648","text":"66199"},{"range":"66649","text":"66201"},{"range":"66650","text":"66199"},{"range":"66651","text":"66201"},{"range":"66652","text":"66199"},{"range":"66653","text":"66201"},{"range":"66654","text":"66199"},{"range":"66655","text":"66201"},{"range":"66656","text":"66199"},{"range":"66657","text":"66201"},{"range":"66658","text":"66199"},{"range":"66659","text":"66201"},{"range":"66660","text":"66199"},{"range":"66661","text":"66201"},{"range":"66662","text":"66199"},{"range":"66663","text":"66201"},{"range":"66664","text":"66199"},{"range":"66665","text":"66201"},{"range":"66666","text":"66199"},{"range":"66667","text":"66201"},{"range":"66668","text":"66199"},{"range":"66669","text":"66201"},{"range":"66670","text":"66199"},{"range":"66671","text":"66201"},{"range":"66672","text":"66199"},{"range":"66673","text":"66201"},{"range":"66674","text":"66199"},{"range":"66675","text":"66201"},{"range":"66676","text":"66199"},{"range":"66677","text":"66201"},{"range":"66678","text":"66199"},{"range":"66679","text":"66201"},{"range":"66680","text":"66199"},{"range":"66681","text":"66201"},{"range":"66682","text":"66199"},{"range":"66683","text":"66201"},{"range":"66684","text":"66199"},{"range":"66685","text":"66201"},{"range":"66686","text":"66199"},{"range":"66687","text":"66201"},{"range":"66688","text":"66199"},{"range":"66689","text":"66201"},{"range":"66690","text":"66199"},{"range":"66691","text":"66201"},{"range":"66692","text":"66199"},{"range":"66693","text":"66201"},{"range":"66694","text":"66199"},{"range":"66695","text":"66201"},{"range":"66696","text":"66199"},{"range":"66697","text":"66201"},{"range":"66698","text":"66199"},{"range":"66699","text":"66201"},{"range":"66700","text":"66199"},{"range":"66701","text":"66201"},{"range":"66702","text":"66199"},{"range":"66703","text":"66201"},{"range":"66704","text":"66199"},{"range":"66705","text":"66201"},{"range":"66706","text":"66199"},{"range":"66707","text":"66201"},{"range":"66708","text":"66199"},{"range":"66709","text":"66201"},{"range":"66710","text":"66199"},{"range":"66711","text":"66201"},{"range":"66712","text":"66199"},{"range":"66713","text":"66201"},{"range":"66714","text":"66199"},{"range":"66715","text":"66201"},{"range":"66716","text":"66199"},{"range":"66717","text":"66201"},{"range":"66718","text":"66199"},{"range":"66719","text":"66201"},{"range":"66720","text":"66199"},{"range":"66721","text":"66201"},{"range":"66722","text":"66199"},{"range":"66723","text":"66201"},{"range":"66724","text":"66199"},{"range":"66725","text":"66201"},{"range":"66726","text":"66199"},{"range":"66727","text":"66201"},{"range":"66728","text":"66199"},{"range":"66729","text":"66201"},{"range":"66730","text":"66199"},{"range":"66731","text":"66201"},{"range":"66732","text":"66199"},{"range":"66733","text":"66201"},{"range":"66734","text":"66199"},{"range":"66735","text":"66201"},{"range":"66736","text":"66199"},{"range":"66737","text":"66201"},{"range":"66738","text":"66199"},{"range":"66739","text":"66201"},{"range":"66740","text":"66199"},{"range":"66741","text":"66201"},{"range":"66742","text":"66199"},{"range":"66743","text":"66201"},{"range":"66744","text":"66199"},{"range":"66745","text":"66201"},{"range":"66746","text":"66199"},{"range":"66747","text":"66201"},{"range":"66748","text":"66199"},{"range":"66749","text":"66201"},{"range":"66750","text":"66199"},{"range":"66751","text":"66201"},{"range":"66752","text":"66199"},{"range":"66753","text":"66201"},{"range":"66754","text":"66199"},{"range":"66755","text":"66201"},{"range":"66756","text":"66199"},{"range":"66757","text":"66201"},{"range":"66758","text":"66199"},{"range":"66759","text":"66201"},{"range":"66760","text":"66199"},{"range":"66761","text":"66201"},{"range":"66762","text":"66199"},{"range":"66763","text":"66201"},{"range":"66764","text":"66199"},{"range":"66765","text":"66201"},{"range":"66766","text":"66199"},{"range":"66767","text":"66201"},{"range":"66768","text":"66199"},{"range":"66769","text":"66201"},{"range":"66770","text":"66199"},{"range":"66771","text":"66201"},{"range":"66772","text":"66199"},{"range":"66773","text":"66201"},{"range":"66774","text":"66199"},{"range":"66775","text":"66201"},{"range":"66776","text":"66199"},{"range":"66777","text":"66201"},{"range":"66778","text":"66199"},{"range":"66779","text":"66201"},{"range":"66780","text":"66199"},{"range":"66781","text":"66201"},{"range":"66782","text":"66199"},{"range":"66783","text":"66201"},{"range":"66784","text":"66199"},{"range":"66785","text":"66201"},{"range":"66786","text":"66199"},{"range":"66787","text":"66201"},{"range":"66788","text":"66199"},{"range":"66789","text":"66201"},{"range":"66790","text":"66199"},{"range":"66791","text":"66201"},{"range":"66792","text":"66199"},{"range":"66793","text":"66201"},{"range":"66794","text":"66199"},{"range":"66795","text":"66201"},{"range":"66796","text":"66199"},{"range":"66797","text":"66201"},{"range":"66798","text":"66199"},{"range":"66799","text":"66201"},{"range":"66800","text":"66199"},{"range":"66801","text":"66201"},{"range":"66802","text":"66199"},{"range":"66803","text":"66201"},{"range":"66804","text":"66199"},{"range":"66805","text":"66201"},{"range":"66806","text":"66199"},{"range":"66807","text":"66201"},{"range":"66808","text":"66199"},{"range":"66809","text":"66201"},{"range":"66810","text":"66199"},{"range":"66811","text":"66201"},{"range":"66812","text":"66199"},{"range":"66813","text":"66201"},{"range":"66814","text":"66199"},{"range":"66815","text":"66201"},{"range":"66816","text":"66199"},{"range":"66817","text":"66201"},{"range":"66818","text":"66199"},{"range":"66819","text":"66201"},{"range":"66820","text":"66199"},{"range":"66821","text":"66201"},{"range":"66822","text":"66199"},{"range":"66823","text":"66201"},{"range":"66824","text":"66199"},{"range":"66825","text":"66201"},{"range":"66826","text":"66199"},{"range":"66827","text":"66201"},{"range":"66828","text":"66199"},{"range":"66829","text":"66201"},{"range":"66830","text":"66199"},{"range":"66831","text":"66201"},{"range":"66832","text":"66199"},{"range":"66833","text":"66201"},{"range":"66834","text":"66199"},{"range":"66835","text":"66201"},{"range":"66836","text":"66199"},{"range":"66837","text":"66201"},{"range":"66838","text":"66199"},{"range":"66839","text":"66201"},{"range":"66840","text":"66199"},{"range":"66841","text":"66201"},{"range":"66842","text":"66199"},{"range":"66843","text":"66201"},{"range":"66844","text":"66199"},{"range":"66845","text":"66201"},{"range":"66846","text":"66199"},{"range":"66847","text":"66201"},{"range":"66848","text":"66199"},{"range":"66849","text":"66201"},{"range":"66850","text":"66199"},{"range":"66851","text":"66201"},{"range":"66852","text":"66199"},{"range":"66853","text":"66201"},{"range":"66854","text":"66199"},{"range":"66855","text":"66201"},{"range":"66856","text":"66199"},{"range":"66857","text":"66201"},{"range":"66858","text":"66199"},{"range":"66859","text":"66201"},{"range":"66860","text":"66199"},{"range":"66861","text":"66201"},{"range":"66862","text":"66199"},{"range":"66863","text":"66201"},{"range":"66864","text":"66199"},{"range":"66865","text":"66201"},{"range":"66866","text":"66199"},{"range":"66867","text":"66201"},{"range":"66868","text":"66199"},{"range":"66869","text":"66201"},{"range":"66870","text":"66199"},{"range":"66871","text":"66201"},{"range":"66872","text":"66199"},{"range":"66873","text":"66201"},{"range":"66874","text":"66199"},{"range":"66875","text":"66201"},{"range":"66876","text":"66199"},{"range":"66877","text":"66201"},{"range":"66878","text":"66199"},{"range":"66879","text":"66201"},{"range":"66880","text":"66199"},{"range":"66881","text":"66201"},{"range":"66882","text":"66199"},{"range":"66883","text":"66201"},{"range":"66884","text":"66199"},{"range":"66885","text":"66201"},{"range":"66886","text":"66199"},{"range":"66887","text":"66201"},{"range":"66888","text":"66199"},{"range":"66889","text":"66201"},{"range":"66890","text":"66199"},{"range":"66891","text":"66201"},{"range":"66892","text":"66199"},{"range":"66893","text":"66201"},{"range":"66894","text":"66199"},{"range":"66895","text":"66201"},{"range":"66896","text":"66199"},{"range":"66897","text":"66201"},{"range":"66898","text":"66199"},{"range":"66899","text":"66201"},{"range":"66900","text":"66199"},{"range":"66901","text":"66201"},{"range":"66902","text":"66199"},{"range":"66903","text":"66201"},{"range":"66904","text":"66199"},{"range":"66905","text":"66201"},{"range":"66906","text":"66199"},{"range":"66907","text":"66201"},{"range":"66908","text":"66199"},{"range":"66909","text":"66201"},{"range":"66910","text":"66199"},{"range":"66911","text":"66201"},{"range":"66912","text":"66199"},{"range":"66913","text":"66201"},{"range":"66914","text":"66199"},{"range":"66915","text":"66201"},{"range":"66916","text":"66199"},{"range":"66917","text":"66201"},{"range":"66918","text":"66199"},{"range":"66919","text":"66201"},{"range":"66920","text":"66199"},{"range":"66921","text":"66201"},{"range":"66922","text":"66199"},{"range":"66923","text":"66201"},{"range":"66924","text":"66199"},{"range":"66925","text":"66201"},{"range":"66926","text":"66199"},{"range":"66927","text":"66201"},{"range":"66928","text":"66199"},{"range":"66929","text":"66201"},{"range":"66930","text":"66199"},{"range":"66931","text":"66201"},{"range":"66932","text":"66199"},{"range":"66933","text":"66201"},{"range":"66934","text":"66199"},{"range":"66935","text":"66201"},{"range":"66936","text":"66199"},{"range":"66937","text":"66201"},{"range":"66938","text":"66199"},{"range":"66939","text":"66201"},{"range":"66940","text":"66199"},{"range":"66941","text":"66201"},{"range":"66942","text":"66199"},{"range":"66943","text":"66201"},{"range":"66944","text":"66199"},{"range":"66945","text":"66201"},{"range":"66946","text":"66199"},{"range":"66947","text":"66201"},{"range":"66948","text":"66199"},{"range":"66949","text":"66201"},{"range":"66950","text":"66199"},{"range":"66951","text":"66201"},{"range":"66952","text":"66199"},{"range":"66953","text":"66201"},{"range":"66954","text":"66199"},{"range":"66955","text":"66201"},{"range":"66956","text":"66199"},{"range":"66957","text":"66201"},{"range":"66958","text":"66199"},{"range":"66959","text":"66201"},{"range":"66960","text":"66199"},{"range":"66961","text":"66201"},{"range":"66962","text":"66199"},{"range":"66963","text":"66201"},{"range":"66964","text":"66199"},{"range":"66965","text":"66201"},{"range":"66966","text":"66199"},{"range":"66967","text":"66201"},{"range":"66968","text":"66199"},{"range":"66969","text":"66201"},{"range":"66970","text":"66199"},{"range":"66971","text":"66201"},{"range":"66972","text":"66199"},{"range":"66973","text":"66201"},{"range":"66974","text":"66199"},{"range":"66975","text":"66201"},{"range":"66976","text":"66199"},{"range":"66977","text":"66201"},{"range":"66978","text":"66199"},{"range":"66979","text":"66201"},{"range":"66980","text":"66199"},{"range":"66981","text":"66201"},{"range":"66982","text":"66199"},{"range":"66983","text":"66201"},{"range":"66984","text":"66199"},{"range":"66985","text":"66201"},{"range":"66986","text":"66199"},{"range":"66987","text":"66201"},{"range":"66988","text":"66199"},{"range":"66989","text":"66201"},{"range":"66990","text":"66199"},{"range":"66991","text":"66201"},{"range":"66992","text":"66199"},{"range":"66993","text":"66201"},{"range":"66994","text":"66199"},{"range":"66995","text":"66201"},{"range":"66996","text":"66199"},{"range":"66997","text":"66201"},{"range":"66998","text":"66199"},{"range":"66999","text":"66201"},{"range":"67000","text":"66199"},{"range":"67001","text":"66201"},{"range":"67002","text":"66199"},{"range":"67003","text":"66201"},{"range":"67004","text":"66199"},{"range":"67005","text":"66201"},{"range":"67006","text":"66199"},{"range":"67007","text":"66201"},{"range":"67008","text":"66199"},{"range":"67009","text":"66201"},{"range":"67010","text":"66199"},{"range":"67011","text":"66201"},{"range":"67012","text":"66199"},{"range":"67013","text":"66201"},{"range":"67014","text":"66199"},{"range":"67015","text":"66201"},{"range":"67016","text":"66199"},{"range":"67017","text":"66201"},{"range":"67018","text":"66199"},{"range":"67019","text":"66201"},{"range":"67020","text":"66199"},{"range":"67021","text":"66201"},{"range":"67022","text":"66199"},{"range":"67023","text":"66201"},{"range":"67024","text":"66199"},{"range":"67025","text":"66201"},{"range":"67026","text":"66199"},{"range":"67027","text":"66201"},{"range":"67028","text":"66199"},{"range":"67029","text":"66201"},{"range":"67030","text":"66199"},{"range":"67031","text":"66201"},{"range":"67032","text":"66199"},{"range":"67033","text":"66201"},{"range":"67034","text":"66199"},{"range":"67035","text":"66201"},{"range":"67036","text":"66199"},{"range":"67037","text":"66201"},{"range":"67038","text":"66199"},{"range":"67039","text":"66201"},{"range":"67040","text":"66199"},{"range":"67041","text":"66201"},{"range":"67042","text":"66199"},{"range":"67043","text":"66201"},{"range":"67044","text":"66199"},{"range":"67045","text":"66201"},{"range":"67046","text":"66199"},{"range":"67047","text":"66201"},{"range":"67048","text":"66199"},{"range":"67049","text":"66201"},{"range":"67050","text":"66199"},{"range":"67051","text":"66201"},{"range":"67052","text":"66199"},{"range":"67053","text":"66201"},{"range":"67054","text":"66199"},{"range":"67055","text":"66201"},{"range":"67056","text":"66199"},{"range":"67057","text":"66201"},{"range":"67058","text":"66199"},{"range":"67059","text":"66201"},{"range":"67060","text":"66199"},{"range":"67061","text":"66201"},{"range":"67062","text":"66199"},{"range":"67063","text":"66201"},{"range":"67064","text":"66199"},{"range":"67065","text":"66201"},{"range":"67066","text":"66199"},{"range":"67067","text":"66201"},{"range":"67068","text":"66199"},{"range":"67069","text":"66201"},{"range":"67070","text":"66199"},{"range":"67071","text":"66201"},{"range":"67072","text":"66199"},{"range":"67073","text":"66201"},{"range":"67074","text":"66199"},{"range":"67075","text":"66201"},{"range":"67076","text":"66199"},{"range":"67077","text":"66201"},{"range":"67078","text":"66199"},{"range":"67079","text":"66201"},{"range":"67080","text":"66199"},{"range":"67081","text":"66201"},{"range":"67082","text":"66199"},{"range":"67083","text":"66201"},{"range":"67084","text":"66199"},{"range":"67085","text":"66201"},{"range":"67086","text":"66199"},{"range":"67087","text":"66201"},{"range":"67088","text":"66199"},{"range":"67089","text":"66201"},{"range":"67090","text":"66199"},{"range":"67091","text":"66201"},{"range":"67092","text":"66199"},{"range":"67093","text":"66201"},{"range":"67094","text":"66199"},{"range":"67095","text":"66201"},{"range":"67096","text":"66199"},{"range":"67097","text":"66201"},{"range":"67098","text":"66199"},{"range":"67099","text":"66201"},{"range":"67100","text":"66199"},{"range":"67101","text":"66201"},{"range":"67102","text":"66199"},{"range":"67103","text":"66201"},{"range":"67104","text":"66199"},{"range":"67105","text":"66201"},{"range":"67106","text":"66199"},{"range":"67107","text":"66201"},{"range":"67108","text":"66199"},{"range":"67109","text":"66201"},{"range":"67110","text":"66199"},{"range":"67111","text":"66201"},{"range":"67112","text":"66199"},{"range":"67113","text":"66201"},{"range":"67114","text":"66199"},{"range":"67115","text":"66201"},{"range":"67116","text":"66199"},{"range":"67117","text":"66201"},{"range":"67118","text":"66199"},{"range":"67119","text":"66201"},{"range":"67120","text":"66199"},{"range":"67121","text":"66201"},{"range":"67122","text":"66199"},{"range":"67123","text":"66201"},{"range":"67124","text":"66199"},{"range":"67125","text":"66201"},{"range":"67126","text":"66199"},{"range":"67127","text":"66201"},{"range":"67128","text":"66199"},{"range":"67129","text":"66201"},{"range":"67130","text":"66199"},{"range":"67131","text":"66201"},{"range":"67132","text":"66199"},{"range":"67133","text":"66201"},{"range":"67134","text":"66199"},{"range":"67135","text":"66201"},{"range":"67136","text":"66199"},{"range":"67137","text":"66201"},{"range":"67138","text":"66199"},{"range":"67139","text":"66201"},{"range":"67140","text":"66199"},{"range":"67141","text":"66201"},{"range":"67142","text":"66199"},{"range":"67143","text":"66201"},{"range":"67144","text":"66199"},{"range":"67145","text":"66201"},{"range":"67146","text":"66199"},{"range":"67147","text":"66201"},{"range":"67148","text":"66199"},{"range":"67149","text":"66201"},{"range":"67150","text":"66199"},{"range":"67151","text":"66201"},{"range":"67152","text":"66199"},{"range":"67153","text":"66201"},{"range":"67154","text":"66199"},{"range":"67155","text":"66201"},{"range":"67156","text":"66199"},{"range":"67157","text":"66201"},{"range":"67158","text":"66199"},{"range":"67159","text":"66201"},{"range":"67160","text":"66199"},{"range":"67161","text":"66201"},{"range":"67162","text":"66199"},{"range":"67163","text":"66201"},{"range":"67164","text":"66199"},{"range":"67165","text":"66201"},{"range":"67166","text":"66199"},{"range":"67167","text":"66201"},{"range":"67168","text":"66199"},{"range":"67169","text":"66201"},{"range":"67170","text":"66199"},{"range":"67171","text":"66201"},{"range":"67172","text":"66199"},{"range":"67173","text":"66201"},{"range":"67174","text":"66199"},{"range":"67175","text":"66201"},{"range":"67176","text":"66199"},{"range":"67177","text":"66201"},{"range":"67178","text":"66199"},{"range":"67179","text":"66201"},{"range":"67180","text":"66199"},{"range":"67181","text":"66201"},{"range":"67182","text":"66199"},{"range":"67183","text":"66201"},{"range":"67184","text":"66199"},{"range":"67185","text":"66201"},{"range":"67186","text":"66199"},{"range":"67187","text":"66201"},{"range":"67188","text":"66199"},{"range":"67189","text":"66201"},{"range":"67190","text":"66199"},{"range":"67191","text":"66201"},{"range":"67192","text":"66199"},{"range":"67193","text":"66201"},{"range":"67194","text":"66199"},{"range":"67195","text":"66201"},{"range":"67196","text":"66199"},{"range":"67197","text":"66201"},{"range":"67198","text":"66199"},{"range":"67199","text":"66201"},{"range":"67200","text":"66199"},{"range":"67201","text":"66201"},{"range":"67202","text":"66199"},{"range":"67203","text":"66201"},{"range":"67204","text":"66199"},{"range":"67205","text":"66201"},{"range":"67206","text":"66199"},{"range":"67207","text":"66201"},{"range":"67208","text":"66199"},{"range":"67209","text":"66201"},{"range":"67210","text":"66199"},{"range":"67211","text":"66201"},{"range":"67212","text":"66199"},{"range":"67213","text":"66201"},{"range":"67214","text":"66199"},{"range":"67215","text":"66201"},{"range":"67216","text":"66199"},{"range":"67217","text":"66201"},{"range":"67218","text":"66199"},{"range":"67219","text":"66201"},{"range":"67220","text":"66199"},{"range":"67221","text":"66201"},{"range":"67222","text":"66199"},{"range":"67223","text":"66201"},{"range":"67224","text":"66199"},{"range":"67225","text":"66201"},{"range":"67226","text":"66199"},{"range":"67227","text":"66201"},{"range":"67228","text":"66199"},{"range":"67229","text":"66201"},{"range":"67230","text":"66199"},{"range":"67231","text":"66201"},{"range":"67232","text":"66199"},{"range":"67233","text":"66201"},{"range":"67234","text":"66199"},{"range":"67235","text":"66201"},{"range":"67236","text":"66199"},{"range":"67237","text":"66201"},{"range":"67238","text":"66199"},{"range":"67239","text":"66201"},{"range":"67240","text":"66199"},{"range":"67241","text":"66201"},{"range":"67242","text":"66199"},{"range":"67243","text":"66201"},{"range":"67244","text":"66199"},{"range":"67245","text":"66201"},{"range":"67246","text":"66199"},{"range":"67247","text":"66201"},{"range":"67248","text":"66199"},{"range":"67249","text":"66201"},{"range":"67250","text":"66199"},{"range":"67251","text":"66201"},{"range":"67252","text":"66199"},{"range":"67253","text":"66201"},{"range":"67254","text":"66199"},{"range":"67255","text":"66201"},{"range":"67256","text":"66199"},{"range":"67257","text":"66201"},{"range":"67258","text":"66199"},{"range":"67259","text":"66201"},{"range":"67260","text":"66199"},{"range":"67261","text":"66201"},{"range":"67262","text":"66199"},{"range":"67263","text":"66201"},{"range":"67264","text":"66199"},{"range":"67265","text":"66201"},{"range":"67266","text":"66199"},{"range":"67267","text":"66201"},{"range":"67268","text":"66199"},{"range":"67269","text":"66201"},{"range":"67270","text":"66199"},{"range":"67271","text":"66201"},{"range":"67272","text":"66199"},{"range":"67273","text":"66201"},{"range":"67274","text":"66199"},{"range":"67275","text":"66201"},{"range":"67276","text":"66199"},{"range":"67277","text":"66201"},{"range":"67278","text":"66199"},{"range":"67279","text":"66201"},{"range":"67280","text":"66199"},{"range":"67281","text":"66201"},{"range":"67282","text":"66199"},{"range":"67283","text":"66201"},{"range":"67284","text":"66199"},{"range":"67285","text":"66201"},{"range":"67286","text":"66199"},{"range":"67287","text":"66201"},{"range":"67288","text":"66199"},{"range":"67289","text":"66201"},{"range":"67290","text":"66199"},{"range":"67291","text":"66201"},{"range":"67292","text":"66199"},{"range":"67293","text":"66201"},{"range":"67294","text":"66199"},{"range":"67295","text":"66201"},{"range":"67296","text":"66199"},{"range":"67297","text":"66201"},{"range":"67298","text":"66199"},{"range":"67299","text":"66201"},{"range":"67300","text":"66199"},{"range":"67301","text":"66201"},{"range":"67302","text":"66199"},{"range":"67303","text":"66201"},{"range":"67304","text":"66199"},{"range":"67305","text":"66201"},{"range":"67306","text":"66199"},{"range":"67307","text":"66201"},{"range":"67308","text":"66199"},{"range":"67309","text":"66201"},{"range":"67310","text":"66199"},{"range":"67311","text":"66201"},{"range":"67312","text":"66199"},{"range":"67313","text":"66201"},{"range":"67314","text":"66199"},{"range":"67315","text":"66201"},{"range":"67316","text":"66199"},{"range":"67317","text":"66201"},{"range":"67318","text":"66199"},{"range":"67319","text":"66201"},{"range":"67320","text":"66199"},{"range":"67321","text":"66201"},{"range":"67322","text":"66199"},{"range":"67323","text":"66201"},{"range":"67324","text":"66199"},{"range":"67325","text":"66201"},{"range":"67326","text":"66199"},{"range":"67327","text":"66201"},{"range":"67328","text":"66199"},{"range":"67329","text":"66201"},{"range":"67330","text":"66199"},{"range":"67331","text":"66201"},{"range":"67332","text":"66199"},{"range":"67333","text":"66201"},{"range":"67334","text":"66199"},{"range":"67335","text":"66201"},{"range":"67336","text":"66199"},{"range":"67337","text":"66201"},{"range":"67338","text":"66199"},{"range":"67339","text":"66201"},{"range":"67340","text":"66199"},{"range":"67341","text":"66201"},{"range":"67342","text":"66199"},{"range":"67343","text":"66201"},{"range":"67344","text":"66199"},{"range":"67345","text":"66201"},{"range":"67346","text":"66199"},{"range":"67347","text":"66201"},{"range":"67348","text":"66199"},{"range":"67349","text":"66201"},{"range":"67350","text":"66199"},{"range":"67351","text":"66201"},{"range":"67352","text":"66199"},{"range":"67353","text":"66201"},{"range":"67354","text":"66199"},{"range":"67355","text":"66201"},{"range":"67356","text":"66199"},{"range":"67357","text":"66201"},{"range":"67358","text":"66199"},{"range":"67359","text":"66201"},{"range":"67360","text":"66199"},{"range":"67361","text":"66201"},{"range":"67362","text":"66199"},{"range":"67363","text":"66201"},{"range":"67364","text":"66199"},{"range":"67365","text":"66201"},{"range":"67366","text":"66199"},{"range":"67367","text":"66201"},{"range":"67368","text":"66199"},{"range":"67369","text":"66201"},{"range":"67370","text":"66199"},{"range":"67371","text":"66201"},{"range":"67372","text":"66199"},{"range":"67373","text":"66201"},{"range":"67374","text":"66199"},{"range":"67375","text":"66201"},{"range":"67376","text":"66199"},{"range":"67377","text":"66201"},{"range":"67378","text":"66199"},{"range":"67379","text":"66201"},{"range":"67380","text":"66199"},{"range":"67381","text":"66201"},{"range":"67382","text":"66199"},{"range":"67383","text":"66201"},{"range":"67384","text":"66199"},{"range":"67385","text":"66201"},{"range":"67386","text":"66199"},{"range":"67387","text":"66201"},{"range":"67388","text":"66199"},{"range":"67389","text":"66201"},{"range":"67390","text":"66199"},{"range":"67391","text":"66201"},{"range":"67392","text":"66199"},{"range":"67393","text":"66201"},{"range":"67394","text":"66199"},{"range":"67395","text":"66201"},{"range":"67396","text":"66199"},{"range":"67397","text":"66201"},{"range":"67398","text":"66199"},{"range":"67399","text":"66201"},{"range":"67400","text":"66199"},{"range":"67401","text":"66201"},{"range":"67402","text":"66199"},{"range":"67403","text":"66201"},{"range":"67404","text":"66199"},{"range":"67405","text":"66201"},{"range":"67406","text":"66199"},{"range":"67407","text":"66201"},{"range":"67408","text":"66199"},{"range":"67409","text":"66201"},{"range":"67410","text":"66199"},{"range":"67411","text":"66201"},{"range":"67412","text":"66199"},{"range":"67413","text":"66201"},{"range":"67414","text":"66199"},{"range":"67415","text":"66201"},{"range":"67416","text":"66199"},{"range":"67417","text":"66201"},{"range":"67418","text":"66199"},{"range":"67419","text":"66201"},{"range":"67420","text":"66199"},{"range":"67421","text":"66201"},{"range":"67422","text":"66199"},{"range":"67423","text":"66201"},{"range":"67424","text":"66199"},{"range":"67425","text":"66201"},{"range":"67426","text":"66199"},{"range":"67427","text":"66201"},{"range":"67428","text":"66199"},{"range":"67429","text":"66201"},{"range":"67430","text":"66199"},{"range":"67431","text":"66201"},{"range":"67432","text":"66199"},{"range":"67433","text":"66201"},{"range":"67434","text":"66199"},{"range":"67435","text":"66201"},{"range":"67436","text":"66199"},{"range":"67437","text":"66201"},{"range":"67438","text":"66199"},{"range":"67439","text":"66201"},{"range":"67440","text":"66199"},{"range":"67441","text":"66201"},{"range":"67442","text":"66199"},{"range":"67443","text":"66201"},{"range":"67444","text":"66199"},{"range":"67445","text":"66201"},{"range":"67446","text":"66199"},{"range":"67447","text":"66201"},{"range":"67448","text":"66199"},{"range":"67449","text":"66201"},{"range":"67450","text":"66199"},{"range":"67451","text":"66201"},{"range":"67452","text":"66199"},{"range":"67453","text":"66201"},{"range":"67454","text":"66199"},{"range":"67455","text":"66201"},{"range":"67456","text":"66199"},{"range":"67457","text":"66201"},{"range":"67458","text":"66199"},{"range":"67459","text":"66201"},{"range":"67460","text":"66199"},{"range":"67461","text":"66201"},{"range":"67462","text":"66199"},{"range":"67463","text":"66201"},{"range":"67464","text":"66199"},{"range":"67465","text":"66201"},{"range":"67466","text":"66199"},{"range":"67467","text":"66201"},{"range":"67468","text":"66199"},{"range":"67469","text":"66201"},{"range":"67470","text":"66199"},{"range":"67471","text":"66201"},{"range":"67472","text":"66199"},{"range":"67473","text":"66201"},{"range":"67474","text":"66199"},{"range":"67475","text":"66201"},{"range":"67476","text":"66199"},{"range":"67477","text":"66201"},{"range":"67478","text":"66199"},{"range":"67479","text":"66201"},{"range":"67480","text":"66199"},{"range":"67481","text":"66201"},{"range":"67482","text":"66199"},{"range":"67483","text":"66201"},{"range":"67484","text":"66199"},{"range":"67485","text":"66201"},{"range":"67486","text":"66199"},{"range":"67487","text":"66201"},{"range":"67488","text":"66199"},{"range":"67489","text":"66201"},{"range":"67490","text":"66199"},{"range":"67491","text":"66201"},{"range":"67492","text":"66199"},{"range":"67493","text":"66201"},{"range":"67494","text":"66199"},{"range":"67495","text":"66201"},{"range":"67496","text":"66199"},{"range":"67497","text":"66201"},{"range":"67498","text":"66199"},{"range":"67499","text":"66201"},{"range":"67500","text":"66199"},{"range":"67501","text":"66201"},{"range":"67502","text":"66199"},{"range":"67503","text":"66201"},{"range":"67504","text":"66199"},{"range":"67505","text":"66201"},{"range":"67506","text":"66199"},{"range":"67507","text":"66201"},{"range":"67508","text":"66199"},{"range":"67509","text":"66201"},{"range":"67510","text":"66199"},{"range":"67511","text":"66201"},{"range":"67512","text":"66199"},{"range":"67513","text":"66201"},{"range":"67514","text":"66199"},{"range":"67515","text":"66201"},{"range":"67516","text":"66199"},{"range":"67517","text":"66201"},{"range":"67518","text":"66199"},{"range":"67519","text":"66201"},{"range":"67520","text":"66199"},{"range":"67521","text":"66201"},{"range":"67522","text":"66199"},{"range":"67523","text":"66201"},{"range":"67524","text":"66199"},{"range":"67525","text":"66201"},{"range":"67526","text":"66199"},{"range":"67527","text":"66201"},{"range":"67528","text":"66199"},{"range":"67529","text":"66201"},{"range":"67530","text":"66199"},{"range":"67531","text":"66201"},{"range":"67532","text":"66199"},{"range":"67533","text":"66201"},{"range":"67534","text":"66199"},{"range":"67535","text":"66201"},{"range":"67536","text":"66199"},{"range":"67537","text":"66201"},{"range":"67538","text":"66199"},{"range":"67539","text":"66201"},{"range":"67540","text":"66199"},{"range":"67541","text":"66201"},{"range":"67542","text":"66199"},{"range":"67543","text":"66201"},{"range":"67544","text":"66199"},{"range":"67545","text":"66201"},{"range":"67546","text":"66199"},{"range":"67547","text":"66201"},{"range":"67548","text":"66199"},{"range":"67549","text":"66201"},{"range":"67550","text":"66199"},{"range":"67551","text":"66201"},{"range":"67552","text":"66199"},{"range":"67553","text":"66201"},{"range":"67554","text":"66199"},{"range":"67555","text":"66201"},{"range":"67556","text":"66199"},{"range":"67557","text":"66201"},{"range":"67558","text":"66199"},{"range":"67559","text":"66201"},{"range":"67560","text":"66199"},{"range":"67561","text":"66201"},{"range":"67562","text":"66199"},{"range":"67563","text":"66201"},{"range":"67564","text":"66199"},{"range":"67565","text":"66201"},{"range":"67566","text":"66199"},{"range":"67567","text":"66201"},{"range":"67568","text":"66199"},{"range":"67569","text":"66201"},{"range":"67570","text":"66199"},{"range":"67571","text":"66201"},{"range":"67572","text":"66199"},{"range":"67573","text":"66201"},{"range":"67574","text":"66199"},{"range":"67575","text":"66201"},{"range":"67576","text":"66199"},{"range":"67577","text":"66201"},{"range":"67578","text":"66199"},{"range":"67579","text":"66201"},{"range":"67580","text":"66199"},{"range":"67581","text":"66201"},{"range":"67582","text":"66199"},{"range":"67583","text":"66201"},{"range":"67584","text":"66199"},{"range":"67585","text":"66201"},{"range":"67586","text":"66199"},{"range":"67587","text":"66201"},{"range":"67588","text":"66199"},{"range":"67589","text":"66201"},{"range":"67590","text":"66199"},{"range":"67591","text":"66201"},{"range":"67592","text":"66199"},{"range":"67593","text":"66201"},{"range":"67594","text":"66199"},{"range":"67595","text":"66201"},{"range":"67596","text":"66199"},{"range":"67597","text":"66201"},{"range":"67598","text":"66199"},{"range":"67599","text":"66201"},{"range":"67600","text":"66199"},{"range":"67601","text":"66201"},{"range":"67602","text":"66199"},{"range":"67603","text":"66201"},{"range":"67604","text":"66199"},{"range":"67605","text":"66201"},{"range":"67606","text":"66199"},{"range":"67607","text":"66201"},{"range":"67608","text":"66199"},{"range":"67609","text":"66201"},{"range":"67610","text":"66199"},{"range":"67611","text":"66201"},{"range":"67612","text":"66199"},{"range":"67613","text":"66201"},{"range":"67614","text":"66199"},{"range":"67615","text":"66201"},{"range":"67616","text":"66199"},{"range":"67617","text":"66201"},{"range":"67618","text":"66199"},{"range":"67619","text":"66201"},{"range":"67620","text":"66199"},{"range":"67621","text":"66201"},{"range":"67622","text":"66199"},{"range":"67623","text":"66201"},{"range":"67624","text":"66199"},{"range":"67625","text":"66201"},{"range":"67626","text":"66199"},{"range":"67627","text":"66201"},{"range":"67628","text":"66199"},{"range":"67629","text":"66201"},{"range":"67630","text":"66199"},{"range":"67631","text":"66201"},{"range":"67632","text":"66199"},{"range":"67633","text":"66201"},{"range":"67634","text":"66199"},{"range":"67635","text":"66201"},{"range":"67636","text":"66199"},{"range":"67637","text":"66201"},{"range":"67638","text":"66199"},{"range":"67639","text":"66201"},{"range":"67640","text":"66199"},{"range":"67641","text":"66201"},{"range":"67642","text":"66199"},{"range":"67643","text":"66201"},{"range":"67644","text":"66199"},{"range":"67645","text":"66201"},{"range":"67646","text":"66199"},{"range":"67647","text":"66201"},{"range":"67648","text":"66199"},{"range":"67649","text":"66201"},{"range":"67650","text":"66199"},{"range":"67651","text":"66201"},{"range":"67652","text":"66199"},{"range":"67653","text":"66201"},{"range":"67654","text":"66199"},{"range":"67655","text":"66201"},{"range":"67656","text":"66199"},{"range":"67657","text":"66201"},{"range":"67658","text":"66199"},{"range":"67659","text":"66201"},{"range":"67660","text":"66199"},{"range":"67661","text":"66201"},{"range":"67662","text":"66199"},{"range":"67663","text":"66201"},{"range":"67664","text":"66199"},{"range":"67665","text":"66201"},{"range":"67666","text":"66199"},{"range":"67667","text":"66201"},{"range":"67668","text":"66199"},{"range":"67669","text":"66201"},{"range":"67670","text":"66199"},{"range":"67671","text":"66201"},{"range":"67672","text":"66199"},{"range":"67673","text":"66201"},{"range":"67674","text":"66199"},{"range":"67675","text":"66201"},{"range":"67676","text":"66199"},{"range":"67677","text":"66201"},{"range":"67678","text":"66199"},{"range":"67679","text":"66201"},{"range":"67680","text":"66199"},{"range":"67681","text":"66201"},{"range":"67682","text":"66199"},{"range":"67683","text":"66201"},{"range":"67684","text":"66199"},{"range":"67685","text":"66201"},{"range":"67686","text":"66199"},{"range":"67687","text":"66201"},{"range":"67688","text":"66199"},{"range":"67689","text":"66201"},{"range":"67690","text":"66199"},{"range":"67691","text":"66201"},{"range":"67692","text":"66199"},{"range":"67693","text":"66201"},{"range":"67694","text":"66199"},{"range":"67695","text":"66201"},{"range":"67696","text":"66199"},{"range":"67697","text":"66201"},{"range":"67698","text":"66199"},{"range":"67699","text":"66201"},{"range":"67700","text":"66199"},{"range":"67701","text":"66201"},{"range":"67702","text":"66199"},{"range":"67703","text":"66201"},{"range":"67704","text":"66199"},{"range":"67705","text":"66201"},{"range":"67706","text":"66199"},{"range":"67707","text":"66201"},{"range":"67708","text":"66199"},{"range":"67709","text":"66201"},{"range":"67710","text":"66199"},{"range":"67711","text":"66201"},{"range":"67712","text":"66199"},{"range":"67713","text":"66201"},{"range":"67714","text":"66199"},{"range":"67715","text":"66201"},{"range":"67716","text":"66199"},{"range":"67717","text":"66201"},{"range":"67718","text":"66199"},{"range":"67719","text":"66201"},{"range":"67720","text":"66199"},{"range":"67721","text":"66201"},{"range":"67722","text":"66199"},{"range":"67723","text":"66201"},{"range":"67724","text":"66199"},{"range":"67725","text":"66201"},{"range":"67726","text":"66199"},{"range":"67727","text":"66201"},{"range":"67728","text":"66199"},{"range":"67729","text":"66201"},{"range":"67730","text":"66199"},{"range":"67731","text":"66201"},{"range":"67732","text":"66199"},{"range":"67733","text":"66201"},{"range":"67734","text":"66199"},{"range":"67735","text":"66201"},{"range":"67736","text":"66199"},{"range":"67737","text":"66201"},{"range":"67738","text":"66199"},{"range":"67739","text":"66201"},{"range":"67740","text":"66199"},{"range":"67741","text":"66201"},{"range":"67742","text":"66199"},{"range":"67743","text":"66201"},{"range":"67744","text":"66199"},{"range":"67745","text":"66201"},{"range":"67746","text":"66199"},{"range":"67747","text":"66201"},{"range":"67748","text":"66199"},{"range":"67749","text":"66201"},{"range":"67750","text":"66199"},{"range":"67751","text":"66201"},{"range":"67752","text":"66199"},{"range":"67753","text":"66201"},{"range":"67754","text":"66199"},{"range":"67755","text":"66201"},{"range":"67756","text":"66199"},{"range":"67757","text":"66201"},{"range":"67758","text":"66199"},{"range":"67759","text":"66201"},{"range":"67760","text":"66199"},{"range":"67761","text":"66201"},{"range":"67762","text":"66199"},{"range":"67763","text":"66201"},{"range":"67764","text":"66199"},{"range":"67765","text":"66201"},{"range":"67766","text":"66199"},{"range":"67767","text":"66201"},{"range":"67768","text":"66199"},{"range":"67769","text":"66201"},{"range":"67770","text":"66199"},{"range":"67771","text":"66201"},{"range":"67772","text":"66199"},{"range":"67773","text":"66201"},{"range":"67774","text":"66199"},{"range":"67775","text":"66201"},{"range":"67776","text":"66199"},{"range":"67777","text":"66201"},{"range":"67778","text":"66199"},{"range":"67779","text":"66201"},{"range":"67780","text":"66199"},{"range":"67781","text":"66201"},{"range":"67782","text":"66199"},{"range":"67783","text":"66201"},{"range":"67784","text":"66199"},{"range":"67785","text":"66201"},{"range":"67786","text":"66199"},{"range":"67787","text":"66201"},{"range":"67788","text":"66199"},{"range":"67789","text":"66201"},{"range":"67790","text":"66199"},{"range":"67791","text":"66201"},{"range":"67792","text":"66199"},{"range":"67793","text":"66201"},{"range":"67794","text":"66199"},{"range":"67795","text":"66201"},{"range":"67796","text":"66199"},{"range":"67797","text":"66201"},{"range":"67798","text":"66199"},{"range":"67799","text":"66201"},{"range":"67800","text":"66199"},{"range":"67801","text":"66201"},{"range":"67802","text":"66199"},{"range":"67803","text":"66201"},{"range":"67804","text":"66199"},{"range":"67805","text":"66201"},{"range":"67806","text":"66199"},{"range":"67807","text":"66201"},{"range":"67808","text":"66199"},{"range":"67809","text":"66201"},{"range":"67810","text":"66199"},{"range":"67811","text":"66201"},{"range":"67812","text":"66199"},{"range":"67813","text":"66201"},{"range":"67814","text":"66199"},{"range":"67815","text":"66201"},{"range":"67816","text":"66199"},{"range":"67817","text":"66201"},{"range":"67818","text":"66199"},{"range":"67819","text":"66201"},{"range":"67820","text":"66199"},{"range":"67821","text":"66201"},{"range":"67822","text":"66199"},{"range":"67823","text":"66201"},{"range":"67824","text":"66199"},{"range":"67825","text":"66201"},{"range":"67826","text":"66199"},{"range":"67827","text":"66201"},{"range":"67828","text":"66199"},{"range":"67829","text":"66201"},{"range":"67830","text":"66199"},{"range":"67831","text":"66201"},{"range":"67832","text":"66199"},{"range":"67833","text":"66201"},{"range":"67834","text":"66199"},{"range":"67835","text":"66201"},{"range":"67836","text":"66199"},{"range":"67837","text":"66201"},{"range":"67838","text":"66199"},{"range":"67839","text":"66201"},{"range":"67840","text":"66199"},{"range":"67841","text":"66201"},{"range":"67842","text":"66199"},{"range":"67843","text":"66201"},{"range":"67844","text":"66199"},{"range":"67845","text":"66201"},{"range":"67846","text":"66199"},{"range":"67847","text":"66201"},{"range":"67848","text":"66199"},{"range":"67849","text":"66201"},{"range":"67850","text":"66199"},{"range":"67851","text":"66201"},{"range":"67852","text":"66199"},{"range":"67853","text":"66201"},{"range":"67854","text":"66199"},{"range":"67855","text":"66201"},{"range":"67856","text":"66199"},{"range":"67857","text":"66201"},{"range":"67858","text":"66199"},{"range":"67859","text":"66201"},{"range":"67860","text":"66199"},{"range":"67861","text":"66201"},{"range":"67862","text":"66199"},{"range":"67863","text":"66201"},{"range":"67864","text":"66199"},{"range":"67865","text":"66201"},{"range":"67866","text":"66199"},{"range":"67867","text":"66201"},{"range":"67868","text":"66199"},{"range":"67869","text":"66201"},{"range":"67870","text":"66199"},{"range":"67871","text":"66201"},{"range":"67872","text":"66199"},{"range":"67873","text":"66201"},{"range":"67874","text":"66199"},{"range":"67875","text":"66201"},{"range":"67876","text":"66199"},{"range":"67877","text":"66201"},{"range":"67878","text":"66199"},{"range":"67879","text":"66201"},{"range":"67880","text":"66199"},{"range":"67881","text":"66201"},{"range":"67882","text":"66199"},{"range":"67883","text":"66201"},{"range":"67884","text":"66199"},{"range":"67885","text":"66201"},{"range":"67886","text":"66199"},{"range":"67887","text":"66201"},{"range":"67888","text":"66199"},{"range":"67889","text":"66201"},{"range":"67890","text":"66199"},{"range":"67891","text":"66201"},{"range":"67892","text":"66199"},{"range":"67893","text":"66201"},{"range":"67894","text":"66199"},{"range":"67895","text":"66201"},{"range":"67896","text":"66199"},{"range":"67897","text":"66201"},{"range":"67898","text":"66199"},{"range":"67899","text":"66201"},{"range":"67900","text":"66199"},{"range":"67901","text":"66201"},{"range":"67902","text":"66199"},{"range":"67903","text":"66201"},{"range":"67904","text":"66199"},{"range":"67905","text":"66201"},{"range":"67906","text":"66199"},{"range":"67907","text":"66201"},{"range":"67908","text":"66199"},{"range":"67909","text":"66201"},{"range":"67910","text":"66199"},{"range":"67911","text":"66201"},{"range":"67912","text":"66199"},{"range":"67913","text":"66201"},{"range":"67914","text":"66199"},{"range":"67915","text":"66201"},{"range":"67916","text":"66199"},{"range":"67917","text":"66201"},{"range":"67918","text":"66199"},{"range":"67919","text":"66201"},{"range":"67920","text":"66199"},{"range":"67921","text":"66201"},{"range":"67922","text":"66199"},{"range":"67923","text":"66201"},{"range":"67924","text":"66199"},{"range":"67925","text":"66201"},{"range":"67926","text":"66199"},{"range":"67927","text":"66201"},{"range":"67928","text":"66199"},{"range":"67929","text":"66201"},{"range":"67930","text":"66199"},{"range":"67931","text":"66201"},{"range":"67932","text":"66199"},{"range":"67933","text":"66201"},{"range":"67934","text":"66199"},{"range":"67935","text":"66201"},{"range":"67936","text":"66199"},{"range":"67937","text":"66201"},{"range":"67938","text":"66199"},{"range":"67939","text":"66201"},{"range":"67940","text":"66199"},{"range":"67941","text":"66201"},{"range":"67942","text":"66199"},{"range":"67943","text":"66201"},{"range":"67944","text":"66199"},{"range":"67945","text":"66201"},{"range":"67946","text":"66199"},{"range":"67947","text":"66201"},{"range":"67948","text":"66199"},{"range":"67949","text":"66201"},{"range":"67950","text":"66199"},{"range":"67951","text":"66201"},{"range":"67952","text":"66199"},{"range":"67953","text":"66201"},{"range":"67954","text":"66199"},{"range":"67955","text":"66201"},{"range":"67956","text":"66199"},{"range":"67957","text":"66201"},{"range":"67958","text":"66199"},{"range":"67959","text":"66201"},{"range":"67960","text":"66199"},{"range":"67961","text":"66201"},{"range":"67962","text":"66199"},{"range":"67963","text":"66201"},{"range":"67964","text":"66199"},{"range":"67965","text":"66201"},{"range":"67966","text":"66199"},{"range":"67967","text":"66201"},{"range":"67968","text":"66199"},{"range":"67969","text":"66201"},{"range":"67970","text":"66199"},{"range":"67971","text":"66201"},{"range":"67972","text":"66199"},{"range":"67973","text":"66201"},{"range":"67974","text":"66199"},{"range":"67975","text":"66201"},{"range":"67976","text":"66199"},{"range":"67977","text":"66201"},{"range":"67978","text":"66199"},{"range":"67979","text":"66201"},{"range":"67980","text":"66199"},{"range":"67981","text":"66201"},{"range":"67982","text":"66199"},{"range":"67983","text":"66201"},{"range":"67984","text":"66199"},{"range":"67985","text":"66201"},{"range":"67986","text":"66199"},{"range":"67987","text":"66201"},{"range":"67988","text":"66199"},{"range":"67989","text":"66201"},{"range":"67990","text":"66199"},{"range":"67991","text":"66201"},{"range":"67992","text":"66199"},{"range":"67993","text":"66201"},{"range":"67994","text":"66199"},{"range":"67995","text":"66201"},{"range":"67996","text":"66199"},{"range":"67997","text":"66201"},{"range":"67998","text":"66199"},{"range":"67999","text":"66201"},{"range":"68000","text":"66199"},{"range":"68001","text":"66201"},{"range":"68002","text":"66199"},{"range":"68003","text":"66201"},{"range":"68004","text":"66199"},{"range":"68005","text":"66201"},{"range":"68006","text":"66199"},{"range":"68007","text":"66201"},{"range":"68008","text":"66199"},{"range":"68009","text":"66201"},{"range":"68010","text":"66199"},{"range":"68011","text":"66201"},{"range":"68012","text":"66199"},{"range":"68013","text":"66201"},{"range":"68014","text":"66199"},{"range":"68015","text":"66201"},{"range":"68016","text":"66199"},{"range":"68017","text":"66201"},{"range":"68018","text":"66199"},{"range":"68019","text":"66201"},{"range":"68020","text":"66199"},{"range":"68021","text":"66201"},{"range":"68022","text":"66199"},{"range":"68023","text":"66201"},{"range":"68024","text":"66199"},{"range":"68025","text":"66201"},{"range":"68026","text":"66199"},{"range":"68027","text":"66201"},{"range":"68028","text":"66199"},{"range":"68029","text":"66201"},{"range":"68030","text":"66199"},{"range":"68031","text":"66201"},{"range":"68032","text":"66199"},{"range":"68033","text":"66201"},{"range":"68034","text":"66199"},{"range":"68035","text":"66201"},{"range":"68036","text":"66199"},{"range":"68037","text":"66201"},{"range":"68038","text":"66199"},{"range":"68039","text":"66201"},{"range":"68040","text":"66199"},{"range":"68041","text":"66201"},{"range":"68042","text":"66199"},{"range":"68043","text":"66201"},{"range":"68044","text":"66199"},{"range":"68045","text":"66201"},{"range":"68046","text":"66199"},{"range":"68047","text":"66201"},{"range":"68048","text":"66199"},{"range":"68049","text":"66201"},{"range":"68050","text":"66199"},{"range":"68051","text":"66201"},{"range":"68052","text":"66199"},{"range":"68053","text":"66201"},{"range":"68054","text":"66199"},{"range":"68055","text":"66201"},{"range":"68056","text":"66199"},{"range":"68057","text":"66201"},{"range":"68058","text":"66199"},{"range":"68059","text":"66201"},{"range":"68060","text":"66199"},{"range":"68061","text":"66201"},{"range":"68062","text":"66199"},{"range":"68063","text":"66201"},{"range":"68064","text":"66199"},{"range":"68065","text":"66201"},{"range":"68066","text":"66199"},{"range":"68067","text":"66201"},{"range":"68068","text":"66199"},{"range":"68069","text":"66201"},{"range":"68070","text":"66199"},{"range":"68071","text":"66201"},{"range":"68072","text":"66199"},{"range":"68073","text":"66201"},{"range":"68074","text":"66199"},{"range":"68075","text":"66201"},{"range":"68076","text":"66199"},{"range":"68077","text":"66201"},{"range":"68078","text":"66199"},{"range":"68079","text":"66201"},{"range":"68080","text":"66199"},{"range":"68081","text":"66201"},{"range":"68082","text":"66199"},{"range":"68083","text":"66201"},{"range":"68084","text":"66199"},{"range":"68085","text":"66201"},{"range":"68086","text":"66199"},{"range":"68087","text":"66201"},{"range":"68088","text":"66199"},{"range":"68089","text":"66201"},{"range":"68090","text":"66199"},{"range":"68091","text":"66201"},{"range":"68092","text":"66199"},{"range":"68093","text":"66201"},{"range":"68094","text":"66199"},{"range":"68095","text":"66201"},{"range":"68096","text":"66199"},{"range":"68097","text":"66201"},{"range":"68098","text":"66199"},{"range":"68099","text":"66201"},{"range":"68100","text":"66199"},{"range":"68101","text":"66201"},{"range":"68102","text":"66199"},{"range":"68103","text":"66201"},{"range":"68104","text":"66199"},{"range":"68105","text":"66201"},{"range":"68106","text":"66199"},{"range":"68107","text":"66201"},{"range":"68108","text":"66199"},{"range":"68109","text":"66201"},{"range":"68110","text":"66199"},{"range":"68111","text":"66201"},{"range":"68112","text":"66199"},{"range":"68113","text":"66201"},{"range":"68114","text":"66199"},{"range":"68115","text":"66201"},{"range":"68116","text":"66199"},{"range":"68117","text":"66201"},{"range":"68118","text":"66199"},{"range":"68119","text":"66201"},{"range":"68120","text":"66199"},{"range":"68121","text":"66201"},{"range":"68122","text":"66199"},{"range":"68123","text":"66201"},{"range":"68124","text":"66199"},{"range":"68125","text":"66201"},{"range":"68126","text":"66199"},{"range":"68127","text":"66201"},{"range":"68128","text":"66199"},{"range":"68129","text":"66201"},{"range":"68130","text":"66199"},{"range":"68131","text":"66201"},{"range":"68132","text":"66199"},{"range":"68133","text":"66201"},{"range":"68134","text":"66199"},{"range":"68135","text":"66201"},{"range":"68136","text":"66199"},{"range":"68137","text":"66201"},{"range":"68138","text":"66199"},{"range":"68139","text":"66201"},{"range":"68140","text":"66199"},{"range":"68141","text":"66201"},{"range":"68142","text":"66199"},{"range":"68143","text":"66201"},{"range":"68144","text":"66199"},{"range":"68145","text":"66201"},{"range":"68146","text":"66199"},{"range":"68147","text":"66201"},{"range":"68148","text":"66199"},{"range":"68149","text":"66201"},{"range":"68150","text":"66199"},{"range":"68151","text":"66201"},{"range":"68152","text":"66199"},{"range":"68153","text":"66201"},{"range":"68154","text":"66199"},{"range":"68155","text":"66201"},{"range":"68156","text":"66199"},{"range":"68157","text":"66201"},{"range":"68158","text":"66199"},{"range":"68159","text":"66201"},{"range":"68160","text":"66199"},{"range":"68161","text":"66201"},{"range":"68162","text":"66199"},{"range":"68163","text":"66201"},{"range":"68164","text":"66199"},{"range":"68165","text":"66201"},{"range":"68166","text":"66199"},{"range":"68167","text":"66201"},{"range":"68168","text":"66199"},{"range":"68169","text":"66201"},{"range":"68170","text":"66199"},{"range":"68171","text":"66201"},{"range":"68172","text":"66199"},{"range":"68173","text":"66201"},{"range":"68174","text":"66199"},{"range":"68175","text":"66201"},{"range":"68176","text":"66199"},{"range":"68177","text":"66201"},{"range":"68178","text":"66199"},{"range":"68179","text":"66201"},{"range":"68180","text":"66199"},{"range":"68181","text":"66201"},{"range":"68182","text":"66199"},{"range":"68183","text":"66201"},{"range":"68184","text":"66199"},{"range":"68185","text":"66201"},{"range":"68186","text":"66199"},{"range":"68187","text":"66201"},{"range":"68188","text":"66199"},{"range":"68189","text":"66201"},{"range":"68190","text":"66199"},{"range":"68191","text":"66201"},{"range":"68192","text":"66199"},{"range":"68193","text":"66201"},{"range":"68194","text":"66199"},{"range":"68195","text":"66201"},{"range":"68196","text":"66199"},{"range":"68197","text":"66201"},{"range":"68198","text":"66199"},{"range":"68199","text":"66201"},{"range":"68200","text":"66199"},{"range":"68201","text":"66201"},{"range":"68202","text":"66199"},{"range":"68203","text":"66201"},{"range":"68204","text":"66199"},{"range":"68205","text":"66201"},{"range":"68206","text":"66199"},{"range":"68207","text":"66201"},{"range":"68208","text":"66199"},{"range":"68209","text":"66201"},{"range":"68210","text":"66199"},{"range":"68211","text":"66201"},{"range":"68212","text":"66199"},{"range":"68213","text":"66201"},{"range":"68214","text":"66199"},{"range":"68215","text":"66201"},{"range":"68216","text":"66199"},{"range":"68217","text":"66201"},{"range":"68218","text":"66199"},{"range":"68219","text":"66201"},{"range":"68220","text":"66199"},{"range":"68221","text":"66201"},{"range":"68222","text":"66199"},{"range":"68223","text":"66201"},{"range":"68224","text":"66199"},{"range":"68225","text":"66201"},{"range":"68226","text":"66199"},{"range":"68227","text":"66201"},{"range":"68228","text":"66199"},{"range":"68229","text":"66201"},{"range":"68230","text":"66199"},{"range":"68231","text":"66201"},{"range":"68232","text":"66199"},{"range":"68233","text":"66201"},{"range":"68234","text":"66199"},{"range":"68235","text":"66201"},{"range":"68236","text":"66199"},{"range":"68237","text":"66201"},{"range":"68238","text":"66199"},{"range":"68239","text":"66201"},{"range":"68240","text":"66199"},{"range":"68241","text":"66201"},{"range":"68242","text":"66199"},{"range":"68243","text":"66201"},{"range":"68244","text":"66199"},{"range":"68245","text":"66201"},{"range":"68246","text":"66199"},{"range":"68247","text":"66201"},{"range":"68248","text":"66199"},{"range":"68249","text":"66201"},{"range":"68250","text":"66199"},{"range":"68251","text":"66201"},{"range":"68252","text":"66199"},{"range":"68253","text":"66201"},{"range":"68254","text":"66199"},{"range":"68255","text":"66201"},{"range":"68256","text":"66199"},{"range":"68257","text":"66201"},{"range":"68258","text":"66199"},{"range":"68259","text":"66201"},{"range":"68260","text":"66199"},{"range":"68261","text":"66201"},{"range":"68262","text":"66199"},{"range":"68263","text":"66201"},{"range":"68264","text":"66199"},{"range":"68265","text":"66201"},{"range":"68266","text":"66199"},{"range":"68267","text":"66201"},{"range":"68268","text":"66199"},{"range":"68269","text":"66201"},{"range":"68270","text":"66199"},{"range":"68271","text":"66201"},{"range":"68272","text":"66199"},{"range":"68273","text":"66201"},{"range":"68274","text":"66199"},{"range":"68275","text":"66201"},{"range":"68276","text":"66199"},{"range":"68277","text":"66201"},{"range":"68278","text":"66199"},{"range":"68279","text":"66201"},{"range":"68280","text":"66199"},{"range":"68281","text":"66201"},{"range":"68282","text":"66199"},{"range":"68283","text":"66201"},{"range":"68284","text":"66199"},{"range":"68285","text":"66201"},{"range":"68286","text":"66199"},{"range":"68287","text":"66201"},{"range":"68288","text":"66199"},{"range":"68289","text":"66201"},{"range":"68290","text":"66199"},{"range":"68291","text":"66201"},{"range":"68292","text":"66199"},{"range":"68293","text":"66201"},{"range":"68294","text":"66199"},{"range":"68295","text":"66201"},{"range":"68296","text":"66199"},{"range":"68297","text":"66201"},{"range":"68298","text":"66199"},{"range":"68299","text":"66201"},{"range":"68300","text":"66199"},{"range":"68301","text":"66201"},{"range":"68302","text":"66199"},{"range":"68303","text":"66201"},{"range":"68304","text":"66199"},{"range":"68305","text":"66201"},{"range":"68306","text":"66199"},{"range":"68307","text":"66201"},{"range":"68308","text":"66199"},{"range":"68309","text":"66201"},{"range":"68310","text":"66199"},{"range":"68311","text":"66201"},{"range":"68312","text":"66199"},{"range":"68313","text":"66201"},{"range":"68314","text":"66199"},{"range":"68315","text":"66201"},{"range":"68316","text":"66199"},{"range":"68317","text":"66201"},{"range":"68318","text":"66199"},{"range":"68319","text":"66201"},{"range":"68320","text":"66199"},{"range":"68321","text":"66201"},{"range":"68322","text":"66199"},{"range":"68323","text":"66201"},{"range":"68324","text":"66199"},{"range":"68325","text":"66201"},{"range":"68326","text":"66199"},{"range":"68327","text":"66201"},{"range":"68328","text":"66199"},{"range":"68329","text":"66201"},{"range":"68330","text":"66199"},{"range":"68331","text":"66201"},{"range":"68332","text":"66199"},{"range":"68333","text":"66201"},{"range":"68334","text":"66199"},{"range":"68335","text":"66201"},{"range":"68336","text":"66199"},{"range":"68337","text":"66201"},{"range":"68338","text":"66199"},{"range":"68339","text":"66201"},{"range":"68340","text":"66199"},{"range":"68341","text":"66201"},{"range":"68342","text":"66199"},{"range":"68343","text":"66201"},{"range":"68344","text":"66199"},{"range":"68345","text":"66201"},{"range":"68346","text":"66199"},{"range":"68347","text":"66201"},{"range":"68348","text":"66199"},{"range":"68349","text":"66201"},{"range":"68350","text":"66199"},{"range":"68351","text":"66201"},{"range":"68352","text":"66199"},{"range":"68353","text":"66201"},{"range":"68354","text":"66199"},{"range":"68355","text":"66201"},{"range":"68356","text":"66199"},{"range":"68357","text":"66201"},{"range":"68358","text":"66199"},{"range":"68359","text":"66201"},{"range":"68360","text":"66199"},{"range":"68361","text":"66201"},{"range":"68362","text":"66199"},{"range":"68363","text":"66201"},{"range":"68364","text":"66199"},{"range":"68365","text":"66201"},{"range":"68366","text":"66199"},{"range":"68367","text":"66201"},{"range":"68368","text":"66199"},{"range":"68369","text":"66201"},{"range":"68370","text":"66199"},{"range":"68371","text":"66201"},{"range":"68372","text":"66199"},{"range":"68373","text":"66201"},{"range":"68374","text":"66199"},{"range":"68375","text":"66201"},{"range":"68376","text":"66199"},{"range":"68377","text":"66201"},{"range":"68378","text":"66199"},{"range":"68379","text":"66201"},{"range":"68380","text":"66199"},{"range":"68381","text":"66201"},{"range":"68382","text":"66199"},{"range":"68383","text":"66201"},{"range":"68384","text":"66199"},{"range":"68385","text":"66201"},{"range":"68386","text":"66199"},{"range":"68387","text":"66201"},{"range":"68388","text":"66199"},{"range":"68389","text":"66201"},{"range":"68390","text":"66199"},{"range":"68391","text":"66201"},{"range":"68392","text":"66199"},{"range":"68393","text":"66201"},{"range":"68394","text":"66199"},{"range":"68395","text":"66201"},{"range":"68396","text":"66199"},{"range":"68397","text":"66201"},{"range":"68398","text":"66199"},{"range":"68399","text":"66201"},{"range":"68400","text":"66199"},{"range":"68401","text":"66201"},{"range":"68402","text":"66199"},{"range":"68403","text":"66201"},{"range":"68404","text":"66199"},{"range":"68405","text":"66201"},{"range":"68406","text":"66199"},{"range":"68407","text":"66201"},{"range":"68408","text":"66199"},{"range":"68409","text":"66201"},{"range":"68410","text":"66199"},{"range":"68411","text":"66201"},{"range":"68412","text":"66199"},{"range":"68413","text":"66201"},{"range":"68414","text":"66199"},{"range":"68415","text":"66201"},{"range":"68416","text":"66199"},{"range":"68417","text":"66201"},{"range":"68418","text":"66199"},{"range":"68419","text":"66201"},{"range":"68420","text":"66199"},{"range":"68421","text":"66201"},{"range":"68422","text":"66199"},{"range":"68423","text":"66201"},{"range":"68424","text":"66199"},{"range":"68425","text":"66201"},{"range":"68426","text":"66199"},{"range":"68427","text":"66201"},{"range":"68428","text":"66199"},{"range":"68429","text":"66201"},{"range":"68430","text":"66199"},{"range":"68431","text":"66201"},{"range":"68432","text":"66199"},{"range":"68433","text":"66201"},{"range":"68434","text":"66199"},{"range":"68435","text":"66201"},{"range":"68436","text":"66199"},{"range":"68437","text":"66201"},{"range":"68438","text":"66199"},{"range":"68439","text":"66201"},{"range":"68440","text":"66199"},{"range":"68441","text":"66201"},{"range":"68442","text":"66199"},{"range":"68443","text":"66201"},{"range":"68444","text":"66199"},{"range":"68445","text":"66201"},{"range":"68446","text":"66199"},{"range":"68447","text":"66201"},{"range":"68448","text":"66199"},{"range":"68449","text":"66201"},{"range":"68450","text":"66199"},{"range":"68451","text":"66201"},{"range":"68452","text":"66199"},{"range":"68453","text":"66201"},{"range":"68454","text":"66199"},{"range":"68455","text":"66201"},{"range":"68456","text":"66199"},{"range":"68457","text":"66201"},{"range":"68458","text":"66199"},{"range":"68459","text":"66201"},{"range":"68460","text":"66199"},{"range":"68461","text":"66201"},{"range":"68462","text":"66199"},{"range":"68463","text":"66201"},{"range":"68464","text":"66199"},{"range":"68465","text":"66201"},{"range":"68466","text":"66199"},{"range":"68467","text":"66201"},{"range":"68468","text":"66199"},{"range":"68469","text":"66201"},{"range":"68470","text":"66199"},{"range":"68471","text":"66201"},{"range":"68472","text":"66199"},{"range":"68473","text":"66201"},{"range":"68474","text":"66199"},{"range":"68475","text":"66201"},{"range":"68476","text":"66199"},{"range":"68477","text":"66201"},{"range":"68478","text":"66199"},{"range":"68479","text":"66201"},{"range":"68480","text":"66199"},{"range":"68481","text":"66201"},{"range":"68482","text":"66199"},{"range":"68483","text":"66201"},{"range":"68484","text":"66199"},{"range":"68485","text":"66201"},{"range":"68486","text":"66199"},{"range":"68487","text":"66201"},{"range":"68488","text":"66199"},{"range":"68489","text":"66201"},{"range":"68490","text":"66199"},{"range":"68491","text":"66201"},{"range":"68492","text":"66199"},{"range":"68493","text":"66201"},{"range":"68494","text":"66199"},{"range":"68495","text":"66201"},{"range":"68496","text":"66199"},{"range":"68497","text":"66201"},{"range":"68498","text":"66199"},{"range":"68499","text":"66201"},{"range":"68500","text":"66199"},{"range":"68501","text":"66201"},{"range":"68502","text":"66199"},{"range":"68503","text":"66201"},{"range":"68504","text":"66199"},{"range":"68505","text":"66201"},{"range":"68506","text":"66199"},{"range":"68507","text":"66201"},{"range":"68508","text":"66199"},{"range":"68509","text":"66201"},{"range":"68510","text":"66199"},{"range":"68511","text":"66201"},{"range":"68512","text":"66199"},{"range":"68513","text":"66201"},{"range":"68514","text":"66199"},{"range":"68515","text":"66201"},{"range":"68516","text":"66199"},{"range":"68517","text":"66201"},{"range":"68518","text":"66199"},{"range":"68519","text":"66201"},{"range":"68520","text":"66199"},{"range":"68521","text":"66201"},{"range":"68522","text":"66199"},{"range":"68523","text":"66201"},{"range":"68524","text":"66199"},{"range":"68525","text":"66201"},{"range":"68526","text":"66199"},{"range":"68527","text":"66201"},{"range":"68528","text":"66199"},{"range":"68529","text":"66201"},{"range":"68530","text":"66199"},{"range":"68531","text":"66201"},{"range":"68532","text":"66199"},{"range":"68533","text":"66201"},{"range":"68534","text":"66199"},{"range":"68535","text":"66201"},{"range":"68536","text":"66199"},{"range":"68537","text":"66201"},{"range":"68538","text":"66199"},{"range":"68539","text":"66201"},{"range":"68540","text":"66199"},{"range":"68541","text":"66201"},{"range":"68542","text":"66199"},{"range":"68543","text":"66201"},{"range":"68544","text":"66199"},{"range":"68545","text":"66201"},{"range":"68546","text":"66199"},{"range":"68547","text":"66201"},{"range":"68548","text":"66199"},{"range":"68549","text":"66201"},{"range":"68550","text":"66199"},{"range":"68551","text":"66201"},{"range":"68552","text":"66199"},{"range":"68553","text":"66201"},{"range":"68554","text":"66199"},{"range":"68555","text":"66201"},{"range":"68556","text":"66199"},{"range":"68557","text":"66201"},{"range":"68558","text":"66199"},{"range":"68559","text":"66201"},{"range":"68560","text":"66199"},{"range":"68561","text":"66201"},{"range":"68562","text":"66199"},{"range":"68563","text":"66201"},{"range":"68564","text":"66199"},{"range":"68565","text":"66201"},{"range":"68566","text":"66199"},{"range":"68567","text":"66201"},{"range":"68568","text":"66199"},{"range":"68569","text":"66201"},{"range":"68570","text":"66199"},{"range":"68571","text":"66201"},{"range":"68572","text":"66199"},{"range":"68573","text":"66201"},{"range":"68574","text":"66199"},{"range":"68575","text":"66201"},{"range":"68576","text":"66199"},{"range":"68577","text":"66201"},{"range":"68578","text":"66199"},{"range":"68579","text":"66201"},{"range":"68580","text":"66199"},{"range":"68581","text":"66201"},{"range":"68582","text":"66199"},{"range":"68583","text":"66201"},{"range":"68584","text":"66199"},{"range":"68585","text":"66201"},{"range":"68586","text":"66199"},{"range":"68587","text":"66201"},{"range":"68588","text":"66199"},{"range":"68589","text":"66201"},{"range":"68590","text":"66199"},{"range":"68591","text":"66201"},{"range":"68592","text":"66199"},{"range":"68593","text":"66201"},{"range":"68594","text":"66199"},{"range":"68595","text":"66201"},{"range":"68596","text":"66199"},{"range":"68597","text":"66201"},{"range":"68598","text":"66199"},{"range":"68599","text":"66201"},{"range":"68600","text":"66199"},{"range":"68601","text":"66201"},{"range":"68602","text":"66199"},{"range":"68603","text":"66201"},{"range":"68604","text":"66199"},{"range":"68605","text":"66201"},{"range":"68606","text":"66199"},{"range":"68607","text":"66201"},{"range":"68608","text":"66199"},{"range":"68609","text":"66201"},{"range":"68610","text":"66199"},{"range":"68611","text":"66201"},{"range":"68612","text":"66199"},{"range":"68613","text":"66201"},{"range":"68614","text":"66199"},{"range":"68615","text":"66201"},{"range":"68616","text":"66199"},{"range":"68617","text":"66201"},{"range":"68618","text":"66199"},{"range":"68619","text":"66201"},{"range":"68620","text":"66199"},{"range":"68621","text":"66201"},{"range":"68622","text":"66199"},{"range":"68623","text":"66201"},{"range":"68624","text":"66199"},{"range":"68625","text":"66201"},{"range":"68626","text":"66199"},{"range":"68627","text":"66201"},{"range":"68628","text":"66199"},{"range":"68629","text":"66201"},{"range":"68630","text":"66199"},{"range":"68631","text":"66201"},{"range":"68632","text":"66199"},{"range":"68633","text":"66201"},{"range":"68634","text":"66199"},{"range":"68635","text":"66201"},{"range":"68636","text":"66199"},{"range":"68637","text":"66201"},{"range":"68638","text":"66199"},{"range":"68639","text":"66201"},{"range":"68640","text":"66199"},{"range":"68641","text":"66201"},{"range":"68642","text":"66199"},{"range":"68643","text":"66201"},{"range":"68644","text":"66199"},{"range":"68645","text":"66201"},{"range":"68646","text":"66199"},{"range":"68647","text":"66201"},{"range":"68648","text":"66199"},{"range":"68649","text":"66201"},{"range":"68650","text":"66199"},{"range":"68651","text":"66201"},{"range":"68652","text":"66199"},{"range":"68653","text":"66201"},{"range":"68654","text":"66199"},{"range":"68655","text":"66201"},{"range":"68656","text":"66199"},{"range":"68657","text":"66201"},{"range":"68658","text":"66199"},{"range":"68659","text":"66201"},{"range":"68660","text":"66199"},{"range":"68661","text":"66201"},{"range":"68662","text":"66199"},{"range":"68663","text":"66201"},{"range":"68664","text":"66199"},{"range":"68665","text":"66201"},{"range":"68666","text":"66199"},{"range":"68667","text":"66201"},{"range":"68668","text":"66199"},{"range":"68669","text":"66201"},{"range":"68670","text":"66199"},{"range":"68671","text":"66201"},{"range":"68672","text":"66199"},{"range":"68673","text":"66201"},{"range":"68674","text":"66199"},{"range":"68675","text":"66201"},{"range":"68676","text":"66199"},{"range":"68677","text":"66201"},{"range":"68678","text":"66199"},{"range":"68679","text":"66201"},{"range":"68680","text":"66199"},{"range":"68681","text":"66201"},{"range":"68682","text":"66199"},{"range":"68683","text":"66201"},{"range":"68684","text":"66199"},{"range":"68685","text":"66201"},{"range":"68686","text":"66199"},{"range":"68687","text":"66201"},{"range":"68688","text":"66199"},{"range":"68689","text":"66201"},{"range":"68690","text":"66199"},{"range":"68691","text":"66201"},{"range":"68692","text":"66199"},{"range":"68693","text":"66201"},{"range":"68694","text":"66199"},{"range":"68695","text":"66201"},{"range":"68696","text":"66199"},{"range":"68697","text":"66201"},{"range":"68698","text":"66199"},{"range":"68699","text":"66201"},{"range":"68700","text":"66199"},{"range":"68701","text":"66201"},{"range":"68702","text":"66199"},{"range":"68703","text":"66201"},{"range":"68704","text":"66199"},{"range":"68705","text":"66201"},{"range":"68706","text":"66199"},{"range":"68707","text":"66201"},{"range":"68708","text":"66199"},{"range":"68709","text":"66201"},{"range":"68710","text":"66199"},{"range":"68711","text":"66201"},{"range":"68712","text":"66199"},{"range":"68713","text":"66201"},{"range":"68714","text":"66199"},{"range":"68715","text":"66201"},{"range":"68716","text":"66199"},{"range":"68717","text":"66201"},{"range":"68718","text":"66199"},{"range":"68719","text":"66201"},{"range":"68720","text":"66199"},{"range":"68721","text":"66201"},{"range":"68722","text":"66199"},{"range":"68723","text":"66201"},{"range":"68724","text":"66199"},{"range":"68725","text":"66201"},{"range":"68726","text":"66199"},{"range":"68727","text":"66201"},{"range":"68728","text":"66199"},{"range":"68729","text":"66201"},{"range":"68730","text":"66199"},{"range":"68731","text":"66201"},{"range":"68732","text":"66199"},{"range":"68733","text":"66201"},{"range":"68734","text":"66199"},{"range":"68735","text":"66201"},{"range":"68736","text":"66199"},{"range":"68737","text":"66201"},{"range":"68738","text":"66199"},{"range":"68739","text":"66201"},{"range":"68740","text":"66199"},{"range":"68741","text":"66201"},{"range":"68742","text":"66199"},{"range":"68743","text":"66201"},{"range":"68744","text":"66199"},{"range":"68745","text":"66201"},{"range":"68746","text":"66199"},{"range":"68747","text":"66201"},{"range":"68748","text":"66199"},{"range":"68749","text":"66201"},{"range":"68750","text":"66199"},{"range":"68751","text":"66201"},{"range":"68752","text":"66199"},{"range":"68753","text":"66201"},{"range":"68754","text":"66199"},{"range":"68755","text":"66201"},{"range":"68756","text":"66199"},{"range":"68757","text":"66201"},{"range":"68758","text":"66199"},{"range":"68759","text":"66201"},{"range":"68760","text":"66199"},{"range":"68761","text":"66201"},{"range":"68762","text":"66199"},{"range":"68763","text":"66201"},{"range":"68764","text":"66199"},{"range":"68765","text":"66201"},{"range":"68766","text":"66199"},{"range":"68767","text":"66201"},{"range":"68768","text":"66199"},{"range":"68769","text":"66201"},{"range":"68770","text":"66199"},{"range":"68771","text":"66201"},{"range":"68772","text":"66199"},{"range":"68773","text":"66201"},{"range":"68774","text":"66199"},{"range":"68775","text":"66201"},{"range":"68776","text":"66199"},{"range":"68777","text":"66201"},{"range":"68778","text":"66199"},{"range":"68779","text":"66201"},{"range":"68780","text":"66199"},{"range":"68781","text":"66201"},{"range":"68782","text":"66199"},{"range":"68783","text":"66201"},{"range":"68784","text":"66199"},{"range":"68785","text":"66201"},{"range":"68786","text":"66199"},{"range":"68787","text":"66201"},{"range":"68788","text":"66199"},{"range":"68789","text":"66201"},{"range":"68790","text":"66199"},{"range":"68791","text":"66201"},{"range":"68792","text":"66199"},{"range":"68793","text":"66201"},{"range":"68794","text":"66199"},{"range":"68795","text":"66201"},{"range":"68796","text":"66199"},{"range":"68797","text":"66201"},{"range":"68798","text":"66199"},{"range":"68799","text":"66201"},{"range":"68800","text":"66199"},{"range":"68801","text":"66201"},{"range":"68802","text":"66199"},{"range":"68803","text":"66201"},{"range":"68804","text":"66199"},{"range":"68805","text":"66201"},{"range":"68806","text":"66199"},{"range":"68807","text":"66201"},{"range":"68808","text":"66199"},{"range":"68809","text":"66201"},{"range":"68810","text":"66199"},{"range":"68811","text":"66201"},{"range":"68812","text":"66199"},{"range":"68813","text":"66201"},{"range":"68814","text":"66199"},{"range":"68815","text":"66201"},{"range":"68816","text":"66199"},{"range":"68817","text":"66201"},{"range":"68818","text":"66199"},{"range":"68819","text":"66201"},{"range":"68820","text":"66199"},{"range":"68821","text":"66201"},{"range":"68822","text":"66199"},{"range":"68823","text":"66201"},{"range":"68824","text":"66199"},{"range":"68825","text":"66201"},{"range":"68826","text":"66199"},{"range":"68827","text":"66201"},{"range":"68828","text":"66199"},{"range":"68829","text":"66201"},{"range":"68830","text":"66199"},{"range":"68831","text":"66201"},{"range":"68832","text":"66199"},{"range":"68833","text":"66201"},{"range":"68834","text":"66199"},{"range":"68835","text":"66201"},{"range":"68836","text":"66199"},{"range":"68837","text":"66201"},{"range":"68838","text":"66199"},{"range":"68839","text":"66201"},{"range":"68840","text":"66199"},{"range":"68841","text":"66201"},{"range":"68842","text":"66199"},{"range":"68843","text":"66201"},{"range":"68844","text":"66199"},{"range":"68845","text":"66201"},{"range":"68846","text":"66199"},{"range":"68847","text":"66201"},{"range":"68848","text":"66199"},{"range":"68849","text":"66201"},{"range":"68850","text":"66199"},{"range":"68851","text":"66201"},{"range":"68852","text":"66199"},{"range":"68853","text":"66201"},{"range":"68854","text":"66199"},{"range":"68855","text":"66201"},{"range":"68856","text":"66199"},{"range":"68857","text":"66201"},{"range":"68858","text":"66199"},{"range":"68859","text":"66201"},{"range":"68860","text":"66199"},{"range":"68861","text":"66201"},{"range":"68862","text":"66199"},{"range":"68863","text":"66201"},{"range":"68864","text":"66199"},{"range":"68865","text":"66201"},{"range":"68866","text":"66199"},{"range":"68867","text":"66201"},{"range":"68868","text":"66199"},{"range":"68869","text":"66201"},{"range":"68870","text":"66199"},{"range":"68871","text":"66201"},{"range":"68872","text":"66199"},{"range":"68873","text":"66201"},{"range":"68874","text":"66199"},{"range":"68875","text":"66201"},{"range":"68876","text":"66199"},{"range":"68877","text":"66201"},{"range":"68878","text":"66199"},{"range":"68879","text":"66201"},{"range":"68880","text":"66199"},{"range":"68881","text":"66201"},{"range":"68882","text":"66199"},{"range":"68883","text":"66201"},{"range":"68884","text":"66199"},{"range":"68885","text":"66201"},{"range":"68886","text":"66199"},{"range":"68887","text":"66201"},{"range":"68888","text":"66199"},{"range":"68889","text":"66201"},{"range":"68890","text":"66199"},{"range":"68891","text":"66201"},{"range":"68892","text":"66199"},{"range":"68893","text":"66201"},{"range":"68894","text":"66199"},{"range":"68895","text":"66201"},{"range":"68896","text":"66199"},{"range":"68897","text":"66201"},{"range":"68898","text":"66199"},{"range":"68899","text":"66201"},{"range":"68900","text":"66199"},{"range":"68901","text":"66201"},{"range":"68902","text":"66199"},{"range":"68903","text":"66201"},{"range":"68904","text":"66199"},{"range":"68905","text":"66201"},{"range":"68906","text":"66199"},{"range":"68907","text":"66201"},{"range":"68908","text":"66199"},{"range":"68909","text":"66201"},{"range":"68910","text":"66199"},{"range":"68911","text":"66201"},{"range":"68912","text":"66199"},{"range":"68913","text":"66201"},{"range":"68914","text":"66199"},{"range":"68915","text":"66201"},{"range":"68916","text":"66199"},{"range":"68917","text":"66201"},{"range":"68918","text":"66199"},{"range":"68919","text":"66201"},{"range":"68920","text":"66199"},{"range":"68921","text":"66201"},{"range":"68922","text":"66199"},{"range":"68923","text":"66201"},{"range":"68924","text":"66199"},{"range":"68925","text":"66201"},{"range":"68926","text":"66199"},{"range":"68927","text":"66201"},{"range":"68928","text":"66199"},{"range":"68929","text":"66201"},{"range":"68930","text":"66199"},{"range":"68931","text":"66201"},{"range":"68932","text":"66199"},{"range":"68933","text":"66201"},{"range":"68934","text":"66199"},{"range":"68935","text":"66201"},{"range":"68936","text":"66199"},{"range":"68937","text":"66201"},{"range":"68938","text":"66199"},{"range":"68939","text":"66201"},{"range":"68940","text":"66199"},{"range":"68941","text":"66201"},{"range":"68942","text":"66199"},{"range":"68943","text":"66201"},{"range":"68944","text":"66199"},{"range":"68945","text":"66201"},{"range":"68946","text":"66199"},{"range":"68947","text":"66201"},{"range":"68948","text":"66199"},{"range":"68949","text":"66201"},{"range":"68950","text":"66199"},{"range":"68951","text":"66201"},{"range":"68952","text":"66199"},{"range":"68953","text":"66201"},{"range":"68954","text":"66199"},{"range":"68955","text":"66201"},{"range":"68956","text":"66199"},{"range":"68957","text":"66201"},{"range":"68958","text":"66199"},{"range":"68959","text":"66201"},{"range":"68960","text":"66199"},{"range":"68961","text":"66201"},{"range":"68962","text":"66199"},{"range":"68963","text":"66201"},{"range":"68964","text":"66199"},{"range":"68965","text":"66201"},{"range":"68966","text":"66199"},{"range":"68967","text":"66201"},{"range":"68968","text":"66199"},{"range":"68969","text":"66201"},{"range":"68970","text":"66199"},{"range":"68971","text":"66201"},{"range":"68972","text":"66199"},{"range":"68973","text":"66201"},{"range":"68974","text":"66199"},{"range":"68975","text":"66201"},{"range":"68976","text":"66199"},{"range":"68977","text":"66201"},{"range":"68978","text":"66199"},{"range":"68979","text":"66201"},{"range":"68980","text":"66199"},{"range":"68981","text":"66201"},{"range":"68982","text":"66199"},{"range":"68983","text":"66201"},{"range":"68984","text":"66199"},{"range":"68985","text":"66201"},{"range":"68986","text":"66199"},{"range":"68987","text":"66201"},{"range":"68988","text":"66199"},{"range":"68989","text":"66201"},{"range":"68990","text":"66199"},{"range":"68991","text":"66201"},{"range":"68992","text":"66199"},{"range":"68993","text":"66201"},{"range":"68994","text":"66199"},{"range":"68995","text":"66201"},{"range":"68996","text":"66199"},{"range":"68997","text":"66201"},{"range":"68998","text":"66199"},{"range":"68999","text":"66201"},{"range":"69000","text":"66199"},{"range":"69001","text":"66201"},{"range":"69002","text":"66199"},{"range":"69003","text":"66201"},{"range":"69004","text":"66199"},{"range":"69005","text":"66201"},{"range":"69006","text":"66199"},{"range":"69007","text":"66201"},{"range":"69008","text":"66199"},{"range":"69009","text":"66201"},{"range":"69010","text":"66199"},{"range":"69011","text":"66201"},{"range":"69012","text":"66199"},{"range":"69013","text":"66201"},{"range":"69014","text":"66199"},{"range":"69015","text":"66201"},{"range":"69016","text":"66199"},{"range":"69017","text":"66201"},{"range":"69018","text":"66199"},{"range":"69019","text":"66201"},{"range":"69020","text":"66199"},{"range":"69021","text":"66201"},{"range":"69022","text":"66199"},{"range":"69023","text":"66201"},{"range":"69024","text":"66199"},{"range":"69025","text":"66201"},{"range":"69026","text":"66199"},{"range":"69027","text":"66201"},{"range":"69028","text":"66199"},{"range":"69029","text":"66201"},{"range":"69030","text":"66199"},{"range":"69031","text":"66201"},{"range":"69032","text":"66199"},{"range":"69033","text":"66201"},{"range":"69034","text":"66199"},{"range":"69035","text":"66201"},{"range":"69036","text":"66199"},{"range":"69037","text":"66201"},{"range":"69038","text":"66199"},{"range":"69039","text":"66201"},{"range":"69040","text":"66199"},{"range":"69041","text":"66201"},{"range":"69042","text":"66199"},{"range":"69043","text":"66201"},{"range":"69044","text":"66199"},{"range":"69045","text":"66201"},{"range":"69046","text":"66199"},{"range":"69047","text":"66201"},{"range":"69048","text":"66199"},{"range":"69049","text":"66201"},{"range":"69050","text":"66199"},{"range":"69051","text":"66201"},{"range":"69052","text":"66199"},{"range":"69053","text":"66201"},{"range":"69054","text":"66199"},{"range":"69055","text":"66201"},{"range":"69056","text":"66199"},{"range":"69057","text":"66201"},{"range":"69058","text":"66199"},{"range":"69059","text":"66201"},{"range":"69060","text":"66199"},{"range":"69061","text":"66201"},{"range":"69062","text":"66199"},{"range":"69063","text":"66201"},{"range":"69064","text":"66199"},{"range":"69065","text":"66201"},{"range":"69066","text":"66199"},{"range":"69067","text":"66201"},{"range":"69068","text":"66199"},{"range":"69069","text":"66201"},{"range":"69070","text":"66199"},{"range":"69071","text":"66201"},{"range":"69072","text":"66199"},{"range":"69073","text":"66201"},{"range":"69074","text":"66199"},{"range":"69075","text":"66201"},{"range":"69076","text":"66199"},{"range":"69077","text":"66201"},{"range":"69078","text":"66199"},{"range":"69079","text":"66201"},{"range":"69080","text":"66199"},{"range":"69081","text":"66201"},{"range":"69082","text":"66199"},{"range":"69083","text":"66201"},{"range":"69084","text":"66199"},{"range":"69085","text":"66201"},{"range":"69086","text":"66199"},{"range":"69087","text":"66201"},{"range":"69088","text":"66199"},{"range":"69089","text":"66201"},{"range":"69090","text":"66199"},{"range":"69091","text":"66201"},{"range":"69092","text":"66199"},{"range":"69093","text":"66201"},{"range":"69094","text":"66199"},{"range":"69095","text":"66201"},{"range":"69096","text":"66199"},{"range":"69097","text":"66201"},{"range":"69098","text":"66199"},{"range":"69099","text":"66201"},{"range":"69100","text":"66199"},{"range":"69101","text":"66201"},{"range":"69102","text":"66199"},{"range":"69103","text":"66201"},{"range":"69104","text":"66199"},{"range":"69105","text":"66201"},{"range":"69106","text":"66199"},{"range":"69107","text":"66201"},{"range":"69108","text":"66199"},{"range":"69109","text":"66201"},{"range":"69110","text":"66199"},{"range":"69111","text":"66201"},{"range":"69112","text":"66199"},{"range":"69113","text":"66201"},{"range":"69114","text":"66199"},{"range":"69115","text":"66201"},{"range":"69116","text":"66199"},{"range":"69117","text":"66201"},{"range":"69118","text":"66199"},{"range":"69119","text":"66201"},{"range":"69120","text":"66199"},{"range":"69121","text":"66201"},{"range":"69122","text":"66199"},{"range":"69123","text":"66201"},{"range":"69124","text":"66199"},{"range":"69125","text":"66201"},{"range":"69126","text":"66199"},{"range":"69127","text":"66201"},{"range":"69128","text":"66199"},{"range":"69129","text":"66201"},{"range":"69130","text":"66199"},{"range":"69131","text":"66201"},{"range":"69132","text":"66199"},{"range":"69133","text":"66201"},{"range":"69134","text":"66199"},{"range":"69135","text":"66201"},{"range":"69136","text":"66199"},{"range":"69137","text":"66201"},{"range":"69138","text":"66199"},{"range":"69139","text":"66201"},{"range":"69140","text":"66199"},{"range":"69141","text":"66201"},{"range":"69142","text":"66199"},{"range":"69143","text":"66201"},{"range":"69144","text":"66199"},{"range":"69145","text":"66201"},{"range":"69146","text":"66199"},{"range":"69147","text":"66201"},{"range":"69148","text":"66199"},{"range":"69149","text":"66201"},{"range":"69150","text":"66199"},{"range":"69151","text":"66201"},{"range":"69152","text":"66199"},{"range":"69153","text":"66201"},{"range":"69154","text":"66199"},{"range":"69155","text":"66201"},{"range":"69156","text":"66199"},{"range":"69157","text":"66201"},{"range":"69158","text":"66199"},{"range":"69159","text":"66201"},{"range":"69160","text":"66199"},{"range":"69161","text":"66201"},{"range":"69162","text":"66199"},{"range":"69163","text":"66201"},{"range":"69164","text":"66199"},{"range":"69165","text":"66201"},{"range":"69166","text":"66199"},{"range":"69167","text":"66201"},{"range":"69168","text":"66199"},{"range":"69169","text":"66201"},{"range":"69170","text":"66199"},{"range":"69171","text":"66201"},{"range":"69172","text":"66199"},{"range":"69173","text":"66201"},{"range":"69174","text":"66199"},{"range":"69175","text":"66201"},{"range":"69176","text":"66199"},{"range":"69177","text":"66201"},{"range":"69178","text":"66199"},{"range":"69179","text":"66201"},{"range":"69180","text":"66199"},{"range":"69181","text":"66201"},{"range":"69182","text":"66199"},{"range":"69183","text":"66201"},{"range":"69184","text":"66199"},{"range":"69185","text":"66201"},{"range":"69186","text":"66199"},{"range":"69187","text":"66201"},{"range":"69188","text":"66199"},{"range":"69189","text":"66201"},{"range":"69190","text":"66199"},{"range":"69191","text":"66201"},{"range":"69192","text":"66199"},{"range":"69193","text":"66201"},{"range":"69194","text":"66199"},{"range":"69195","text":"66201"},{"range":"69196","text":"66199"},{"range":"69197","text":"66201"},{"range":"69198","text":"66199"},{"range":"69199","text":"66201"},{"range":"69200","text":"66199"},{"range":"69201","text":"66201"},{"range":"69202","text":"66199"},{"range":"69203","text":"66201"},{"range":"69204","text":"66199"},{"range":"69205","text":"66201"},{"range":"69206","text":"66199"},{"range":"69207","text":"66201"},{"range":"69208","text":"66199"},{"range":"69209","text":"66201"},{"range":"69210","text":"66199"},{"range":"69211","text":"66201"},{"range":"69212","text":"66199"},{"range":"69213","text":"66201"},{"range":"69214","text":"66199"},{"range":"69215","text":"66201"},{"range":"69216","text":"66199"},{"range":"69217","text":"66201"},{"range":"69218","text":"66199"},{"range":"69219","text":"66201"},{"range":"69220","text":"66199"},{"range":"69221","text":"66201"},{"range":"69222","text":"66199"},{"range":"69223","text":"66201"},{"range":"69224","text":"66199"},{"range":"69225","text":"66201"},{"range":"69226","text":"66199"},{"range":"69227","text":"66201"},{"range":"69228","text":"66199"},{"range":"69229","text":"66201"},{"range":"69230","text":"66199"},{"range":"69231","text":"66201"},{"range":"69232","text":"66199"},{"range":"69233","text":"66201"},{"range":"69234","text":"66199"},{"range":"69235","text":"66201"},{"range":"69236","text":"66199"},{"range":"69237","text":"66201"},{"range":"69238","text":"66199"},{"range":"69239","text":"66201"},{"range":"69240","text":"66199"},{"range":"69241","text":"66201"},{"range":"69242","text":"66199"},{"range":"69243","text":"66201"},{"range":"69244","text":"66199"},{"range":"69245","text":"66201"},{"range":"69246","text":"66199"},{"range":"69247","text":"66201"},{"range":"69248","text":"66199"},{"range":"69249","text":"66201"},{"range":"69250","text":"66199"},{"range":"69251","text":"66201"},{"range":"69252","text":"66199"},{"range":"69253","text":"66201"},{"range":"69254","text":"66199"},{"range":"69255","text":"66201"},{"range":"69256","text":"66199"},{"range":"69257","text":"66201"},{"range":"69258","text":"66199"},{"range":"69259","text":"66201"},{"range":"69260","text":"66199"},{"range":"69261","text":"66201"},{"range":"69262","text":"66199"},{"range":"69263","text":"66201"},{"range":"69264","text":"66199"},{"range":"69265","text":"66201"},{"range":"69266","text":"66199"},{"range":"69267","text":"66201"},{"range":"69268","text":"66199"},{"range":"69269","text":"66201"},{"range":"69270","text":"66199"},{"range":"69271","text":"66201"},{"range":"69272","text":"66199"},{"range":"69273","text":"66201"},{"range":"69274","text":"66199"},{"range":"69275","text":"66201"},{"range":"69276","text":"66199"},{"range":"69277","text":"66201"},{"range":"69278","text":"66199"},{"range":"69279","text":"66201"},{"range":"69280","text":"66199"},{"range":"69281","text":"66201"},{"range":"69282","text":"66199"},{"range":"69283","text":"66201"},{"range":"69284","text":"66199"},{"range":"69285","text":"66201"},{"range":"69286","text":"66199"},{"range":"69287","text":"66201"},{"range":"69288","text":"66199"},{"range":"69289","text":"66201"},{"range":"69290","text":"66199"},{"range":"69291","text":"66201"},{"range":"69292","text":"66199"},{"range":"69293","text":"66201"},{"range":"69294","text":"66199"},{"range":"69295","text":"66201"},{"range":"69296","text":"66199"},{"range":"69297","text":"66201"},{"range":"69298","text":"66199"},{"range":"69299","text":"66201"},{"range":"69300","text":"66199"},{"range":"69301","text":"66201"},{"range":"69302","text":"66199"},{"range":"69303","text":"66201"},{"range":"69304","text":"66199"},{"range":"69305","text":"66201"},{"range":"69306","text":"66199"},{"range":"69307","text":"66201"},{"range":"69308","text":"66199"},{"range":"69309","text":"66201"},{"range":"69310","text":"66199"},{"range":"69311","text":"66201"},{"range":"69312","text":"66199"},{"range":"69313","text":"66201"},{"range":"69314","text":"66199"},{"range":"69315","text":"66201"},{"range":"69316","text":"66199"},{"range":"69317","text":"66201"},{"range":"69318","text":"66199"},{"range":"69319","text":"66201"},{"range":"69320","text":"66199"},{"range":"69321","text":"66201"},{"range":"69322","text":"66199"},{"range":"69323","text":"66201"},{"range":"69324","text":"66199"},{"range":"69325","text":"66201"},{"range":"69326","text":"66199"},{"range":"69327","text":"66201"},{"range":"69328","text":"66199"},{"range":"69329","text":"66201"},{"range":"69330","text":"66199"},{"range":"69331","text":"66201"},{"range":"69332","text":"66199"},{"range":"69333","text":"66201"},{"range":"69334","text":"66199"},{"range":"69335","text":"66201"},{"range":"69336","text":"66199"},{"range":"69337","text":"66201"},{"range":"69338","text":"66199"},{"range":"69339","text":"66201"},{"range":"69340","text":"66199"},{"range":"69341","text":"66201"},{"range":"69342","text":"66199"},{"range":"69343","text":"66201"},{"range":"69344","text":"66199"},{"range":"69345","text":"66201"},{"range":"69346","text":"66199"},{"range":"69347","text":"66201"},{"range":"69348","text":"66199"},{"range":"69349","text":"66201"},{"range":"69350","text":"66199"},{"range":"69351","text":"66201"},{"range":"69352","text":"66199"},{"range":"69353","text":"66201"},{"range":"69354","text":"66199"},{"range":"69355","text":"66201"},{"range":"69356","text":"66199"},{"range":"69357","text":"66201"},{"range":"69358","text":"66199"},{"range":"69359","text":"66201"},{"range":"69360","text":"66199"},{"range":"69361","text":"66201"},{"range":"69362","text":"66199"},{"range":"69363","text":"66201"},{"range":"69364","text":"66199"},{"range":"69365","text":"66201"},{"range":"69366","text":"66199"},{"range":"69367","text":"66201"},{"range":"69368","text":"66199"},{"range":"69369","text":"66201"},{"range":"69370","text":"66199"},{"range":"69371","text":"66201"},{"range":"69372","text":"66199"},{"range":"69373","text":"66201"},{"range":"69374","text":"66199"},{"range":"69375","text":"66201"},{"range":"69376","text":"66199"},{"range":"69377","text":"66201"},{"range":"69378","text":"66199"},{"range":"69379","text":"66201"},{"range":"69380","text":"66199"},{"range":"69381","text":"66201"},{"range":"69382","text":"66199"},{"range":"69383","text":"66201"},{"range":"69384","text":"66199"},{"range":"69385","text":"66201"},{"range":"69386","text":"66199"},{"range":"69387","text":"66201"},{"range":"69388","text":"66199"},{"range":"69389","text":"66201"},{"range":"69390","text":"66199"},{"range":"69391","text":"66201"},{"range":"69392","text":"66199"},{"range":"69393","text":"66201"},{"range":"69394","text":"66199"},{"range":"69395","text":"66201"},{"range":"69396","text":"66199"},{"range":"69397","text":"66201"},{"range":"69398","text":"66199"},{"range":"69399","text":"66201"},{"range":"69400","text":"66199"},{"range":"69401","text":"66201"},{"range":"69402","text":"66199"},{"range":"69403","text":"66201"},{"range":"69404","text":"66199"},{"range":"69405","text":"66201"},{"range":"69406","text":"66199"},{"range":"69407","text":"66201"},{"range":"69408","text":"66199"},{"range":"69409","text":"66201"},{"range":"69410","text":"66199"},{"range":"69411","text":"66201"},{"range":"69412","text":"66199"},{"range":"69413","text":"66201"},{"range":"69414","text":"66199"},{"range":"69415","text":"66201"},{"range":"69416","text":"66199"},{"range":"69417","text":"66201"},{"range":"69418","text":"66199"},{"range":"69419","text":"66201"},{"range":"69420","text":"66199"},{"range":"69421","text":"66201"},{"range":"69422","text":"66199"},{"range":"69423","text":"66201"},{"range":"69424","text":"66199"},{"range":"69425","text":"66201"},{"range":"69426","text":"66199"},{"range":"69427","text":"66201"},{"range":"69428","text":"66199"},{"range":"69429","text":"66201"},{"range":"69430","text":"66199"},{"range":"69431","text":"66201"},{"range":"69432","text":"66199"},{"range":"69433","text":"66201"},{"range":"69434","text":"66199"},{"range":"69435","text":"66201"},{"range":"69436","text":"66199"},{"range":"69437","text":"66201"},{"range":"69438","text":"66199"},{"range":"69439","text":"66201"},{"range":"69440","text":"66199"},{"range":"69441","text":"66201"},{"range":"69442","text":"66199"},{"range":"69443","text":"66201"},{"range":"69444","text":"66199"},{"range":"69445","text":"66201"},{"range":"69446","text":"66199"},{"range":"69447","text":"66201"},{"range":"69448","text":"66199"},{"range":"69449","text":"66201"},{"range":"69450","text":"66199"},{"range":"69451","text":"66201"},{"range":"69452","text":"66199"},{"range":"69453","text":"66201"},{"range":"69454","text":"66199"},{"range":"69455","text":"66201"},{"range":"69456","text":"66199"},{"range":"69457","text":"66201"},{"range":"69458","text":"66199"},{"range":"69459","text":"66201"},{"range":"69460","text":"66199"},{"range":"69461","text":"66201"},{"range":"69462","text":"66199"},{"range":"69463","text":"66201"},{"range":"69464","text":"66199"},{"range":"69465","text":"66201"},{"range":"69466","text":"66199"},{"range":"69467","text":"66201"},{"range":"69468","text":"66199"},{"range":"69469","text":"66201"},{"range":"69470","text":"66199"},{"range":"69471","text":"66201"},{"range":"69472","text":"66199"},{"range":"69473","text":"66201"},{"range":"69474","text":"66199"},{"range":"69475","text":"66201"},{"range":"69476","text":"66199"},{"range":"69477","text":"66201"},{"range":"69478","text":"66199"},{"range":"69479","text":"66201"},{"range":"69480","text":"66199"},{"range":"69481","text":"66201"},{"range":"69482","text":"66199"},{"range":"69483","text":"66201"},{"range":"69484","text":"66199"},{"range":"69485","text":"66201"},{"range":"69486","text":"66199"},{"range":"69487","text":"66201"},{"range":"69488","text":"66199"},{"range":"69489","text":"66201"},{"range":"69490","text":"66199"},{"range":"69491","text":"66201"},{"range":"69492","text":"66199"},{"range":"69493","text":"66201"},{"range":"69494","text":"66199"},{"range":"69495","text":"66201"},{"range":"69496","text":"66199"},{"range":"69497","text":"66201"},{"range":"69498","text":"66199"},{"range":"69499","text":"66201"},{"range":"69500","text":"66199"},{"range":"69501","text":"66201"},{"range":"69502","text":"66199"},{"range":"69503","text":"66201"},{"range":"69504","text":"66199"},{"range":"69505","text":"66201"},{"range":"69506","text":"66199"},{"range":"69507","text":"66201"},{"range":"69508","text":"66199"},{"range":"69509","text":"66201"},{"range":"69510","text":"66199"},{"range":"69511","text":"66201"},{"range":"69512","text":"66199"},{"range":"69513","text":"66201"},{"range":"69514","text":"66199"},{"range":"69515","text":"66201"},{"range":"69516","text":"66199"},{"range":"69517","text":"66201"},{"range":"69518","text":"66199"},{"range":"69519","text":"66201"},{"range":"69520","text":"66199"},{"range":"69521","text":"66201"},{"range":"69522","text":"66199"},{"range":"69523","text":"66201"},{"range":"69524","text":"66199"},{"range":"69525","text":"66201"},{"range":"69526","text":"66199"},{"range":"69527","text":"66201"},{"range":"69528","text":"66199"},{"range":"69529","text":"66201"},{"range":"69530","text":"66199"},{"range":"69531","text":"66201"},{"range":"69532","text":"66199"},{"range":"69533","text":"66201"},{"range":"69534","text":"66199"},{"range":"69535","text":"66201"},{"range":"69536","text":"66199"},{"range":"69537","text":"66201"},{"range":"69538","text":"66199"},{"range":"69539","text":"66201"},{"range":"69540","text":"66199"},{"range":"69541","text":"66201"},{"range":"69542","text":"66199"},{"range":"69543","text":"66201"},{"range":"69544","text":"66199"},{"range":"69545","text":"66201"},{"range":"69546","text":"66199"},{"range":"69547","text":"66201"},{"range":"69548","text":"66199"},{"range":"69549","text":"66201"},{"range":"69550","text":"66199"},{"range":"69551","text":"66201"},{"range":"69552","text":"66199"},{"range":"69553","text":"66201"},{"range":"69554","text":"66199"},{"range":"69555","text":"66201"},{"range":"69556","text":"66199"},{"range":"69557","text":"66201"},{"range":"69558","text":"66199"},{"range":"69559","text":"66201"},{"range":"69560","text":"66199"},{"range":"69561","text":"66201"},{"range":"69562","text":"66199"},{"range":"69563","text":"66201"},{"range":"69564","text":"66199"},{"range":"69565","text":"66201"},{"range":"69566","text":"66199"},{"range":"69567","text":"66201"},{"range":"69568","text":"66199"},{"range":"69569","text":"66201"},{"range":"69570","text":"66199"},{"range":"69571","text":"66201"},{"range":"69572","text":"66199"},{"range":"69573","text":"66201"},{"range":"69574","text":"66199"},{"range":"69575","text":"66201"},{"range":"69576","text":"66199"},{"range":"69577","text":"66201"},{"range":"69578","text":"66199"},{"range":"69579","text":"66201"},{"range":"69580","text":"66199"},{"range":"69581","text":"66201"},{"range":"69582","text":"66199"},{"range":"69583","text":"66201"},{"range":"69584","text":"66199"},{"range":"69585","text":"66201"},{"range":"69586","text":"66199"},{"range":"69587","text":"66201"},{"range":"69588","text":"66199"},{"range":"69589","text":"66201"},{"range":"69590","text":"66199"},{"range":"69591","text":"66201"},{"range":"69592","text":"66199"},{"range":"69593","text":"66201"},{"range":"69594","text":"66199"},{"range":"69595","text":"66201"},{"range":"69596","text":"66199"},{"range":"69597","text":"66201"},{"range":"69598","text":"66199"},{"range":"69599","text":"66201"},{"range":"69600","text":"66199"},{"range":"69601","text":"66201"},{"range":"69602","text":"66199"},{"range":"69603","text":"66201"},{"range":"69604","text":"66199"},{"range":"69605","text":"66201"},{"range":"69606","text":"66199"},{"range":"69607","text":"66201"},{"range":"69608","text":"66199"},{"range":"69609","text":"66201"},{"range":"69610","text":"66199"},{"range":"69611","text":"66201"},{"range":"69612","text":"66199"},{"range":"69613","text":"66201"},{"range":"69614","text":"66199"},{"range":"69615","text":"66201"},{"range":"69616","text":"66199"},{"range":"69617","text":"66201"},{"range":"69618","text":"66199"},{"range":"69619","text":"66201"},{"range":"69620","text":"66199"},{"range":"69621","text":"66201"},{"range":"69622","text":"66199"},{"range":"69623","text":"66201"},{"range":"69624","text":"66199"},{"range":"69625","text":"66201"},{"range":"69626","text":"66199"},{"range":"69627","text":"66201"},{"range":"69628","text":"66199"},{"range":"69629","text":"66201"},{"range":"69630","text":"66199"},{"range":"69631","text":"66201"},{"range":"69632","text":"66199"},{"range":"69633","text":"66201"},{"range":"69634","text":"66199"},{"range":"69635","text":"66201"},{"range":"69636","text":"66199"},{"range":"69637","text":"66201"},{"range":"69638","text":"66199"},{"range":"69639","text":"66201"},{"range":"69640","text":"66199"},{"range":"69641","text":"66201"},{"range":"69642","text":"66199"},{"range":"69643","text":"66201"},{"range":"69644","text":"66199"},{"range":"69645","text":"66201"},{"range":"69646","text":"66199"},{"range":"69647","text":"66201"},{"range":"69648","text":"66199"},{"range":"69649","text":"66201"},{"range":"69650","text":"66199"},{"range":"69651","text":"66201"},{"range":"69652","text":"66199"},{"range":"69653","text":"66201"},{"range":"69654","text":"66199"},{"range":"69655","text":"66201"},{"range":"69656","text":"66199"},{"range":"69657","text":"66201"},{"range":"69658","text":"66199"},{"range":"69659","text":"66201"},{"range":"69660","text":"66199"},{"range":"69661","text":"66201"},{"range":"69662","text":"66199"},{"range":"69663","text":"66201"},{"range":"69664","text":"66199"},{"range":"69665","text":"66201"},{"range":"69666","text":"66199"},{"range":"69667","text":"66201"},{"range":"69668","text":"66199"},{"range":"69669","text":"66201"},{"range":"69670","text":"66199"},{"range":"69671","text":"66201"},{"range":"69672","text":"66199"},{"range":"69673","text":"66201"},{"range":"69674","text":"66199"},{"range":"69675","text":"66201"},{"range":"69676","text":"66199"},{"range":"69677","text":"66201"},{"range":"69678","text":"66199"},{"range":"69679","text":"66201"},{"range":"69680","text":"66199"},{"range":"69681","text":"66201"},{"range":"69682","text":"66199"},{"range":"69683","text":"66201"},{"range":"69684","text":"66199"},{"range":"69685","text":"66201"},{"range":"69686","text":"66199"},{"range":"69687","text":"66201"},{"range":"69688","text":"66199"},{"range":"69689","text":"66201"},{"range":"69690","text":"66199"},{"range":"69691","text":"66201"},{"range":"69692","text":"66199"},{"range":"69693","text":"66201"},{"range":"69694","text":"66199"},{"range":"69695","text":"66201"},{"range":"69696","text":"66199"},{"range":"69697","text":"66201"},{"range":"69698","text":"66199"},{"range":"69699","text":"66201"},{"range":"69700","text":"66199"},{"range":"69701","text":"66201"},{"range":"69702","text":"66199"},{"range":"69703","text":"66201"},{"range":"69704","text":"66199"},{"range":"69705","text":"66201"},{"range":"69706","text":"66199"},{"range":"69707","text":"66201"},{"range":"69708","text":"66199"},{"range":"69709","text":"66201"},{"range":"69710","text":"66199"},{"range":"69711","text":"66201"},{"range":"69712","text":"66199"},{"range":"69713","text":"66201"},{"range":"69714","text":"66199"},{"range":"69715","text":"66201"},{"range":"69716","text":"66199"},{"range":"69717","text":"66201"},{"range":"69718","text":"66199"},{"range":"69719","text":"66201"},{"range":"69720","text":"66199"},{"range":"69721","text":"66201"},{"range":"69722","text":"66199"},{"range":"69723","text":"66201"},{"range":"69724","text":"66199"},{"range":"69725","text":"66201"},{"range":"69726","text":"66199"},{"range":"69727","text":"66201"},{"range":"69728","text":"66199"},{"range":"69729","text":"66201"},{"range":"69730","text":"66199"},{"range":"69731","text":"66201"},{"range":"69732","text":"66199"},{"range":"69733","text":"66201"},{"range":"69734","text":"66199"},{"range":"69735","text":"66201"},{"range":"69736","text":"66199"},{"range":"69737","text":"66201"},{"range":"69738","text":"66199"},{"range":"69739","text":"66201"},{"range":"69740","text":"66199"},{"range":"69741","text":"66201"},{"range":"69742","text":"66199"},{"range":"69743","text":"66201"},{"range":"69744","text":"66199"},{"range":"69745","text":"66201"},{"range":"69746","text":"66199"},{"range":"69747","text":"66201"},{"range":"69748","text":"66199"},{"range":"69749","text":"66201"},{"range":"69750","text":"66199"},{"range":"69751","text":"66201"},{"range":"69752","text":"66199"},{"range":"69753","text":"66201"},{"range":"69754","text":"66199"},{"range":"69755","text":"66201"},{"range":"69756","text":"66199"},{"range":"69757","text":"66201"},{"range":"69758","text":"66199"},{"range":"69759","text":"66201"},{"range":"69760","text":"66199"},{"range":"69761","text":"66201"},{"range":"69762","text":"66199"},{"range":"69763","text":"66201"},{"range":"69764","text":"66199"},{"range":"69765","text":"66201"},{"range":"69766","text":"66199"},{"range":"69767","text":"66201"},{"range":"69768","text":"66199"},{"range":"69769","text":"66201"},{"range":"69770","text":"66199"},{"range":"69771","text":"66201"},{"range":"69772","text":"66199"},{"range":"69773","text":"66201"},{"range":"69774","text":"66199"},{"range":"69775","text":"66201"},{"range":"69776","text":"66199"},{"range":"69777","text":"66201"},{"range":"69778","text":"66199"},{"range":"69779","text":"66201"},{"range":"69780","text":"66199"},{"range":"69781","text":"66201"},{"range":"69782","text":"66199"},{"range":"69783","text":"66201"},{"range":"69784","text":"66199"},{"range":"69785","text":"66201"},{"range":"69786","text":"66199"},{"range":"69787","text":"66201"},{"range":"69788","text":"66199"},{"range":"69789","text":"66201"},{"range":"69790","text":"66199"},{"range":"69791","text":"66201"},{"range":"69792","text":"66199"},{"range":"69793","text":"66201"},{"range":"69794","text":"66199"},{"range":"69795","text":"66201"},{"range":"69796","text":"66199"},{"range":"69797","text":"66201"},{"range":"69798","text":"66199"},{"range":"69799","text":"66201"},{"range":"69800","text":"66199"},{"range":"69801","text":"66201"},{"range":"69802","text":"66199"},{"range":"69803","text":"66201"},{"range":"69804","text":"66199"},{"range":"69805","text":"66201"},{"range":"69806","text":"66199"},{"range":"69807","text":"66201"},{"range":"69808","text":"66199"},{"range":"69809","text":"66201"},{"range":"69810","text":"66199"},{"range":"69811","text":"66201"},{"range":"69812","text":"66199"},{"range":"69813","text":"66201"},{"range":"69814","text":"66199"},{"range":"69815","text":"66201"},{"range":"69816","text":"66199"},{"range":"69817","text":"66201"},{"range":"69818","text":"66199"},{"range":"69819","text":"66201"},{"range":"69820","text":"66199"},{"range":"69821","text":"66201"},{"range":"69822","text":"66199"},{"range":"69823","text":"66201"},{"range":"69824","text":"66199"},{"range":"69825","text":"66201"},{"range":"69826","text":"66199"},{"range":"69827","text":"66201"},{"range":"69828","text":"66199"},{"range":"69829","text":"66201"},{"range":"69830","text":"66199"},{"range":"69831","text":"66201"},{"range":"69832","text":"66199"},{"range":"69833","text":"66201"},{"range":"69834","text":"66199"},{"range":"69835","text":"66201"},{"range":"69836","text":"66199"},{"range":"69837","text":"66201"},{"range":"69838","text":"66199"},{"range":"69839","text":"66201"},{"range":"69840","text":"66199"},{"range":"69841","text":"66201"},{"range":"69842","text":"66199"},{"range":"69843","text":"66201"},{"range":"69844","text":"66199"},{"range":"69845","text":"66201"},{"range":"69846","text":"66199"},{"range":"69847","text":"66201"},{"range":"69848","text":"66199"},{"range":"69849","text":"66201"},{"range":"69850","text":"66199"},{"range":"69851","text":"66201"},{"range":"69852","text":"66199"},{"range":"69853","text":"66201"},{"range":"69854","text":"66199"},{"range":"69855","text":"66201"},{"range":"69856","text":"66199"},{"range":"69857","text":"66201"},{"range":"69858","text":"66199"},{"range":"69859","text":"66201"},{"range":"69860","text":"66199"},{"range":"69861","text":"66201"},{"range":"69862","text":"66199"},{"range":"69863","text":"66201"},{"range":"69864","text":"66199"},{"range":"69865","text":"66201"},{"range":"69866","text":"66199"},{"range":"69867","text":"66201"},{"range":"69868","text":"66199"},{"range":"69869","text":"66201"},{"range":"69870","text":"66199"},{"range":"69871","text":"66201"},{"range":"69872","text":"66199"},{"range":"69873","text":"66201"},{"range":"69874","text":"66199"},{"range":"69875","text":"66201"},{"range":"69876","text":"66199"},{"range":"69877","text":"66201"},{"range":"69878","text":"66199"},{"range":"69879","text":"66201"},{"range":"69880","text":"66199"},{"range":"69881","text":"66201"},{"range":"69882","text":"66199"},{"range":"69883","text":"66201"},{"range":"69884","text":"66199"},{"range":"69885","text":"66201"},{"range":"69886","text":"66199"},{"range":"69887","text":"66201"},{"range":"69888","text":"66199"},{"range":"69889","text":"66201"},{"range":"69890","text":"66199"},{"range":"69891","text":"66201"},{"range":"69892","text":"66199"},{"range":"69893","text":"66201"},{"range":"69894","text":"66199"},{"range":"69895","text":"66201"},{"range":"69896","text":"66199"},{"range":"69897","text":"66201"},{"range":"69898","text":"66199"},{"range":"69899","text":"66201"},{"range":"69900","text":"66199"},{"range":"69901","text":"66201"},{"range":"69902","text":"66199"},{"range":"69903","text":"66201"},{"range":"69904","text":"66199"},{"range":"69905","text":"66201"},{"range":"69906","text":"66199"},{"range":"69907","text":"66201"},{"range":"69908","text":"66199"},{"range":"69909","text":"66201"},{"range":"69910","text":"66199"},{"range":"69911","text":"66201"},{"range":"69912","text":"66199"},{"range":"69913","text":"66201"},{"range":"69914","text":"66199"},{"range":"69915","text":"66201"},{"range":"69916","text":"66199"},{"range":"69917","text":"66201"},{"range":"69918","text":"66199"},{"range":"69919","text":"66201"},{"range":"69920","text":"66199"},{"range":"69921","text":"66201"},{"range":"69922","text":"66199"},{"range":"69923","text":"66201"},{"range":"69924","text":"66199"},{"range":"69925","text":"66201"},{"range":"69926","text":"66199"},{"range":"69927","text":"66201"},{"range":"69928","text":"66199"},{"range":"69929","text":"66201"},{"range":"69930","text":"66199"},{"range":"69931","text":"66201"},{"range":"69932","text":"66199"},{"range":"69933","text":"66201"},{"range":"69934","text":"66199"},{"range":"69935","text":"66201"},{"range":"69936","text":"66199"},{"range":"69937","text":"66201"},{"range":"69938","text":"66199"},{"range":"69939","text":"66201"},{"range":"69940","text":"66199"},{"range":"69941","text":"66201"},{"range":"69942","text":"66199"},{"range":"69943","text":"66201"},{"range":"69944","text":"66199"},{"range":"69945","text":"66201"},{"range":"69946","text":"66199"},{"range":"69947","text":"66201"},{"range":"69948","text":"66199"},{"range":"69949","text":"66201"},{"range":"69950","text":"66199"},{"range":"69951","text":"66201"},{"range":"69952","text":"66199"},{"range":"69953","text":"66201"},{"range":"69954","text":"66199"},{"range":"69955","text":"66201"},{"range":"69956","text":"66199"},{"range":"69957","text":"66201"},{"range":"69958","text":"66199"},{"range":"69959","text":"66201"},{"range":"69960","text":"66199"},{"range":"69961","text":"66201"},{"range":"69962","text":"66199"},{"range":"69963","text":"66201"},{"range":"69964","text":"66199"},{"range":"69965","text":"66201"},{"range":"69966","text":"66199"},{"range":"69967","text":"66201"},{"range":"69968","text":"66199"},{"range":"69969","text":"66201"},{"range":"69970","text":"66199"},{"range":"69971","text":"66201"},{"range":"69972","text":"66199"},{"range":"69973","text":"66201"},{"range":"69974","text":"66199"},{"range":"69975","text":"66201"},{"range":"69976","text":"66199"},{"range":"69977","text":"66201"},{"range":"69978","text":"66199"},{"range":"69979","text":"66201"},{"range":"69980","text":"66199"},{"range":"69981","text":"66201"},{"range":"69982","text":"66199"},{"range":"69983","text":"66201"},{"range":"69984","text":"66199"},{"range":"69985","text":"66201"},{"range":"69986","text":"66199"},{"range":"69987","text":"66201"},{"range":"69988","text":"66199"},{"range":"69989","text":"66201"},{"range":"69990","text":"66199"},{"range":"69991","text":"66201"},{"range":"69992","text":"66199"},{"range":"69993","text":"66201"},{"range":"69994","text":"66199"},{"range":"69995","text":"66201"},{"range":"69996","text":"66199"},{"range":"69997","text":"66201"},{"range":"69998","text":"66199"},{"range":"69999","text":"66201"},{"range":"70000","text":"66199"},{"range":"70001","text":"66201"},{"range":"70002","text":"66199"},{"range":"70003","text":"66201"},{"range":"70004","text":"66199"},{"range":"70005","text":"66201"},{"range":"70006","text":"66199"},{"range":"70007","text":"66201"},{"range":"70008","text":"66199"},{"range":"70009","text":"66201"},{"range":"70010","text":"66199"},{"range":"70011","text":"66201"},{"range":"70012","text":"66199"},{"range":"70013","text":"66201"},{"range":"70014","text":"66199"},{"range":"70015","text":"66201"},{"range":"70016","text":"66199"},{"range":"70017","text":"66201"},{"range":"70018","text":"66199"},{"range":"70019","text":"66201"},{"range":"70020","text":"66199"},{"range":"70021","text":"66201"},{"range":"70022","text":"66199"},{"range":"70023","text":"66201"},{"range":"70024","text":"66199"},{"range":"70025","text":"66201"},{"range":"70026","text":"66199"},{"range":"70027","text":"66201"},{"range":"70028","text":"66199"},{"range":"70029","text":"66201"},{"range":"70030","text":"66199"},{"range":"70031","text":"66201"},{"range":"70032","text":"66199"},{"range":"70033","text":"66201"},{"range":"70034","text":"66199"},{"range":"70035","text":"66201"},{"range":"70036","text":"66199"},{"range":"70037","text":"66201"},{"range":"70038","text":"66199"},{"range":"70039","text":"66201"},{"range":"70040","text":"66199"},{"range":"70041","text":"66201"},{"range":"70042","text":"66199"},{"range":"70043","text":"66201"},{"range":"70044","text":"66199"},{"range":"70045","text":"66201"},{"range":"70046","text":"66199"},{"range":"70047","text":"66201"},{"range":"70048","text":"66199"},{"range":"70049","text":"66201"},{"range":"70050","text":"66199"},{"range":"70051","text":"66201"},{"range":"70052","text":"66199"},{"range":"70053","text":"66201"},{"range":"70054","text":"66199"},{"range":"70055","text":"66201"},{"range":"70056","text":"66199"},{"range":"70057","text":"66201"},{"range":"70058","text":"66199"},{"range":"70059","text":"66201"},{"range":"70060","text":"66199"},{"range":"70061","text":"66201"},{"range":"70062","text":"66199"},{"range":"70063","text":"66201"},{"range":"70064","text":"66199"},{"range":"70065","text":"66201"},{"range":"70066","text":"66199"},{"range":"70067","text":"66201"},{"range":"70068","text":"66199"},{"range":"70069","text":"66201"},{"range":"70070","text":"66199"},{"range":"70071","text":"66201"},{"range":"70072","text":"66199"},{"range":"70073","text":"66201"},{"range":"70074","text":"66199"},{"range":"70075","text":"66201"},{"range":"70076","text":"66199"},{"range":"70077","text":"66201"},{"range":"70078","text":"66199"},{"range":"70079","text":"66201"},{"range":"70080","text":"66199"},{"range":"70081","text":"66201"},{"range":"70082","text":"66199"},{"range":"70083","text":"66201"},{"range":"70084","text":"66199"},{"range":"70085","text":"66201"},{"range":"70086","text":"66199"},{"range":"70087","text":"66201"},{"range":"70088","text":"66199"},{"range":"70089","text":"66201"},{"range":"70090","text":"66199"},{"range":"70091","text":"66201"},{"range":"70092","text":"66199"},{"range":"70093","text":"66201"},{"range":"70094","text":"66199"},{"range":"70095","text":"66201"},{"range":"70096","text":"66199"},{"range":"70097","text":"66201"},{"range":"70098","text":"66199"},{"range":"70099","text":"66201"},{"range":"70100","text":"66199"},{"range":"70101","text":"66201"},{"range":"70102","text":"66199"},{"range":"70103","text":"66201"},{"range":"70104","text":"66199"},{"range":"70105","text":"66201"},{"range":"70106","text":"66199"},{"range":"70107","text":"66201"},{"range":"70108","text":"66199"},{"range":"70109","text":"66201"},{"range":"70110","text":"66199"},{"range":"70111","text":"66201"},{"range":"70112","text":"66199"},{"range":"70113","text":"66201"},{"range":"70114","text":"66199"},{"range":"70115","text":"66201"},{"range":"70116","text":"66199"},{"range":"70117","text":"66201"},{"range":"70118","text":"66199"},{"range":"70119","text":"66201"},{"range":"70120","text":"66199"},{"range":"70121","text":"66201"},{"range":"70122","text":"66199"},{"range":"70123","text":"66201"},{"range":"70124","text":"66199"},{"range":"70125","text":"66201"},{"range":"70126","text":"66199"},{"range":"70127","text":"66201"},{"range":"70128","text":"66199"},{"range":"70129","text":"66201"},{"range":"70130","text":"66199"},{"range":"70131","text":"66201"},{"range":"70132","text":"66199"},{"range":"70133","text":"66201"},{"range":"70134","text":"66199"},{"range":"70135","text":"66201"},{"range":"70136","text":"66199"},{"range":"70137","text":"66201"},{"range":"70138","text":"66199"},{"range":"70139","text":"66201"},{"range":"70140","text":"66199"},{"range":"70141","text":"66201"},{"range":"70142","text":"66199"},{"range":"70143","text":"66201"},{"range":"70144","text":"66199"},{"range":"70145","text":"66201"},{"range":"70146","text":"66199"},{"range":"70147","text":"66201"},{"range":"70148","text":"66199"},{"range":"70149","text":"66201"},{"range":"70150","text":"66199"},{"range":"70151","text":"66201"},{"range":"70152","text":"66199"},{"range":"70153","text":"66201"},{"range":"70154","text":"66199"},{"range":"70155","text":"66201"},{"range":"70156","text":"66199"},{"range":"70157","text":"66201"},{"range":"70158","text":"66199"},{"range":"70159","text":"66201"},{"range":"70160","text":"66199"},{"range":"70161","text":"66201"},{"range":"70162","text":"66199"},{"range":"70163","text":"66201"},{"range":"70164","text":"66199"},{"range":"70165","text":"66201"},{"range":"70166","text":"66199"},{"range":"70167","text":"66201"},{"range":"70168","text":"66199"},{"range":"70169","text":"66201"},{"range":"70170","text":"66199"},{"range":"70171","text":"66201"},{"range":"70172","text":"66199"},{"range":"70173","text":"66201"},{"range":"70174","text":"66199"},{"range":"70175","text":"66201"},{"range":"70176","text":"66199"},{"range":"70177","text":"66201"},{"range":"70178","text":"66199"},{"range":"70179","text":"66201"},{"range":"70180","text":"66199"},{"range":"70181","text":"66201"},{"range":"70182","text":"66199"},{"range":"70183","text":"66201"},{"range":"70184","text":"66199"},{"range":"70185","text":"66201"},{"range":"70186","text":"66199"},{"range":"70187","text":"66201"},{"range":"70188","text":"66199"},{"range":"70189","text":"66201"},{"range":"70190","text":"66199"},{"range":"70191","text":"66201"},{"range":"70192","text":"66199"},{"range":"70193","text":"66201"},{"range":"70194","text":"66199"},{"range":"70195","text":"66201"},{"range":"70196","text":"66199"},{"range":"70197","text":"66201"},{"range":"70198","text":"66199"},{"range":"70199","text":"66201"},{"range":"70200","text":"66199"},{"range":"70201","text":"66201"},{"range":"70202","text":"66199"},{"range":"70203","text":"66201"},{"range":"70204","text":"66199"},{"range":"70205","text":"66201"},{"range":"70206","text":"66199"},{"range":"70207","text":"66201"},{"range":"70208","text":"66199"},{"range":"70209","text":"66201"},{"range":"70210","text":"66199"},{"range":"70211","text":"66201"},{"range":"70212","text":"66199"},{"range":"70213","text":"66201"},{"range":"70214","text":"66199"},{"range":"70215","text":"66201"},{"range":"70216","text":"66199"},{"range":"70217","text":"66201"},{"range":"70218","text":"66199"},{"range":"70219","text":"66201"},{"range":"70220","text":"66199"},{"range":"70221","text":"66201"},{"range":"70222","text":"66199"},{"range":"70223","text":"66201"},{"range":"70224","text":"66199"},{"range":"70225","text":"66201"},{"range":"70226","text":"66199"},{"range":"70227","text":"66201"},{"range":"70228","text":"66199"},{"range":"70229","text":"66201"},{"range":"70230","text":"66199"},{"range":"70231","text":"66201"},{"range":"70232","text":"66199"},{"range":"70233","text":"66201"},{"range":"70234","text":"66199"},{"range":"70235","text":"66201"},{"range":"70236","text":"66199"},{"range":"70237","text":"66201"},{"range":"70238","text":"66199"},{"range":"70239","text":"66201"},{"range":"70240","text":"66199"},{"range":"70241","text":"66201"},{"range":"70242","text":"66199"},{"range":"70243","text":"66201"},{"range":"70244","text":"66199"},{"range":"70245","text":"66201"},{"range":"70246","text":"66199"},{"range":"70247","text":"66201"},{"range":"70248","text":"66199"},{"range":"70249","text":"66201"},{"range":"70250","text":"66199"},{"range":"70251","text":"66201"},{"range":"70252","text":"66199"},{"range":"70253","text":"66201"},{"range":"70254","text":"66199"},{"range":"70255","text":"66201"},{"range":"70256","text":"66199"},{"range":"70257","text":"66201"},{"range":"70258","text":"66199"},{"range":"70259","text":"66201"},{"range":"70260","text":"66199"},{"range":"70261","text":"66201"},{"range":"70262","text":"66199"},{"range":"70263","text":"66201"},{"range":"70264","text":"66199"},{"range":"70265","text":"66201"},{"range":"70266","text":"66199"},{"range":"70267","text":"66201"},{"range":"70268","text":"66199"},{"range":"70269","text":"66201"},{"range":"70270","text":"66199"},{"range":"70271","text":"66201"},{"range":"70272","text":"66199"},{"range":"70273","text":"66201"},{"range":"70274","text":"66199"},{"range":"70275","text":"66201"},{"range":"70276","text":"66199"},{"range":"70277","text":"66201"},{"range":"70278","text":"66199"},{"range":"70279","text":"66201"},{"range":"70280","text":"66199"},{"range":"70281","text":"66201"},{"range":"70282","text":"66199"},{"range":"70283","text":"66201"},{"range":"70284","text":"66199"},{"range":"70285","text":"66201"},{"range":"70286","text":"66199"},{"range":"70287","text":"66201"},{"range":"70288","text":"66199"},{"range":"70289","text":"66201"},{"range":"70290","text":"66199"},{"range":"70291","text":"66201"},{"range":"70292","text":"66199"},{"range":"70293","text":"66201"},{"range":"70294","text":"66199"},{"range":"70295","text":"66201"},{"range":"70296","text":"66199"},{"range":"70297","text":"66201"},{"range":"70298","text":"66199"},{"range":"70299","text":"66201"},{"range":"70300","text":"66199"},{"range":"70301","text":"66201"},{"range":"70302","text":"66199"},{"range":"70303","text":"66201"},{"range":"70304","text":"66199"},{"range":"70305","text":"66201"},{"range":"70306","text":"66199"},{"range":"70307","text":"66201"},{"range":"70308","text":"66199"},{"range":"70309","text":"66201"},{"range":"70310","text":"66199"},{"range":"70311","text":"66201"},{"range":"70312","text":"66199"},{"range":"70313","text":"66201"},{"range":"70314","text":"66199"},{"range":"70315","text":"66201"},{"range":"70316","text":"66199"},{"range":"70317","text":"66201"},{"range":"70318","text":"66199"},{"range":"70319","text":"66201"},{"range":"70320","text":"66199"},{"range":"70321","text":"66201"},{"range":"70322","text":"66199"},{"range":"70323","text":"66201"},{"range":"70324","text":"66199"},{"range":"70325","text":"66201"},{"range":"70326","text":"66199"},{"range":"70327","text":"66201"},{"range":"70328","text":"66199"},{"range":"70329","text":"66201"},{"range":"70330","text":"66199"},{"range":"70331","text":"66201"},{"range":"70332","text":"66199"},{"range":"70333","text":"66201"},{"range":"70334","text":"66199"},{"range":"70335","text":"66201"},{"range":"70336","text":"66199"},{"range":"70337","text":"66201"},{"range":"70338","text":"66199"},{"range":"70339","text":"66201"},{"range":"70340","text":"66199"},{"range":"70341","text":"66201"},{"range":"70342","text":"66199"},{"range":"70343","text":"66201"},{"range":"70344","text":"66199"},{"range":"70345","text":"66201"},{"range":"70346","text":"66199"},{"range":"70347","text":"66201"},{"range":"70348","text":"66199"},{"range":"70349","text":"66201"},{"range":"70350","text":"66199"},{"range":"70351","text":"66201"},{"range":"70352","text":"66199"},{"range":"70353","text":"66201"},{"range":"70354","text":"66199"},{"range":"70355","text":"66201"},{"range":"70356","text":"66199"},{"range":"70357","text":"66201"},{"range":"70358","text":"66199"},{"range":"70359","text":"66201"},{"range":"70360","text":"66199"},{"range":"70361","text":"66201"},{"range":"70362","text":"66199"},{"range":"70363","text":"66201"},{"range":"70364","text":"66199"},{"range":"70365","text":"66201"},{"range":"70366","text":"66199"},{"range":"70367","text":"66201"},{"range":"70368","text":"66199"},{"range":"70369","text":"66201"},{"range":"70370","text":"66199"},{"range":"70371","text":"66201"},{"range":"70372","text":"66199"},{"range":"70373","text":"66201"},{"range":"70374","text":"66199"},{"range":"70375","text":"66201"},{"range":"70376","text":"66199"},{"range":"70377","text":"66201"},{"range":"70378","text":"66199"},{"range":"70379","text":"66201"},{"range":"70380","text":"66199"},{"range":"70381","text":"66201"},{"range":"70382","text":"66199"},{"range":"70383","text":"66201"},{"range":"70384","text":"66199"},{"range":"70385","text":"66201"},{"range":"70386","text":"66199"},{"range":"70387","text":"66201"},{"range":"70388","text":"66199"},{"range":"70389","text":"66201"},{"range":"70390","text":"66199"},{"range":"70391","text":"66201"},{"range":"70392","text":"66199"},{"range":"70393","text":"66201"},{"range":"70394","text":"66199"},{"range":"70395","text":"66201"},{"range":"70396","text":"66199"},{"range":"70397","text":"66201"},{"range":"70398","text":"66199"},{"range":"70399","text":"66201"},{"range":"70400","text":"66199"},{"range":"70401","text":"66201"},{"range":"70402","text":"66199"},{"range":"70403","text":"66201"},{"range":"70404","text":"66199"},{"range":"70405","text":"66201"},{"range":"70406","text":"66199"},{"range":"70407","text":"66201"},{"range":"70408","text":"66199"},{"range":"70409","text":"66201"},{"range":"70410","text":"66199"},{"range":"70411","text":"66201"},{"range":"70412","text":"66199"},{"range":"70413","text":"66201"},{"range":"70414","text":"66199"},{"range":"70415","text":"66201"},{"range":"70416","text":"66199"},{"range":"70417","text":"66201"},{"range":"70418","text":"66199"},{"range":"70419","text":"66201"},{"range":"70420","text":"66199"},{"range":"70421","text":"66201"},{"range":"70422","text":"66199"},{"range":"70423","text":"66201"},{"range":"70424","text":"66199"},{"range":"70425","text":"66201"},{"range":"70426","text":"66199"},{"range":"70427","text":"66201"},{"range":"70428","text":"66199"},{"range":"70429","text":"66201"},{"range":"70430","text":"66199"},{"range":"70431","text":"66201"},{"range":"70432","text":"66199"},{"range":"70433","text":"66201"},{"range":"70434","text":"66199"},{"range":"70435","text":"66201"},{"range":"70436","text":"66199"},{"range":"70437","text":"66201"},{"range":"70438","text":"66199"},{"range":"70439","text":"66201"},{"range":"70440","text":"66199"},{"range":"70441","text":"66201"},{"range":"70442","text":"66199"},{"range":"70443","text":"66201"},{"range":"70444","text":"66199"},{"range":"70445","text":"66201"},{"range":"70446","text":"66199"},{"range":"70447","text":"66201"},{"range":"70448","text":"66199"},{"range":"70449","text":"66201"},{"range":"70450","text":"66199"},{"range":"70451","text":"66201"},{"range":"70452","text":"66199"},{"range":"70453","text":"66201"},{"range":"70454","text":"66199"},{"range":"70455","text":"66201"},{"range":"70456","text":"66199"},{"range":"70457","text":"66201"},{"range":"70458","text":"66199"},{"range":"70459","text":"66201"},{"range":"70460","text":"66199"},{"range":"70461","text":"66201"},{"range":"70462","text":"66199"},{"range":"70463","text":"66201"},{"range":"70464","text":"66199"},{"range":"70465","text":"66201"},{"range":"70466","text":"66199"},{"range":"70467","text":"66201"},{"range":"70468","text":"66199"},{"range":"70469","text":"66201"},{"range":"70470","text":"66199"},{"range":"70471","text":"66201"},{"range":"70472","text":"66199"},{"range":"70473","text":"66201"},{"range":"70474","text":"66199"},{"range":"70475","text":"66201"},{"range":"70476","text":"66199"},{"range":"70477","text":"66201"},{"range":"70478","text":"66199"},{"range":"70479","text":"66201"},{"range":"70480","text":"66199"},{"range":"70481","text":"66201"},{"range":"70482","text":"66199"},{"range":"70483","text":"66201"},{"range":"70484","text":"66199"},{"range":"70485","text":"66201"},{"range":"70486","text":"66199"},{"range":"70487","text":"66201"},{"range":"70488","text":"66199"},{"range":"70489","text":"66201"},{"range":"70490","text":"66199"},{"range":"70491","text":"66201"},{"range":"70492","text":"66199"},{"range":"70493","text":"66201"},{"range":"70494","text":"66199"},{"range":"70495","text":"66201"},{"range":"70496","text":"66199"},{"range":"70497","text":"66201"},{"range":"70498","text":"66199"},{"range":"70499","text":"66201"},{"range":"70500","text":"66199"},{"range":"70501","text":"66201"},{"range":"70502","text":"66199"},{"range":"70503","text":"66201"},{"range":"70504","text":"66199"},{"range":"70505","text":"66201"},{"range":"70506","text":"66199"},{"range":"70507","text":"66201"},{"range":"70508","text":"66199"},{"range":"70509","text":"66201"},{"range":"70510","text":"66199"},{"range":"70511","text":"66201"},{"range":"70512","text":"66199"},{"range":"70513","text":"66201"},{"range":"70514","text":"66199"},{"range":"70515","text":"66201"},{"range":"70516","text":"66199"},{"range":"70517","text":"66201"},{"range":"70518","text":"66199"},{"range":"70519","text":"66201"},{"range":"70520","text":"66199"},{"range":"70521","text":"66201"},{"range":"70522","text":"66199"},{"range":"70523","text":"66201"},{"range":"70524","text":"66199"},{"range":"70525","text":"66201"},{"range":"70526","text":"66199"},{"range":"70527","text":"66201"},{"range":"70528","text":"66199"},{"range":"70529","text":"66201"},{"range":"70530","text":"66199"},{"range":"70531","text":"66201"},{"range":"70532","text":"66199"},{"range":"70533","text":"66201"},{"range":"70534","text":"66199"},{"range":"70535","text":"66201"},{"range":"70536","text":"66199"},{"range":"70537","text":"66201"},{"range":"70538","text":"66199"},{"range":"70539","text":"66201"},{"range":"70540","text":"66199"},{"range":"70541","text":"66201"},{"range":"70542","text":"66199"},{"range":"70543","text":"66201"},{"range":"70544","text":"66199"},{"range":"70545","text":"66201"},{"range":"70546","text":"66199"},{"range":"70547","text":"66201"},{"range":"70548","text":"66199"},{"range":"70549","text":"66201"},{"range":"70550","text":"66199"},{"range":"70551","text":"66201"},{"range":"70552","text":"66199"},{"range":"70553","text":"66201"},{"range":"70554","text":"66199"},{"range":"70555","text":"66201"},{"range":"70556","text":"66199"},{"range":"70557","text":"66201"},{"range":"70558","text":"66199"},{"range":"70559","text":"66201"},{"range":"70560","text":"66199"},{"range":"70561","text":"66201"},{"range":"70562","text":"66199"},{"range":"70563","text":"66201"},{"range":"70564","text":"66199"},{"range":"70565","text":"66201"},{"range":"70566","text":"66199"},{"range":"70567","text":"66201"},{"range":"70568","text":"66199"},{"range":"70569","text":"66201"},{"range":"70570","text":"66199"},{"range":"70571","text":"66201"},{"range":"70572","text":"66199"},{"range":"70573","text":"66201"},{"range":"70574","text":"66199"},{"range":"70575","text":"66201"},{"range":"70576","text":"66199"},{"range":"70577","text":"66201"},{"range":"70578","text":"66199"},{"range":"70579","text":"66201"},{"range":"70580","text":"66199"},{"range":"70581","text":"66201"},{"range":"70582","text":"66199"},{"range":"70583","text":"66201"},{"range":"70584","text":"66199"},{"range":"70585","text":"66201"},{"range":"70586","text":"66199"},{"range":"70587","text":"66201"},{"range":"70588","text":"66199"},{"range":"70589","text":"66201"},{"range":"70590","text":"66199"},{"range":"70591","text":"66201"},{"range":"70592","text":"66199"},{"range":"70593","text":"66201"},{"range":"70594","text":"66199"},{"range":"70595","text":"66201"},{"range":"70596","text":"66199"},{"range":"70597","text":"66201"},{"range":"70598","text":"66199"},{"range":"70599","text":"66201"},{"range":"70600","text":"66199"},{"range":"70601","text":"66201"},{"range":"70602","text":"66199"},{"range":"70603","text":"66201"},{"range":"70604","text":"66199"},{"range":"70605","text":"66201"},{"range":"70606","text":"66199"},{"range":"70607","text":"66201"},{"range":"70608","text":"66199"},{"range":"70609","text":"66201"},{"range":"70610","text":"66199"},{"range":"70611","text":"66201"},{"range":"70612","text":"66199"},{"range":"70613","text":"66201"},{"range":"70614","text":"66199"},{"range":"70615","text":"66201"},{"range":"70616","text":"66199"},{"range":"70617","text":"66201"},{"range":"70618","text":"66199"},{"range":"70619","text":"66201"},{"range":"70620","text":"66199"},{"range":"70621","text":"66201"},{"range":"70622","text":"66199"},{"range":"70623","text":"66201"},{"range":"70624","text":"66199"},{"range":"70625","text":"66201"},{"range":"70626","text":"66199"},{"range":"70627","text":"66201"},{"range":"70628","text":"66199"},{"range":"70629","text":"66201"},{"range":"70630","text":"66199"},{"range":"70631","text":"66201"},{"range":"70632","text":"66199"},{"range":"70633","text":"66201"},{"range":"70634","text":"66199"},{"range":"70635","text":"66201"},{"range":"70636","text":"66199"},{"range":"70637","text":"66201"},{"range":"70638","text":"66199"},{"range":"70639","text":"66201"},{"range":"70640","text":"66199"},{"range":"70641","text":"66201"},{"range":"70642","text":"66199"},{"range":"70643","text":"66201"},{"range":"70644","text":"66199"},{"range":"70645","text":"66201"},{"range":"70646","text":"66199"},{"range":"70647","text":"66201"},{"range":"70648","text":"66199"},{"range":"70649","text":"66201"},{"range":"70650","text":"66199"},{"range":"70651","text":"66201"},{"range":"70652","text":"66199"},{"range":"70653","text":"66201"},{"range":"70654","text":"66199"},{"range":"70655","text":"66201"},{"range":"70656","text":"66199"},{"range":"70657","text":"66201"},{"range":"70658","text":"66199"},{"range":"70659","text":"66201"},{"range":"70660","text":"66199"},{"range":"70661","text":"66201"},{"range":"70662","text":"66199"},{"range":"70663","text":"66201"},{"range":"70664","text":"66199"},{"range":"70665","text":"66201"},{"range":"70666","text":"66199"},{"range":"70667","text":"66201"},{"range":"70668","text":"66199"},{"range":"70669","text":"66201"},{"range":"70670","text":"66199"},{"range":"70671","text":"66201"},{"range":"70672","text":"66199"},{"range":"70673","text":"66201"},{"range":"70674","text":"66199"},{"range":"70675","text":"66201"},{"range":"70676","text":"66199"},{"range":"70677","text":"66201"},{"range":"70678","text":"66199"},{"range":"70679","text":"66201"},{"range":"70680","text":"66199"},{"range":"70681","text":"66201"},{"range":"70682","text":"66199"},{"range":"70683","text":"66201"},{"range":"70684","text":"66199"},{"range":"70685","text":"66201"},{"range":"70686","text":"66199"},{"range":"70687","text":"66201"},{"range":"70688","text":"66199"},{"range":"70689","text":"66201"},{"range":"70690","text":"66199"},{"range":"70691","text":"66201"},{"range":"70692","text":"66199"},{"range":"70693","text":"66201"},{"range":"70694","text":"66199"},{"range":"70695","text":"66201"},{"range":"70696","text":"66199"},{"range":"70697","text":"66201"},{"range":"70698","text":"66199"},{"range":"70699","text":"66201"},{"range":"70700","text":"66199"},{"range":"70701","text":"66201"},{"range":"70702","text":"66199"},{"range":"70703","text":"66201"},{"range":"70704","text":"66199"},{"range":"70705","text":"66201"},{"range":"70706","text":"66199"},{"range":"70707","text":"66201"},{"range":"70708","text":"66199"},{"range":"70709","text":"66201"},{"range":"70710","text":"66199"},{"range":"70711","text":"66201"},{"range":"70712","text":"66199"},{"range":"70713","text":"66201"},{"range":"70714","text":"66199"},{"range":"70715","text":"66201"},{"range":"70716","text":"66199"},{"range":"70717","text":"66201"},{"range":"70718","text":"66199"},{"range":"70719","text":"66201"},{"range":"70720","text":"66199"},{"range":"70721","text":"66201"},{"range":"70722","text":"66199"},{"range":"70723","text":"66201"},{"range":"70724","text":"66199"},{"range":"70725","text":"66201"},{"range":"70726","text":"66199"},{"range":"70727","text":"66201"},{"range":"70728","text":"66199"},{"range":"70729","text":"66201"},{"range":"70730","text":"66199"},{"range":"70731","text":"66201"},{"range":"70732","text":"66199"},{"range":"70733","text":"66201"},{"range":"70734","text":"66199"},{"range":"70735","text":"66201"},{"range":"70736","text":"66199"},{"range":"70737","text":"66201"},{"range":"70738","text":"66199"},{"range":"70739","text":"66201"},{"range":"70740","text":"66199"},{"range":"70741","text":"66201"},{"range":"70742","text":"66199"},{"range":"70743","text":"66201"},{"range":"70744","text":"66199"},{"range":"70745","text":"66201"},{"range":"70746","text":"66199"},{"range":"70747","text":"66201"},{"range":"70748","text":"66199"},{"range":"70749","text":"66201"},{"range":"70750","text":"66199"},{"range":"70751","text":"66201"},{"range":"70752","text":"66199"},{"range":"70753","text":"66201"},{"range":"70754","text":"66199"},{"range":"70755","text":"66201"},{"range":"70756","text":"66199"},{"range":"70757","text":"66201"},{"range":"70758","text":"66199"},{"range":"70759","text":"66201"},{"range":"70760","text":"66199"},{"range":"70761","text":"66201"},{"range":"70762","text":"66199"},{"range":"70763","text":"66201"},{"range":"70764","text":"66199"},{"range":"70765","text":"66201"},{"range":"70766","text":"66199"},{"range":"70767","text":"66201"},{"range":"70768","text":"66199"},{"range":"70769","text":"66201"},{"range":"70770","text":"66199"},{"range":"70771","text":"66201"},{"range":"70772","text":"66199"},{"range":"70773","text":"66201"},{"range":"70774","text":"66199"},{"range":"70775","text":"66201"},{"range":"70776","text":"66199"},{"range":"70777","text":"66201"},{"range":"70778","text":"66199"},{"range":"70779","text":"66201"},{"range":"70780","text":"66199"},{"range":"70781","text":"66201"},{"range":"70782","text":"66199"},{"range":"70783","text":"66201"},{"range":"70784","text":"66199"},{"range":"70785","text":"66201"},{"range":"70786","text":"66199"},{"range":"70787","text":"66201"},{"range":"70788","text":"66199"},{"range":"70789","text":"66201"},{"range":"70790","text":"66199"},{"range":"70791","text":"66201"},{"range":"70792","text":"66199"},{"range":"70793","text":"66201"},{"range":"70794","text":"66199"},{"range":"70795","text":"66201"},{"range":"70796","text":"66199"},{"range":"70797","text":"66201"},{"range":"70798","text":"66199"},{"range":"70799","text":"66201"},{"range":"70800","text":"66199"},{"range":"70801","text":"66201"},{"range":"70802","text":"66199"},{"range":"70803","text":"66201"},{"range":"70804","text":"66199"},{"range":"70805","text":"66201"},{"range":"70806","text":"66199"},{"range":"70807","text":"66201"},{"range":"70808","text":"66199"},{"range":"70809","text":"66201"},{"range":"70810","text":"66199"},{"range":"70811","text":"66201"},{"range":"70812","text":"66199"},{"range":"70813","text":"66201"},{"range":"70814","text":"66199"},{"range":"70815","text":"66201"},{"range":"70816","text":"66199"},{"range":"70817","text":"66201"},{"range":"70818","text":"66199"},{"range":"70819","text":"66201"},{"range":"70820","text":"66199"},{"range":"70821","text":"66201"},{"range":"70822","text":"66199"},{"range":"70823","text":"66201"},{"range":"70824","text":"66199"},{"range":"70825","text":"66201"},{"range":"70826","text":"66199"},{"range":"70827","text":"66201"},{"range":"70828","text":"66199"},{"range":"70829","text":"66201"},{"range":"70830","text":"66199"},{"range":"70831","text":"66201"},{"range":"70832","text":"66199"},{"range":"70833","text":"66201"},{"range":"70834","text":"66199"},{"range":"70835","text":"66201"},{"range":"70836","text":"66199"},{"range":"70837","text":"66201"},{"range":"70838","text":"66199"},{"range":"70839","text":"66201"},{"range":"70840","text":"66199"},{"range":"70841","text":"66201"},{"range":"70842","text":"66199"},{"range":"70843","text":"66201"},{"range":"70844","text":"66199"},{"range":"70845","text":"66201"},{"range":"70846","text":"66199"},{"range":"70847","text":"66201"},{"range":"70848","text":"66199"},{"range":"70849","text":"66201"},{"range":"70850","text":"66199"},{"range":"70851","text":"66201"},{"range":"70852","text":"66199"},{"range":"70853","text":"66201"},{"range":"70854","text":"66199"},{"range":"70855","text":"66201"},{"range":"70856","text":"66199"},{"range":"70857","text":"66201"},{"range":"70858","text":"66199"},{"range":"70859","text":"66201"},{"range":"70860","text":"66199"},{"range":"70861","text":"66201"},{"range":"70862","text":"66199"},{"range":"70863","text":"66201"},{"range":"70864","text":"66199"},{"range":"70865","text":"66201"},{"range":"70866","text":"66199"},{"range":"70867","text":"66201"},{"range":"70868","text":"66199"},{"range":"70869","text":"66201"},{"range":"70870","text":"66199"},{"range":"70871","text":"66201"},{"range":"70872","text":"66199"},{"range":"70873","text":"66201"},{"range":"70874","text":"66199"},{"range":"70875","text":"66201"},{"range":"70876","text":"66199"},{"range":"70877","text":"66201"},{"range":"70878","text":"66199"},{"range":"70879","text":"66201"},{"range":"70880","text":"66199"},{"range":"70881","text":"66201"},{"range":"70882","text":"66199"},{"range":"70883","text":"66201"},{"range":"70884","text":"66199"},{"range":"70885","text":"66201"},{"range":"70886","text":"66199"},{"range":"70887","text":"66201"},{"range":"70888","text":"66199"},{"range":"70889","text":"66201"},{"range":"70890","text":"66199"},{"range":"70891","text":"66201"},{"range":"70892","text":"66199"},{"range":"70893","text":"66201"},{"range":"70894","text":"66199"},{"range":"70895","text":"66201"},{"range":"70896","text":"66199"},{"range":"70897","text":"66201"},{"range":"70898","text":"66199"},{"range":"70899","text":"66201"},{"range":"70900","text":"66199"},{"range":"70901","text":"66201"},{"range":"70902","text":"66199"},{"range":"70903","text":"66201"},{"range":"70904","text":"66199"},{"range":"70905","text":"66201"},{"range":"70906","text":"66199"},{"range":"70907","text":"66201"},{"range":"70908","text":"66199"},{"range":"70909","text":"66201"},{"range":"70910","text":"66199"},{"range":"70911","text":"66201"},{"range":"70912","text":"66199"},{"range":"70913","text":"66201"},{"range":"70914","text":"66199"},{"range":"70915","text":"66201"},{"range":"70916","text":"66199"},{"range":"70917","text":"66201"},{"range":"70918","text":"66199"},{"range":"70919","text":"66201"},{"range":"70920","text":"66199"},{"range":"70921","text":"66201"},{"range":"70922","text":"66199"},{"range":"70923","text":"66201"},{"range":"70924","text":"66199"},{"range":"70925","text":"66201"},{"range":"70926","text":"66199"},{"range":"70927","text":"66201"},{"range":"70928","text":"66199"},{"range":"70929","text":"66201"},{"range":"70930","text":"66199"},{"range":"70931","text":"66201"},{"range":"70932","text":"66199"},{"range":"70933","text":"66201"},{"range":"70934","text":"66199"},{"range":"70935","text":"66201"},{"range":"70936","text":"66199"},{"range":"70937","text":"66201"},{"range":"70938","text":"66199"},{"range":"70939","text":"66201"},{"range":"70940","text":"66199"},{"range":"70941","text":"66201"},{"range":"70942","text":"66199"},{"range":"70943","text":"66201"},{"range":"70944","text":"66199"},{"range":"70945","text":"66201"},{"range":"70946","text":"66199"},{"range":"70947","text":"66201"},{"range":"70948","text":"66199"},{"range":"70949","text":"66201"},{"range":"70950","text":"66199"},{"range":"70951","text":"66201"},{"range":"70952","text":"66199"},{"range":"70953","text":"66201"},{"range":"70954","text":"66199"},{"range":"70955","text":"66201"},{"range":"70956","text":"66199"},{"range":"70957","text":"66201"},{"range":"70958","text":"66199"},{"range":"70959","text":"66201"},{"range":"70960","text":"66199"},{"range":"70961","text":"66201"},{"range":"70962","text":"66199"},{"range":"70963","text":"66201"},{"range":"70964","text":"66199"},{"range":"70965","text":"66201"},{"range":"70966","text":"66199"},{"range":"70967","text":"66201"},{"range":"70968","text":"66199"},{"range":"70969","text":"66201"},{"range":"70970","text":"66199"},{"range":"70971","text":"66201"},{"range":"70972","text":"66199"},{"range":"70973","text":"66201"},{"range":"70974","text":"66199"},{"range":"70975","text":"66201"},{"range":"70976","text":"66199"},{"range":"70977","text":"66201"},{"range":"70978","text":"66199"},{"range":"70979","text":"66201"},{"range":"70980","text":"66199"},{"range":"70981","text":"66201"},{"range":"70982","text":"66199"},{"range":"70983","text":"66201"},{"range":"70984","text":"66199"},{"range":"70985","text":"66201"},{"range":"70986","text":"66199"},{"range":"70987","text":"66201"},{"range":"70988","text":"66199"},{"range":"70989","text":"66201"},{"range":"70990","text":"66199"},{"range":"70991","text":"66201"},{"range":"70992","text":"66199"},{"range":"70993","text":"66201"},{"range":"70994","text":"66199"},{"range":"70995","text":"66201"},{"range":"70996","text":"66199"},{"range":"70997","text":"66201"},{"range":"70998","text":"66199"},{"range":"70999","text":"66201"},{"range":"71000","text":"66199"},{"range":"71001","text":"66201"},{"range":"71002","text":"66199"},{"range":"71003","text":"66201"},{"range":"71004","text":"66199"},{"range":"71005","text":"66201"},{"range":"71006","text":"66199"},{"range":"71007","text":"66201"},{"range":"71008","text":"66199"},{"range":"71009","text":"66201"},{"range":"71010","text":"66199"},{"range":"71011","text":"66201"},{"range":"71012","text":"66199"},{"range":"71013","text":"66201"},{"range":"71014","text":"66199"},{"range":"71015","text":"66201"},{"range":"71016","text":"66199"},{"range":"71017","text":"66201"},{"range":"71018","text":"66199"},{"range":"71019","text":"66201"},{"range":"71020","text":"66199"},{"range":"71021","text":"66201"},{"range":"71022","text":"66199"},{"range":"71023","text":"66201"},{"range":"71024","text":"66199"},{"range":"71025","text":"66201"},{"range":"71026","text":"66199"},{"range":"71027","text":"66201"},{"range":"71028","text":"66199"},{"range":"71029","text":"66201"},{"range":"71030","text":"66199"},{"range":"71031","text":"66201"},{"range":"71032","text":"66199"},{"range":"71033","text":"66201"},{"range":"71034","text":"66199"},{"range":"71035","text":"66201"},{"range":"71036","text":"66199"},{"range":"71037","text":"66201"},{"range":"71038","text":"66199"},{"range":"71039","text":"66201"},{"range":"71040","text":"66199"},{"range":"71041","text":"66201"},{"range":"71042","text":"66199"},{"range":"71043","text":"66201"},{"range":"71044","text":"66199"},{"range":"71045","text":"66201"},{"range":"71046","text":"66199"},{"range":"71047","text":"66201"},{"range":"71048","text":"66199"},{"range":"71049","text":"66201"},{"range":"71050","text":"66199"},{"range":"71051","text":"66201"},{"range":"71052","text":"66199"},{"range":"71053","text":"66201"},{"range":"71054","text":"66199"},{"range":"71055","text":"66201"},{"range":"71056","text":"66199"},{"range":"71057","text":"66201"},{"range":"71058","text":"66199"},{"range":"71059","text":"66201"},{"range":"71060","text":"66199"},{"range":"71061","text":"66201"},{"range":"71062","text":"66199"},{"range":"71063","text":"66201"},{"range":"71064","text":"66199"},{"range":"71065","text":"66201"},{"range":"71066","text":"66199"},{"range":"71067","text":"66201"},{"range":"71068","text":"66199"},{"range":"71069","text":"66201"},{"range":"71070","text":"66199"},{"range":"71071","text":"66201"},{"range":"71072","text":"66199"},{"range":"71073","text":"66201"},{"range":"71074","text":"66199"},{"range":"71075","text":"66201"},{"range":"71076","text":"66199"},{"range":"71077","text":"66201"},{"range":"71078","text":"66199"},{"range":"71079","text":"66201"},{"range":"71080","text":"66199"},{"range":"71081","text":"66201"},{"range":"71082","text":"66199"},{"range":"71083","text":"66201"},{"range":"71084","text":"66199"},{"range":"71085","text":"66201"},{"range":"71086","text":"66199"},{"range":"71087","text":"66201"},{"range":"71088","text":"66199"},{"range":"71089","text":"66201"},{"range":"71090","text":"66199"},{"range":"71091","text":"66201"},{"range":"71092","text":"66199"},{"range":"71093","text":"66201"},{"range":"71094","text":"66199"},{"range":"71095","text":"66201"},{"range":"71096","text":"66199"},{"range":"71097","text":"66201"},{"range":"71098","text":"66199"},{"range":"71099","text":"66201"},{"range":"71100","text":"66199"},{"range":"71101","text":"66201"},{"range":"71102","text":"66199"},{"range":"71103","text":"66201"},{"range":"71104","text":"66199"},{"range":"71105","text":"66201"},{"range":"71106","text":"66199"},{"range":"71107","text":"66201"},{"range":"71108","text":"66199"},{"range":"71109","text":"66201"},{"range":"71110","text":"66199"},{"range":"71111","text":"66201"},{"range":"71112","text":"66199"},{"range":"71113","text":"66201"},{"range":"71114","text":"66199"},{"range":"71115","text":"66201"},{"range":"71116","text":"66199"},{"range":"71117","text":"66201"},{"range":"71118","text":"66199"},{"range":"71119","text":"66201"},{"range":"71120","text":"66199"},{"range":"71121","text":"66201"},{"range":"71122","text":"66199"},{"range":"71123","text":"66201"},{"range":"71124","text":"66199"},{"range":"71125","text":"66201"},{"range":"71126","text":"66199"},{"range":"71127","text":"66201"},{"range":"71128","text":"66199"},{"range":"71129","text":"66201"},{"range":"71130","text":"66199"},{"range":"71131","text":"66201"},{"range":"71132","text":"66199"},{"range":"71133","text":"66201"},{"range":"71134","text":"66199"},{"range":"71135","text":"66201"},{"range":"71136","text":"66199"},{"range":"71137","text":"66201"},{"range":"71138","text":"66199"},{"range":"71139","text":"66201"},{"range":"71140","text":"66199"},{"range":"71141","text":"66201"},{"range":"71142","text":"66199"},{"range":"71143","text":"66201"},{"range":"71144","text":"66199"},{"range":"71145","text":"66201"},{"range":"71146","text":"66199"},{"range":"71147","text":"66201"},{"range":"71148","text":"66199"},{"range":"71149","text":"66201"},{"range":"71150","text":"66199"},{"range":"71151","text":"66201"},{"range":"71152","text":"66199"},{"range":"71153","text":"66201"},{"range":"71154","text":"66199"},{"range":"71155","text":"66201"},{"range":"71156","text":"66199"},{"range":"71157","text":"66201"},{"range":"71158","text":"66199"},{"range":"71159","text":"66201"},{"range":"71160","text":"66199"},{"range":"71161","text":"66201"},{"range":"71162","text":"66199"},{"range":"71163","text":"66201"},{"range":"71164","text":"66199"},{"range":"71165","text":"66201"},{"range":"71166","text":"66199"},{"range":"71167","text":"66201"},{"range":"71168","text":"66199"},{"range":"71169","text":"66201"},{"range":"71170","text":"66199"},{"range":"71171","text":"66201"},{"range":"71172","text":"66199"},{"range":"71173","text":"66201"},{"range":"71174","text":"66199"},{"range":"71175","text":"66201"},{"range":"71176","text":"66199"},{"range":"71177","text":"66201"},{"range":"71178","text":"66199"},{"range":"71179","text":"66201"},{"range":"71180","text":"66199"},{"range":"71181","text":"66201"},{"range":"71182","text":"66199"},{"range":"71183","text":"66201"},{"range":"71184","text":"66199"},{"range":"71185","text":"66201"},{"range":"71186","text":"66199"},{"range":"71187","text":"66201"},{"range":"71188","text":"66199"},{"range":"71189","text":"66201"},{"range":"71190","text":"66199"},{"range":"71191","text":"66201"},{"range":"71192","text":"66199"},{"range":"71193","text":"66201"},{"range":"71194","text":"66199"},{"range":"71195","text":"66201"},{"range":"71196","text":"66199"},{"range":"71197","text":"66201"},{"range":"71198","text":"66199"},{"range":"71199","text":"66201"},{"range":"71200","text":"66199"},{"range":"71201","text":"66201"},{"range":"71202","text":"66199"},{"range":"71203","text":"66201"},{"range":"71204","text":"66199"},{"range":"71205","text":"66201"},{"range":"71206","text":"66199"},{"range":"71207","text":"66201"},{"range":"71208","text":"66199"},{"range":"71209","text":"66201"},{"range":"71210","text":"66199"},{"range":"71211","text":"66201"},{"range":"71212","text":"66199"},{"range":"71213","text":"66201"},{"range":"71214","text":"66199"},{"range":"71215","text":"66201"},{"range":"71216","text":"66199"},{"range":"71217","text":"66201"},{"range":"71218","text":"66199"},{"range":"71219","text":"66201"},{"range":"71220","text":"66199"},{"range":"71221","text":"66201"},{"range":"71222","text":"66199"},{"range":"71223","text":"66201"},{"range":"71224","text":"66199"},{"range":"71225","text":"66201"},{"range":"71226","text":"66199"},{"range":"71227","text":"66201"},{"range":"71228","text":"66199"},{"range":"71229","text":"66201"},{"range":"71230","text":"66199"},{"range":"71231","text":"66201"},{"range":"71232","text":"66199"},{"range":"71233","text":"66201"},{"range":"71234","text":"66199"},{"range":"71235","text":"66201"},{"range":"71236","text":"66199"},{"range":"71237","text":"66201"},{"range":"71238","text":"66199"},{"range":"71239","text":"66201"},{"range":"71240","text":"66199"},{"range":"71241","text":"66201"},{"range":"71242","text":"66199"},{"range":"71243","text":"66201"},{"range":"71244","text":"66199"},{"range":"71245","text":"66201"},{"range":"71246","text":"66199"},{"range":"71247","text":"66201"},{"range":"71248","text":"66199"},{"range":"71249","text":"66201"},{"range":"71250","text":"66199"},{"range":"71251","text":"66201"},{"range":"71252","text":"66199"},{"range":"71253","text":"66201"},{"range":"71254","text":"66199"},{"range":"71255","text":"66201"},{"range":"71256","text":"66199"},{"range":"71257","text":"66201"},{"range":"71258","text":"66199"},{"range":"71259","text":"66201"},{"range":"71260","text":"66199"},{"range":"71261","text":"66201"},{"range":"71262","text":"66199"},{"range":"71263","text":"66201"},{"range":"71264","text":"66199"},{"range":"71265","text":"66201"},{"range":"71266","text":"66199"},{"range":"71267","text":"66201"},{"range":"71268","text":"66199"},{"range":"71269","text":"66201"},{"range":"71270","text":"66199"},{"range":"71271","text":"66201"},{"range":"71272","text":"66199"},{"range":"71273","text":"66201"},{"range":"71274","text":"66199"},{"range":"71275","text":"66201"},{"range":"71276","text":"66199"},{"range":"71277","text":"66201"},{"range":"71278","text":"66199"},{"range":"71279","text":"66201"},{"range":"71280","text":"66199"},{"range":"71281","text":"66201"},{"range":"71282","text":"66199"},{"range":"71283","text":"66201"},{"range":"71284","text":"66199"},{"range":"71285","text":"66201"},{"range":"71286","text":"66199"},{"range":"71287","text":"66201"},{"range":"71288","text":"66199"},{"range":"71289","text":"66201"},{"range":"71290","text":"66199"},{"range":"71291","text":"66201"},{"range":"71292","text":"66199"},{"range":"71293","text":"66201"},{"range":"71294","text":"66199"},{"range":"71295","text":"66201"},{"range":"71296","text":"66199"},{"range":"71297","text":"66201"},{"range":"71298","text":"66199"},{"range":"71299","text":"66201"},{"range":"71300","text":"66199"},{"range":"71301","text":"66201"},{"range":"71302","text":"66199"},{"range":"71303","text":"66201"},{"range":"71304","text":"66199"},{"range":"71305","text":"66201"},{"range":"71306","text":"66199"},{"range":"71307","text":"66201"},{"range":"71308","text":"66199"},{"range":"71309","text":"66201"},{"range":"71310","text":"66199"},{"range":"71311","text":"66201"},{"range":"71312","text":"66199"},{"range":"71313","text":"66201"},{"range":"71314","text":"66199"},{"range":"71315","text":"66201"},{"range":"71316","text":"66199"},{"range":"71317","text":"66201"},{"range":"71318","text":"66199"},{"range":"71319","text":"66201"},{"range":"71320","text":"66199"},{"range":"71321","text":"66201"},{"range":"71322","text":"66199"},{"range":"71323","text":"66201"},{"range":"71324","text":"66199"},{"range":"71325","text":"66201"},{"range":"71326","text":"66199"},{"range":"71327","text":"66201"},{"range":"71328","text":"66199"},{"range":"71329","text":"66201"},{"range":"71330","text":"66199"},{"range":"71331","text":"66201"},{"range":"71332","text":"66199"},{"range":"71333","text":"66201"},{"range":"71334","text":"66199"},{"range":"71335","text":"66201"},{"range":"71336","text":"66199"},{"range":"71337","text":"66201"},{"range":"71338","text":"66199"},{"range":"71339","text":"66201"},{"range":"71340","text":"66199"},{"range":"71341","text":"66201"},{"range":"71342","text":"66199"},{"range":"71343","text":"66201"},{"range":"71344","text":"66199"},{"range":"71345","text":"66201"},{"range":"71346","text":"66199"},{"range":"71347","text":"66201"},{"range":"71348","text":"66199"},{"range":"71349","text":"66201"},{"range":"71350","text":"66199"},{"range":"71351","text":"66201"},{"range":"71352","text":"66199"},{"range":"71353","text":"66201"},{"range":"71354","text":"66199"},{"range":"71355","text":"66201"},{"range":"71356","text":"66199"},{"range":"71357","text":"66201"},{"range":"71358","text":"66199"},{"range":"71359","text":"66201"},{"range":"71360","text":"66199"},{"range":"71361","text":"66201"},{"range":"71362","text":"66199"},{"range":"71363","text":"66201"},{"range":"71364","text":"66199"},{"range":"71365","text":"66201"},{"range":"71366","text":"66199"},{"range":"71367","text":"66201"},{"range":"71368","text":"66199"},{"range":"71369","text":"66201"},{"range":"71370","text":"66199"},{"range":"71371","text":"66201"},{"range":"71372","text":"66199"},{"range":"71373","text":"66201"},{"range":"71374","text":"66199"},{"range":"71375","text":"66201"},{"range":"71376","text":"66199"},{"range":"71377","text":"66201"},{"range":"71378","text":"66199"},{"range":"71379","text":"66201"},{"range":"71380","text":"66199"},{"range":"71381","text":"66201"},{"range":"71382","text":"66199"},{"range":"71383","text":"66201"},{"range":"71384","text":"66199"},{"range":"71385","text":"66201"},{"range":"71386","text":"66199"},{"range":"71387","text":"66201"},{"range":"71388","text":"66199"},{"range":"71389","text":"66201"},{"range":"71390","text":"66199"},{"range":"71391","text":"66201"},{"range":"71392","text":"66199"},{"range":"71393","text":"66201"},{"range":"71394","text":"66199"},{"range":"71395","text":"66201"},{"range":"71396","text":"66199"},{"range":"71397","text":"66201"},{"range":"71398","text":"66199"},{"range":"71399","text":"66201"},{"range":"71400","text":"66199"},{"range":"71401","text":"66201"},{"range":"71402","text":"66199"},{"range":"71403","text":"66201"},{"range":"71404","text":"66199"},{"range":"71405","text":"66201"},{"range":"71406","text":"66199"},{"range":"71407","text":"66201"},{"range":"71408","text":"66199"},{"range":"71409","text":"66201"},{"range":"71410","text":"66199"},{"range":"71411","text":"66201"},{"range":"71412","text":"66199"},{"range":"71413","text":"66201"},{"range":"71414","text":"66199"},{"range":"71415","text":"66201"},{"range":"71416","text":"66199"},{"range":"71417","text":"66201"},{"range":"71418","text":"66199"},{"range":"71419","text":"66201"},{"range":"71420","text":"66199"},{"range":"71421","text":"66201"},{"range":"71422","text":"66199"},{"range":"71423","text":"66201"},{"range":"71424","text":"66199"},{"range":"71425","text":"66201"},{"range":"71426","text":"66199"},{"range":"71427","text":"66201"},{"range":"71428","text":"66199"},{"range":"71429","text":"66201"},{"range":"71430","text":"66199"},{"range":"71431","text":"66201"},{"range":"71432","text":"66199"},{"range":"71433","text":"66201"},{"range":"71434","text":"66199"},{"range":"71435","text":"66201"},{"range":"71436","text":"66199"},{"range":"71437","text":"66201"},{"range":"71438","text":"66199"},{"range":"71439","text":"66201"},{"range":"71440","text":"66199"},{"range":"71441","text":"66201"},{"range":"71442","text":"66199"},{"range":"71443","text":"66201"},{"range":"71444","text":"66199"},{"range":"71445","text":"66201"},{"range":"71446","text":"66199"},{"range":"71447","text":"66201"},{"range":"71448","text":"66199"},{"range":"71449","text":"66201"},{"range":"71450","text":"66199"},{"range":"71451","text":"66201"},{"range":"71452","text":"66199"},{"range":"71453","text":"66201"},{"range":"71454","text":"66199"},{"range":"71455","text":"66201"},{"range":"71456","text":"66199"},{"range":"71457","text":"66201"},{"range":"71458","text":"66199"},{"range":"71459","text":"66201"},{"range":"71460","text":"66199"},{"range":"71461","text":"66201"},{"range":"71462","text":"66199"},{"range":"71463","text":"66201"},{"range":"71464","text":"66199"},{"range":"71465","text":"66201"},{"range":"71466","text":"66199"},{"range":"71467","text":"66201"},{"range":"71468","text":"66199"},{"range":"71469","text":"66201"},{"range":"71470","text":"66199"},{"range":"71471","text":"66201"},{"range":"71472","text":"66199"},{"range":"71473","text":"66201"},{"range":"71474","text":"66199"},{"range":"71475","text":"66201"},{"range":"71476","text":"66199"},{"range":"71477","text":"66201"},{"range":"71478","text":"66199"},{"range":"71479","text":"66201"},{"range":"71480","text":"66199"},{"range":"71481","text":"66201"},{"range":"71482","text":"66199"},{"range":"71483","text":"66201"},{"range":"71484","text":"66199"},{"range":"71485","text":"66201"},{"range":"71486","text":"66199"},{"range":"71487","text":"66201"},{"range":"71488","text":"66199"},{"range":"71489","text":"66201"},{"range":"71490","text":"66199"},{"range":"71491","text":"66201"},{"range":"71492","text":"66199"},{"range":"71493","text":"66201"},{"range":"71494","text":"66199"},{"range":"71495","text":"66201"},{"range":"71496","text":"66199"},{"range":"71497","text":"66201"},{"range":"71498","text":"66199"},{"range":"71499","text":"66201"},{"range":"71500","text":"66199"},{"range":"71501","text":"66201"},{"range":"71502","text":"66199"},{"range":"71503","text":"66201"},{"range":"71504","text":"66199"},{"range":"71505","text":"66201"},{"range":"71506","text":"66199"},{"range":"71507","text":"66201"},{"range":"71508","text":"66199"},{"range":"71509","text":"66201"},{"range":"71510","text":"66199"},{"range":"71511","text":"66201"},{"range":"71512","text":"66199"},{"range":"71513","text":"66201"},{"range":"71514","text":"66199"},{"range":"71515","text":"66201"},{"range":"71516","text":"66199"},{"range":"71517","text":"66201"},{"range":"71518","text":"66199"},{"range":"71519","text":"66201"},{"range":"71520","text":"66199"},{"range":"71521","text":"66201"},{"range":"71522","text":"66199"},{"range":"71523","text":"66201"},{"range":"71524","text":"66199"},{"range":"71525","text":"66201"},{"range":"71526","text":"66199"},{"range":"71527","text":"66201"},{"range":"71528","text":"66199"},{"range":"71529","text":"66201"},{"range":"71530","text":"66199"},{"range":"71531","text":"66201"},{"range":"71532","text":"66199"},{"range":"71533","text":"66201"},{"range":"71534","text":"66199"},{"range":"71535","text":"66201"},{"range":"71536","text":"66199"},{"range":"71537","text":"66201"},{"range":"71538","text":"66199"},{"range":"71539","text":"66201"},{"range":"71540","text":"66199"},{"range":"71541","text":"66201"},{"range":"71542","text":"66199"},{"range":"71543","text":"66201"},{"range":"71544","text":"66199"},{"range":"71545","text":"66201"},{"range":"71546","text":"66199"},{"range":"71547","text":"66201"},{"range":"71548","text":"66199"},{"range":"71549","text":"66201"},{"range":"71550","text":"66199"},{"range":"71551","text":"66201"},{"range":"71552","text":"66199"},{"range":"71553","text":"66201"},{"range":"71554","text":"66199"},{"range":"71555","text":"66201"},{"range":"71556","text":"66199"},{"range":"71557","text":"66201"},{"range":"71558","text":"66199"},{"range":"71559","text":"66201"},{"range":"71560","text":"66199"},{"range":"71561","text":"66201"},{"range":"71562","text":"66199"},{"range":"71563","text":"66201"},{"range":"71564","text":"66199"},{"range":"71565","text":"66201"},{"range":"71566","text":"66199"},{"range":"71567","text":"66201"},{"range":"71568","text":"66199"},{"range":"71569","text":"66201"},{"range":"71570","text":"66199"},{"range":"71571","text":"66201"},{"range":"71572","text":"66199"},{"range":"71573","text":"66201"},{"range":"71574","text":"66199"},{"range":"71575","text":"66201"},{"range":"71576","text":"66199"},{"range":"71577","text":"66201"},{"range":"71578","text":"66199"},{"range":"71579","text":"66201"},{"range":"71580","text":"66199"},{"range":"71581","text":"66201"},{"range":"71582","text":"66199"},{"range":"71583","text":"66201"},{"range":"71584","text":"66199"},{"range":"71585","text":"66201"},{"range":"71586","text":"66199"},{"range":"71587","text":"66201"},{"range":"71588","text":"66199"},{"range":"71589","text":"66201"},{"range":"71590","text":"66199"},{"range":"71591","text":"66201"},{"range":"71592","text":"66199"},{"range":"71593","text":"66201"},{"range":"71594","text":"66199"},{"range":"71595","text":"66201"},{"range":"71596","text":"66199"},{"range":"71597","text":"66201"},{"range":"71598","text":"66199"},{"range":"71599","text":"66201"},{"range":"71600","text":"66199"},{"range":"71601","text":"66201"},{"range":"71602","text":"66199"},{"range":"71603","text":"66201"},{"range":"71604","text":"66199"},{"range":"71605","text":"66201"},{"range":"71606","text":"66199"},{"range":"71607","text":"66201"},{"range":"71608","text":"66199"},{"range":"71609","text":"66201"},{"range":"71610","text":"66199"},{"range":"71611","text":"66201"},{"range":"71612","text":"66199"},{"range":"71613","text":"66201"},{"range":"71614","text":"66199"},{"range":"71615","text":"66201"},{"range":"71616","text":"66199"},{"range":"71617","text":"66201"},{"range":"71618","text":"66199"},{"range":"71619","text":"66201"},{"range":"71620","text":"66199"},{"range":"71621","text":"66201"},{"range":"71622","text":"66199"},{"range":"71623","text":"66201"},{"range":"71624","text":"66199"},{"range":"71625","text":"66201"},{"range":"71626","text":"66199"},{"range":"71627","text":"66201"},{"range":"71628","text":"66199"},{"range":"71629","text":"66201"},{"range":"71630","text":"66199"},{"range":"71631","text":"66201"},{"range":"71632","text":"66199"},{"range":"71633","text":"66201"},{"range":"71634","text":"66199"},{"range":"71635","text":"66201"},{"range":"71636","text":"66199"},{"range":"71637","text":"66201"},{"range":"71638","text":"66199"},{"range":"71639","text":"66201"},{"range":"71640","text":"66199"},{"range":"71641","text":"66201"},{"range":"71642","text":"66199"},{"range":"71643","text":"66201"},{"range":"71644","text":"66199"},{"range":"71645","text":"66201"},{"range":"71646","text":"66199"},{"range":"71647","text":"66201"},{"range":"71648","text":"66199"},{"range":"71649","text":"66201"},{"range":"71650","text":"66199"},{"range":"71651","text":"66201"},{"range":"71652","text":"66199"},{"range":"71653","text":"66201"},{"range":"71654","text":"66199"},{"range":"71655","text":"66201"},{"range":"71656","text":"66199"},{"range":"71657","text":"66201"},{"range":"71658","text":"66199"},{"range":"71659","text":"66201"},{"range":"71660","text":"66199"},{"range":"71661","text":"66201"},{"range":"71662","text":"66199"},{"range":"71663","text":"66201"},{"range":"71664","text":"66199"},{"range":"71665","text":"66201"},{"range":"71666","text":"66199"},{"range":"71667","text":"66201"},{"range":"71668","text":"66199"},{"range":"71669","text":"66201"},{"range":"71670","text":"66199"},{"range":"71671","text":"66201"},{"range":"71672","text":"66199"},{"range":"71673","text":"66201"},{"range":"71674","text":"66199"},{"range":"71675","text":"66201"},{"range":"71676","text":"66199"},{"range":"71677","text":"66201"},{"range":"71678","text":"66199"},{"range":"71679","text":"66201"},{"range":"71680","text":"66199"},{"range":"71681","text":"66201"},{"range":"71682","text":"66199"},{"range":"71683","text":"66201"},{"range":"71684","text":"66199"},{"range":"71685","text":"66201"},{"range":"71686","text":"66199"},{"range":"71687","text":"66201"},{"range":"71688","text":"66199"},{"range":"71689","text":"66201"},{"range":"71690","text":"66199"},{"range":"71691","text":"66201"},{"range":"71692","text":"66199"},{"range":"71693","text":"66201"},{"range":"71694","text":"66199"},{"range":"71695","text":"66201"},{"range":"71696","text":"66199"},{"range":"71697","text":"66201"},{"range":"71698","text":"66199"},{"range":"71699","text":"66201"},{"range":"71700","text":"66199"},{"range":"71701","text":"66201"},{"range":"71702","text":"66199"},{"range":"71703","text":"66201"},{"range":"71704","text":"66199"},{"range":"71705","text":"66201"},{"range":"71706","text":"66199"},{"range":"71707","text":"66201"},{"range":"71708","text":"66199"},{"range":"71709","text":"66201"},{"range":"71710","text":"66199"},{"range":"71711","text":"66201"},{"range":"71712","text":"66199"},{"range":"71713","text":"66201"},{"range":"71714","text":"66199"},{"range":"71715","text":"66201"},{"range":"71716","text":"66199"},{"range":"71717","text":"66201"},{"range":"71718","text":"66199"},{"range":"71719","text":"66201"},{"range":"71720","text":"66199"},{"range":"71721","text":"66201"},{"range":"71722","text":"66199"},{"range":"71723","text":"66201"},{"range":"71724","text":"66199"},{"range":"71725","text":"66201"},{"range":"71726","text":"66199"},{"range":"71727","text":"66201"},{"range":"71728","text":"66199"},{"range":"71729","text":"66201"},{"range":"71730","text":"66199"},{"range":"71731","text":"66201"},{"range":"71732","text":"66199"},{"range":"71733","text":"66201"},{"range":"71734","text":"66199"},{"range":"71735","text":"66201"},{"range":"71736","text":"66199"},{"range":"71737","text":"66201"},{"range":"71738","text":"66199"},{"range":"71739","text":"66201"},{"range":"71740","text":"66199"},{"range":"71741","text":"66201"},{"range":"71742","text":"66199"},{"range":"71743","text":"66201"},{"range":"71744","text":"66199"},{"range":"71745","text":"66201"},{"range":"71746","text":"66199"},{"range":"71747","text":"66201"},{"range":"71748","text":"66199"},{"range":"71749","text":"66201"},{"range":"71750","text":"66199"},{"range":"71751","text":"66201"},{"range":"71752","text":"66199"},{"range":"71753","text":"66201"},{"range":"71754","text":"66199"},{"range":"71755","text":"66201"},{"range":"71756","text":"66199"},{"range":"71757","text":"66201"},{"range":"71758","text":"66199"},{"range":"71759","text":"66201"},{"range":"71760","text":"66199"},{"range":"71761","text":"66201"},{"range":"71762","text":"66199"},{"range":"71763","text":"66201"},{"range":"71764","text":"66199"},{"range":"71765","text":"66201"},{"range":"71766","text":"66199"},{"range":"71767","text":"66201"},{"range":"71768","text":"66199"},{"range":"71769","text":"66201"},{"range":"71770","text":"66199"},{"range":"71771","text":"66201"},{"range":"71772","text":"66199"},{"range":"71773","text":"66201"},{"range":"71774","text":"66199"},{"range":"71775","text":"66201"},{"range":"71776","text":"66199"},{"range":"71777","text":"66201"},{"range":"71778","text":"66199"},{"range":"71779","text":"66201"},{"range":"71780","text":"66199"},{"range":"71781","text":"66201"},{"range":"71782","text":"66199"},{"range":"71783","text":"66201"},{"range":"71784","text":"66199"},{"range":"71785","text":"66201"},{"range":"71786","text":"66199"},{"range":"71787","text":"66201"},{"range":"71788","text":"66199"},{"range":"71789","text":"66201"},{"range":"71790","text":"66199"},{"range":"71791","text":"66201"},{"range":"71792","text":"66199"},{"range":"71793","text":"66201"},{"range":"71794","text":"66199"},{"range":"71795","text":"66201"},{"range":"71796","text":"66199"},{"range":"71797","text":"66201"},{"range":"71798","text":"66199"},{"range":"71799","text":"66201"},{"range":"71800","text":"66199"},{"range":"71801","text":"66201"},{"range":"71802","text":"66199"},{"range":"71803","text":"66201"},{"range":"71804","text":"66199"},{"range":"71805","text":"66201"},{"range":"71806","text":"66199"},{"range":"71807","text":"66201"},{"range":"71808","text":"66199"},{"range":"71809","text":"66201"},{"range":"71810","text":"66199"},{"range":"71811","text":"66201"},{"range":"71812","text":"66199"},{"range":"71813","text":"66201"},{"range":"71814","text":"66199"},{"range":"71815","text":"66201"},{"range":"71816","text":"66199"},{"range":"71817","text":"66201"},{"range":"71818","text":"66199"},{"range":"71819","text":"66201"},{"range":"71820","text":"66199"},{"range":"71821","text":"66201"},{"range":"71822","text":"66199"},{"range":"71823","text":"66201"},{"range":"71824","text":"66199"},{"range":"71825","text":"66201"},{"range":"71826","text":"66199"},{"range":"71827","text":"66201"},{"range":"71828","text":"66199"},{"range":"71829","text":"66201"},{"range":"71830","text":"66199"},{"range":"71831","text":"66201"},{"range":"71832","text":"66199"},{"range":"71833","text":"66201"},{"range":"71834","text":"66199"},{"range":"71835","text":"66201"},{"range":"71836","text":"66199"},{"range":"71837","text":"66201"},{"range":"71838","text":"66199"},{"range":"71839","text":"66201"},{"range":"71840","text":"66199"},{"range":"71841","text":"66201"},{"range":"71842","text":"66199"},{"range":"71843","text":"66201"},{"range":"71844","text":"66199"},{"range":"71845","text":"66201"},{"range":"71846","text":"66199"},{"range":"71847","text":"66201"},{"range":"71848","text":"66199"},{"range":"71849","text":"66201"},{"range":"71850","text":"66199"},{"range":"71851","text":"66201"},{"range":"71852","text":"66199"},{"range":"71853","text":"66201"},{"range":"71854","text":"66199"},{"range":"71855","text":"66201"},{"range":"71856","text":"66199"},{"range":"71857","text":"66201"},{"range":"71858","text":"66199"},{"range":"71859","text":"66201"},{"range":"71860","text":"66199"},{"range":"71861","text":"66201"},{"range":"71862","text":"66199"},{"range":"71863","text":"66201"},{"range":"71864","text":"66199"},{"range":"71865","text":"66201"},{"range":"71866","text":"66199"},{"range":"71867","text":"66201"},{"range":"71868","text":"66199"},{"range":"71869","text":"66201"},{"range":"71870","text":"66199"},{"range":"71871","text":"66201"},{"range":"71872","text":"66199"},{"range":"71873","text":"66201"},{"range":"71874","text":"66199"},{"range":"71875","text":"66201"},{"range":"71876","text":"66199"},{"range":"71877","text":"66201"},{"range":"71878","text":"66199"},{"range":"71879","text":"66201"},{"range":"71880","text":"66199"},{"range":"71881","text":"66201"},{"range":"71882","text":"66199"},{"range":"71883","text":"66201"},{"range":"71884","text":"66199"},{"range":"71885","text":"66201"},{"range":"71886","text":"66199"},{"range":"71887","text":"66201"},{"range":"71888","text":"66199"},{"range":"71889","text":"66201"},{"range":"71890","text":"66199"},{"range":"71891","text":"66201"},{"range":"71892","text":"66199"},{"range":"71893","text":"66201"},{"range":"71894","text":"66199"},{"range":"71895","text":"66201"},{"range":"71896","text":"66199"},{"range":"71897","text":"66201"},{"range":"71898","text":"66199"},{"range":"71899","text":"66201"},{"range":"71900","text":"66199"},{"range":"71901","text":"66201"},{"range":"71902","text":"66199"},{"range":"71903","text":"66201"},{"range":"71904","text":"66199"},{"range":"71905","text":"66201"},{"range":"71906","text":"66199"},{"range":"71907","text":"66201"},{"range":"71908","text":"66199"},{"range":"71909","text":"66201"},{"range":"71910","text":"66199"},{"range":"71911","text":"66201"},{"range":"71912","text":"66199"},{"range":"71913","text":"66201"},{"range":"71914","text":"66199"},{"range":"71915","text":"66201"},{"range":"71916","text":"66199"},{"range":"71917","text":"66201"},{"range":"71918","text":"66199"},{"range":"71919","text":"66201"},{"range":"71920","text":"66199"},{"range":"71921","text":"66201"},{"range":"71922","text":"66199"},{"range":"71923","text":"66201"},{"range":"71924","text":"66199"},{"range":"71925","text":"66201"},{"range":"71926","text":"66199"},{"range":"71927","text":"66201"},{"range":"71928","text":"66199"},{"range":"71929","text":"66201"},{"range":"71930","text":"66199"},{"range":"71931","text":"66201"},{"range":"71932","text":"66199"},{"range":"71933","text":"66201"},{"range":"71934","text":"66199"},{"range":"71935","text":"66201"},{"range":"71936","text":"66199"},{"range":"71937","text":"66201"},{"range":"71938","text":"66199"},{"range":"71939","text":"66201"},{"range":"71940","text":"66199"},{"range":"71941","text":"66201"},{"range":"71942","text":"66199"},{"range":"71943","text":"66201"},{"range":"71944","text":"66199"},{"range":"71945","text":"66201"},{"range":"71946","text":"66199"},{"range":"71947","text":"66201"},{"range":"71948","text":"66199"},{"range":"71949","text":"66201"},{"range":"71950","text":"66199"},{"range":"71951","text":"66201"},{"range":"71952","text":"66199"},{"range":"71953","text":"66201"},{"range":"71954","text":"66199"},{"range":"71955","text":"66201"},{"range":"71956","text":"66199"},{"range":"71957","text":"66201"},{"range":"71958","text":"66199"},{"range":"71959","text":"66201"},{"range":"71960","text":"66199"},{"range":"71961","text":"66201"},{"range":"71962","text":"66199"},{"range":"71963","text":"66201"},{"range":"71964","text":"66199"},{"range":"71965","text":"66201"},{"range":"71966","text":"66199"},{"range":"71967","text":"66201"},{"range":"71968","text":"66199"},{"range":"71969","text":"66201"},{"range":"71970","text":"66199"},{"range":"71971","text":"66201"},{"range":"71972","text":"66199"},{"range":"71973","text":"66201"},{"range":"71974","text":"66199"},{"range":"71975","text":"66201"},{"range":"71976","text":"66199"},{"range":"71977","text":"66201"},{"range":"71978","text":"66199"},{"range":"71979","text":"66201"},{"range":"71980","text":"66199"},{"range":"71981","text":"66201"},{"range":"71982","text":"66199"},{"range":"71983","text":"66201"},{"range":"71984","text":"66199"},{"range":"71985","text":"66201"},{"range":"71986","text":"66199"},{"range":"71987","text":"66201"},{"range":"71988","text":"66199"},{"range":"71989","text":"66201"},{"range":"71990","text":"66199"},{"range":"71991","text":"66201"},{"range":"71992","text":"66199"},{"range":"71993","text":"66201"},{"range":"71994","text":"66199"},{"range":"71995","text":"66201"},{"range":"71996","text":"66199"},{"range":"71997","text":"66201"},{"range":"71998","text":"66199"},{"range":"71999","text":"66201"},{"range":"72000","text":"66199"},{"range":"72001","text":"66201"},{"range":"72002","text":"66199"},{"range":"72003","text":"66201"},{"range":"72004","text":"66199"},{"range":"72005","text":"66201"},{"range":"72006","text":"66199"},{"range":"72007","text":"66201"},{"range":"72008","text":"66199"},{"range":"72009","text":"66201"},{"range":"72010","text":"66199"},{"range":"72011","text":"66201"},{"range":"72012","text":"66199"},{"range":"72013","text":"66201"},{"range":"72014","text":"66199"},{"range":"72015","text":"66201"},{"range":"72016","text":"66199"},{"range":"72017","text":"66201"},{"range":"72018","text":"66199"},{"range":"72019","text":"66201"},{"range":"72020","text":"66199"},{"range":"72021","text":"66201"},{"range":"72022","text":"66199"},{"range":"72023","text":"66201"},{"range":"72024","text":"66199"},{"range":"72025","text":"66201"},{"range":"72026","text":"66199"},{"range":"72027","text":"66201"},{"range":"72028","text":"66199"},{"range":"72029","text":"66201"},{"range":"72030","text":"66199"},{"range":"72031","text":"66201"},{"range":"72032","text":"66199"},{"range":"72033","text":"66201"},{"range":"72034","text":"66199"},{"range":"72035","text":"66201"},{"range":"72036","text":"66199"},{"range":"72037","text":"66201"},{"range":"72038","text":"66199"},{"range":"72039","text":"66201"},{"range":"72040","text":"66199"},{"range":"72041","text":"66201"},{"range":"72042","text":"66199"},{"range":"72043","text":"66201"},{"range":"72044","text":"66199"},{"range":"72045","text":"66201"},{"range":"72046","text":"66199"},{"range":"72047","text":"66201"},{"range":"72048","text":"66199"},{"range":"72049","text":"66201"},{"range":"72050","text":"66199"},{"range":"72051","text":"66201"},{"range":"72052","text":"66199"},{"range":"72053","text":"66201"},{"range":"72054","text":"66199"},{"range":"72055","text":"66201"},{"range":"72056","text":"66199"},{"range":"72057","text":"66201"},{"range":"72058","text":"66199"},{"range":"72059","text":"66201"},{"range":"72060","text":"66199"},{"range":"72061","text":"66201"},{"range":"72062","text":"66199"},{"range":"72063","text":"66201"},{"range":"72064","text":"66199"},{"range":"72065","text":"66201"},{"range":"72066","text":"66199"},{"range":"72067","text":"66201"},{"range":"72068","text":"66199"},{"range":"72069","text":"66201"},{"range":"72070","text":"66199"},{"range":"72071","text":"66201"},{"range":"72072","text":"66199"},{"range":"72073","text":"66201"},{"range":"72074","text":"66199"},{"range":"72075","text":"66201"},{"range":"72076","text":"66199"},{"range":"72077","text":"66201"},{"range":"72078","text":"66199"},{"range":"72079","text":"66201"},{"range":"72080","text":"66199"},{"range":"72081","text":"66201"},{"range":"72082","text":"66199"},{"range":"72083","text":"66201"},{"range":"72084","text":"66199"},{"range":"72085","text":"66201"},{"range":"72086","text":"66199"},{"range":"72087","text":"66201"},{"range":"72088","text":"66199"},{"range":"72089","text":"66201"},{"range":"72090","text":"66199"},{"range":"72091","text":"66201"},{"range":"72092","text":"66199"},{"range":"72093","text":"66201"},{"range":"72094","text":"66199"},{"range":"72095","text":"66201"},{"range":"72096","text":"66199"},{"range":"72097","text":"66201"},{"range":"72098","text":"66199"},{"range":"72099","text":"66201"},{"range":"72100","text":"66199"},{"range":"72101","text":"66201"},{"range":"72102","text":"66199"},{"range":"72103","text":"66201"},{"range":"72104","text":"66199"},{"range":"72105","text":"66201"},{"range":"72106","text":"66199"},{"range":"72107","text":"66201"},{"range":"72108","text":"66199"},{"range":"72109","text":"66201"},{"range":"72110","text":"66199"},{"range":"72111","text":"66201"},{"range":"72112","text":"66199"},{"range":"72113","text":"66201"},{"range":"72114","text":"66199"},{"range":"72115","text":"66201"},{"range":"72116","text":"66199"},{"range":"72117","text":"66201"},{"range":"72118","text":"66199"},{"range":"72119","text":"66201"},{"range":"72120","text":"66199"},{"range":"72121","text":"66201"},{"range":"72122","text":"66199"},{"range":"72123","text":"66201"},{"range":"72124","text":"66199"},{"range":"72125","text":"66201"},{"range":"72126","text":"66199"},{"range":"72127","text":"66201"},{"range":"72128","text":"66199"},{"range":"72129","text":"66201"},{"range":"72130","text":"66199"},{"range":"72131","text":"66201"},{"range":"72132","text":"66199"},{"range":"72133","text":"66201"},{"range":"72134","text":"66199"},{"range":"72135","text":"66201"},{"range":"72136","text":"66199"},{"range":"72137","text":"66201"},{"range":"72138","text":"66199"},{"range":"72139","text":"66201"},{"range":"72140","text":"66199"},{"range":"72141","text":"66201"},{"range":"72142","text":"66199"},{"range":"72143","text":"66201"},{"range":"72144","text":"66199"},{"range":"72145","text":"66201"},{"range":"72146","text":"66199"},{"range":"72147","text":"66201"},{"range":"72148","text":"66199"},{"range":"72149","text":"66201"},{"range":"72150","text":"66199"},{"range":"72151","text":"66201"},{"range":"72152","text":"66199"},{"range":"72153","text":"66201"},{"range":"72154","text":"66199"},{"range":"72155","text":"66201"},{"range":"72156","text":"66199"},{"range":"72157","text":"66201"},{"range":"72158","text":"66199"},{"range":"72159","text":"66201"},{"range":"72160","text":"66199"},{"range":"72161","text":"66201"},{"range":"72162","text":"66199"},{"range":"72163","text":"66201"},{"range":"72164","text":"66199"},{"range":"72165","text":"66201"},{"range":"72166","text":"66199"},{"range":"72167","text":"66201"},{"range":"72168","text":"66199"},{"range":"72169","text":"66201"},{"range":"72170","text":"66199"},{"range":"72171","text":"66201"},{"range":"72172","text":"66199"},{"range":"72173","text":"66201"},{"range":"72174","text":"66199"},{"range":"72175","text":"66201"},{"range":"72176","text":"66199"},{"range":"72177","text":"66201"},{"range":"72178","text":"66199"},{"range":"72179","text":"66201"},{"range":"72180","text":"66199"},{"range":"72181","text":"66201"},{"range":"72182","text":"66199"},{"range":"72183","text":"66201"},{"range":"72184","text":"66199"},{"range":"72185","text":"66201"},{"range":"72186","text":"66199"},{"range":"72187","text":"66201"},{"range":"72188","text":"66199"},{"range":"72189","text":"66201"},{"range":"72190","text":"66199"},{"range":"72191","text":"66201"},{"range":"72192","text":"66199"},{"range":"72193","text":"66201"},{"range":"72194","text":"66199"},{"range":"72195","text":"66201"},{"range":"72196","text":"66199"},{"range":"72197","text":"66201"},{"range":"72198","text":"66199"},{"range":"72199","text":"66201"},{"range":"72200","text":"66199"},{"range":"72201","text":"66201"},{"range":"72202","text":"66199"},{"range":"72203","text":"66201"},{"range":"72204","text":"66199"},{"range":"72205","text":"66201"},{"range":"72206","text":"66199"},{"range":"72207","text":"66201"},{"range":"72208","text":"66199"},{"range":"72209","text":"66201"},{"range":"72210","text":"66199"},{"range":"72211","text":"66201"},{"range":"72212","text":"66199"},{"range":"72213","text":"66201"},{"range":"72214","text":"66199"},{"range":"72215","text":"66201"},{"range":"72216","text":"66199"},{"range":"72217","text":"66201"},{"range":"72218","text":"66199"},{"range":"72219","text":"66201"},{"range":"72220","text":"66199"},{"range":"72221","text":"66201"},{"range":"72222","text":"66199"},{"range":"72223","text":"66201"},{"range":"72224","text":"66199"},{"range":"72225","text":"66201"},{"range":"72226","text":"66199"},{"range":"72227","text":"66201"},{"range":"72228","text":"66199"},{"range":"72229","text":"66201"},{"range":"72230","text":"66199"},{"range":"72231","text":"66201"},{"range":"72232","text":"66199"},{"range":"72233","text":"66201"},{"range":"72234","text":"66199"},{"range":"72235","text":"66201"},{"range":"72236","text":"66199"},{"range":"72237","text":"66201"},{"range":"72238","text":"66199"},{"range":"72239","text":"66201"},{"range":"72240","text":"66199"},{"range":"72241","text":"66201"},{"range":"72242","text":"66199"},{"range":"72243","text":"66201"},{"range":"72244","text":"66199"},{"range":"72245","text":"66201"},{"range":"72246","text":"66199"},{"range":"72247","text":"66201"},{"range":"72248","text":"66199"},{"range":"72249","text":"66201"},{"range":"72250","text":"66199"},{"range":"72251","text":"66201"},{"range":"72252","text":"66199"},{"range":"72253","text":"66201"},{"range":"72254","text":"66199"},{"range":"72255","text":"66201"},{"range":"72256","text":"66199"},{"range":"72257","text":"66201"},{"range":"72258","text":"66199"},{"range":"72259","text":"66201"},{"range":"72260","text":"66199"},{"range":"72261","text":"66201"},{"range":"72262","text":"66199"},{"range":"72263","text":"66201"},{"range":"72264","text":"66199"},{"range":"72265","text":"66201"},{"range":"72266","text":"66199"},{"range":"72267","text":"66201"},{"range":"72268","text":"66199"},{"range":"72269","text":"66201"},{"range":"72270","text":"66199"},{"range":"72271","text":"66201"},{"range":"72272","text":"66199"},{"range":"72273","text":"66201"},{"range":"72274","text":"66199"},{"range":"72275","text":"66201"},{"range":"72276","text":"66199"},{"range":"72277","text":"66201"},{"range":"72278","text":"66199"},{"range":"72279","text":"66201"},{"range":"72280","text":"66199"},{"range":"72281","text":"66201"},{"range":"72282","text":"66199"},{"range":"72283","text":"66201"},{"range":"72284","text":"66199"},{"range":"72285","text":"66201"},{"range":"72286","text":"66199"},{"range":"72287","text":"66201"},{"range":"72288","text":"66199"},{"range":"72289","text":"66201"},{"range":"72290","text":"66199"},{"range":"72291","text":"66201"},{"range":"72292","text":"66199"},{"range":"72293","text":"66201"},{"range":"72294","text":"66199"},{"range":"72295","text":"66201"},{"range":"72296","text":"66199"},{"range":"72297","text":"66201"},{"range":"72298","text":"66199"},{"range":"72299","text":"66201"},{"range":"72300","text":"66199"},{"range":"72301","text":"66201"},{"range":"72302","text":"66199"},{"range":"72303","text":"66201"},{"range":"72304","text":"66199"},{"range":"72305","text":"66201"},{"range":"72306","text":"66199"},{"range":"72307","text":"66201"},{"range":"72308","text":"66199"},{"range":"72309","text":"66201"},{"range":"72310","text":"66199"},{"range":"72311","text":"66201"},{"range":"72312","text":"66199"},{"range":"72313","text":"66201"},{"range":"72314","text":"66199"},{"range":"72315","text":"66201"},{"range":"72316","text":"66199"},{"range":"72317","text":"66201"},{"range":"72318","text":"66199"},{"range":"72319","text":"66201"},{"range":"72320","text":"66199"},{"range":"72321","text":"66201"},{"range":"72322","text":"66199"},{"range":"72323","text":"66201"},{"range":"72324","text":"66199"},{"range":"72325","text":"66201"},{"range":"72326","text":"66199"},{"range":"72327","text":"66201"},{"range":"72328","text":"66199"},{"range":"72329","text":"66201"},{"range":"72330","text":"66199"},{"range":"72331","text":"66201"},{"range":"72332","text":"66199"},{"range":"72333","text":"66201"},{"range":"72334","text":"66199"},{"range":"72335","text":"66201"},{"range":"72336","text":"66199"},{"range":"72337","text":"66201"},{"range":"72338","text":"66199"},{"range":"72339","text":"66201"},{"range":"72340","text":"66199"},{"range":"72341","text":"66201"},{"range":"72342","text":"66199"},{"range":"72343","text":"66201"},{"range":"72344","text":"66199"},{"range":"72345","text":"66201"},{"range":"72346","text":"66199"},{"range":"72347","text":"66201"},{"range":"72348","text":"66199"},{"range":"72349","text":"66201"},{"range":"72350","text":"66199"},{"range":"72351","text":"66201"},{"range":"72352","text":"66199"},{"range":"72353","text":"66201"},{"range":"72354","text":"66199"},{"range":"72355","text":"66201"},{"range":"72356","text":"66199"},{"range":"72357","text":"66201"},{"range":"72358","text":"66199"},{"range":"72359","text":"66201"},{"range":"72360","text":"66199"},{"range":"72361","text":"66201"},{"range":"72362","text":"66199"},{"range":"72363","text":"66201"},{"range":"72364","text":"66199"},{"range":"72365","text":"66201"},{"range":"72366","text":"66199"},{"range":"72367","text":"66201"},{"range":"72368","text":"66199"},{"range":"72369","text":"66201"},{"range":"72370","text":"66199"},{"range":"72371","text":"66201"},{"range":"72372","text":"66199"},{"range":"72373","text":"66201"},{"range":"72374","text":"66199"},{"range":"72375","text":"66201"},{"range":"72376","text":"66199"},{"range":"72377","text":"66201"},{"range":"72378","text":"66199"},{"range":"72379","text":"66201"},{"range":"72380","text":"66199"},{"range":"72381","text":"66201"},{"range":"72382","text":"66199"},{"range":"72383","text":"66201"},{"range":"72384","text":"66199"},{"range":"72385","text":"66201"},{"range":"72386","text":"66199"},{"range":"72387","text":"66201"},{"range":"72388","text":"66199"},{"range":"72389","text":"66201"},{"range":"72390","text":"66199"},{"range":"72391","text":"66201"},{"range":"72392","text":"66199"},{"range":"72393","text":"66201"},{"range":"72394","text":"66199"},{"range":"72395","text":"66201"},{"range":"72396","text":"66199"},{"range":"72397","text":"66201"},{"range":"72398","text":"66199"},{"range":"72399","text":"66201"},{"range":"72400","text":"66199"},{"range":"72401","text":"66201"},{"range":"72402","text":"66199"},{"range":"72403","text":"66201"},{"range":"72404","text":"66199"},{"range":"72405","text":"66201"},{"range":"72406","text":"66199"},{"range":"72407","text":"66201"},{"range":"72408","text":"66199"},{"range":"72409","text":"66201"},{"range":"72410","text":"66199"},{"range":"72411","text":"66201"},{"range":"72412","text":"66199"},{"range":"72413","text":"66201"},{"range":"72414","text":"66199"},{"range":"72415","text":"66201"},{"range":"72416","text":"66199"},{"range":"72417","text":"66201"},{"range":"72418","text":"66199"},{"range":"72419","text":"66201"},{"range":"72420","text":"66199"},{"range":"72421","text":"66201"},{"range":"72422","text":"66199"},{"range":"72423","text":"66201"},{"range":"72424","text":"66199"},{"range":"72425","text":"66201"},{"range":"72426","text":"66199"},{"range":"72427","text":"66201"},{"range":"72428","text":"66199"},{"range":"72429","text":"66201"},{"range":"72430","text":"66199"},{"range":"72431","text":"66201"},{"range":"72432","text":"66199"},{"range":"72433","text":"66201"},{"range":"72434","text":"66199"},{"range":"72435","text":"66201"},{"range":"72436","text":"66199"},{"range":"72437","text":"66201"},{"range":"72438","text":"66199"},{"range":"72439","text":"66201"},{"range":"72440","text":"66199"},{"range":"72441","text":"66201"},{"range":"72442","text":"66199"},{"range":"72443","text":"66201"},{"range":"72444","text":"66199"},{"range":"72445","text":"66201"},{"range":"72446","text":"66199"},{"range":"72447","text":"66201"},{"range":"72448","text":"66199"},{"range":"72449","text":"66201"},{"range":"72450","text":"66199"},{"range":"72451","text":"66201"},{"range":"72452","text":"66199"},{"range":"72453","text":"66201"},{"range":"72454","text":"66199"},{"range":"72455","text":"66201"},{"range":"72456","text":"66199"},{"range":"72457","text":"66201"},{"range":"72458","text":"66199"},{"range":"72459","text":"66201"},{"range":"72460","text":"66199"},{"range":"72461","text":"66201"},{"range":"72462","text":"66199"},{"range":"72463","text":"66201"},{"range":"72464","text":"66199"},{"range":"72465","text":"66201"},{"range":"72466","text":"66199"},{"range":"72467","text":"66201"},{"range":"72468","text":"66199"},{"range":"72469","text":"66201"},{"range":"72470","text":"66199"},{"range":"72471","text":"66201"},{"range":"72472","text":"66199"},{"range":"72473","text":"66201"},{"range":"72474","text":"66199"},{"range":"72475","text":"66201"},{"range":"72476","text":"66199"},{"range":"72477","text":"66201"},{"range":"72478","text":"66199"},{"range":"72479","text":"66201"},{"range":"72480","text":"66199"},{"range":"72481","text":"66201"},{"range":"72482","text":"66199"},{"range":"72483","text":"66201"},{"range":"72484","text":"66199"},{"range":"72485","text":"66201"},{"range":"72486","text":"66199"},{"range":"72487","text":"66201"},{"range":"72488","text":"66199"},{"range":"72489","text":"66201"},{"range":"72490","text":"66199"},{"range":"72491","text":"66201"},{"range":"72492","text":"66199"},{"range":"72493","text":"66201"},{"range":"72494","text":"66199"},{"range":"72495","text":"66201"},{"range":"72496","text":"66199"},{"range":"72497","text":"66201"},{"range":"72498","text":"66199"},{"range":"72499","text":"66201"},{"range":"72500","text":"66199"},{"range":"72501","text":"66201"},{"range":"72502","text":"66199"},{"range":"72503","text":"66201"},{"range":"72504","text":"66199"},{"range":"72505","text":"66201"},{"range":"72506","text":"66199"},{"range":"72507","text":"66201"},{"range":"72508","text":"66199"},{"range":"72509","text":"66201"},{"range":"72510","text":"66199"},{"range":"72511","text":"66201"},{"range":"72512","text":"66199"},{"range":"72513","text":"66201"},{"range":"72514","text":"66199"},{"range":"72515","text":"66201"},{"range":"72516","text":"66199"},{"range":"72517","text":"66201"},{"range":"72518","text":"66199"},{"range":"72519","text":"66201"},{"range":"72520","text":"66199"},{"range":"72521","text":"66201"},{"range":"72522","text":"66199"},{"range":"72523","text":"66201"},{"range":"72524","text":"66199"},{"range":"72525","text":"66201"},{"range":"72526","text":"66199"},{"range":"72527","text":"66201"},{"range":"72528","text":"66199"},{"range":"72529","text":"66201"},{"range":"72530","text":"66199"},{"range":"72531","text":"66201"},{"range":"72532","text":"66199"},{"range":"72533","text":"66201"},{"range":"72534","text":"66199"},{"range":"72535","text":"66201"},{"range":"72536","text":"66199"},{"range":"72537","text":"66201"},{"range":"72538","text":"66199"},{"range":"72539","text":"66201"},{"range":"72540","text":"66199"},{"range":"72541","text":"66201"},{"range":"72542","text":"66199"},{"range":"72543","text":"66201"},{"range":"72544","text":"66199"},{"range":"72545","text":"66201"},{"range":"72546","text":"66199"},{"range":"72547","text":"66201"},{"range":"72548","text":"66199"},{"range":"72549","text":"66201"},{"range":"72550","text":"66199"},{"range":"72551","text":"66201"},{"range":"72552","text":"66199"},{"range":"72553","text":"66201"},{"range":"72554","text":"66199"},{"range":"72555","text":"66201"},{"range":"72556","text":"66199"},{"range":"72557","text":"66201"},{"range":"72558","text":"66199"},{"range":"72559","text":"66201"},{"range":"72560","text":"66199"},{"range":"72561","text":"66201"},{"range":"72562","text":"66199"},{"range":"72563","text":"66201"},{"range":"72564","text":"66199"},{"range":"72565","text":"66201"},{"range":"72566","text":"66199"},{"range":"72567","text":"66201"},{"range":"72568","text":"66199"},{"range":"72569","text":"66201"},{"range":"72570","text":"66199"},{"range":"72571","text":"66201"},{"range":"72572","text":"66199"},{"range":"72573","text":"66201"},{"range":"72574","text":"66199"},{"range":"72575","text":"66201"},{"range":"72576","text":"66199"},{"range":"72577","text":"66201"},{"range":"72578","text":"66199"},{"range":"72579","text":"66201"},{"range":"72580","text":"66199"},{"range":"72581","text":"66201"},{"range":"72582","text":"66199"},{"range":"72583","text":"66201"},{"range":"72584","text":"66199"},{"range":"72585","text":"66201"},{"range":"72586","text":"66199"},{"range":"72587","text":"66201"},{"range":"72588","text":"66199"},{"range":"72589","text":"66201"},{"range":"72590","text":"66199"},{"range":"72591","text":"66201"},{"range":"72592","text":"66199"},{"range":"72593","text":"66201"},{"range":"72594","text":"66199"},{"range":"72595","text":"66201"},{"range":"72596","text":"66199"},{"range":"72597","text":"66201"},{"range":"72598","text":"66199"},{"range":"72599","text":"66201"},{"range":"72600","text":"66199"},{"range":"72601","text":"66201"},{"range":"72602","text":"66199"},{"range":"72603","text":"66201"},{"range":"72604","text":"66199"},{"range":"72605","text":"66201"},{"range":"72606","text":"66199"},{"range":"72607","text":"66201"},{"range":"72608","text":"66199"},{"range":"72609","text":"66201"},{"range":"72610","text":"66199"},{"range":"72611","text":"66201"},{"range":"72612","text":"66199"},{"range":"72613","text":"66201"},{"range":"72614","text":"66199"},{"range":"72615","text":"66201"},{"range":"72616","text":"66199"},{"range":"72617","text":"66201"},{"range":"72618","text":"66199"},{"range":"72619","text":"66201"},{"range":"72620","text":"66199"},{"range":"72621","text":"66201"},{"range":"72622","text":"66199"},{"range":"72623","text":"66201"},{"range":"72624","text":"66199"},{"range":"72625","text":"66201"},{"range":"72626","text":"66199"},{"range":"72627","text":"66201"},{"range":"72628","text":"66199"},{"range":"72629","text":"66201"},{"range":"72630","text":"66199"},{"range":"72631","text":"66201"},{"range":"72632","text":"66199"},{"range":"72633","text":"66201"},{"range":"72634","text":"66199"},{"range":"72635","text":"66201"},{"range":"72636","text":"66199"},{"range":"72637","text":"66201"},{"range":"72638","text":"66199"},{"range":"72639","text":"66201"},{"range":"72640","text":"66199"},{"range":"72641","text":"66201"},{"range":"72642","text":"66199"},{"range":"72643","text":"66201"},{"range":"72644","text":"66199"},{"range":"72645","text":"66201"},{"range":"72646","text":"66199"},{"range":"72647","text":"66201"},{"range":"72648","text":"66199"},{"range":"72649","text":"66201"},{"range":"72650","text":"66199"},{"range":"72651","text":"66201"},{"range":"72652","text":"66199"},{"range":"72653","text":"66201"},{"range":"72654","text":"66199"},{"range":"72655","text":"66201"},{"range":"72656","text":"66199"},{"range":"72657","text":"66201"},{"range":"72658","text":"66199"},{"range":"72659","text":"66201"},{"range":"72660","text":"66199"},{"range":"72661","text":"66201"},{"range":"72662","text":"66199"},{"range":"72663","text":"66201"},{"range":"72664","text":"66199"},{"range":"72665","text":"66201"},{"range":"72666","text":"66199"},{"range":"72667","text":"66201"},{"range":"72668","text":"66199"},{"range":"72669","text":"66201"},{"range":"72670","text":"66199"},{"range":"72671","text":"66201"},{"range":"72672","text":"66199"},{"range":"72673","text":"66201"},{"range":"72674","text":"66199"},{"range":"72675","text":"66201"},{"range":"72676","text":"66199"},{"range":"72677","text":"66201"},{"range":"72678","text":"66199"},{"range":"72679","text":"66201"},{"range":"72680","text":"66199"},{"range":"72681","text":"66201"},{"range":"72682","text":"66199"},{"range":"72683","text":"66201"},{"range":"72684","text":"66199"},{"range":"72685","text":"66201"},{"range":"72686","text":"66199"},{"range":"72687","text":"66201"},{"range":"72688","text":"66199"},{"range":"72689","text":"66201"},{"range":"72690","text":"66199"},{"range":"72691","text":"66201"},{"range":"72692","text":"66199"},{"range":"72693","text":"66201"},{"range":"72694","text":"66199"},{"range":"72695","text":"66201"},{"range":"72696","text":"66199"},{"range":"72697","text":"66201"},{"range":"72698","text":"66199"},{"range":"72699","text":"66201"},{"range":"72700","text":"66199"},{"range":"72701","text":"66201"},{"range":"72702","text":"66199"},{"range":"72703","text":"66201"},{"range":"72704","text":"66199"},{"range":"72705","text":"66201"},{"range":"72706","text":"66199"},{"range":"72707","text":"66201"},{"range":"72708","text":"66199"},{"range":"72709","text":"66201"},{"range":"72710","text":"66199"},{"range":"72711","text":"66201"},{"range":"72712","text":"66199"},{"range":"72713","text":"66201"},{"range":"72714","text":"66199"},{"range":"72715","text":"66201"},{"range":"72716","text":"66199"},{"range":"72717","text":"66201"},{"range":"72718","text":"66199"},{"range":"72719","text":"66201"},{"range":"72720","text":"66199"},{"range":"72721","text":"66201"},{"range":"72722","text":"66199"},{"range":"72723","text":"66201"},{"range":"72724","text":"66199"},{"range":"72725","text":"66201"},{"range":"72726","text":"66199"},{"range":"72727","text":"66201"},{"range":"72728","text":"66199"},{"range":"72729","text":"66201"},{"range":"72730","text":"66199"},{"range":"72731","text":"66201"},{"range":"72732","text":"66199"},{"range":"72733","text":"66201"},{"range":"72734","text":"66199"},{"range":"72735","text":"66201"},{"range":"72736","text":"66199"},{"range":"72737","text":"66201"},{"range":"72738","text":"66199"},{"range":"72739","text":"66201"},{"range":"72740","text":"66199"},{"range":"72741","text":"66201"},{"range":"72742","text":"66199"},{"range":"72743","text":"66201"},{"range":"72744","text":"66199"},{"range":"72745","text":"66201"},{"range":"72746","text":"66199"},{"range":"72747","text":"66201"},{"range":"72748","text":"66199"},{"range":"72749","text":"66201"},{"range":"72750","text":"66199"},{"range":"72751","text":"66201"},{"range":"72752","text":"66199"},{"range":"72753","text":"66201"},{"range":"72754","text":"66199"},{"range":"72755","text":"66201"},{"range":"72756","text":"66199"},{"range":"72757","text":"66201"},{"range":"72758","text":"66199"},{"range":"72759","text":"66201"},{"range":"72760","text":"66199"},{"range":"72761","text":"66201"},{"range":"72762","text":"66199"},{"range":"72763","text":"66201"},{"range":"72764","text":"66199"},{"range":"72765","text":"66201"},{"range":"72766","text":"66199"},{"range":"72767","text":"66201"},{"range":"72768","text":"66199"},{"range":"72769","text":"66201"},{"range":"72770","text":"66199"},{"range":"72771","text":"66201"},{"range":"72772","text":"66199"},{"range":"72773","text":"66201"},{"range":"72774","text":"66199"},{"range":"72775","text":"66201"},{"range":"72776","text":"66199"},{"range":"72777","text":"66201"},{"range":"72778","text":"66199"},{"range":"72779","text":"66201"},{"range":"72780","text":"66199"},{"range":"72781","text":"66201"},{"range":"72782","text":"66199"},{"range":"72783","text":"66201"},{"range":"72784","text":"66199"},{"range":"72785","text":"66201"},{"range":"72786","text":"66199"},{"range":"72787","text":"66201"},{"range":"72788","text":"66199"},{"range":"72789","text":"66201"},{"range":"72790","text":"66199"},{"range":"72791","text":"66201"},{"range":"72792","text":"66199"},{"range":"72793","text":"66201"},{"range":"72794","text":"66199"},{"range":"72795","text":"66201"},{"range":"72796","text":"66199"},{"range":"72797","text":"66201"},{"range":"72798","text":"66199"},{"range":"72799","text":"66201"},{"range":"72800","text":"66199"},{"range":"72801","text":"66201"},{"range":"72802","text":"66199"},{"range":"72803","text":"66201"},{"range":"72804","text":"66199"},{"range":"72805","text":"66201"},{"range":"72806","text":"66199"},{"range":"72807","text":"66201"},{"range":"72808","text":"66199"},{"range":"72809","text":"66201"},{"range":"72810","text":"66199"},{"range":"72811","text":"66201"},{"range":"72812","text":"66199"},{"range":"72813","text":"66201"},{"range":"72814","text":"66199"},{"range":"72815","text":"66201"},{"range":"72816","text":"66199"},{"range":"72817","text":"66201"},{"range":"72818","text":"66199"},{"range":"72819","text":"66201"},{"range":"72820","text":"66199"},{"range":"72821","text":"66201"},{"range":"72822","text":"66199"},{"range":"72823","text":"66201"},{"range":"72824","text":"66199"},{"range":"72825","text":"66201"},{"range":"72826","text":"66199"},{"range":"72827","text":"66201"},{"range":"72828","text":"66199"},{"range":"72829","text":"66201"},{"range":"72830","text":"66199"},{"range":"72831","text":"66201"},{"range":"72832","text":"66199"},{"range":"72833","text":"66201"},{"range":"72834","text":"66199"},{"range":"72835","text":"66201"},{"range":"72836","text":"66199"},{"range":"72837","text":"66201"},{"range":"72838","text":"66199"},{"range":"72839","text":"66201"},{"range":"72840","text":"66199"},{"range":"72841","text":"66201"},{"range":"72842","text":"66199"},{"range":"72843","text":"66201"},{"range":"72844","text":"66199"},{"range":"72845","text":"66201"},{"range":"72846","text":"66199"},{"range":"72847","text":"66201"},{"range":"72848","text":"66199"},{"range":"72849","text":"66201"},{"range":"72850","text":"66199"},{"range":"72851","text":"66201"},{"range":"72852","text":"66199"},{"range":"72853","text":"66201"},{"range":"72854","text":"66199"},{"range":"72855","text":"66201"},{"range":"72856","text":"66199"},{"range":"72857","text":"66201"},{"range":"72858","text":"66199"},{"range":"72859","text":"66201"},{"range":"72860","text":"66199"},{"range":"72861","text":"66201"},{"range":"72862","text":"66199"},{"range":"72863","text":"66201"},{"range":"72864","text":"66199"},{"range":"72865","text":"66201"},{"range":"72866","text":"66199"},{"range":"72867","text":"66201"},{"range":"72868","text":"66199"},{"range":"72869","text":"66201"},{"range":"72870","text":"66199"},{"range":"72871","text":"66201"},{"range":"72872","text":"66199"},{"range":"72873","text":"66201"},{"range":"72874","text":"66199"},{"range":"72875","text":"66201"},{"range":"72876","text":"66199"},{"range":"72877","text":"66201"},{"range":"72878","text":"66199"},{"range":"72879","text":"66201"},{"range":"72880","text":"66199"},{"range":"72881","text":"66201"},{"range":"72882","text":"66199"},{"range":"72883","text":"66201"},{"range":"72884","text":"66199"},{"range":"72885","text":"66201"},{"range":"72886","text":"66199"},{"range":"72887","text":"66201"},{"range":"72888","text":"66199"},{"range":"72889","text":"66201"},{"range":"72890","text":"66199"},{"range":"72891","text":"66201"},{"range":"72892","text":"66199"},{"range":"72893","text":"66201"},{"range":"72894","text":"66199"},{"range":"72895","text":"66201"},{"range":"72896","text":"66199"},{"range":"72897","text":"66201"},{"range":"72898","text":"66199"},{"range":"72899","text":"66201"},{"range":"72900","text":"66199"},{"range":"72901","text":"66201"},{"range":"72902","text":"66199"},{"range":"72903","text":"66201"},{"range":"72904","text":"66199"},{"range":"72905","text":"66201"},{"range":"72906","text":"66199"},{"range":"72907","text":"66201"},{"range":"72908","text":"66199"},{"range":"72909","text":"66201"},{"range":"72910","text":"66199"},{"range":"72911","text":"66201"},{"range":"72912","text":"66199"},{"range":"72913","text":"66201"},{"range":"72914","text":"66199"},{"range":"72915","text":"66201"},{"range":"72916","text":"66199"},{"range":"72917","text":"66201"},{"range":"72918","text":"66199"},{"range":"72919","text":"66201"},{"range":"72920","text":"66199"},{"range":"72921","text":"66201"},{"range":"72922","text":"66199"},{"range":"72923","text":"66201"},{"range":"72924","text":"66199"},{"range":"72925","text":"66201"},{"range":"72926","text":"66199"},{"range":"72927","text":"66201"},{"range":"72928","text":"66199"},{"range":"72929","text":"66201"},{"range":"72930","text":"66199"},{"range":"72931","text":"66201"},{"range":"72932","text":"66199"},{"range":"72933","text":"66201"},{"range":"72934","text":"66199"},{"range":"72935","text":"66201"},{"range":"72936","text":"66199"},{"range":"72937","text":"66201"},{"range":"72938","text":"66199"},{"range":"72939","text":"66201"},{"range":"72940","text":"66199"},{"range":"72941","text":"66201"},{"range":"72942","text":"66199"},{"range":"72943","text":"66201"},{"range":"72944","text":"66199"},{"range":"72945","text":"66201"},{"range":"72946","text":"66199"},{"range":"72947","text":"66201"},{"range":"72948","text":"66199"},{"range":"72949","text":"66201"},{"range":"72950","text":"66199"},{"range":"72951","text":"66201"},{"range":"72952","text":"66199"},{"range":"72953","text":"66201"},{"range":"72954","text":"66199"},{"range":"72955","text":"66201"},{"range":"72956","text":"66199"},{"range":"72957","text":"66201"},{"range":"72958","text":"66199"},{"range":"72959","text":"66201"},{"range":"72960","text":"66199"},{"range":"72961","text":"66201"},{"range":"72962","text":"66199"},{"range":"72963","text":"66201"},{"range":"72964","text":"66199"},{"range":"72965","text":"66201"},{"range":"72966","text":"66199"},{"range":"72967","text":"66201"},{"range":"72968","text":"66199"},{"range":"72969","text":"66201"},{"range":"72970","text":"66199"},{"range":"72971","text":"66201"},{"range":"72972","text":"66199"},{"range":"72973","text":"66201"},{"range":"72974","text":"66199"},{"range":"72975","text":"66201"},{"range":"72976","text":"66199"},{"range":"72977","text":"66201"},{"range":"72978","text":"66199"},{"range":"72979","text":"66201"},{"range":"72980","text":"66199"},{"range":"72981","text":"66201"},{"range":"72982","text":"66199"},{"range":"72983","text":"66201"},{"range":"72984","text":"66199"},{"range":"72985","text":"66201"},{"range":"72986","text":"66199"},{"range":"72987","text":"66201"},{"range":"72988","text":"66199"},{"range":"72989","text":"66201"},{"range":"72990","text":"66199"},{"range":"72991","text":"66201"},{"range":"72992","text":"66199"},{"range":"72993","text":"66201"},{"range":"72994","text":"66199"},{"range":"72995","text":"66201"},{"range":"72996","text":"66199"},{"range":"72997","text":"66201"},{"range":"72998","text":"66199"},{"range":"72999","text":"66201"},{"range":"73000","text":"66199"},{"range":"73001","text":"66201"},{"range":"73002","text":"66199"},{"range":"73003","text":"66201"},{"range":"73004","text":"66199"},{"range":"73005","text":"66201"},{"range":"73006","text":"66199"},{"range":"73007","text":"66201"},{"range":"73008","text":"66199"},{"range":"73009","text":"66201"},{"range":"73010","text":"66199"},{"range":"73011","text":"66201"},{"range":"73012","text":"66199"},{"range":"73013","text":"66201"},{"range":"73014","text":"66199"},{"range":"73015","text":"66201"},{"range":"73016","text":"66199"},{"range":"73017","text":"66201"},{"range":"73018","text":"66199"},{"range":"73019","text":"66201"},{"range":"73020","text":"66199"},{"range":"73021","text":"66201"},{"range":"73022","text":"66199"},{"range":"73023","text":"66201"},{"range":"73024","text":"66199"},{"range":"73025","text":"66201"},{"range":"73026","text":"66199"},{"range":"73027","text":"66201"},{"range":"73028","text":"66199"},{"range":"73029","text":"66201"},{"range":"73030","text":"66199"},{"range":"73031","text":"66201"},{"range":"73032","text":"66199"},{"range":"73033","text":"66201"},{"range":"73034","text":"66199"},{"range":"73035","text":"66201"},{"range":"73036","text":"66199"},{"range":"73037","text":"66201"},{"range":"73038","text":"66199"},{"range":"73039","text":"66201"},{"range":"73040","text":"66199"},{"range":"73041","text":"66201"},{"range":"73042","text":"66199"},{"range":"73043","text":"66201"},{"range":"73044","text":"66199"},{"range":"73045","text":"66201"},{"range":"73046","text":"66199"},{"range":"73047","text":"66201"},{"range":"73048","text":"66199"},{"range":"73049","text":"66201"},{"range":"73050","text":"66199"},{"range":"73051","text":"66201"},{"range":"73052","text":"66199"},{"range":"73053","text":"66201"},{"range":"73054","text":"66199"},{"range":"73055","text":"66201"},{"range":"73056","text":"66199"},{"range":"73057","text":"66201"},{"range":"73058","text":"66199"},{"range":"73059","text":"66201"},{"range":"73060","text":"66199"},{"range":"73061","text":"66201"},{"range":"73062","text":"66199"},{"range":"73063","text":"66201"},{"range":"73064","text":"66199"},{"range":"73065","text":"66201"},{"range":"73066","text":"66199"},{"range":"73067","text":"66201"},{"range":"73068","text":"66199"},{"range":"73069","text":"66201"},{"range":"73070","text":"66199"},{"range":"73071","text":"66201"},{"range":"73072","text":"66199"},{"range":"73073","text":"66201"},{"range":"73074","text":"66199"},{"range":"73075","text":"66201"},{"range":"73076","text":"66199"},{"range":"73077","text":"66201"},{"range":"73078","text":"66199"},{"range":"73079","text":"66201"},{"range":"73080","text":"66199"},{"range":"73081","text":"66201"},{"range":"73082","text":"66199"},{"range":"73083","text":"66201"},{"range":"73084","text":"66199"},{"range":"73085","text":"66201"},{"range":"73086","text":"66199"},{"range":"73087","text":"66201"},{"range":"73088","text":"66199"},{"range":"73089","text":"66201"},{"range":"73090","text":"66199"},{"range":"73091","text":"66201"},{"range":"73092","text":"66199"},{"range":"73093","text":"66201"},{"range":"73094","text":"66199"},{"range":"73095","text":"66201"},{"range":"73096","text":"66199"},{"range":"73097","text":"66201"},{"range":"73098","text":"66199"},{"range":"73099","text":"66201"},{"range":"73100","text":"66199"},{"range":"73101","text":"66201"},{"range":"73102","text":"66199"},{"range":"73103","text":"66201"},{"range":"73104","text":"66199"},{"range":"73105","text":"66201"},{"range":"73106","text":"66199"},{"range":"73107","text":"66201"},{"range":"73108","text":"66199"},{"range":"73109","text":"66201"},{"range":"73110","text":"66199"},{"range":"73111","text":"66201"},{"range":"73112","text":"66199"},{"range":"73113","text":"66201"},{"range":"73114","text":"66199"},{"range":"73115","text":"66201"},{"range":"73116","text":"66199"},{"range":"73117","text":"66201"},{"range":"73118","text":"66199"},{"range":"73119","text":"66201"},{"range":"73120","text":"66199"},{"range":"73121","text":"66201"},{"range":"73122","text":"66199"},{"range":"73123","text":"66201"},{"range":"73124","text":"66199"},{"range":"73125","text":"66201"},{"range":"73126","text":"66199"},{"range":"73127","text":"66201"},{"range":"73128","text":"66199"},{"range":"73129","text":"66201"},{"range":"73130","text":"66199"},{"range":"73131","text":"66201"},{"range":"73132","text":"66199"},{"range":"73133","text":"66201"},{"range":"73134","text":"66199"},{"range":"73135","text":"66201"},{"range":"73136","text":"66199"},{"range":"73137","text":"66201"},{"range":"73138","text":"66199"},{"range":"73139","text":"66201"},{"range":"73140","text":"66199"},{"range":"73141","text":"66201"},{"range":"73142","text":"66199"},{"range":"73143","text":"66201"},{"range":"73144","text":"66199"},{"range":"73145","text":"66201"},{"range":"73146","text":"66199"},{"range":"73147","text":"66201"},{"range":"73148","text":"66199"},{"range":"73149","text":"66201"},{"range":"73150","text":"66199"},{"range":"73151","text":"66201"},{"range":"73152","text":"66199"},{"range":"73153","text":"66201"},{"range":"73154","text":"66199"},{"range":"73155","text":"66201"},{"range":"73156","text":"66199"},{"range":"73157","text":"66201"},{"range":"73158","text":"66199"},{"range":"73159","text":"66201"},{"range":"73160","text":"66199"},{"range":"73161","text":"66201"},{"range":"73162","text":"66199"},{"range":"73163","text":"66201"},{"range":"73164","text":"66199"},{"range":"73165","text":"66201"},{"range":"73166","text":"66199"},{"range":"73167","text":"66201"},{"range":"73168","text":"66199"},{"range":"73169","text":"66201"},{"range":"73170","text":"66199"},{"range":"73171","text":"66201"},{"range":"73172","text":"66199"},{"range":"73173","text":"66201"},{"range":"73174","text":"66199"},{"range":"73175","text":"66201"},{"range":"73176","text":"66199"},{"range":"73177","text":"66201"},{"range":"73178","text":"66199"},{"range":"73179","text":"66201"},{"range":"73180","text":"66199"},{"range":"73181","text":"66201"},{"range":"73182","text":"66199"},{"range":"73183","text":"66201"},{"range":"73184","text":"66199"},{"range":"73185","text":"66201"},{"range":"73186","text":"66199"},{"range":"73187","text":"66201"},{"range":"73188","text":"66199"},{"range":"73189","text":"66201"},{"range":"73190","text":"66199"},{"range":"73191","text":"66201"},{"range":"73192","text":"66199"},{"range":"73193","text":"66201"},{"range":"73194","text":"66199"},{"range":"73195","text":"66201"},{"range":"73196","text":"66199"},{"range":"73197","text":"66201"},{"range":"73198","text":"66199"},{"range":"73199","text":"66201"},{"range":"73200","text":"66199"},{"range":"73201","text":"66201"},{"range":"73202","text":"66199"},{"range":"73203","text":"66201"},{"range":"73204","text":"66199"},{"range":"73205","text":"66201"},{"range":"73206","text":"66199"},{"range":"73207","text":"66201"},{"range":"73208","text":"66199"},{"range":"73209","text":"66201"},{"range":"73210","text":"66199"},{"range":"73211","text":"66201"},{"range":"73212","text":"66199"},{"range":"73213","text":"66201"},{"range":"73214","text":"66199"},{"range":"73215","text":"66201"},{"range":"73216","text":"66199"},{"range":"73217","text":"66201"},{"range":"73218","text":"66199"},{"range":"73219","text":"66201"},{"range":"73220","text":"66199"},{"range":"73221","text":"66201"},{"range":"73222","text":"66199"},{"range":"73223","text":"66201"},{"range":"73224","text":"66199"},{"range":"73225","text":"66201"},{"range":"73226","text":"66199"},{"range":"73227","text":"66201"},{"range":"73228","text":"66199"},{"range":"73229","text":"66201"},{"range":"73230","text":"66199"},{"range":"73231","text":"66201"},{"range":"73232","text":"66199"},{"range":"73233","text":"66201"},{"range":"73234","text":"66199"},{"range":"73235","text":"66201"},{"range":"73236","text":"66199"},{"range":"73237","text":"66201"},{"range":"73238","text":"66199"},{"range":"73239","text":"66201"},{"range":"73240","text":"66199"},{"range":"73241","text":"66201"},{"range":"73242","text":"66199"},{"range":"73243","text":"66201"},{"range":"73244","text":"66199"},{"range":"73245","text":"66201"},{"range":"73246","text":"66199"},{"range":"73247","text":"66201"},{"range":"73248","text":"66199"},{"range":"73249","text":"66201"},{"range":"73250","text":"66199"},{"range":"73251","text":"66201"},{"range":"73252","text":"66199"},{"range":"73253","text":"66201"},{"range":"73254","text":"66199"},{"range":"73255","text":"66201"},{"range":"73256","text":"66199"},{"range":"73257","text":"66201"},{"range":"73258","text":"66199"},{"range":"73259","text":"66201"},{"range":"73260","text":"66199"},{"range":"73261","text":"66201"},{"range":"73262","text":"66199"},{"range":"73263","text":"66201"},{"range":"73264","text":"66199"},{"range":"73265","text":"66201"},{"range":"73266","text":"66199"},{"range":"73267","text":"66201"},{"range":"73268","text":"66199"},{"range":"73269","text":"66201"},{"range":"73270","text":"66199"},{"range":"73271","text":"66201"},{"range":"73272","text":"66199"},{"range":"73273","text":"66201"},{"range":"73274","text":"66199"},{"range":"73275","text":"66201"},{"range":"73276","text":"66199"},{"range":"73277","text":"66201"},{"range":"73278","text":"66199"},{"range":"73279","text":"66201"},{"range":"73280","text":"66199"},{"range":"73281","text":"66201"},{"range":"73282","text":"66199"},{"range":"73283","text":"66201"},{"range":"73284","text":"66199"},{"range":"73285","text":"66201"},{"range":"73286","text":"66199"},{"range":"73287","text":"66201"},{"range":"73288","text":"66199"},{"range":"73289","text":"66201"},{"range":"73290","text":"66199"},{"range":"73291","text":"66201"},{"range":"73292","text":"66199"},{"range":"73293","text":"66201"},{"range":"73294","text":"66199"},{"range":"73295","text":"66201"},{"range":"73296","text":"66199"},{"range":"73297","text":"66201"},{"range":"73298","text":"66199"},{"range":"73299","text":"66201"},{"range":"73300","text":"66199"},{"range":"73301","text":"66201"},{"range":"73302","text":"66199"},{"range":"73303","text":"66201"},{"range":"73304","text":"66199"},{"range":"73305","text":"66201"},{"range":"73306","text":"66199"},{"range":"73307","text":"66201"},{"range":"73308","text":"66199"},{"range":"73309","text":"66201"},{"range":"73310","text":"66199"},{"range":"73311","text":"66201"},{"range":"73312","text":"66199"},{"range":"73313","text":"66201"},{"range":"73314","text":"66199"},{"range":"73315","text":"66201"},{"range":"73316","text":"66199"},{"range":"73317","text":"66201"},{"range":"73318","text":"66199"},{"range":"73319","text":"66201"},{"range":"73320","text":"66199"},{"range":"73321","text":"66201"},{"range":"73322","text":"66199"},{"range":"73323","text":"66201"},{"range":"73324","text":"66199"},{"range":"73325","text":"66201"},{"range":"73326","text":"66199"},{"range":"73327","text":"66201"},{"range":"73328","text":"66199"},{"range":"73329","text":"66201"},{"range":"73330","text":"66199"},{"range":"73331","text":"66201"},{"range":"73332","text":"66199"},{"range":"73333","text":"66201"},{"range":"73334","text":"66199"},{"range":"73335","text":"66201"},{"range":"73336","text":"66199"},{"range":"73337","text":"66201"},{"range":"73338","text":"66199"},{"range":"73339","text":"66201"},{"range":"73340","text":"66199"},{"range":"73341","text":"66201"},{"range":"73342","text":"66199"},{"range":"73343","text":"66201"},{"range":"73344","text":"66199"},{"range":"73345","text":"66201"},{"range":"73346","text":"66199"},{"range":"73347","text":"66201"},{"range":"73348","text":"66199"},{"range":"73349","text":"66201"},{"range":"73350","text":"66199"},{"range":"73351","text":"66201"},{"range":"73352","text":"66199"},{"range":"73353","text":"66201"},{"range":"73354","text":"66199"},{"range":"73355","text":"66201"},{"range":"73356","text":"66199"},{"range":"73357","text":"66201"},{"range":"73358","text":"66199"},{"range":"73359","text":"66201"},{"range":"73360","text":"66199"},{"range":"73361","text":"66201"},{"range":"73362","text":"66199"},{"range":"73363","text":"66201"},{"range":"73364","text":"66199"},{"range":"73365","text":"66201"},{"range":"73366","text":"66199"},{"range":"73367","text":"66201"},{"range":"73368","text":"66199"},{"range":"73369","text":"66201"},{"range":"73370","text":"66199"},{"range":"73371","text":"66201"},{"range":"73372","text":"66199"},{"range":"73373","text":"66201"},{"range":"73374","text":"66199"},{"range":"73375","text":"66201"},{"range":"73376","text":"66199"},{"range":"73377","text":"66201"},{"range":"73378","text":"66199"},{"range":"73379","text":"66201"},{"range":"73380","text":"66199"},{"range":"73381","text":"66201"},{"range":"73382","text":"66199"},{"range":"73383","text":"66201"},{"range":"73384","text":"66199"},{"range":"73385","text":"66201"},{"range":"73386","text":"66199"},{"range":"73387","text":"66201"},{"range":"73388","text":"66199"},{"range":"73389","text":"66201"},{"range":"73390","text":"66199"},{"range":"73391","text":"66201"},{"range":"73392","text":"66199"},{"range":"73393","text":"66201"},{"range":"73394","text":"66199"},{"range":"73395","text":"66201"},{"range":"73396","text":"66199"},{"range":"73397","text":"66201"},{"range":"73398","text":"66199"},{"range":"73399","text":"66201"},{"range":"73400","text":"66199"},{"range":"73401","text":"66201"},{"range":"73402","text":"66199"},{"range":"73403","text":"66201"},{"range":"73404","text":"66199"},{"range":"73405","text":"66201"},{"range":"73406","text":"66199"},{"range":"73407","text":"66201"},{"range":"73408","text":"66199"},{"range":"73409","text":"66201"},{"range":"73410","text":"66199"},{"range":"73411","text":"66201"},{"range":"73412","text":"66199"},{"range":"73413","text":"66201"},{"range":"73414","text":"66199"},{"range":"73415","text":"66201"},{"range":"73416","text":"66199"},{"range":"73417","text":"66201"},{"range":"73418","text":"66199"},{"range":"73419","text":"66201"},{"range":"73420","text":"66199"},{"range":"73421","text":"66201"},{"range":"73422","text":"66199"},{"range":"73423","text":"66201"},{"range":"73424","text":"66199"},{"range":"73425","text":"66201"},{"range":"73426","text":"66199"},{"range":"73427","text":"66201"},{"range":"73428","text":"66199"},{"range":"73429","text":"66201"},{"range":"73430","text":"66199"},{"range":"73431","text":"66201"},{"range":"73432","text":"66199"},{"range":"73433","text":"66201"},{"range":"73434","text":"66199"},{"range":"73435","text":"66201"},{"range":"73436","text":"66199"},{"range":"73437","text":"66201"},{"range":"73438","text":"66199"},{"range":"73439","text":"66201"},{"range":"73440","text":"66199"},{"range":"73441","text":"66201"},{"range":"73442","text":"66199"},{"range":"73443","text":"66201"},{"range":"73444","text":"66199"},{"range":"73445","text":"66201"},{"range":"73446","text":"66199"},{"range":"73447","text":"66201"},{"range":"73448","text":"66199"},{"range":"73449","text":"66201"},{"range":"73450","text":"66199"},{"range":"73451","text":"66201"},{"range":"73452","text":"66199"},{"range":"73453","text":"66201"},{"range":"73454","text":"66199"},{"range":"73455","text":"66201"},{"range":"73456","text":"66199"},{"range":"73457","text":"66201"},{"range":"73458","text":"66199"},{"range":"73459","text":"66201"},{"range":"73460","text":"66199"},{"range":"73461","text":"66201"},{"range":"73462","text":"66199"},{"range":"73463","text":"66201"},{"range":"73464","text":"66199"},{"range":"73465","text":"66201"},{"range":"73466","text":"66199"},{"range":"73467","text":"66201"},{"range":"73468","text":"66199"},{"range":"73469","text":"66201"},{"range":"73470","text":"66199"},{"range":"73471","text":"66201"},{"range":"73472","text":"66199"},{"range":"73473","text":"66201"},{"range":"73474","text":"66199"},{"range":"73475","text":"66201"},{"range":"73476","text":"66199"},{"range":"73477","text":"66201"},{"range":"73478","text":"66199"},{"range":"73479","text":"66201"},{"range":"73480","text":"66199"},{"range":"73481","text":"66201"},{"range":"73482","text":"66199"},{"range":"73483","text":"66201"},{"range":"73484","text":"66199"},{"range":"73485","text":"66201"},{"range":"73486","text":"66199"},{"range":"73487","text":"66201"},{"range":"73488","text":"66199"},{"range":"73489","text":"66201"},{"range":"73490","text":"66199"},{"range":"73491","text":"66201"},{"range":"73492","text":"66199"},{"range":"73493","text":"66201"},{"range":"73494","text":"66199"},{"range":"73495","text":"66201"},{"range":"73496","text":"66199"},{"range":"73497","text":"66201"},{"range":"73498","text":"66199"},{"range":"73499","text":"66201"},{"range":"73500","text":"66199"},{"range":"73501","text":"66201"},{"range":"73502","text":"66199"},{"range":"73503","text":"66201"},{"range":"73504","text":"66199"},{"range":"73505","text":"66201"},{"range":"73506","text":"66199"},{"range":"73507","text":"66201"},{"range":"73508","text":"66199"},{"range":"73509","text":"66201"},{"range":"73510","text":"66199"},{"range":"73511","text":"66201"},{"range":"73512","text":"66199"},{"range":"73513","text":"66201"},{"range":"73514","text":"66199"},{"range":"73515","text":"66201"},{"range":"73516","text":"66199"},{"range":"73517","text":"66201"},{"range":"73518","text":"66199"},{"range":"73519","text":"66201"},{"range":"73520","text":"66199"},{"range":"73521","text":"66201"},{"range":"73522","text":"66199"},{"range":"73523","text":"66201"},{"range":"73524","text":"66199"},{"range":"73525","text":"66201"},{"range":"73526","text":"66199"},{"range":"73527","text":"66201"},{"range":"73528","text":"66199"},{"range":"73529","text":"66201"},{"range":"73530","text":"66199"},{"range":"73531","text":"66201"},{"range":"73532","text":"66199"},{"range":"73533","text":"66201"},{"range":"73534","text":"66199"},{"range":"73535","text":"66201"},{"range":"73536","text":"66199"},{"range":"73537","text":"66201"},{"range":"73538","text":"66199"},{"range":"73539","text":"66201"},{"range":"73540","text":"66199"},{"range":"73541","text":"66201"},{"range":"73542","text":"66199"},{"range":"73543","text":"66201"},{"range":"73544","text":"66199"},{"range":"73545","text":"66201"},{"range":"73546","text":"66199"},{"range":"73547","text":"66201"},{"range":"73548","text":"66199"},{"range":"73549","text":"66201"},{"range":"73550","text":"66199"},{"range":"73551","text":"66201"},{"range":"73552","text":"66199"},{"range":"73553","text":"66201"},{"range":"73554","text":"66199"},{"range":"73555","text":"66201"},{"range":"73556","text":"66199"},{"range":"73557","text":"66201"},{"range":"73558","text":"66199"},{"range":"73559","text":"66201"},{"range":"73560","text":"66199"},{"range":"73561","text":"66201"},{"range":"73562","text":"66199"},{"range":"73563","text":"66201"},{"range":"73564","text":"66199"},{"range":"73565","text":"66201"},{"range":"73566","text":"66199"},{"range":"73567","text":"66201"},{"range":"73568","text":"66199"},{"range":"73569","text":"66201"},{"range":"73570","text":"66199"},{"range":"73571","text":"66201"},{"range":"73572","text":"66199"},{"range":"73573","text":"66201"},{"range":"73574","text":"66199"},{"range":"73575","text":"66201"},{"range":"73576","text":"66199"},{"range":"73577","text":"66201"},{"range":"73578","text":"66199"},{"range":"73579","text":"66201"},{"range":"73580","text":"66199"},{"range":"73581","text":"66201"},{"range":"73582","text":"66199"},{"range":"73583","text":"66201"},{"range":"73584","text":"66199"},{"range":"73585","text":"66201"},{"range":"73586","text":"66199"},{"range":"73587","text":"66201"},{"range":"73588","text":"66199"},{"range":"73589","text":"66201"},{"range":"73590","text":"66199"},{"range":"73591","text":"66201"},{"range":"73592","text":"66199"},{"range":"73593","text":"66201"},{"range":"73594","text":"66199"},{"range":"73595","text":"66201"},{"range":"73596","text":"66199"},{"range":"73597","text":"66201"},{"range":"73598","text":"66199"},{"range":"73599","text":"66201"},{"range":"73600","text":"66199"},{"range":"73601","text":"66201"},{"range":"73602","text":"66199"},{"range":"73603","text":"66201"},{"range":"73604","text":"66199"},{"range":"73605","text":"66201"},{"range":"73606","text":"66199"},{"range":"73607","text":"66201"},{"range":"73608","text":"66199"},{"range":"73609","text":"66201"},{"range":"73610","text":"66199"},{"range":"73611","text":"66201"},{"range":"73612","text":"66199"},{"range":"73613","text":"66201"},{"range":"73614","text":"66199"},{"range":"73615","text":"66201"},{"range":"73616","text":"66199"},{"range":"73617","text":"66201"},{"range":"73618","text":"66199"},{"range":"73619","text":"66201"},{"range":"73620","text":"66199"},{"range":"73621","text":"66201"},{"range":"73622","text":"66199"},{"range":"73623","text":"66201"},{"range":"73624","text":"66199"},{"range":"73625","text":"66201"},{"range":"73626","text":"66199"},{"range":"73627","text":"66201"},{"range":"73628","text":"66199"},{"range":"73629","text":"66201"},{"range":"73630","text":"66199"},{"range":"73631","text":"66201"},{"range":"73632","text":"66199"},{"range":"73633","text":"66201"},{"range":"73634","text":"66199"},{"range":"73635","text":"66201"},{"range":"73636","text":"66199"},{"range":"73637","text":"66201"},{"range":"73638","text":"66199"},{"range":"73639","text":"66201"},{"range":"73640","text":"66199"},{"range":"73641","text":"66201"},{"range":"73642","text":"66199"},{"range":"73643","text":"66201"},{"range":"73644","text":"66199"},{"range":"73645","text":"66201"},{"range":"73646","text":"66199"},{"range":"73647","text":"66201"},{"range":"73648","text":"66199"},{"range":"73649","text":"66201"},{"range":"73650","text":"66199"},{"range":"73651","text":"66201"},{"range":"73652","text":"66199"},{"range":"73653","text":"66201"},{"range":"73654","text":"66199"},{"range":"73655","text":"66201"},{"range":"73656","text":"66199"},{"range":"73657","text":"66201"},{"range":"73658","text":"66199"},{"range":"73659","text":"66201"},{"range":"73660","text":"66199"},{"range":"73661","text":"66201"},{"range":"73662","text":"66199"},{"range":"73663","text":"66201"},{"range":"73664","text":"66199"},{"range":"73665","text":"66201"},{"range":"73666","text":"66199"},{"range":"73667","text":"66201"},{"range":"73668","text":"66199"},{"range":"73669","text":"66201"},{"range":"73670","text":"66199"},{"range":"73671","text":"66201"},{"range":"73672","text":"66199"},{"range":"73673","text":"66201"},{"range":"73674","text":"66199"},{"range":"73675","text":"66201"},{"range":"73676","text":"66199"},{"range":"73677","text":"66201"},{"range":"73678","text":"66199"},{"range":"73679","text":"66201"},{"range":"73680","text":"66199"},{"range":"73681","text":"66201"},{"range":"73682","text":"66199"},{"range":"73683","text":"66201"},{"range":"73684","text":"66199"},{"range":"73685","text":"66201"},{"range":"73686","text":"66199"},{"range":"73687","text":"66201"},{"range":"73688","text":"66199"},{"range":"73689","text":"66201"},{"range":"73690","text":"66199"},{"range":"73691","text":"66201"},{"range":"73692","text":"66199"},{"range":"73693","text":"66201"},{"range":"73694","text":"66199"},{"range":"73695","text":"66201"},{"range":"73696","text":"66199"},{"range":"73697","text":"66201"},{"range":"73698","text":"66199"},{"range":"73699","text":"66201"},{"range":"73700","text":"66199"},{"range":"73701","text":"66201"},{"range":"73702","text":"66199"},{"range":"73703","text":"66201"},{"range":"73704","text":"66199"},{"range":"73705","text":"66201"},{"range":"73706","text":"66199"},{"range":"73707","text":"66201"},{"range":"73708","text":"66199"},{"range":"73709","text":"66201"},{"range":"73710","text":"66199"},{"range":"73711","text":"66201"},{"range":"73712","text":"66199"},{"range":"73713","text":"66201"},{"range":"73714","text":"66199"},{"range":"73715","text":"66201"},{"range":"73716","text":"66199"},{"range":"73717","text":"66201"},{"range":"73718","text":"66199"},{"range":"73719","text":"66201"},{"range":"73720","text":"66199"},{"range":"73721","text":"66201"},{"range":"73722","text":"66199"},{"range":"73723","text":"66201"},{"range":"73724","text":"66199"},{"range":"73725","text":"66201"},{"range":"73726","text":"66199"},{"range":"73727","text":"66201"},{"range":"73728","text":"66199"},{"range":"73729","text":"66201"},{"range":"73730","text":"66199"},{"range":"73731","text":"66201"},{"range":"73732","text":"66199"},{"range":"73733","text":"66201"},{"range":"73734","text":"66199"},{"range":"73735","text":"66201"},{"range":"73736","text":"66199"},{"range":"73737","text":"66201"},{"range":"73738","text":"66199"},{"range":"73739","text":"66201"},{"range":"73740","text":"66199"},{"range":"73741","text":"66201"},{"range":"73742","text":"66199"},{"range":"73743","text":"66201"},{"range":"73744","text":"66199"},{"range":"73745","text":"66201"},{"range":"73746","text":"66199"},{"range":"73747","text":"66201"},{"range":"73748","text":"66199"},{"range":"73749","text":"66201"},{"range":"73750","text":"66199"},{"range":"73751","text":"66201"},{"range":"73752","text":"66199"},{"range":"73753","text":"66201"},{"range":"73754","text":"66199"},{"range":"73755","text":"66201"},{"range":"73756","text":"66199"},{"range":"73757","text":"66201"},{"range":"73758","text":"66199"},{"range":"73759","text":"66201"},{"range":"73760","text":"66199"},{"range":"73761","text":"66201"},{"range":"73762","text":"66199"},{"range":"73763","text":"66201"},{"range":"73764","text":"66199"},{"range":"73765","text":"66201"},{"range":"73766","text":"66199"},{"range":"73767","text":"66201"},{"range":"73768","text":"66199"},{"range":"73769","text":"66201"},{"range":"73770","text":"66199"},{"range":"73771","text":"66201"},{"range":"73772","text":"66199"},{"range":"73773","text":"66201"},{"range":"73774","text":"66199"},{"range":"73775","text":"66201"},{"range":"73776","text":"66199"},{"range":"73777","text":"66201"},{"range":"73778","text":"66199"},{"range":"73779","text":"66201"},{"range":"73780","text":"66199"},{"range":"73781","text":"66201"},{"range":"73782","text":"66199"},{"range":"73783","text":"66201"},{"range":"73784","text":"66199"},{"range":"73785","text":"66201"},{"range":"73786","text":"66199"},{"range":"73787","text":"66201"},{"range":"73788","text":"66199"},{"range":"73789","text":"66201"},{"range":"73790","text":"66199"},{"range":"73791","text":"66201"},{"range":"73792","text":"66199"},{"range":"73793","text":"66201"},{"range":"73794","text":"66199"},{"range":"73795","text":"66201"},{"range":"73796","text":"66199"},{"range":"73797","text":"66201"},{"range":"73798","text":"66199"},{"range":"73799","text":"66201"},{"range":"73800","text":"66199"},{"range":"73801","text":"66201"},{"range":"73802","text":"66199"},{"range":"73803","text":"66201"},{"range":"73804","text":"66199"},{"range":"73805","text":"66201"},{"range":"73806","text":"66199"},{"range":"73807","text":"66201"},{"range":"73808","text":"66199"},{"range":"73809","text":"66201"},{"range":"73810","text":"66199"},{"range":"73811","text":"66201"},{"range":"73812","text":"66199"},{"range":"73813","text":"66201"},{"range":"73814","text":"66199"},{"range":"73815","text":"66201"},{"range":"73816","text":"66199"},{"range":"73817","text":"66201"},{"range":"73818","text":"66199"},{"range":"73819","text":"66201"},{"range":"73820","text":"66199"},{"range":"73821","text":"66201"},{"range":"73822","text":"66199"},{"range":"73823","text":"66201"},{"range":"73824","text":"66199"},{"range":"73825","text":"66201"},{"range":"73826","text":"66199"},{"range":"73827","text":"66201"},{"range":"73828","text":"66199"},{"range":"73829","text":"66201"},{"range":"73830","text":"66199"},{"range":"73831","text":"66201"},{"range":"73832","text":"66199"},{"range":"73833","text":"66201"},{"range":"73834","text":"66199"},{"range":"73835","text":"66201"},{"range":"73836","text":"66199"},{"range":"73837","text":"66201"},{"range":"73838","text":"66199"},{"range":"73839","text":"66201"},{"range":"73840","text":"66199"},{"range":"73841","text":"66201"},{"range":"73842","text":"66199"},{"range":"73843","text":"66201"},{"range":"73844","text":"66199"},{"range":"73845","text":"66201"},{"range":"73846","text":"66199"},{"range":"73847","text":"66201"},{"range":"73848","text":"66199"},{"range":"73849","text":"66201"},{"range":"73850","text":"66199"},{"range":"73851","text":"66201"},{"range":"73852","text":"66199"},{"range":"73853","text":"66201"},{"range":"73854","text":"66199"},{"range":"73855","text":"66201"},{"range":"73856","text":"66199"},{"range":"73857","text":"66201"},{"range":"73858","text":"66199"},{"range":"73859","text":"66201"},{"range":"73860","text":"66199"},{"range":"73861","text":"66201"},{"range":"73862","text":"66199"},{"range":"73863","text":"66201"},{"range":"73864","text":"66199"},{"range":"73865","text":"66201"},{"range":"73866","text":"66199"},{"range":"73867","text":"66201"},{"range":"73868","text":"66199"},{"range":"73869","text":"66201"},{"range":"73870","text":"66199"},{"range":"73871","text":"66201"},{"range":"73872","text":"66199"},{"range":"73873","text":"66201"},{"range":"73874","text":"66199"},{"range":"73875","text":"66201"},{"range":"73876","text":"66199"},{"range":"73877","text":"66201"},{"range":"73878","text":"66199"},{"range":"73879","text":"66201"},{"range":"73880","text":"66199"},{"range":"73881","text":"66201"},{"range":"73882","text":"66199"},{"range":"73883","text":"66201"},{"range":"73884","text":"66199"},{"range":"73885","text":"66201"},{"range":"73886","text":"66199"},{"range":"73887","text":"66201"},{"range":"73888","text":"66199"},{"range":"73889","text":"66201"},{"range":"73890","text":"66199"},{"range":"73891","text":"66201"},{"range":"73892","text":"66199"},{"range":"73893","text":"66201"},{"range":"73894","text":"66199"},{"range":"73895","text":"66201"},{"range":"73896","text":"66199"},{"range":"73897","text":"66201"},{"range":"73898","text":"66199"},{"range":"73899","text":"66201"},{"range":"73900","text":"66199"},{"range":"73901","text":"66201"},{"range":"73902","text":"66199"},{"range":"73903","text":"66201"},{"range":"73904","text":"66199"},{"range":"73905","text":"66201"},{"range":"73906","text":"66199"},{"range":"73907","text":"66201"},{"range":"73908","text":"66199"},{"range":"73909","text":"66201"},{"range":"73910","text":"66199"},{"range":"73911","text":"66201"},{"range":"73912","text":"66199"},{"range":"73913","text":"66201"},{"range":"73914","text":"66199"},{"range":"73915","text":"66201"},{"range":"73916","text":"66199"},{"range":"73917","text":"66201"},{"range":"73918","text":"66199"},{"range":"73919","text":"66201"},{"range":"73920","text":"66199"},{"range":"73921","text":"66201"},{"range":"73922","text":"66199"},{"range":"73923","text":"66201"},{"range":"73924","text":"66199"},{"range":"73925","text":"66201"},{"range":"73926","text":"66199"},{"range":"73927","text":"66201"},{"range":"73928","text":"66199"},{"range":"73929","text":"66201"},{"range":"73930","text":"66199"},{"range":"73931","text":"66201"},{"range":"73932","text":"66199"},{"range":"73933","text":"66201"},{"range":"73934","text":"66199"},{"range":"73935","text":"66201"},{"range":"73936","text":"66199"},{"range":"73937","text":"66201"},{"range":"73938","text":"66199"},{"range":"73939","text":"66201"},{"range":"73940","text":"66199"},{"range":"73941","text":"66201"},{"range":"73942","text":"66199"},{"range":"73943","text":"66201"},{"range":"73944","text":"66199"},{"range":"73945","text":"66201"},{"range":"73946","text":"66199"},{"range":"73947","text":"66201"},{"range":"73948","text":"66199"},{"range":"73949","text":"66201"},{"range":"73950","text":"66199"},{"range":"73951","text":"66201"},{"range":"73952","text":"66199"},{"range":"73953","text":"66201"},{"range":"73954","text":"66199"},{"range":"73955","text":"66201"},{"range":"73956","text":"66199"},{"range":"73957","text":"66201"},{"range":"73958","text":"66199"},{"range":"73959","text":"66201"},{"range":"73960","text":"66199"},{"range":"73961","text":"66201"},{"range":"73962","text":"66199"},{"range":"73963","text":"66201"},{"range":"73964","text":"66199"},{"range":"73965","text":"66201"},{"range":"73966","text":"66199"},{"range":"73967","text":"66201"},{"range":"73968","text":"66199"},{"range":"73969","text":"66201"},{"range":"73970","text":"66199"},{"range":"73971","text":"66201"},{"range":"73972","text":"66199"},{"range":"73973","text":"66201"},{"range":"73974","text":"66199"},{"range":"73975","text":"66201"},{"range":"73976","text":"66199"},{"range":"73977","text":"66201"},{"range":"73978","text":"66199"},{"range":"73979","text":"66201"},{"range":"73980","text":"66199"},{"range":"73981","text":"66201"},{"range":"73982","text":"66199"},{"range":"73983","text":"66201"},{"range":"73984","text":"66199"},{"range":"73985","text":"66201"},{"range":"73986","text":"66199"},{"range":"73987","text":"66201"},{"range":"73988","text":"66199"},{"range":"73989","text":"66201"},{"range":"73990","text":"66199"},{"range":"73991","text":"66201"},{"range":"73992","text":"66199"},{"range":"73993","text":"66201"},{"range":"73994","text":"66199"},{"range":"73995","text":"66201"},{"range":"73996","text":"66199"},{"range":"73997","text":"66201"},{"range":"73998","text":"66199"},{"range":"73999","text":"66201"},{"range":"74000","text":"66199"},{"range":"74001","text":"66201"},{"range":"74002","text":"66199"},{"range":"74003","text":"66201"},{"range":"74004","text":"66199"},{"range":"74005","text":"66201"},{"range":"74006","text":"66199"},{"range":"74007","text":"66201"},{"range":"74008","text":"66199"},{"range":"74009","text":"66201"},{"range":"74010","text":"66199"},{"range":"74011","text":"66201"},{"range":"74012","text":"66199"},{"range":"74013","text":"66201"},{"range":"74014","text":"66199"},{"range":"74015","text":"66201"},{"range":"74016","text":"66199"},{"range":"74017","text":"66201"},{"range":"74018","text":"66199"},{"range":"74019","text":"66201"},{"range":"74020","text":"66199"},{"range":"74021","text":"66201"},{"range":"74022","text":"66199"},{"range":"74023","text":"66201"},{"range":"74024","text":"66199"},{"range":"74025","text":"66201"},{"range":"74026","text":"66199"},{"range":"74027","text":"66201"},{"range":"74028","text":"66199"},{"range":"74029","text":"66201"},{"range":"74030","text":"66199"},{"range":"74031","text":"66201"},{"range":"74032","text":"66199"},{"range":"74033","text":"66201"},{"range":"74034","text":"66199"},{"range":"74035","text":"66201"},{"range":"74036","text":"66199"},{"range":"74037","text":"66201"},{"range":"74038","text":"66199"},{"range":"74039","text":"66201"},{"range":"74040","text":"66199"},{"range":"74041","text":"66201"},{"range":"74042","text":"66199"},{"range":"74043","text":"66201"},{"range":"74044","text":"66199"},{"range":"74045","text":"66201"},{"range":"74046","text":"66199"},{"range":"74047","text":"66201"},{"range":"74048","text":"66199"},{"range":"74049","text":"66201"},{"range":"74050","text":"66199"},{"range":"74051","text":"66201"},{"range":"74052","text":"66199"},{"range":"74053","text":"66201"},{"range":"74054","text":"66199"},{"range":"74055","text":"66201"},{"range":"74056","text":"66199"},{"range":"74057","text":"66201"},{"range":"74058","text":"66199"},{"range":"74059","text":"66201"},{"range":"74060","text":"66199"},{"range":"74061","text":"66201"},{"range":"74062","text":"66199"},{"range":"74063","text":"66201"},{"range":"74064","text":"66199"},{"range":"74065","text":"66201"},{"range":"74066","text":"66199"},{"range":"74067","text":"66201"},{"range":"74068","text":"66199"},{"range":"74069","text":"66201"},{"range":"74070","text":"66199"},{"range":"74071","text":"66201"},{"range":"74072","text":"66199"},{"range":"74073","text":"66201"},"test double for next/image","test harness: intentionally writes to outer capture object from inside component",{"range":"74074","text":"66199"},{"range":"74075","text":"66201"},{"range":"74076","text":"66199"},{"range":"74077","text":"66201"},{"range":"74078","text":"66199"},{"range":"74079","text":"66201"},{"range":"74080","text":"66199"},{"range":"74081","text":"66201"},{"range":"74082","text":"66199"},{"range":"74083","text":"66201"},{"range":"74084","text":"66199"},{"range":"74085","text":"66201"},{"range":"74086","text":"66199"},{"range":"74087","text":"66201"},{"range":"74088","text":"66199"},{"range":"74089","text":"66201"},{"range":"74090","text":"66199"},{"range":"74091","text":"66201"},{"range":"74092","text":"66199"},{"range":"74093","text":"66201"},{"range":"74094","text":"66199"},{"range":"74095","text":"66201"},{"range":"74096","text":"66199"},{"range":"74097","text":"66201"},{"range":"74098","text":"66199"},{"range":"74099","text":"66201"},{"range":"74100","text":"66199"},{"range":"74101","text":"66201"},{"range":"74102","text":"66199"},{"range":"74103","text":"66201"},{"range":"74104","text":"66199"},{"range":"74105","text":"66201"},{"range":"74106","text":"66199"},{"range":"74107","text":"66201"},{"range":"74108","text":"66199"},{"range":"74109","text":"66201"},{"range":"74110","text":"66199"},{"range":"74111","text":"66201"},{"range":"74112","text":"66199"},{"range":"74113","text":"66201"},{"range":"74114","text":"66199"},{"range":"74115","text":"66201"},{"range":"74116","text":"66199"},{"range":"74117","text":"66201"},{"range":"74118","text":"66199"},{"range":"74119","text":"66201"},{"range":"74120","text":"66199"},{"range":"74121","text":"66201"},{"range":"74122","text":"66199"},{"range":"74123","text":"66201"},{"range":"74124","text":"66199"},{"range":"74125","text":"66201"},{"range":"74126","text":"66199"},{"range":"74127","text":"66201"},{"range":"74128","text":"66199"},{"range":"74129","text":"66201"},{"range":"74130","text":"66199"},{"range":"74131","text":"66201"},{"range":"74132","text":"66199"},{"range":"74133","text":"66201"},{"range":"74134","text":"66199"},{"range":"74135","text":"66201"},{"range":"74136","text":"66199"},{"range":"74137","text":"66201"},{"range":"74138","text":"66199"},{"range":"74139","text":"66201"},{"range":"74140","text":"66199"},{"range":"74141","text":"66201"},{"range":"74142","text":"66199"},{"range":"74143","text":"66201"},{"range":"74144","text":"66199"},{"range":"74145","text":"66201"},{"range":"74146","text":"66199"},{"range":"74147","text":"66201"},{"range":"74148","text":"66199"},{"range":"74149","text":"66201"},{"range":"74150","text":"66199"},{"range":"74151","text":"66201"},{"range":"74152","text":"66199"},{"range":"74153","text":"66201"},{"range":"74154","text":"66199"},{"range":"74155","text":"66201"},{"range":"74156","text":"66199"},{"range":"74157","text":"66201"},{"range":"74158","text":"66199"},{"range":"74159","text":"66201"},{"range":"74160","text":"66199"},{"range":"74161","text":"66201"},{"range":"74162","text":"66199"},{"range":"74163","text":"66201"},{"range":"74164","text":"66199"},{"range":"74165","text":"66201"},{"range":"74166","text":"66199"},{"range":"74167","text":"66201"},{"range":"74168","text":"66199"},{"range":"74169","text":"66201"},{"range":"74170","text":"66199"},{"range":"74171","text":"66201"},{"range":"74172","text":"66199"},{"range":"74173","text":"66201"},{"range":"74174","text":"66199"},{"range":"74175","text":"66201"},{"range":"74176","text":"66199"},{"range":"74177","text":"66201"},{"range":"74178","text":"66199"},{"range":"74179","text":"66201"},{"range":"74180","text":"66199"},{"range":"74181","text":"66201"},{"range":"74182","text":"66199"},{"range":"74183","text":"66201"},{"range":"74184","text":"66199"},{"range":"74185","text":"66201"},{"range":"74186","text":"66199"},{"range":"74187","text":"66201"},{"range":"74188","text":"66199"},{"range":"74189","text":"66201"},{"range":"74190","text":"66199"},{"range":"74191","text":"66201"},{"range":"74192","text":"66199"},{"range":"74193","text":"66201"},{"range":"74194","text":"66199"},{"range":"74195","text":"66201"},{"range":"74196","text":"66199"},{"range":"74197","text":"66201"},{"range":"74198","text":"66199"},{"range":"74199","text":"66201"},{"range":"74200","text":"66199"},{"range":"74201","text":"66201"},{"range":"74202","text":"66199"},{"range":"74203","text":"66201"},{"range":"74204","text":"66199"},{"range":"74205","text":"66201"},{"range":"74206","text":"66199"},{"range":"74207","text":"66201"},{"range":"74208","text":"66199"},{"range":"74209","text":"66201"},{"range":"74210","text":"66199"},{"range":"74211","text":"66201"},{"range":"74212","text":"66199"},{"range":"74213","text":"66201"},{"range":"74214","text":"66199"},{"range":"74215","text":"66201"},{"range":"74216","text":"66199"},{"range":"74217","text":"66201"},{"range":"74218","text":"66199"},{"range":"74219","text":"66201"},{"range":"74220","text":"66199"},{"range":"74221","text":"66201"},{"range":"74222","text":"66199"},{"range":"74223","text":"66201"},{"range":"74224","text":"66199"},{"range":"74225","text":"66201"},{"range":"74226","text":"66199"},{"range":"74227","text":"66201"},{"range":"74228","text":"66199"},{"range":"74229","text":"66201"},{"range":"74230","text":"66199"},{"range":"74231","text":"66201"},{"range":"74232","text":"66199"},{"range":"74233","text":"66201"},{"range":"74234","text":"66199"},{"range":"74235","text":"66201"},{"range":"74236","text":"66199"},{"range":"74237","text":"66201"},{"range":"74238","text":"66199"},{"range":"74239","text":"66201"},{"range":"74240","text":"66199"},{"range":"74241","text":"66201"},{"range":"74242","text":"66199"},{"range":"74243","text":"66201"},{"range":"74244","text":"66199"},{"range":"74245","text":"66201"},{"range":"74246","text":"66199"},{"range":"74247","text":"66201"},{"range":"74248","text":"66199"},{"range":"74249","text":"66201"},{"range":"74250","text":"66199"},{"range":"74251","text":"66201"},{"range":"74252","text":"66199"},{"range":"74253","text":"66201"},{"range":"74254","text":"66199"},{"range":"74255","text":"66201"},{"range":"74256","text":"66199"},{"range":"74257","text":"66201"},{"range":"74258","text":"66199"},{"range":"74259","text":"66201"},{"range":"74260","text":"66199"},{"range":"74261","text":"66201"},{"range":"74262","text":"66199"},{"range":"74263","text":"66201"},{"range":"74264","text":"66199"},{"range":"74265","text":"66201"},{"range":"74266","text":"66199"},{"range":"74267","text":"66201"},{"range":"74268","text":"66199"},{"range":"74269","text":"66201"},{"range":"74270","text":"66199"},{"range":"74271","text":"66201"},{"range":"74272","text":"66199"},{"range":"74273","text":"66201"},{"range":"74274","text":"66199"},{"range":"74275","text":"66201"},{"range":"74276","text":"66199"},{"range":"74277","text":"66201"},{"range":"74278","text":"66199"},{"range":"74279","text":"66201"},{"range":"74280","text":"66199"},{"range":"74281","text":"66201"},{"range":"74282","text":"66199"},{"range":"74283","text":"66201"},{"range":"74284","text":"66199"},{"range":"74285","text":"66201"},{"range":"74286","text":"66199"},{"range":"74287","text":"66201"},{"range":"74288","text":"66199"},{"range":"74289","text":"66201"},{"range":"74290","text":"66199"},{"range":"74291","text":"66201"},{"range":"74292","text":"66199"},{"range":"74293","text":"66201"},{"range":"74294","text":"66199"},{"range":"74295","text":"66201"},{"range":"74296","text":"66199"},{"range":"74297","text":"66201"},{"range":"74298","text":"66199"},{"range":"74299","text":"66201"},{"range":"74300","text":"66199"},{"range":"74301","text":"66201"},{"range":"74302","text":"66199"},{"range":"74303","text":"66201"},{"range":"74304","text":"66199"},{"range":"74305","text":"66201"},{"range":"74306","text":"66199"},{"range":"74307","text":"66201"},{"range":"74308","text":"66199"},{"range":"74309","text":"66201"},{"range":"74310","text":"66199"},{"range":"74311","text":"66201"},{"range":"74312","text":"66199"},{"range":"74313","text":"66201"},{"range":"74314","text":"66199"},{"range":"74315","text":"66201"},{"range":"74316","text":"66199"},{"range":"74317","text":"66201"},{"range":"74318","text":"66199"},{"range":"74319","text":"66201"},{"range":"74320","text":"66199"},{"range":"74321","text":"66201"},{"range":"74322","text":"66199"},{"range":"74323","text":"66201"},{"range":"74324","text":"66199"},{"range":"74325","text":"66201"},{"range":"74326","text":"66199"},{"range":"74327","text":"66201"},{"range":"74328","text":"66199"},{"range":"74329","text":"66201"},{"range":"74330","text":"66199"},{"range":"74331","text":"66201"},{"range":"74332","text":"66199"},{"range":"74333","text":"66201"},{"range":"74334","text":"66199"},{"range":"74335","text":"66201"},{"range":"74336","text":"66199"},{"range":"74337","text":"66201"},{"range":"74338","text":"66199"},{"range":"74339","text":"66201"},{"range":"74340","text":"66199"},{"range":"74341","text":"66201"},{"range":"74342","text":"66199"},{"range":"74343","text":"66201"},{"range":"74344","text":"66199"},{"range":"74345","text":"66201"},{"range":"74346","text":"66199"},{"range":"74347","text":"66201"},{"range":"74348","text":"66199"},{"range":"74349","text":"66201"},{"range":"74350","text":"66199"},{"range":"74351","text":"66201"},{"range":"74352","text":"66199"},{"range":"74353","text":"66201"},{"range":"74354","text":"66199"},{"range":"74355","text":"66201"},{"range":"74356","text":"66199"},{"range":"74357","text":"66201"},{"range":"74358","text":"66199"},{"range":"74359","text":"66201"},{"range":"74360","text":"66199"},{"range":"74361","text":"66201"},{"range":"74362","text":"66199"},{"range":"74363","text":"66201"},{"range":"74364","text":"66199"},{"range":"74365","text":"66201"},{"range":"74366","text":"66199"},{"range":"74367","text":"66201"},{"range":"74368","text":"66199"},{"range":"74369","text":"66201"},{"range":"74370","text":"66199"},{"range":"74371","text":"66201"},{"range":"74372","text":"66199"},{"range":"74373","text":"66201"},{"range":"74374","text":"66199"},{"range":"74375","text":"66201"},{"range":"74376","text":"66199"},{"range":"74377","text":"66201"},{"range":"74378","text":"66199"},{"range":"74379","text":"66201"},{"range":"74380","text":"66199"},{"range":"74381","text":"66201"},{"range":"74382","text":"66199"},{"range":"74383","text":"66201"},{"range":"74384","text":"66199"},{"range":"74385","text":"66201"},{"range":"74386","text":"66199"},{"range":"74387","text":"66201"},{"range":"74388","text":"66199"},{"range":"74389","text":"66201"},{"range":"74390","text":"66199"},{"range":"74391","text":"66201"},{"range":"74392","text":"66199"},{"range":"74393","text":"66201"},{"range":"74394","text":"66199"},{"range":"74395","text":"66201"},{"range":"74396","text":"66199"},{"range":"74397","text":"66201"},{"range":"74398","text":"66199"},{"range":"74399","text":"66201"},{"range":"74400","text":"66199"},{"range":"74401","text":"66201"},{"range":"74402","text":"66199"},{"range":"74403","text":"66201"},{"range":"74404","text":"66199"},{"range":"74405","text":"66201"},{"range":"74406","text":"66199"},{"range":"74407","text":"66201"},{"range":"74408","text":"66199"},{"range":"74409","text":"66201"},{"range":"74410","text":"66199"},{"range":"74411","text":"66201"},{"range":"74412","text":"66199"},{"range":"74413","text":"66201"},{"range":"74414","text":"66199"},{"range":"74415","text":"66201"},{"range":"74416","text":"66199"},{"range":"74417","text":"66201"},{"range":"74418","text":"66199"},{"range":"74419","text":"66201"},{"range":"74420","text":"66199"},{"range":"74421","text":"66201"},{"range":"74422","text":"66199"},{"range":"74423","text":"66201"},{"range":"74424","text":"66199"},{"range":"74425","text":"66201"},{"range":"74426","text":"66199"},{"range":"74427","text":"66201"},{"range":"74428","text":"66199"},{"range":"74429","text":"66201"},{"range":"74430","text":"66199"},{"range":"74431","text":"66201"},{"range":"74432","text":"66199"},{"range":"74433","text":"66201"},{"range":"74434","text":"66199"},{"range":"74435","text":"66201"},{"range":"74436","text":"66199"},{"range":"74437","text":"66201"},{"range":"74438","text":"66199"},{"range":"74439","text":"66201"},{"range":"74440","text":"66199"},{"range":"74441","text":"66201"},{"range":"74442","text":"66199"},{"range":"74443","text":"66201"},[11168,11171],"unknown",[11168,11171],"never",[15827,15830],[15827,15830],[8312,8315],[8312,8315],[8579,8582],[8579,8582],[9861,9864],[9861,9864],[9903,9906],[9903,9906],[9945,9948],[9945,9948],[11960,11963],[11960,11963],[13851,13854],[13851,13854],[14088,14091],[14088,14091],[16732,16735],[16732,16735],[17258,17261],[17258,17261],[17286,17289],[17286,17289],[17334,17337],[17334,17337],[16572,16575],[16572,16575],[17712,17715],[17712,17715],[1556,1559],[1556,1559],[1740,1743],[1740,1743],[4332,4335],[4332,4335],[4355,4358],[4355,4358],[5338,5341],[5338,5341],[5373,5376],[5373,5376],[5379,5382],[5379,5382],[10210,10213],[10210,10213],[11053,11056],[11053,11056],[11059,11062],[11059,11062],[11391,11394],[11391,11394],[12224,12227],[12224,12227],[13059,13062],[13059,13062],[13065,13068],[13065,13068],[12191,12194],[12191,12194],[12259,12262],[12259,12262],[692,695],[692,695],[1106,1109],[1106,1109],[1142,1145],[1142,1145],[1148,1151],[1148,1151],[2980,2983],[2980,2983],[3818,3821],[3818,3821],[3860,3863],[3860,3863],[1405,1408],[1405,1408],[1821,1824],[1821,1824],[1858,1861],[1858,1861],[1864,1867],[1864,1867],[8797,8800],[8797,8800],[8838,8841],[8838,8841],[8871,8874],[8871,8874],[8913,8916],[8913,8916],[8947,8950],[8947,8950],[8991,8994],[8991,8994],[9100,9103],[9100,9103],[9549,9552],[9549,9552],[9587,9590],[9587,9590],[9735,9738],[9735,9738],[15460,15463],[15460,15463],[5602,5605],[5602,5605],[5830,5833],[5830,5833],[7462,7465],[7462,7465],[3417,3420],[3417,3420],[2894,2897],[2894,2897],[2970,2973],[2970,2973],[2991,2994],[2991,2994],[5127,5130],[5127,5130],[5448,5451],[5448,5451],[5907,5910],[5907,5910],[6394,6397],[6394,6397],[19508,19511],[19508,19511],[19794,19797],[19794,19797],[20136,20139],[20136,20139],[20422,20425],[20422,20425],[20971,20974],[20971,20974],[21257,21260],[21257,21260],[21689,21692],[21689,21692],[21932,21935],[21932,21935],[22672,22675],[22672,22675],[22919,22922],[22919,22922],[23408,23411],[23408,23411],[23745,23748],[23745,23748],[24562,24565],[24562,24565],[25014,25017],[25014,25017],[26125,26128],[26125,26128],[26373,26376],[26373,26376],[26951,26954],[26951,26954],[27200,27203],[27200,27203],[31018,31021],[31018,31021],[31061,31064],[31061,31064],[32176,32179],[32176,32179],[33799,33802],[33799,33802],[34703,34706],[34703,34706],[41248,41251],[41248,41251],[41289,41292],[41289,41292],[42348,42351],[42348,42351],[45223,45226],[45223,45226],[6286,6289],[6286,6289],[271,274],[271,274],[3523,3526],[3523,3526],[3558,3561],[3558,3561],[3811,3814],[3811,3814],[4135,4138],[4135,4138],[2649,2652],[2649,2652],[661,664],[661,664],[1272,1275],[1272,1275],[1362,1365],[1362,1365],[36922,36925],[36922,36925],[37907,37910],[37907,37910],[41746,41749],[41746,41749],[739,742],[739,742],[1301,1304],[1301,1304],[1571,1574],[1571,1574],[5836,5839],[5836,5839],[5842,5845],[5842,5845],[9524,9527],[9524,9527],[14966,14969],[14966,14969],[20174,20177],[20174,20177],[20205,20208],[20205,20208],[20754,20757],[20754,20757],[21962,21965],[21962,21965],[21988,21991],[21988,21991],[24705,24708],[24705,24708],[25581,25584],[25581,25584],[25595,25598],[25595,25598],[26147,26150],[26147,26150],[26163,26166],[26163,26166],[26189,26192],[26189,26192],[26993,26996],[26993,26996],[27104,27107],[27104,27107],[521,524],[521,524],[4328,4331],[4328,4331],[4383,4386],[4383,4386],[562,565],[562,565],[2483,2486],[2483,2486],[3290,3293],[3290,3293],[4203,4206],[4203,4206],[6389,6392],[6389,6392],[6782,6785],[6782,6785],[9842,9845],[9842,9845],[9892,9895],[9892,9895],[10575,10578],[10575,10578],[12046,12049],[12046,12049],[12111,12114],[12111,12114],[13865,13868],[13865,13868],[14140,14143],[14140,14143],[16013,16016],[16013,16016],[17495,17498],[17495,17498],[19264,19267],[19264,19267],[20659,20662],[20659,20662],[22355,22358],[22355,22358],[22561,22564],[22561,22564],[25537,25540],[25537,25540],[25603,25606],[25603,25606],[26438,26441],[26438,26441],[3953,3956],[3953,3956],[1806,1809],[1806,1809],[2467,2470],[2467,2470],[2932,2935],[2932,2935],[3453,3456],[3453,3456],[291,294],[291,294],[880,883],[880,883],[2237,2240],[2237,2240],[3277,3280],[3277,3280],[5531,5534],[5531,5534],[8772,8775],[8772,8775],[9082,9085],[9082,9085],[9361,9364],[9361,9364],[11247,11250],[11247,11250],[1166,1169],[1166,1169],[4933,4936],[4933,4936],[6644,6647],[6644,6647],[267,270],[267,270],[307,310],[307,310],[748,751],[748,751],[910,913],[910,913],[1067,1070],[1067,1070],[6864,6917],"[versionInfo, platform]",[9568,9570],"[fetchData]",[1478,1495],"[jsonl, endpoint, onResult, t]",[18999,19001],"[LOCAL_PROVIDERS]",[2737,2757],"[isExpanded, loadSavedMappings, status]",[9467,9488],"[plans, primaryConnectionId, selectedConn]",[11296,11328],"[open, editPool, initialGroupId, editPoolExclusive, plans]",[11843,11867],"[open, editPool, groups, groupId]",[2169,2203],"[pools]",[5628,5664],"[availableModels, configState, configState.model, setConfigState]",[6234,6293],"[configState, reasoningSpec, reasoningSpec.show, setConfigState]",[11205,11380],"useCallback(() => {\n setResponseBody(\"\");\n setResponseStatus(null);\n setResponseDuration(null);\n setAudioUrl(null);\n setImageData(null);\n setTranscriptionText(null);\n })",[5807,5823],"[getUpstreamHeadersRecord, open, protocol]",[2225,2239],"[searchParams, setProviderDisplayMode]",[2696,2710],"[searchParams, setActiveCategory, setActiveServiceKind, setModelSearchQuery, setSearchQuery, setShowFreeOnly]",[1844,1846],"[L]",[2842,2844],"[customThemeColor]",[1297,1299],"[notify, t]",[3254,3267],"[load, providerKey]",[2042,2044],"[t]",[4278,4280],"[forceOpen, onOpenChange]",[1808,1810],"[defaultOpen, forceOpen, onOpenChange]",[18938,18940],"[onFirstOpen]",[13638,13640],[10875,10916],"[providers, activeSet, lastSet, errorSet]",[9256,9344],"[apiKey, effectiveWsUrl, channels, autoReconnect, connection.reconnectAttempt]",[1639,1647],"[isOpen, t]",[1742,1744],"[router]",[8959,8984],"[isOpen, activeProviders, fetchProviderModels]",[10822,10846],"[isOpen, level, levelId, resetFields, t]",[5651,5653],"[columnSortMap]",[5969,5977],"[columnSortMap, sortBy]",[19931,22976],"useCallback(async (logEntry) => {\n // Guard: if no valid id provided, close instead of opening an empty modal\n if (!logEntry?.id) {\n try {\n closeDetail();\n } catch {}\n return;\n }\n\n const requestToken = `${logEntry.id}:${Date.now()}:${Math.random()}`;\n detailRequestRef.current = requestToken;\n const isCurrentDetailRequest = () => detailRequestRef.current === requestToken;\n\n setSelectedLog(logEntry);\n try {\n const url = new URL(globalThis.location.href);\n url.searchParams.set(\"id\", logEntry.id);\n router.replace(url.pathname + url.search);\n } catch (e) {\n // ignore navigation errors\n }\n setDetailLoading(true);\n setDetailData(null);\n try {\n const res = await fetch(`/api/logs/${logEntry.id}`, { cache: \"no-store\" });\n if (res.ok) {\n const data = await res.json();\n if (!isCurrentDetailRequest()) return;\n const dataHasPipeline =\n data?.pipelinePayloads && Object.keys(data.pipelinePayloads || {}).length > 0;\n setDetailData((prev: { pipelinePayloads: any }) => ({\n ...prev,\n ...data,\n pipelinePayloads: dataHasPipeline ? data.pipelinePayloads : prev?.pipelinePayloads,\n }));\n // ensure the modal summary reflects the fetched call log summary\n if (data && typeof data === \"object\") {\n setSelectedLog((prev: any) => ({\n ...prev,\n ...data,\n active: data.active === true,\n }));\n }\n } else {\n // A deep-linked id can legitimately 404 while the request is still\n // finalizing. Keep the modal open and poll /api/logs/[id] instead of\n // falling back to an in-memory active-request endpoint.\n if (!isCurrentDetailRequest()) return;\n if (res.status === 404) {\n if (logEntry.pendingLookup || logEntry.active) {\n setSelectedLog((prev: { method: any; path: any }) => ({\n ...prev,\n id: logEntry.id,\n status: 0,\n method: prev?.method,\n path: prev?.path || \"\",\n }));\n setDetailData({ detailState: \"pending\" });\n return;\n }\n try {\n console.warn(\"Log not found:\", logEntry.id);\n } catch {}\n try {\n closeDetail();\n } catch {}\n return;\n }\n // other errors: show a minimal error indicator by setting detailData to an error object\n try {\n const body = await res.text().catch(() => null);\n if (!isCurrentDetailRequest()) return;\n setDetailData({ error: `Failed to fetch log (status ${res.status})`, body });\n } catch {}\n }\n } catch (error) {\n console.error(\"Failed to fetch log detail:\", error);\n } finally {\n if (isCurrentDetailRequest()) setDetailLoading(false);\n }\n })",[24185,24204],"[initialSelectedId, openDetail]",[27895,27930],"[closeDetail, currentLogIndex, openDetail, sortedLogsForNav]",[28368,28403],[11493,11556],"[activeHref, collapsed, pinnedSections, sidebarExpansionLoaded, visibleSections]",[301,304],[301,304],[556,559],[556,559],[939,942],[939,942],[1471,1474],[1471,1474],[1688,1691],[1688,1691],[1925,1928],[1925,1928],[2660,2663],[2660,2663],[3610,3613],[3610,3613],[3948,3951],[3948,3951],[4122,4125],[4122,4125],[4371,4374],[4371,4374],[4737,4740],[4737,4740],[4919,4922],[4919,4922],[5431,5434],[5431,5434],[6090,6093],[6090,6093],[6562,6565],[6562,6565],[7540,7543],[7540,7543],[7643,7646],[7643,7646],[8061,8064],[8061,8064],[11513,11516],[11513,11516],[2278,2281],[2278,2281],[4810,4813],[4810,4813],[2089,2092],[2089,2092],[4406,4409],[4406,4409],[4531,4534],[4531,4534],[4869,4872],[4869,4872],[7077,7080],[7077,7080],[7193,7196],[7193,7196],[1278,1281],[1278,1281],[5583,5586],[5583,5586],[2208,2211],[2208,2211],[2745,2748],[2745,2748],[2756,2759],[2756,2759],[2600,2603],[2600,2603],[2663,2666],[2663,2666],[3474,3477],[3474,3477],[3537,3540],[3537,3540],[4192,4195],[4192,4195],[5502,5505],[5502,5505],[6281,6284],[6281,6284],[6334,6337],[6334,6337],[7219,7222],[7219,7222],[7815,7818],[7815,7818],[8570,8573],[8570,8573],[9601,9604],[9601,9604],[10996,10999],[10996,10999],[11893,11896],[11893,11896],[13403,13406],[13403,13406],[13470,13473],[13470,13473],[13535,13538],[13535,13538],[15059,15062],[15059,15062],[15128,15131],[15128,15131],[15195,15198],[15195,15198],[16346,16349],[16346,16349],[17990,17993],[17990,17993],[18063,18066],[18063,18066],[2914,2917],[2914,2917],[4823,4826],[4823,4826],[4886,4889],[4886,4889],[4939,4942],[4939,4942],[4996,4999],[4996,4999],[5055,5058],[5055,5058],[5126,5129],[5126,5129],[5189,5192],[5189,5192],[5248,5251],[5248,5251],[5313,5316],[5313,5316],[5380,5383],[5380,5383],[5443,5446],[5443,5446],[7739,7742],[7739,7742],[8468,8471],[8468,8471],[8529,8532],[8529,8532],[8586,8589],[8586,8589],[8649,8652],[8649,8652],[8714,8717],[8714,8717],[11004,11007],[11004,11007],[11234,11237],[11234,11237],[13170,13173],[13170,13173],[13241,13244],[13241,13244],[13312,13315],[13312,13315],[13383,13386],[13383,13386],[13446,13449],[13446,13449],[13521,13524],[13521,13524],[13598,13601],[13598,13601],[13663,13666],[13663,13666],[15187,15190],[15187,15190],[15934,15937],[15934,15937],[16187,16190],[16187,16190],[16433,16436],[16433,16436],[16514,16517],[16514,16517],[16629,16632],[16629,16632],[18598,18601],[18598,18601],[18677,18680],[18677,18680],[18742,18745],[18742,18745],[18805,18808],[18805,18808],[19592,19595],[19592,19595],[2416,2419],[2416,2419],[14630,14633],[14630,14633],[15747,15750],[15747,15750],[17745,17748],[17745,17748],[29092,29095],[29092,29095],[30319,30322],[30319,30322],[31706,31709],[31706,31709],[33409,33412],[33409,33412],[33695,33698],[33695,33698],[34426,34429],[34426,34429],[35121,35124],[35121,35124],[37157,37160],[37157,37160],[38552,38555],[38552,38555],[39372,39375],[39372,39375],[40352,40355],[40352,40355],[42189,42192],[42189,42192],[43420,43423],[43420,43423],[45246,45249],[45246,45249],[46891,46894],[46891,46894],[48477,48480],[48477,48480],[2974,2977],[2974,2977],[9773,9776],[9773,9776],[12223,12226],[12223,12226],[13855,13858],[13855,13858],[15031,15034],[15031,15034],[16223,16226],[16223,16226],[21703,21706],[21703,21706],[32492,32495],[32492,32495],[34561,34564],[34561,34564],[2502,2505],[2502,2505],[2521,2524],[2521,2524],[2538,2541],[2538,2541],[2630,2633],[2630,2633],[4815,4818],[4815,4818],[6315,6318],[6315,6318],[8979,8982],[8979,8982],[9403,9406],[9403,9406],[10356,10359],[10356,10359],[10415,10418],[10415,10418],[4253,4256],[4253,4256],[4282,4285],[4282,4285],[4322,4325],[4322,4325],[4592,4595],[4592,4595],[4981,4984],[4981,4984],[5814,5817],[5814,5817],[5866,5869],[5866,5869],[5955,5958],[5955,5958],[6002,6005],[6002,6005],[6094,6097],[6094,6097],[7181,7184],[7181,7184],[7208,7211],[7208,7211],[7246,7249],[7246,7249],[7583,7586],[7583,7586],[8743,8746],[8743,8746],[8809,8812],[8809,8812],[11083,11086],[11083,11086],[11110,11113],[11110,11113],[11148,11151],[11148,11151],[12828,12831],[12828,12831],[13566,13569],[13566,13569],[13632,13635],[13632,13635],[2802,2805],[2802,2805],[2831,2834],[2831,2834],[2871,2874],[2871,2874],[3141,3144],[3141,3144],[3518,3521],[3518,3521],[4535,4538],[4535,4538],[5187,5190],[5187,5190],[5239,5242],[5239,5242],[5328,5331],[5328,5331],[5375,5378],[5375,5378],[5467,5470],[5467,5470],[8772,8775],[8772,8775],[8959,8962],[8959,8962],[8997,9000],[8997,9000],[9151,9154],[9151,9154],[9180,9183],[9180,9183],[9220,9223],[9220,9223],[9474,9477],[9474,9477],[9679,9682],[9679,9682],[9747,9750],[9747,9750],[13510,13513],[13510,13513],[15083,15086],[15083,15086],[15359,15362],[15359,15362],[15691,15694],[15691,15694],[15720,15723],[15720,15723],[15760,15763],[15760,15763],[16216,16219],[16216,16219],[16608,16611],[16608,16611],[18354,18357],[18354,18357],[5141,5144],[5141,5144],[5263,5266],[5263,5266],[5352,5355],[5352,5355],[5399,5402],[5399,5402],[4089,4092],[4089,4092],[4100,4103],[4100,4103],[470,473],[470,473],[1829,1832],[1829,1832],[3032,3035],[3032,3035],[4308,4311],[4308,4311],[5565,5568],[5565,5568],[6578,6581],[6578,6581],[7701,7704],[7701,7704],[8947,8950],[8947,8950],[10346,10349],[10346,10349],[11083,11086],[11083,11086],[11659,11662],[11659,11662],[13149,13152],[13149,13152],[14168,14171],[14168,14171],[15220,15223],[15220,15223],[16416,16419],[16416,16419],[17546,17549],[17546,17549],[18678,18681],[18678,18681],[19813,19816],[19813,19816],[19824,19827],[19824,19827],[1611,1614],[1611,1614],[5653,5656],[5653,5656],[7519,7522],[7519,7522],[9633,9636],[9633,9636],[10695,10698],[10695,10698],[11248,11251],[11248,11251],[12452,12455],[12452,12455],[2684,2687],[2684,2687],[2885,2888],[2885,2888],[1316,1319],[1316,1319],[4128,4131],[4128,4131],[5740,5743],[5740,5743],[6391,6394],[6391,6394],[1425,1428],[1425,1428],[1786,1789],[1786,1789],[1713,1716],[1713,1716],[1763,1766],[1763,1766],[3848,3851],[3848,3851],[3988,3991],[3988,3991],[4027,4030],[4027,4030],[4195,4198],[4195,4198],[4218,4221],[4218,4221],[4723,4726],[4723,4726],[4967,4970],[4967,4970],[5006,5009],[5006,5009],[5244,5247],[5244,5247],[5267,5270],[5267,5270],[5323,5326],[5323,5326],[5346,5349],[5346,5349],[5763,5766],[5763,5766],[1089,1092],[1089,1092],[1105,1108],[1105,1108],[1123,1126],[1123,1126],[1139,1142],[1139,1142],[7083,7086],[7083,7086],[8008,8011],[8008,8011],[10280,10283],[10280,10283],[16930,16933],[16930,16933],[17533,17536],[17533,17536],[18355,18358],[18355,18358],[18726,18729],[18726,18729],[21273,21276],[21273,21276],[9301,9304],[9301,9304],[2185,2188],[2185,2188],[2293,2296],[2293,2296],[3085,3088],[3085,3088],[3096,3099],[3096,3099],[4193,4196],[4193,4196],[5104,5107],[5104,5107],[5464,5467],[5464,5467],[5476,5479],[5476,5479],[6302,6305],[6302,6305],[2551,2554],[2551,2554],[3032,3035],[3032,3035],[3375,3378],[3375,3378],[4593,4596],[4593,4596],[5334,5337],[5334,5337],[5910,5913],[5910,5913],[6637,6640],[6637,6640],[7120,7123],[7120,7123],[8359,8362],[8359,8362],[3486,3489],[3486,3489],[4571,4574],[4571,4574],[5064,5067],[5064,5067],[6175,6178],[6175,6178],[6724,6727],[6724,6727],[6875,6878],[6875,6878],[7508,7511],[7508,7511],[8553,8556],[8553,8556],[9273,9276],[9273,9276],[9667,9670],[9667,9670],[10145,10148],[10145,10148],[10794,10797],[10794,10797],[11165,11168],[11165,11168],[11660,11663],[11660,11663],[12069,12072],[12069,12072],[12876,12879],[12876,12879],[13223,13226],[13223,13226],[13637,13640],[13637,13640],[14206,14209],[14206,14209],[8530,8533],[8530,8533],[12423,12426],[12423,12426],[12670,12673],[12670,12673],[1946,1949],[1946,1949],[4400,4403],[4400,4403],[5433,5436],[5433,5436],[7540,7543],[7540,7543],[9980,9983],[9980,9983],[10029,10032],[10029,10032],[10089,10092],[10089,10092],[10118,10121],[10118,10121],[10216,10219],[10216,10219],[11030,11033],[11030,11033],[11059,11062],[11059,11062],[17769,17772],[17769,17772],[24546,24549],[24546,24549],[26807,26810],[26807,26810],[1478,1481],[1478,1481],[1541,1544],[1541,1544],[1771,1774],[1771,1774],[1861,1864],[1861,1864],[2284,2287],[2284,2287],[3030,3033],[3030,3033],[3783,3786],[3783,3786],[4697,4700],[4697,4700],[5408,5411],[5408,5411],[6332,6335],[6332,6335],[844,847],[844,847],[2240,2243],[2240,2243],[1079,1082],[1079,1082],[1858,1861],[1858,1861],[2502,2505],[2502,2505],[2782,2785],[2782,2785],[3449,3452],[3449,3452],[3853,3856],[3853,3856],[5629,5632],[5629,5632],[6413,6416],[6413,6416],[7301,7304],[7301,7304],[7771,7774],[7771,7774],[1386,1389],[1386,1389],[3959,3962],[3959,3962],[4081,4084],[4081,4084],[2506,2509],[2506,2509],[1253,1256],[1253,1256],[2311,2314],[2311,2314],[3121,3124],[3121,3124],[5446,5449],[5446,5449],[6857,6860],[6857,6860],[7076,7079],[7076,7079],[7200,7203],[7200,7203],[7259,7262],[7259,7262],[7296,7299],[7296,7299],[7353,7356],[7353,7356],[7402,7405],[7402,7405],[7436,7439],[7436,7439],[7485,7488],[7485,7488],[7834,7837],[7834,7837],[3721,3724],[3721,3724],[10416,10419],[10416,10419],[1611,1614],[1611,1614],[1832,1835],[1832,1835],[2520,2523],[2520,2523],[2696,2699],[2696,2699],[1035,1038],[1035,1038],[1046,1049],[1046,1049],[2654,2657],[2654,2657],[3629,3632],[3629,3632],[4241,4244],[4241,4244],[2552,2555],[2552,2555],[3560,3563],[3560,3563],[4075,4078],[4075,4078],[4802,4805],[4802,4805],[628,631],[628,631],[8900,8903],[8900,8903],[9207,9210],[9207,9210],[4707,4710],[4707,4710],[1657,1660],[1657,1660],[2206,2209],[2206,2209],[3056,3059],[3056,3059],[3642,3645],[3642,3645],[4192,4195],[4192,4195],[4761,4764],[4761,4764],[5223,5226],[5223,5226],[5684,5687],[5684,5687],[1271,1274],[1271,1274],[465,468],[465,468],[801,804],[801,804],[3782,3785],[3782,3785],[9903,9906],[9903,9906],[10335,10338],[10335,10338],[12736,12739],[12736,12739],[16520,16523],[16520,16523],[18912,18915],[18912,18915],[19530,19533],[19530,19533],[712,715],[712,715],[1115,1118],[1115,1118],[4462,4465],[4462,4465],[7912,7915],[7912,7915],[8399,8402],[8399,8402],[12299,12302],[12299,12302],[18828,18831],[18828,18831],[19681,19684],[19681,19684],[20400,20403],[20400,20403],[580,583],[580,583],[979,982],[979,982],[1462,1465],[1462,1465],[1979,1982],[1979,1982],[5928,5931],[5928,5931],[6751,6754],[6751,6754],[3736,3739],[3736,3739],[3849,3852],[3849,3852],[5909,5912],[5909,5912],[6022,6025],[6022,6025],[7846,7849],[7846,7849],[8023,8026],[8023,8026],[8245,8248],[8245,8248],[14313,14316],[14313,14316],[14423,14426],[14423,14426],[1617,1620],[1617,1620],[1715,1718],[1715,1718],[2415,2418],[2415,2418],[2685,2688],[2685,2688],[3885,3888],[3885,3888],[1439,1442],[1439,1442],[1588,1591],[1588,1591],[2818,2821],[2818,2821],[2958,2961],[2958,2961],[3520,3523],[3520,3523],[3664,3667],[3664,3667],[4324,4327],[4324,4327],[4473,4476],[4473,4476],[5551,5554],[5551,5554],[5686,5689],[5686,5689],[6074,6077],[6074,6077],[3505,3508],[3505,3508],[1836,1839],[1836,1839],[2123,2126],[2123,2126],[2404,2407],[2404,2407],[2650,2653],[2650,2653],[2949,2952],[2949,2952],[3164,3167],[3164,3167],[3463,3466],[3463,3466],[3741,3744],[3741,3744],[3878,3881],[3878,3881],[4035,4038],[4035,4038],[4387,4390],[4387,4390],[2994,2997],[2994,2997],[3231,3234],[3231,3234],[3680,3683],[3680,3683],[3820,3823],[3820,3823],[4391,4394],[4391,4394],[4535,4538],[4535,4538],[5095,5098],[5095,5098],[5229,5232],[5229,5232],[5835,5838],[5835,5838],[5966,5969],[5966,5969],[6045,6048],[6045,6048],[6701,6704],[6701,6704],[6869,6872],[6869,6872],[7482,7485],[7482,7485],[7653,7656],[7653,7656],[5212,5215],[5212,5215],[869,872],[869,872],[1110,1113],[1110,1113],[2030,2033],[2030,2033],[2479,2482],[2479,2482],[3399,3402],[3399,3402],[3894,3897],[3894,3897],[4814,4817],[4814,4817],[5345,5348],[5345,5348],[6265,6268],[6265,6268],[7004,7007],[7004,7007],[8210,8213],[8210,8213],[8741,8744],[8741,8744],[9078,9081],[9078,9081],[9495,9498],[9495,9498],[10145,10148],[10145,10148],[10390,10393],[10390,10393],[11860,11863],[11860,11863],[12910,12913],[12910,12913],[13394,13397],[13394,13397],[14470,14473],[14470,14473],[17010,17013],[17010,17013],[1034,1037],[1034,1037],[1093,1096],[1093,1096],[1606,1609],[1606,1609],[2089,2092],[2089,2092],[2739,2742],[2739,2742],[3149,3152],[3149,3152],[3737,3740],[3737,3740],[5371,5374],[5371,5374],[5428,5431],[5428,5431],[5952,5955],[5952,5955],[6629,6632],[6629,6632],[7300,7303],[7300,7303],[7866,7869],[7866,7869],[7925,7928],[7925,7928],[8020,8023],[8020,8023],[8510,8513],[8510,8513],[8876,8879],[8876,8879],[9261,9264],[9261,9264],[9670,9673],[9670,9673],[9729,9732],[9729,9732],[10144,10147],[10144,10147],[10202,10205],[10202,10205],[10587,10590],[10587,10590],[11286,11289],[11286,11289],[11638,11641],[11638,11641],[12045,12048],[12045,12048],[12636,12639],[12636,12639],[13071,13074],[13071,13074],[13453,13456],[13453,13456],[13886,13889],[13886,13889],[14239,14242],[14239,14242],[15530,15533],[15530,15533],[20300,20303],[20300,20303],[20357,20360],[20357,20360],[21021,21024],[21021,21024],[21510,21513],[21510,21513],[21929,21932],[21929,21932],[22394,22397],[22394,22397],[22782,22785],[22782,22785],[22839,22842],[22839,22842],[22934,22937],[22934,22937],[23524,23527],[23524,23527],[24354,24357],[24354,24357],[24853,24856],[24853,24856],[25512,25515],[25512,25515],[26044,26047],[26044,26047],[26200,26203],[26200,26203],[26879,26882],[26879,26882],[9328,9331],[9328,9331],[15845,15848],[15845,15848],[28217,28220],[28217,28220],[33654,33657],[33654,33657],[33703,33706],[33703,33706],[33752,33755],[33752,33755],[34496,34499],[34496,34499],[1453,1456],[1453,1456],[1917,1920],[1917,1920],[1108,1111],[1108,1111],[1119,1122],[1119,1122],[2753,2756],[2753,2756],[4863,4866],[4863,4866],[5773,5776],[5773,5776],[6526,6529],[6526,6529],[7276,7279],[7276,7279],[7972,7975],[7972,7975],[10712,10715],[10712,10715],[11255,11258],[11255,11258],[9943,9946],[9943,9946],[10070,10073],[10070,10073],[10209,10212],[10209,10212],[10323,10326],[10323,10326],[10632,10635],[10632,10635],[1151,1154],[1151,1154],[2284,2287],[2284,2287],[4758,4761],[4758,4761],[4832,4835],[4832,4835],[4922,4925],[4922,4925],[5257,5260],[5257,5260],[5674,5677],[5674,5677],[5700,5703],[5700,5703],[5759,5762],[5759,5762],[5821,5824],[5821,5824],[5878,5881],[5878,5881],[5936,5939],[5936,5939],[6004,6007],[6004,6007],[8562,8565],[8562,8565],[8747,8750],[8747,8750],[9047,9050],[9047,9050],[9231,9234],[9231,9234],[14069,14072],[14069,14072],[14134,14137],[14134,14137],[14197,14200],[14197,14200],[14315,14318],[14315,14318],[15222,15225],[15222,15225],[15275,15278],[15275,15278],[16098,16101],[16098,16101],[16150,16153],[16150,16153],[16190,16193],[16190,16193],[16216,16219],[16216,16219],[16273,16276],[16273,16276],[16388,16391],[16388,16391],[16875,16878],[16875,16878],[17781,17784],[17781,17784],[17830,17833],[17830,17833],[17941,17944],[17941,17944],[19362,19365],[19362,19365],[19411,19414],[19411,19414],[19522,19525],[19522,19525],[20810,20813],[20810,20813],[20859,20862],[20859,20862],[20968,20971],[20968,20971],[22135,22138],[22135,22138],[22184,22187],[22184,22187],[22289,22292],[22289,22292],[23324,23327],[23324,23327],[23373,23376],[23373,23376],[23481,23484],[23481,23484],[1359,1362],[1359,1362],[5380,5383],[5380,5383],[5630,5633],[5630,5633],[5674,5677],[5674,5677],[5698,5701],[5698,5701],[598,601],[598,601],[2060,2063],[2060,2063],[2806,2809],[2806,2809],[2872,2875],[2872,2875],[1133,1136],[1133,1136],[1143,1146],[1143,1146],[1657,1660],[1657,1660],[3237,3240],[3237,3240],[3677,3680],[3677,3680],[4139,4142],[4139,4142],[4793,4796],[4793,4796],[5248,5251],[5248,5251],[5647,5650],[5647,5650],[5958,5961],[5958,5961],[6500,6503],[6500,6503],[6986,6989],[6986,6989],[7463,7466],[7463,7466],[7976,7979],[7976,7979],[8540,8543],[8540,8543],[9193,9196],[9193,9196],[9245,9248],[9245,9248],[9569,9572],[9569,9572],[9852,9855],[9852,9855],[10263,10266],[10263,10266],[10616,10619],[10616,10619],[10729,10732],[10729,10732],[10802,10805],[10802,10805],[10883,10886],[10883,10886],[11665,11668],[11665,11668],[12366,12369],[12366,12369],[13272,13275],[13272,13275],[14296,14299],[14296,14299],[14409,14412],[14409,14412],[15837,15840],[15837,15840],[15934,15937],[15934,15937],[1763,1766],[1763,1766],[2009,2012],[2009,2012],[4940,4943],[4940,4943],[5011,5014],[5011,5014],[5094,5097],[5094,5097],[5213,5216],[5213,5216],[5268,5271],[5268,5271],[5301,5304],[5301,5304],[5370,5373],[5370,5373],[5486,5489],[5486,5489],[5918,5921],[5918,5921],[5962,5965],[5962,5965],[8104,8107],[8104,8107],[8173,8176],[8173,8176],[8246,8249],[8246,8249],[8314,8317],[8314,8317],[8364,8367],[8364,8367],[8469,8472],[8469,8472],[8586,8589],[8586,8589],[9847,9850],[9847,9850],[9929,9932],[9929,9932],[10011,10014],[10011,10014],[10093,10096],[10093,10096],[10166,10169],[10166,10169],[11060,11063],[11060,11063],[11129,11132],[11129,11132],[11202,11205],[11202,11205],[11287,11290],[11287,11290],[12155,12158],[12155,12158],[12220,12223],[12220,12223],[12289,12292],[12289,12292],[12358,12361],[12358,12361],[12440,12443],[12440,12443],[12545,12548],[12545,12548],[19898,19901],[19898,19901],[22513,22516],[22513,22516],[27727,27730],[27727,27730],[29554,29557],[29554,29557],[39310,39313],[39310,39313],[4985,4988],[4985,4988],[5345,5348],[5345,5348],[6332,6335],[6332,6335],[6767,6770],[6767,6770],[8947,8950],[8947,8950],[9626,9629],[9626,9629],[341,344],[341,344],[2824,2827],[2824,2827],[2849,2852],[2849,2852],[2860,2863],[2860,2863],[4424,4427],[4424,4427],[4945,4948],[4945,4948],[5369,5372],[5369,5372],[6776,6779],[6776,6779],[6801,6804],[6801,6804],[6812,6815],[6812,6815],[4014,4017],[4014,4017],[5356,5359],[5356,5359],[6404,6407],[6404,6407],[7033,7036],[7033,7036],[7168,7171],[7168,7171],[7662,7665],[7662,7665],[8712,8715],[8712,8715],[8927,8930],[8927,8930],[8940,8943],[8940,8943],[10142,10145],[10142,10145],[2875,2878],[2875,2878],[4047,4050],[4047,4050],[4498,4501],[4498,4501],[4968,4971],[4968,4971],[7095,7098],[7095,7098],[9432,9435],[9432,9435],[9489,9492],[9489,9492],[10216,10219],[10216,10219],[10992,10995],[10992,10995],[11939,11942],[11939,11942],[12488,12491],[12488,12491],[12856,12859],[12856,12859],[15975,15978],[15975,15978],[1655,1658],[1655,1658],[2671,2674],[2671,2674],[2274,2277],[2274,2277],[2852,2855],[2852,2855],[3663,3666],[3663,3666],[5308,5311],[5308,5311],[5786,5789],[5786,5789],[6805,6808],[6805,6808],[8443,8446],[8443,8446],[9752,9755],[9752,9755],[10526,10529],[10526,10529],[11178,11181],[11178,11181],[11792,11795],[11792,11795],[12592,12595],[12592,12595],[13780,13783],[13780,13783],[15541,15544],[15541,15544],[16569,16572],[16569,16572],[5122,5125],[5122,5125],[7880,7883],[7880,7883],[8998,9001],[8998,9001],[9931,9934],[9931,9934],[3864,3867],[3864,3867],[5516,5519],[5516,5519],[1593,1596],[1593,1596],[3678,3681],[3678,3681],[4852,4855],[4852,4855],[4875,4878],[4875,4878],[9626,9629],[9626,9629],[9653,9656],[9653,9656],[11005,11008],[11005,11008],[12507,12510],[12507,12510],[13274,13277],[13274,13277],[13672,13675],[13672,13675],[13740,13743],[13740,13743],[15246,15249],[15246,15249],[16985,16988],[16985,16988],[41151,41154],[41151,41154],[44799,44802],[44799,44802],[47110,47113],[47110,47113],[53601,53604],[53601,53604],[54809,54812],[54809,54812],[56621,56624],[56621,56624],[59678,59681],[59678,59681],[60284,60287],[60284,60287],[62527,62530],[62527,62530],[62639,62642],[62639,62642],[62723,62726],[62723,62726],[62821,62824],[62821,62824],[62926,62929],[62926,62929],[64111,64114],[64111,64114],[64225,64228],[64225,64228],[64334,64337],[64334,64337],[64500,64503],[64500,64503],[64569,64572],[64569,64572],[64740,64743],[64740,64743],[65590,65593],[65590,65593],[66739,66742],[66739,66742],[67395,67398],[67395,67398],[69778,69781],[69778,69781],[75407,75410],[75407,75410],[75519,75522],[75519,75522],[2008,2011],[2008,2011],[4693,4696],[4693,4696],[4979,4982],[4979,4982],[5896,5899],[5896,5899],[7095,7098],[7095,7098],[8477,8480],[8477,8480],[354,357],[354,357],[1471,1474],[1471,1474],[2158,2161],[2158,2161],[5316,5319],[5316,5319],[5379,5382],[5379,5382],[5051,5054],[5051,5054],[6375,6378],[6375,6378],[6444,6447],[6444,6447],[9408,9411],[9408,9411],[11658,11661],[11658,11661],[11812,11815],[11812,11815],[11892,11895],[11892,11895],[11962,11965],[11962,11965],[12009,12012],[12009,12012],[12371,12374],[12371,12374],[12442,12445],[12442,12445],[12487,12490],[12487,12490],[12526,12529],[12526,12529],[12583,12586],[12583,12586],[12631,12634],[12631,12634],[12722,12725],[12722,12725],[13920,13923],[13920,13923],[14044,14047],[14044,14047],[14121,14124],[14121,14124],[14203,14206],[14203,14206],[14273,14276],[14273,14276],[15167,15170],[15167,15170],[15241,15244],[15241,15244],[15846,15849],[15846,15849],[15911,15914],[15911,15914],[17249,17252],[17249,17252],[17323,17326],[17323,17326],[1252,1255],[1252,1255],[3027,3030],[3027,3030],[3080,3083],[3080,3083],[4189,4192],[4189,4192],[1385,1388],[1385,1388],[1782,1785],[1782,1785],[2070,2073],[2070,2073],[2087,2090],[2087,2090],[2704,2707],[2704,2707],[2840,2843],[2840,2843],[4584,4587],[4584,4587],[5168,5171],[5168,5171],[5304,5307],[5304,5307],[6459,6462],[6459,6462],[7663,7666],[7663,7666],[1527,1530],[1527,1530],[1761,1764],[1761,1764],[2018,2021],[2018,2021],[2155,2158],[2155,2158],[2271,2274],[2271,2274],[2448,2451],[2448,2451],[2483,2486],[2483,2486],[3342,3345],[3342,3345],[3507,3510],[3507,3510],[3922,3925],[3922,3925],[4082,4085],[4082,4085],[4556,4559],[4556,4559],[4683,4686],[4683,4686],[4718,4721],[4718,4721],[5208,5211],[5208,5211],[5243,5246],[5243,5246],[2313,2316],[2313,2316],[2496,2499],[2496,2499],[2637,2640],[2637,2640],[2702,2705],[2702,2705],[3037,3040],[3037,3040],[3227,3230],[3227,3230],[3414,3417],[3414,3417],[3723,3726],[3723,3726],[3957,3960],[3957,3960],[4363,4366],[4363,4366],[4551,4554],[4551,4554],[5030,5033],[5030,5033],[5213,5216],[5213,5216],[5542,5545],[5542,5545],[5739,5742],[5739,5742],[1162,1165],[1162,1165],[1197,1200],[1197,1200],[1565,1568],[1565,1568],[1676,1679],[1676,1679],[1896,1899],[1896,1899],[1989,1992],[1989,1992],[2144,2147],[2144,2147],[2179,2182],[2179,2182],[2712,2715],[2712,2715],[2876,2879],[2876,2879],[2911,2914],[2911,2914],[3355,3358],[3355,3358],[3390,3393],[3390,3393],[4061,4064],[4061,4064],[4075,4078],[4075,4078],[4200,4203],[4200,4203],[1332,1335],[1332,1335],[1601,1604],[1601,1604],[1972,1975],[1972,1975],[2240,2243],[2240,2243],[2655,2658],[2655,2658],[2747,2750],[2747,2750],[2897,2900],[2897,2900],[3176,3179],[3176,3179],[3582,3585],[3582,3585],[3824,3827],[3824,3827],[4482,4485],[4482,4485],[4613,4616],[4613,4616],[4997,5000],[4997,5000],[5271,5274],[5271,5274],[5363,5366],[5363,5366],[5513,5516],[5513,5516],[5885,5888],[5885,5888],[1433,1436],[1433,1436],[1669,1672],[1669,1672],[2090,2093],[2090,2093],[2501,2504],[2501,2504],[2778,2781],[2778,2781],[2894,2897],[2894,2897],[3030,3033],[3030,3033],[3297,3300],[3297,3300],[3668,3671],[3668,3671],[3761,3764],[3761,3764],[3872,3875],[3872,3875],[3907,3910],[3907,3910],[4182,4185],[4182,4185],[4275,4278],[4275,4278],[4386,4389],[4386,4389],[4421,4424],[4421,4424],[4916,4919],[4916,4919],[4951,4954],[4951,4954],[633,636],[633,636],[749,752],[749,752],[1174,1177],[1174,1177],[1209,1212],[1209,1212],[1751,1754],[1751,1754],[1844,1847],[1844,1847],[1978,1981],[1978,1981],[2013,2016],[2013,2016],[2599,2602],[2599,2602],[2692,2695],[2692,2695],[2826,2829],[2826,2829],[2861,2864],[2861,2864],[3445,3448],[3445,3448],[3689,3692],[3689,3692],[3724,3727],[3724,3727],[3888,3891],[3888,3891],[518,521],[518,521],[847,850],[847,850],[1248,1251],[1248,1251],[1576,1579],[1576,1579],[1878,1881],[1878,1881],[2207,2210],[2207,2210],[2493,2496],[2493,2496],[2678,2681],[2678,2681],[2748,2751],[2748,2751],[3072,3075],[3072,3075],[3268,3271],[3268,3271],[1027,1030],[1027,1030],[1120,1123],[1120,1123],[1272,1275],[1272,1275],[1435,1438],[1435,1438],[1638,1641],[1638,1641],[1731,1734],[1731,1734],[1864,1867],[1864,1867],[2084,2087],[2084,2087],[2687,2690],[2687,2690],[2780,2783],[2780,2783],[2913,2916],[2913,2916],[3121,3124],[3121,3124],[3564,3567],[3564,3567],[3743,3746],[3743,3746],[4166,4169],[4166,4169],[4201,4204],[4201,4204],[4419,4422],[4419,4422],[4535,4538],[4535,4538],[4728,4731],[4728,4731],[4763,4766],[4763,4766],[5368,5371],[5368,5371],[5403,5406],[5403,5406],[6881,6884],[6881,6884],[7044,7047],[7044,7047],[7547,7550],[7547,7550],[7640,7643],[7640,7643],[7769,7772],[7769,7772],[7968,7971],[7968,7971],[8234,8237],[8234,8237],[8327,8330],[8327,8330],[8645,8648],[8645,8648],[8841,8844],[8841,8844],[1219,1222],[1219,1222],[1254,1257],[1254,1257],[1548,1551],[1548,1551],[1668,1671],[1668,1671],[1869,1872],[1869,1872],[1904,1907],[1904,1907],[2306,2309],[2306,2309],[2399,2402],[2399,2402],[2552,2555],[2552,2555],[2587,2590],[2587,2590],[2930,2933],[2930,2933],[3023,3026],[3023,3026],[3180,3183],[3180,3183],[3215,3218],[3215,3218],[3696,3699],[3696,3699],[3865,3868],[3865,3868],[3900,3903],[3900,3903],[4379,4382],[4379,4382],[4414,4417],[4414,4417],[4229,4232],[4229,4232],[4617,4620],[4617,4620],[2472,2475],[2472,2475],[2759,2762],[2759,2762],[3022,3025],[3022,3025],[3307,3310],[3307,3310],[3729,3732],[3729,3732],[4010,4013],[4010,4013],[4154,4157],[4154,4157],[4339,4342],[4339,4342],[4618,4621],[4618,4621],[4762,4765],[4762,4765],[4941,4944],[4941,4944],[5228,5231],[5228,5231],[5618,5621],[5618,5621],[5924,5927],[5924,5927],[6275,6278],[6275,6278],[6558,6561],[6558,6561],[1663,1666],[1663,1666],[1825,1828],[1825,1828],[2220,2223],[2220,2223],[2393,2396],[2393,2396],[2661,2664],[2661,2664],[2777,2780],[2777,2780],[2919,2922],[2919,2922],[3105,3108],[3105,3108],[3591,3594],[3591,3594],[3785,3788],[3785,3788],[4218,4221],[4218,4221],[4377,4380],[4377,4380],[4752,4755],[4752,4755],[4919,4922],[4919,4922],[5366,5369],[5366,5369],[5535,5538],[5535,5538],[5715,5718],[5715,5718],[5808,5811],[5808,5811],[5926,5929],[5926,5929],[6122,6125],[6122,6125],[6588,6591],[6588,6591],[6802,6805],[6802,6805],[10092,10095],[10092,10095],[1241,1244],[1241,1244],[1276,1279],[1276,1279],[1640,1643],[1640,1643],[1749,1752],[1749,1752],[2121,2124],[2121,2124],[2156,2159],[2156,2159],[2648,2651],[2648,2651],[2662,2665],[2662,2665],[2697,2700],[2697,2700],[3005,3008],[3005,3008],[3137,3140],[3137,3140],[3172,3175],[3172,3175],[6724,6727],[6724,6727],[13144,13147],[13144,13147],[4608,4611],[4608,4611],[1005,1008],[1005,1008],[1121,1124],[1121,1124],[1288,1291],[1288,1291],[1369,1372],[1369,1372],[1792,1795],[1792,1795],[1885,1888],[1885,1888],[2015,2018],[2015,2018],[2050,2053],[2050,2053],[2593,2596],[2593,2596],[2628,2631],[2628,2631],[3162,3165],[3162,3165],[3322,3325],[3322,3325],[3841,3844],[3841,3844],[3940,3943],[3940,3943],[4391,4394],[4391,4394],[4426,4429],[4426,4429],[1425,1428],[1425,1428],[1613,1616],[1613,1616],[2071,2074],[2071,2074],[2266,2269],[2266,2269],[2864,2867],[2864,2867],[2956,2959],[2956,2959],[3133,3136],[3133,3136],[3318,3321],[3318,3321],[3924,3927],[3924,3927],[4092,4095],[4092,4095],[4529,4532],[4529,4532],[4694,4697],[4694,4697],[5085,5088],[5085,5088],[5245,5248],[5245,5248],[5485,5488],[5485,5488],[5577,5580],[5577,5580],[5697,5700],[5697,5700],[5871,5874],[5871,5874],[1169,1172],[1169,1172],[1204,1207],[1204,1207],[1580,1583],[1580,1583],[1677,1680],[1677,1680],[1893,1896],[1893,1896],[1986,1989],[1986,1989],[2138,2141],[2138,2141],[2173,2176],[2173,2176],[2698,2701],[2698,2701],[2790,2793],[2790,2793],[2989,2992],[2989,2992],[3024,3027],[3024,3027],[3500,3503],[3500,3503],[3632,3635],[3632,3635],[3667,3670],[3667,3670],[3952,3955],[3952,3955],[4045,4048],[4045,4048],[4192,4195],[4192,4195],[4227,4230],[4227,4230],[1639,1642],[1639,1642],[1796,1799],[1796,1799],[1969,1972],[1969,1972],[2343,2346],[2343,2346],[2508,2511],[2508,2511],[2813,2816],[2813,2816],[2940,2943],[2940,2943],[3148,3151],[3148,3151],[3547,3550],[3547,3550],[3674,3677],[3674,3677],[3918,3921],[3918,3921],[4316,4319],[4316,4319],[4453,4456],[4453,4456],[4648,4651],[4648,4651],[5108,5111],[5108,5111],[5324,5327],[5324,5327],[5906,5909],[5906,5909],[6075,6078],[6075,6078],[630,633],[630,633],[723,726],[723,726],[873,876],[873,876],[908,911],[908,911],[1234,1237],[1234,1237],[1327,1330],[1327,1330],[1461,1464],[1461,1464],[1496,1499],[1496,1499],[1939,1942],[1939,1942],[2032,2035],[2032,2035],[2197,2200],[2197,2200],[2232,2235],[2232,2235],[2714,2717],[2714,2717],[2807,2810],[2807,2810],[2962,2965],[2962,2965],[2997,3000],[2997,3000],[3432,3435],[3432,3435],[3548,3551],[3548,3551],[3718,3721],[3718,3721],[3753,3756],[3753,3756],[4320,4323],[4320,4323],[4355,4358],[4355,4358],[1104,1107],[1104,1107],[1139,1142],[1139,1142],[1358,1361],[1358,1361],[1474,1477],[1474,1477],[1638,1641],[1638,1641],[1673,1676],[1673,1676],[1438,1441],[1438,1441],[1594,1597],[1594,1597],[1999,2002],[1999,2002],[2175,2178],[2175,2178],[2555,2558],[2555,2558],[2720,2723],[2720,2723],[3089,3092],[3089,3092],[3221,3224],[3221,3224],[3423,3426],[3423,3426],[3703,3706],[3703,3706],[3889,3892],[3889,3892],[3938,3941],[3938,3941],[4109,4112],[4109,4112],[4347,4350],[4347,4350],[4799,4802],[4799,4802],[4956,4959],[4956,4959],[5148,5151],[5148,5151],[5570,5573],[5570,5573],[5840,5843],[5840,5843],[5922,5925],[5922,5925],[1060,1063],[1060,1063],[1152,1155],[1152,1155],[1364,1367],[1364,1367],[1544,1547],[1544,1547],[2031,2034],[2031,2034],[2235,2238],[2235,2238],[2731,2734],[2731,2734],[2766,2769],[2766,2769],[3173,3176],[3173,3176],[3208,3211],[3208,3211],[3419,3422],[3419,3422],[3539,3542],[3539,3542],[3736,3739],[3736,3739],[3771,3774],[3771,3774],[4309,4312],[4309,4312],[4344,4347],[4344,4347],[2404,2407],[2404,2407],[4094,4097],[4094,4097],[4816,4819],[4816,4819],[6386,6389],[6386,6389],[6945,6948],[6945,6948],[8122,8125],[8122,8125],[2755,2758],[2755,2758],[4576,4579],[4576,4579],[4971,4974],[4971,4974],[5335,5338],[5335,5338],[1658,1661],[1658,1661],[1859,1862],[1859,1862],[2034,2037],[2034,2037],[2097,2100],[2097,2100],[2333,2336],[2333,2336],[2534,2537],[2534,2537],[2708,2711],[2708,2711],[2927,2930],[2927,2930],[3127,3130],[3127,3130],[3499,3502],[3499,3502],[3707,3710],[3707,3710],[4051,4054],[4051,4054],[4259,4262],[4259,4262],[4620,4623],[4620,4623],[4821,4824],[4821,4824],[9054,9057],[9054,9057],[9395,9398],[9395,9398],[10154,10157],[10154,10157],[10393,10396],[10393,10396],[10468,10471],[10468,10471],[1190,1193],[1190,1193],[1225,1228],[1225,1228],[1636,1639],[1636,1639],[1671,1674],[1671,1674],[2064,2067],[2064,2067],[2099,2102],[2099,2102],[2503,2506],[2503,2506],[2538,2541],[2538,2541],[2776,2779],[2776,2779],[2896,2899],[2896,2899],[3071,3074],[3071,3074],[3106,3109],[3106,3109],[3519,3522],[3519,3522],[3612,3615],[3612,3615],[3742,3745],[3742,3745],[3777,3780],[3777,3780],[1597,1600],[1597,1600],[850,853],[850,853],[885,888],[885,888],[1404,1407],[1404,1407],[1439,1442],[1439,1442],[1763,1766],[1763,1766],[1897,1900],[1897,1900],[1932,1935],[1932,1935],[2326,2329],[2326,2329],[2460,2463],[2460,2463],[2495,2498],[2495,2498],[2957,2960],[2957,2960],[2992,2995],[2992,2995],[2525,2528],[2525,2528],[2807,2810],[2807,2810],[3086,3089],[3086,3089],[3358,3361],[3358,3361],[3814,3817],[3814,3817],[4103,4106],[4103,4106],[4588,4591],[4588,4591],[4879,4882],[4879,4882],[5181,5184],[5181,5184],[5471,5474],[5471,5474],[5932,5935],[5932,5935],[6011,6014],[6011,6014],[6285,6288],[6285,6288],[1817,1820],[1817,1820],[1973,1976],[1973,1976],[2386,2389],[2386,2389],[2545,2548],[2545,2548],[2886,2889],[2886,2889],[3050,3053],[3050,3053],[3332,3335],[3332,3335],[3424,3427],[3424,3427],[3542,3545],[3542,3545],[3712,3715],[3712,3715],[4139,4142],[4139,4142],[4232,4235],[4232,4235],[4366,4369],[4366,4369],[4559,4562],[4559,4562],[5067,5070],[5067,5070],[5288,5291],[5288,5291],[5794,5797],[5794,5797],[6009,6012],[6009,6012],[6366,6369],[6366,6369],[6459,6462],[6459,6462],[6599,6602],[6599,6602],[6849,6852],[6849,6852],[1757,1760],[1757,1760],[2010,2013],[2010,2013],[2286,2289],[2286,2289],[2554,2557],[2554,2557],[2813,2816],[2813,2816],[3066,3069],[3066,3069],[3611,3614],[3611,3614],[3868,3871],[3868,3871],[4251,4254],[4251,4254],[4541,4544],[4541,4544],[4863,4866],[4863,4866],[4987,4990],[4987,4990],[5264,5267],[5264,5267],[1008,1011],[1008,1011],[1124,1127],[1124,1127],[1281,1284],[1281,1284],[1316,1319],[1316,1319],[1746,1749],[1746,1749],[1838,1841],[1838,1841],[1992,1995],[1992,1995],[2027,2030],[2027,2030],[2561,2564],[2561,2564],[2596,2599],[2596,2599],[3015,3018],[3015,3018],[3050,3053],[3050,3053],[3443,3446],[3443,3446],[3478,3481],[3478,3481],[3679,3682],[3679,3682],[3772,3775],[3772,3775],[3921,3924],[3921,3924],[3956,3959],[3956,3959],[4415,4418],[4415,4418],[4561,4564],[4561,4564],[4596,4599],[4596,4599],[786,789],[786,789],[821,824],[821,824],[1015,1018],[1015,1018],[1108,1111],[1108,1111],[1256,1259],[1256,1259],[1291,1294],[1291,1294],[1754,1757],[1754,1757],[1888,1891],[1888,1891],[1923,1926],[1923,1926],[2213,2216],[2213,2216],[2329,2332],[2329,2332],[2486,2489],[2486,2489],[2521,2524],[2521,2524],[3114,3117],[3114,3117],[3149,3152],[3149,3152],[3566,3569],[3566,3569],[3601,3604],[3601,3604],[1369,1372],[1369,1372],[1404,1407],[1404,1407],[1860,1863],[1860,1863],[1895,1898],[1895,1898],[2347,2350],[2347,2350],[2382,2385],[2382,2385],[1046,1049],[1046,1049],[1138,1141],[1138,1141],[1315,1318],[1315,1318],[1350,1353],[1350,1353],[1700,1703],[1700,1703],[1793,1796],[1793,1796],[1960,1963],[1960,1963],[1995,1998],[1995,1998],[2437,2440],[2437,2440],[2530,2533],[2530,2533],[2670,2673],[2670,2673],[2705,2708],[2705,2708],[3343,3346],[3343,3346],[3378,3381],[3378,3381],[3799,3802],[3799,3802],[3917,3920],[3917,3920],[3413,3416],[3413,3416],[3661,3664],[3661,3664],[3982,3985],[3982,3985],[4207,4210],[4207,4210],[4534,4537],[4534,4537],[4759,4762],[4759,4762],[5068,5071],[5068,5071],[5304,5307],[5304,5307],[5572,5575],[5572,5575],[5806,5809],[5806,5809],[6187,6190],[6187,6190],[6427,6430],[6427,6430],[6764,6767],[6764,6767],[6956,6959],[6956,6959],[7211,7214],[7211,7214],[7319,7322],[7319,7322],[7369,7372],[7369,7372],[1511,1514],[1511,1514],[1673,1676],[1673,1676],[2061,2064],[2061,2064],[2231,2234],[2231,2234],[2490,2493],[2490,2493],[2583,2586],[2583,2586],[2706,2709],[2706,2709],[3027,3030],[3027,3030],[3507,3510],[3507,3510],[3847,3850],[3847,3850],[4128,4131],[4128,4131],[4244,4247],[4244,4247],[4390,4393],[4390,4393],[4570,4573],[4570,4573],[4958,4961],[4958,4961],[5090,5093],[5090,5093],[5297,5300],[5297,5300],[5564,5567],[5564,5567],[5680,5683],[5680,5683],[5851,5854],[5851,5854],[6041,6044],[6041,6044],[6968,6971],[6968,6971],[7039,7042],[7039,7042],[1785,1788],[1785,1788],[4756,4759],[4756,4759],[1151,1154],[1151,1154],[2410,2413],[2410,2413],[3339,3342],[3339,3342],[1577,1580],[1577,1580],[2135,2138],[2135,2138],[2894,2897],[2894,2897],[5729,5732],[5729,5732],[6269,6272],[6269,6272],[9492,9495],[9492,9495],[4336,4339],[4336,4339],[4381,4384],[4381,4384],[4435,4438],[4435,4438],[4491,4494],[4491,4494],[5058,5061],[5058,5061],[5097,5100],[5097,5100],[5153,5156],[5153,5156],[2507,2510],[2507,2510],[2640,2643],[2640,2643],[2795,2798],[2795,2798],[2938,2941],[2938,2941],[2971,2974],[2971,2974],[3020,3023],[3020,3023],[3895,3898],[3895,3898],[3943,3946],[3943,3946],[4106,4109],[4106,4109],[4186,4189],[4186,4189],[4269,4272],[4269,4272],[4364,4367],[4364,4367],[4562,4565],[4562,4565],[4671,4674],[4671,4674],[4751,4754],[4751,4754],[4834,4837],[4834,4837],[1852,1855],[1852,1855],[3133,3136],[3133,3136],[6678,6681],[6678,6681],[7577,7580],[7577,7580],[8678,8681],[8678,8681],[10132,10135],[10132,10135],[4190,4193],[4190,4193],[6556,6559],[6556,6559],[6720,6723],[6720,6723],[7229,7232],[7229,7232],[8340,8343],[8340,8343],[739,742],[739,742],[7855,7858],[7855,7858],[3387,3390],[3387,3390],[6816,6819],[6816,6819],[9103,9106],[9103,9106],[2652,2655],[2652,2655],[2945,2948],[2945,2948],[4222,4225],[4222,4225],[4190,4193],[4190,4193],[4249,4252],[4249,4252],[4286,4289],[4286,4289],[4377,4380],[4377,4380],[4684,4687],[4684,4687],[5260,5263],[5260,5263],[5956,5959],[5956,5959],[6773,6776],[6773,6776],[6848,6851],[6848,6851],[7392,7395],[7392,7395],[7951,7954],[7951,7954],[9087,9090],[9087,9090],[9161,9164],[9161,9164],[12691,12694],[12691,12694],[13722,13725],[13722,13725],[14780,14783],[14780,14783],[14842,14845],[14842,14845],[14904,14907],[14904,14907],[2382,2385],[2382,2385],[3096,3099],[3096,3099],[3604,3607],[3604,3607],[4247,4250],[4247,4250],[4923,4926],[4923,4926],[5131,5134],[5131,5134],[5670,5673],[5670,5673],[6543,6546],[6543,6546],[7567,7570],[7567,7570],[7627,7630],[7627,7630],[2127,2130],[2127,2130],[2166,2169],[2166,2169],[2176,2179],[2176,2179],[2243,2246],[2243,2246],[2253,2256],[2253,2256],[2321,2324],[2321,2324],[2331,2334],[2331,2334],[2400,2403],[2400,2403],[2410,2413],[2410,2413],[2509,2512],[2509,2512],[3401,3404],[3401,3404],[4209,4212],[4209,4212],[4667,4670],[4667,4670],[8467,8470],[8467,8470],[8689,8692],[8689,8692],[8704,8707],[8704,8707],[9592,9595],[9592,9595],[9628,9631],[9628,9631],[10218,10221],[10218,10221],[10233,10236],[10233,10236],[10247,10250],[10247,10250],[13206,13209],[13206,13209],[13567,13570],[13567,13570],[13582,13585],[13582,13585],[13596,13599],[13596,13599],[14268,14271],[14268,14271],[15205,15208],[15205,15208],[15220,15223],[15220,15223],[15502,15505],[15502,15505],[15772,15775],[15772,15775],[16192,16195],[16192,16195],[16207,16210],[16207,16210],[16483,16486],[16483,16486],[18208,18211],[18208,18211],[18614,18617],[18614,18617],[18629,18632],[18629,18632],[18823,18826],[18823,18826],[19094,19097],[19094,19097],[19437,19440],[19437,19440],[19452,19455],[19452,19455],[19646,19649],[19646,19649],[19922,19925],[19922,19925],[20132,20135],[20132,20135],[20147,20150],[20147,20150],[20327,20330],[20327,20330],[20514,20517],[20514,20517],[21077,21080],[21077,21080],[21092,21095],[21092,21095],[21286,21289],[21286,21289],[22280,22283],[22280,22283],[22423,22426],[22423,22426],[22438,22441],[22438,22441],[22639,22642],[22639,22642],[23059,23062],[23059,23062],[23170,23173],[23170,23173],[23185,23188],[23185,23188],[23365,23368],[23365,23368],[23562,23565],[23562,23565],[23785,23788],[23785,23788],[23800,23803],[23800,23803],[24006,24009],[24006,24009],[24257,24260],[24257,24260],[24512,24515],[24512,24515],[24527,24530],[24527,24530],[24877,24880],[24877,24880],[25450,25453],[25450,25453],[26046,26049],[26046,26049],[26061,26064],[26061,26064],[26074,26077],[26074,26077],[26408,26411],[26408,26411],[27564,27567],[27564,27567],[27579,27582],[27579,27582],[27788,27791],[27788,27791],[27864,27867],[27864,27867],[30791,30794],[30791,30794],[31137,31140],[31137,31140],[31152,31155],[31152,31155],[31346,31349],[31346,31349],[31599,31602],[31599,31602],[32494,32497],[32494,32497],[32509,32512],[32509,32512],[32703,32706],[32703,32706],[34274,34277],[34274,34277],[34842,34845],[34842,34845],[34933,34936],[34933,34936],[35209,35212],[35209,35212],[35224,35227],[35224,35227],[35718,35721],[35718,35721],[36472,36475],[36472,36475],[36718,36721],[36718,36721],[36998,37001],[36998,37001],[37013,37016],[37013,37016],[37655,37658],[37655,37658],[38236,38239],[38236,38239],[38251,38254],[38251,38254],[38709,38712],[38709,38712],[38785,38788],[38785,38788],[39518,39521],[39518,39521],[39594,39597],[39594,39597],[40392,40395],[40392,40395],[40468,40471],[40468,40471],[40960,40963],[40960,40963],[41224,41227],[41224,41227],[41239,41242],[41239,41242],[41733,41736],[41733,41736],[42337,42340],[42337,42340],[42352,42355],[42352,42355],[42897,42900],[42897,42900],[42973,42976],[42973,42976],[43260,43263],[43260,43263],[43567,43570],[43567,43570],[43582,43585],[43582,43585],[44062,44065],[44062,44065],[44138,44141],[44138,44141],[44502,44505],[44502,44505],[45076,45079],[45076,45079],[45091,45094],[45091,45094],[45390,45393],[45390,45393],[45700,45703],[45700,45703],[46325,46328],[46325,46328],[46340,46343],[46340,46343],[46639,46642],[46639,46642],[47065,47068],[47065,47068],[47429,47432],[47429,47432],[47444,47447],[47444,47447],[47736,47739],[47736,47739],[47812,47815],[47812,47815],[48078,48081],[48078,48081],[48486,48489],[48486,48489],[48501,48504],[48501,48504],[48514,48517],[48514,48517],[49183,49186],[49183,49186],[49259,49262],[49259,49262],[49537,49540],[49537,49540],[49769,49772],[49769,49772],[49784,49787],[49784,49787],[50337,50340],[50337,50340],[50637,50640],[50637,50640],[50878,50881],[50878,50881],[50893,50896],[50893,50896],[51528,51531],[51528,51531],[51604,51607],[51604,51607],[51939,51942],[51939,51942],[52228,52231],[52228,52231],[52243,52246],[52243,52246],[52437,52440],[52437,52440],[52881,52884],[52881,52884],[53152,53155],[53152,53155],[53167,53170],[53167,53170],[53347,53350],[53347,53350],[53608,53611],[53608,53611],[54025,54028],[54025,54028],[54040,54043],[54040,54043],[54318,54321],[54318,54321],[55087,55090],[55087,55090],[55363,55366],[55363,55366],[55378,55381],[55378,55381],[55558,55561],[55558,55561],[55799,55802],[55799,55802],[56055,56058],[56055,56058],[56070,56073],[56070,56073],[56250,56253],[56250,56253],[56623,56626],[56623,56626],[56951,56954],[56951,56954],[56966,56969],[56966,56969],[57146,57149],[57146,57149],[58236,58239],[58236,58239],[58979,58982],[58979,58982],[58994,58997],[58994,58997],[59174,59177],[59174,59177],[62492,62495],[62492,62495],[62916,62919],[62916,62919],[62931,62934],[62931,62934],[63111,63114],[63111,63114],[64534,64537],[64534,64537],[64765,64768],[64765,64768],[65665,65668],[65665,65668],[66165,66168],[66165,66168],[66180,66183],[66180,66183],[66360,66363],[66360,66363],[66908,66911],[66908,66911],[67337,67340],[67337,67340],[67352,67355],[67352,67355],[67532,67535],[67532,67535],[68143,68146],[68143,68146],[68253,68256],[68253,68256],[68268,68271],[68268,68271],[68455,68458],[68455,68458],[68628,68631],[68628,68631],[68739,68742],[68739,68742],[68754,68757],[68754,68757],[68939,68942],[68939,68942],[69552,69555],[69552,69555],[69628,69631],[69628,69631],[70407,70410],[70407,70410],[70726,70729],[70726,70729],[71209,71212],[71209,71212],[71224,71227],[71224,71227],[71404,71407],[71404,71407],[73297,73300],[73297,73300],[73312,73315],[73312,73315],[73325,73328],[73325,73328],[73577,73580],[73577,73580],[74063,74066],[74063,74066],[74340,74343],[74340,74343],[74355,74358],[74355,74358],[74535,74538],[74535,74538],[74791,74794],[74791,74794],[75086,75089],[75086,75089],[75101,75104],[75101,75104],[75281,75284],[75281,75284],[75864,75867],[75864,75867],[75990,75993],[75990,75993],[76762,76765],[76762,76765],[77197,77200],[77197,77200],[77212,77215],[77212,77215],[77479,77482],[77479,77482],[77946,77949],[77946,77949],[78248,78251],[78248,78251],[78263,78266],[78263,78266],[78430,78433],[78430,78433],[78822,78825],[78822,78825],[79195,79198],[79195,79198],[79210,79213],[79210,79213],[79390,79393],[79390,79393],[79606,79609],[79606,79609],[80079,80082],[80079,80082],[80094,80097],[80094,80097],[80261,80264],[80261,80264],[80878,80881],[80878,80881],[81365,81368],[81365,81368],[81380,81383],[81380,81383],[81951,81954],[81951,81954],[82027,82030],[82027,82030],[83210,83213],[83210,83213],[84361,84364],[84361,84364],[85241,85244],[85241,85244],[85974,85977],[85974,85977],[86177,86180],[86177,86180],[86974,86977],[86974,86977],[87239,87242],[87239,87242],[87570,87573],[87570,87573],[87585,87588],[87585,87588],[87852,87855],[87852,87855],[88086,88089],[88086,88089],[88412,88415],[88412,88415],[88427,88430],[88427,88430],[88949,88952],[88949,88952],[89724,89727],[89724,89727],[89800,89803],[89800,89803],[90703,90706],[90703,90706],[90779,90782],[90779,90782],[91084,91087],[91084,91087],[91358,91361],[91358,91361],[91373,91376],[91373,91376],[92067,92070],[92067,92070],[92143,92146],[92143,92146],[92580,92583],[92580,92583],[93123,93126],[93123,93126],[93138,93141],[93138,93141],[93730,93733],[93730,93733],[93806,93809],[93806,93809],[94099,94102],[94099,94102],[94358,94361],[94358,94361],[94373,94376],[94373,94376],[94828,94831],[94828,94831],[94904,94907],[94904,94907],[3739,3742],[3739,3742],[1364,1367],[1364,1367],[1374,1377],[1374,1377],[1436,1439],[1436,1439],[1446,1449],[1446,1449],[1509,1512],[1509,1512],[1519,1522],[1519,1522],[1583,1586],[1583,1586],[1593,1596],[1593,1596],[1896,1899],[1896,1899],[5073,5076],[5073,5076],[8018,8021],[8018,8021],[11006,11009],[11006,11009],[1263,1266],[1263,1266],[1302,1305],[1302,1305],[1312,1315],[1312,1315],[1379,1382],[1379,1382],[1389,1392],[1389,1392],[1457,1460],[1457,1460],[1467,1470],[1467,1470],[1536,1539],[1536,1539],[1546,1549],[1546,1549],[1645,1648],[1645,1648],[2470,2473],[2470,2473],[3597,3600],[3597,3600],[4127,4130],[4127,4130],[4248,4251],[4248,4251],[5537,5540],[5537,5540],[6162,6165],[6162,6165],[6283,6286],[6283,6286],[1417,1420],[1417,1420],[1456,1459],[1456,1459],[1466,1469],[1466,1469],[1533,1536],[1533,1536],[1543,1546],[1543,1546],[1611,1614],[1611,1614],[1621,1624],[1621,1624],[1690,1693],[1690,1693],[1700,1703],[1700,1703],[1799,1802],[1799,1802],[2443,2446],[2443,2446],[3748,3751],[3748,3751],[4533,4536],[4533,4536],[5369,5372],[5369,5372],[6111,6114],[6111,6114],[7518,7521],[7518,7521],[8479,8482],[8479,8482],[9245,9248],[9245,9248],[10093,10096],[10093,10096],[11068,11071],[11068,11071],[11890,11893],[11890,11893],[13256,13259],[13256,13259],[14412,14415],[14412,14415],[15690,15693],[15690,15693],[16957,16960],[16957,16960],[17985,17988],[17985,17988],[19398,19401],[19398,19401],[20364,20367],[20364,20367],[21299,21302],[21299,21302],[22370,22373],[22370,22373],[23971,23974],[23971,23974],[24699,24702],[24699,24702],[26166,26169],[26166,26169],[1069,1072],[1069,1072],[1108,1111],[1108,1111],[1118,1121],[1118,1121],[1185,1188],[1185,1188],[1195,1198],[1195,1198],[1263,1266],[1263,1266],[1273,1276],[1273,1276],[1342,1345],[1342,1345],[1352,1355],[1352,1355],[14973,14976],[14973,14976],[15317,15320],[15317,15320],[16224,16227],[16224,16227],[16462,16465],[16462,16465],[17230,17233],[17230,17233],[17600,17603],[17600,17603],[18532,18535],[18532,18535],[18887,18890],[18887,18890],[2631,2634],[2631,2634],[2878,2881],[2878,2881],[3889,3892],[3889,3892],[5350,5353],[5350,5353],[6402,6405],[6402,6405],[7139,7142],[7139,7142],[8910,8913],[8910,8913],[10460,10463],[10460,10463],[11560,11563],[11560,11563],[13522,13525],[13522,13525],[1784,1787],[1784,1787],[2706,2709],[2706,2709],[3601,3604],[3601,3604],[4453,4456],[4453,4456],[913,916],[913,916],[1442,1445],[1442,1445],[1453,1456],[1453,1456],[2009,2012],[2009,2012],[7147,7150],[7147,7150],[7243,7246],[7243,7246],[7341,7344],[7341,7344],[7455,7458],[7455,7458],[7569,7572],[7569,7572],[1212,1215],[1212,1215],[1930,1933],[1930,1933],[3084,3087],[3084,3087],[2533,2536],[2533,2536],[2705,2708],[2705,2708],[2823,2826],[2823,2826],[3005,3008],[3005,3008],[3190,3193],[3190,3193],[3393,3396],[3393,3396],[3741,3744],[3741,3744],[3949,3952],[3949,3952],[4077,4080],[4077,4080],[4265,4268],[4265,4268],[4922,4925],[4922,4925],[5331,5334],[5331,5334],[5504,5507],[5504,5507],[5786,5789],[5786,5789],[6158,6161],[6158,6161],[6974,6977],[6974,6977],[1695,1698],[1695,1698],[3552,3555],[3552,3555],[4048,4051],[4048,4051],[4751,4754],[4751,4754],[4975,4978],[4975,4978],[4989,4992],[4989,4992],[5904,5907],[5904,5907],[5927,5930],[5927,5930],[6063,6066],[6063,6066],[6936,6939],[6936,6939],[6964,6967],[6964,6967],[7709,7712],[7709,7712],[11872,11875],[11872,11875],[11891,11894],[11891,11894],[1029,1032],[1029,1032],[1756,1759],[1756,1759],[2732,2735],[2732,2735],[2814,2817],[2814,2817],[2844,2847],[2844,2847],[2040,2043],[2040,2043],[3225,3228],[3225,3228],[4206,4209],[4206,4209],[5519,5522],[5519,5522],[1031,1034],[1031,1034],[2662,2665],[2662,2665],[1347,1350],[1347,1350],[4964,4967],[4964,4967],[5555,5558],[5555,5558],[6046,6049],[6046,6049],[6506,6509],[6506,6509],[7092,7095],[7092,7095],[7510,7513],[7510,7513],[14266,14269],[14266,14269],[14546,14549],[14546,14549],[690,693],[690,693],[694,697],[694,697],[684,687],[684,687],[667,670],[667,670],[1725,1728],[1725,1728],[3680,3683],[3680,3683],[4142,4145],[4142,4145],[4975,4978],[4975,4978],[5055,5058],[5055,5058],[5135,5138],[5135,5138],[5502,5505],[5502,5505],[5572,5575],[5572,5575],[397,400],[397,400],[446,449],[446,449],[517,520],[517,520],[2623,2626],[2623,2626],[5217,5220],[5217,5220],[2560,2563],[2560,2563],[2599,2602],[2599,2602],[2617,2620],[2617,2620],[2749,2752],[2749,2752],[2768,2771],[2768,2771],[2949,2952],[2949,2952],[2978,2981],[2978,2981],[809,812],[809,812],[858,861],[858,861],[929,932],[929,932],[2047,2050],[2047,2050],[1411,1414],[1411,1414],[5228,5231],[5228,5231],[5273,5276],[5273,5276],[5352,5355],[5352,5355],[1864,1867],[1864,1867],[6953,6956],[6953,6956],[6998,7001],[6998,7001],[7368,7371],[7368,7371],[11525,11528],[11525,11528],[1882,1885],[1882,1885],[2816,2819],[2816,2819],[2916,2919],[2916,2919],[3029,3032],[3029,3032],[3907,3910],[3907,3910],[4007,4010],[4007,4010],[4117,4120],[4117,4120],[4237,4240],[4237,4240],[4355,4358],[4355,4358],[4522,4525],[4522,4525],[6760,6763],[6760,6763],[6890,6893],[6890,6893],[9229,9232],[9229,9232],[9329,9332],[9329,9332],[9439,9442],[9439,9442],[9559,9562],[9559,9562],[9677,9680],[9677,9680],[9844,9847],[9844,9847],[10175,10178],[10175,10178],[10275,10278],[10275,10278],[10385,10388],[10385,10388],[10505,10508],[10505,10508],[10623,10626],[10623,10626],[11168,11171],[11168,11171],[11930,11933],[11930,11933],[12105,12108],[12105,12108],[12117,12120],[12117,12120],[13167,13170],[13167,13170],[13299,13302],[13299,13302],[13557,13560],[13557,13560],[2550,2553],[2550,2553],[2958,2961],[2958,2961],[3165,3168],[3165,3168],[3265,3268],[3265,3268],[3590,3593],[3590,3593],[3797,3800],[3797,3800],[3897,3900],[3897,3900],[696,699],[696,699],[689,692],[689,692],[1162,1165],[1162,1165],[1312,1315],[1312,1315],[7485,7488],[7485,7488],[7673,7676],[7673,7676],[12372,12375],[12372,12375],[23137,23140],[23137,23140],[25517,25520],[25517,25520],[27532,27535],[27532,27535],[31341,31344],[31341,31344],[33684,33687],[33684,33687],[35780,35783],[35780,35783],[38211,38214],[38211,38214],[674,677],[674,677],[667,670],[667,670],[3006,3009],[3006,3009],[455,458],[455,458],[504,507],[504,507],[575,578],[575,578],[1392,1395],[1392,1395],[1463,1466],[1463,1466],[788,791],[788,791],[993,996],[993,996],[676,679],[676,679],[5064,5067],[5064,5067],[6969,6972],[6969,6972],[7198,7201],[7198,7201],[8197,8200],[8197,8200],[9382,9385],[9382,9385],[9397,9400],[9397,9400],[9502,9505],[9502,9505],[9584,9587],[9584,9587],[9671,9674],[9671,9674],[10451,10454],[10451,10454],[10637,10640],[10637,10640],[10911,10914],[10911,10914],[11042,11045],[11042,11045],[11410,11413],[11410,11413],[11495,11498],[11495,11498],[11797,11800],[11797,11800],[11880,11883],[11880,11883],[737,740],[737,740],[4406,4409],[4406,4409],[4479,4482],[4479,4482],[4718,4721],[4718,4721],[8107,8110],[8107,8110],[8458,8461],[8458,8461],[971,974],[971,974],[1041,1044],[1041,1044],[973,976],[973,976],[1902,1905],[1902,1905],[2781,2784],[2781,2784],[4358,4361],[4358,4361],[4861,4864],[4861,4864],[5190,5193],[5190,5193],[5644,5647],[5644,5647],[6029,6032],[6029,6032],[6478,6481],[6478,6481],[670,673],[670,673],[929,932],[929,932],[15393,15396],[15393,15396],[16124,16127],[16124,16127],[16545,16548],[16545,16548],[16722,16725],[16722,16725],[16877,16880],[16877,16880],[17045,17048],[17045,17048],[17195,17198],[17195,17198],[17733,17736],[17733,17736],[18078,18081],[18078,18081],[18093,18096],[18093,18096],[18326,18329],[18326,18329],[18932,18935],[18932,18935],[19157,19160],[19157,19160],[19317,19320],[19317,19320],[20438,20441],[20438,20441],[20587,20590],[20587,20590],[20659,20662],[20659,20662],[20977,20980],[20977,20980],[21085,21088],[21085,21088],[461,464],[461,464],[510,513],[510,513],[581,584],[581,584],[1464,1467],[1464,1467],[1726,1729],[1726,1729],[1772,1775],[1772,1775],[1814,1817],[1814,1817],[2291,2294],[2291,2294],[2493,2496],[2493,2496],[2557,2560],[2557,2560],[3322,3325],[3322,3325],[3386,3389],[3386,3389],[4357,4360],[4357,4360],[4416,4419],[4416,4419],[4440,4443],[4440,4443],[5334,5337],[5334,5337],[1100,1103],[1100,1103],[2306,2309],[2306,2309],[3329,3332],[3329,3332],[4282,4285],[4282,4285],[3844,3847],[3844,3847],[4334,4337],[4334,4337],[4674,4677],[4674,4677],[5092,5095],[5092,5095],[1507,1510],[1507,1510],[771,774],[771,774],[3042,3045],[3042,3045],[3241,3244],[3241,3244],[725,728],[725,728],[684,687],[684,687],[1468,1471],[1468,1471],[2131,2134],[2131,2134],[2823,2826],[2823,2826],[4978,4981],[4978,4981],[5485,5488],[5485,5488],[5796,5799],[5796,5799],[6400,6403],[6400,6403],[6968,6971],[6968,6971],[15609,15612],[15609,15612],[15669,15672],[15669,15672],[2479,2482],[2479,2482],[828,831],[828,831],[1507,1510],[1507,1510],[2154,2157],[2154,2157],[3096,3099],[3096,3099],[4059,4062],[4059,4062],[4676,4679],[4676,4679],[5360,5363],[5360,5363],[6223,6226],[6223,6226],[1226,1229],[1226,1229],[2274,2277],[2274,2277],[7331,7334],[7331,7334],[2213,2216],[2213,2216],[2707,2710],[2707,2710],[3234,3237],[3234,3237],[4060,4063],[4060,4063],[4630,4633],[4630,4633],[5068,5071],[5068,5071],[5649,5652],[5649,5652],[6140,6143],[6140,6143],[11222,11225],[11222,11225],[11654,11657],[11654,11657],[12200,12203],[12200,12203],[12718,12721],[12718,12721],[13656,13659],[13656,13659],[14100,14103],[14100,14103],[14204,14207],[14204,14207],[14745,14748],[14745,14748],[15234,15237],[15234,15237],[18777,18780],[18777,18780],[19379,19382],[19379,19382],[274,277],[274,277],[1486,1489],[1486,1489],[1509,1512],[1509,1512],[4970,4973],[4970,4973],[5234,5237],[5234,5237],[5501,5504],[5501,5504],[6644,6647],[6644,6647],[6703,6706],[6703,6706],[6923,6926],[6923,6926],[3005,3008],[3005,3008],[3038,3041],[3038,3041],[3831,3834],[3831,3834],[3842,3845],[3842,3845],[25948,25951],[25948,25951],[25976,25979],[25976,25979],[29974,29977],[29974,29977],[30052,30055],[30052,30055],[30188,30191],[30188,30191],[30266,30269],[30266,30269],[30329,30332],[30329,30332],[30402,30405],[30402,30405],[30475,30478],[30475,30478],[30549,30552],[30549,30552],[31043,31046],[31043,31046],[31114,31117],[31114,31117],[31917,31920],[31917,31920],[31999,32002],[31999,32002],[32250,32253],[32250,32253],[33923,33926],[33923,33926],[33997,34000],[33997,34000],[34445,34448],[34445,34448],[34509,34512],[34509,34512],[34580,34583],[34580,34583],[34820,34823],[34820,34823],[35049,35052],[35049,35052],[35267,35270],[35267,35270],[35435,35438],[35435,35438],[36336,36339],[36336,36339],[36397,36400],[36397,36400],[37447,37450],[37447,37450],[38048,38051],[38048,38051],[38751,38754],[38751,38754],[39648,39651],[39648,39651],[40382,40385],[40382,40385],[40942,40945],[40942,40945],[40980,40983],[40980,40983],[41006,41009],[41006,41009],[41043,41046],[41043,41046],[41073,41076],[41073,41076],[41473,41476],[41473,41476],[41531,41534],[41531,41534],[41593,41596],[41593,41596],[47188,47191],[47188,47191],[47226,47229],[47226,47229],[47295,47298],[47295,47298],[915,918],[915,918],[1003,1006],[1003,1006],[1017,1020],[1017,1020],[1249,1252],[1249,1252],[1262,1265],[1262,1265],[8021,8024],[8021,8024],[8114,8117],[8114,8117],[2679,2682],[2679,2682],[4605,4608],[4605,4608],[7098,7101],[7098,7101],[8584,8587],[8584,8587],[2700,2703],[2700,2703],[4584,4587],[4584,4587],[2274,2277],[2274,2277],[2542,2545],[2542,2545],[3264,3267],[3264,3267],[3532,3535],[3532,3535],[467,470],[467,470],[2216,2219],[2216,2219],[2227,2230],[2227,2230],[2613,2616],[2613,2616],[2926,2929],[2926,2929],[3922,3925],[3922,3925],[4131,4134],[4131,4134],[4142,4145],[4142,4145],[4423,4426],[4423,4426],[4781,4784],[4781,4784],[5396,5399],[5396,5399],[5407,5410],[5407,5410],[5688,5691],[5688,5691],[5960,5963],[5960,5963],[6392,6395],[6392,6395],[6403,6406],[6403,6406],[6684,6687],[6684,6687],[6956,6959],[6956,6959],[7629,7632],[7629,7632],[8056,8059],[8056,8059],[8342,8345],[8342,8345],[8400,8403],[8400,8403],[8770,8773],[8770,8773],[8908,8911],[8908,8911],[9198,9201],[9198,9201],[9348,9351],[9348,9351],[9715,9718],[9715,9718],[10037,10040],[10037,10040],[10322,10325],[10322,10325],[10678,10681],[10678,10681],[10689,10692],[10689,10692],[10970,10973],[10970,10973],[11240,11243],[11240,11243],[11527,11530],[11527,11530],[11767,11770],[11767,11770],[12582,12585],[12582,12585],[14380,14383],[14380,14383],[14391,14394],[14391,14394],[14672,14675],[14672,14675],[14941,14944],[14941,14944],[2091,2094],[2091,2094],[2128,2131],[2128,2131],[2149,2152],[2149,2152],[2213,2216],[2213,2216],[2234,2237],[2234,2237],[2958,2961],[2958,2961],[3008,3011],[3008,3011],[275,278],[275,278],[4577,4580],[4577,4580],[4595,4598],[4595,4598],[5019,5022],[5019,5022],[5037,5040],[5037,5040],[1897,1900],[1897,1900],[5009,5012],[5009,5012],[5897,5900],[5897,5900],[5916,5919],[5916,5919],[8893,8896],[8893,8896],[9011,9014],[9011,9014],[9178,9181],[9178,9181],[10831,10834],[10831,10834],[11501,11504],[11501,11504],[11649,11652],[11649,11652],[14906,14909],[14906,14909],[15638,15641],[15638,15641],[16303,16306],[16303,16306],[16987,16990],[16987,16990],[17561,17564],[17561,17564],[18009,18012],[18009,18012],[18529,18532],[18529,18532],[19093,19096],[19093,19096],[19833,19836],[19833,19836],[20550,20553],[20550,20553],[740,743],[740,743],[916,919],[916,919],[2199,2202],[2199,2202],[2273,2276],[2273,2276],[817,820],[817,820],[893,896],[893,896],[1469,1472],[1469,1472],[827,830],[827,830],[852,855],[852,855],[1270,1273],[1270,1273],[1817,1820],[1817,1820],[2679,2682],[2679,2682],[3359,3362],[3359,3362],[4329,4332],[4329,4332],[6061,6064],[6061,6064],[8467,8470],[8467,8470],[10171,10174],[10171,10174],[1557,1560],[1557,1560],[1966,1969],[1966,1969],[2382,2385],[2382,2385],[2826,2829],[2826,2829],[3256,3259],[3256,3259],[3314,3317],[3314,3317],[3925,3928],[3925,3928],[4338,4341],[4338,4341],[4721,4724],[4721,4724],[1761,1764],[1761,1764],[1931,1934],[1931,1934],[2110,2113],[2110,2113],[3445,3448],[3445,3448],[4531,4534],[4531,4534],[4589,4592],[4589,4592],[2100,2103],[2100,2103],[3680,3683],[3680,3683],[7071,7074],[7071,7074],[7139,7142],[7139,7142],[7658,7661],[7658,7661],[7726,7729],[7726,7729],[8239,8242],[8239,8242],[8315,8318],[8315,8318],[8375,8378],[8375,8378],[8902,8905],[8902,8905],[8916,8919],[8916,8919],[11470,11473],[11470,11473],[11484,11487],[11484,11487],[13257,13260],[13257,13260],[13271,13274],[13271,13274],[19751,19754],[19751,19754],[19765,19768],[19765,19768],[22164,22167],[22164,22167],[22194,22197],[22194,22197],[22679,22682],[22679,22682],[23076,23079],[23076,23079],[8952,8955],[8952,8955],[10052,10055],[10052,10055],[14387,14390],[14387,14390],[3424,3427],[3424,3427],[4688,4691],[4688,4691],[5654,5657],[5654,5657],[6913,6916],[6913,6916],[7903,7906],[7903,7906],[8917,8920],[8917,8920],[10260,10263],[10260,10263],[11755,11758],[11755,11758],[13882,13885],[13882,13885],[15696,15699],[15696,15699],[17527,17530],[17527,17530],[19645,19648],[19645,19648],[21400,21403],[21400,21403],[24901,24904],[24901,24904],[26653,26656],[26653,26656],[28662,28665],[28662,28665],[30349,30352],[30349,30352],[31924,31927],[31924,31927],[32935,32938],[32935,32938],[33828,33831],[33828,33831],[61229,61232],[61229,61232],[72001,72004],[72001,72004],[72657,72660],[72657,72660],[73688,73691],[73688,73691],[79940,79943],[79940,79943],[743,746],[743,746],[1496,1499],[1496,1499],[1854,1857],[1854,1857],[1912,1915],[1912,1915],[1784,1787],[1784,1787],[2322,2325],[2322,2325],[2915,2918],[2915,2918],[1423,1426],[1423,1426],[8096,8099],[8096,8099],[1203,1206],[1203,1206],[4100,4103],[4100,4103],[4191,4194],[4191,4194],[4283,4286],[4283,4286],[4384,4387],[4384,4387],[4475,4478],[4475,4478],[4571,4574],[4571,4574],[5324,5327],[5324,5327],[6037,6040],[6037,6040],[7224,7227],[7224,7227],[7317,7320],[7317,7320],[7642,7645],[7642,7645],[7734,7737],[7734,7737],[1303,1306],[1303,1306],[1884,1887],[1884,1887],[2452,2455],[2452,2455],[3066,3069],[3066,3069],[3616,3619],[3616,3619],[4196,4199],[4196,4199],[4859,4862],[4859,4862],[5729,5732],[5729,5732],[6481,6484],[6481,6484],[7244,7247],[7244,7247],[2903,2906],[2903,2906],[3745,3748],[3745,3748],[3769,3772],[3769,3772],[4582,4585],[4582,4585],[833,836],[833,836],[1169,1172],[1169,1172],[3237,3240],[3237,3240],[4011,4014],[4011,4014],[993,996],[993,996],[1932,1935],[1932,1935],[2513,2516],[2513,2516],[740,743],[740,743],[694,697],[694,697],[1580,1583],[1580,1583],[1224,1227],[1224,1227],[1492,1495],[1492,1495],[1686,1689],[1686,1689],[1874,1877],[1874,1877],[2181,2184],[2181,2184],[2764,2767],[2764,2767],[3364,3367],[3364,3367],[3567,3570],[3567,3570],[3812,3815],[3812,3815],[4124,4127],[4124,4127],[4168,4171],[4168,4171],[4502,4505],[4502,4505],[4825,4828],[4825,4828],[5156,5159],[5156,5159],[5310,5313],[5310,5313],[5371,5374],[5371,5374],[5900,5903],[5900,5903],[6511,6514],[6511,6514],[6693,6696],[6693,6696],[7105,7108],[7105,7108],[7315,7318],[7315,7318],[7392,7395],[7392,7395],[7613,7616],[7613,7616],[7679,7682],[7679,7682],[8027,8030],[8027,8030],[8475,8478],[8475,8478],[9888,9891],[9888,9891],[10197,10200],[10197,10200],[10667,10670],[10667,10670],[10765,10768],[10765,10768],[11060,11063],[11060,11063],[11100,11103],[11100,11103],[11200,11203],[11200,11203],[11420,11423],[11420,11423],[11467,11470],[11467,11470],[11788,11791],[11788,11791],[12349,12352],[12349,12352],[12571,12574],[12571,12574],[12911,12914],[12911,12914],[13233,13236],[13233,13236],[13364,13367],[13364,13367],[13607,13610],[13607,13610],[13882,13885],[13882,13885],[14362,14365],[14362,14365],[14748,14751],[14748,14751],[14879,14882],[14879,14882],[15294,15297],[15294,15297],[15616,15619],[15616,15619],[15747,15750],[15747,15750],[16009,16012],[16009,16012],[16257,16260],[16257,16260],[16388,16391],[16388,16391],[16647,16650],[16647,16650],[16881,16884],[16881,16884],[17013,17016],[17013,17016],[17257,17260],[17257,17260],[17329,17332],[17329,17332],[17576,17579],[17576,17579],[564,567],[564,567],[603,606],[603,606],[617,620],[617,620],[1381,1384],[1381,1384],[2836,2839],[2836,2839],[3617,3620],[3617,3620],[1640,1643],[1640,1643],[2339,2342],[2339,2342],[3175,3178],[3175,3178],[3238,3241],[3238,3241],[3897,3900],[3897,3900],[4542,4545],[4542,4545],[2657,2660],[2657,2660],[3276,3279],[3276,3279],[4149,4152],[4149,4152],[4749,4752],[4749,4752],[1219,1222],[1219,1222],[1238,1241],[1238,1241],[4034,4037],[4034,4037],[4955,4958],[4955,4958],[3535,3538],[3535,3538],[5001,5004],[5001,5004],[6074,6077],[6074,6077],[7704,7707],[7704,7707],[9041,9044],[9041,9044],[10364,10367],[10364,10367],[11870,11873],[11870,11873],[13652,13655],[13652,13655],[15596,15599],[15596,15599],[17238,17241],[17238,17241],[19632,19635],[19632,19635],[21753,21756],[21753,21756],[24104,24107],[24104,24107],[26801,26804],[26801,26804],[28826,28829],[28826,28829],[30976,30979],[30976,30979],[790,793],[790,793],[2828,2831],[2828,2831],[2891,2894],[2891,2894],[4297,4300],[4297,4300],[3326,3329],[3326,3329],[4335,4338],[4335,4338],[6191,6194],[6191,6194],[6552,6555],[6552,6555],[7119,7122],[7119,7122],[8066,8069],[8066,8069],[8276,8279],[8276,8279],[8517,8520],[8517,8520],[8723,8726],[8723,8726],[9789,9792],[9789,9792],[10112,10115],[10112,10115],[10149,10152],[10149,10152],[10467,10470],[10467,10470],[10840,10843],[10840,10843],[11036,11039],[11036,11039],[13092,13095],[13092,13095],[15032,15035],[15032,15035],[15242,15245],[15242,15245],[15978,15981],[15978,15981],[17630,17633],[17630,17633],[19220,19223],[19220,19223],[19964,19967],[19964,19967],[20668,20671],[20668,20671],[21666,21669],[21666,21669],[22771,22774],[22771,22774],[23924,23927],[23924,23927],[26160,26163],[26160,26163],[26674,26677],[26674,26677],[26698,26701],[26698,26701],[27489,27492],[27489,27492],[28311,28314],[28311,28314],[28629,28632],[28629,28632],[29254,29257],[29254,29257],[29586,29589],[29586,29589],[31459,31462],[31459,31462],[31793,31796],[31793,31796],[32119,32122],[32119,32122],[32910,32913],[32910,32913],[33260,33263],[33260,33263],[34096,34099],[34096,34099],[34256,34259],[34256,34259],[34325,34328],[34325,34328],[34394,34397],[34394,34397],[34487,34490],[34487,34490],[34563,34566],[34563,34566],[34636,34639],[34636,34639],[34714,34717],[34714,34717],[35026,35029],[35026,35029],[35574,35577],[35574,35577],[36967,36970],[36967,36970],[38102,38105],[38102,38105],[38240,38243],[38240,38243],[38315,38318],[38315,38318],[38357,38360],[38357,38360],[38406,38409],[38406,38409],[38444,38447],[38444,38447],[38504,38507],[38504,38507],[38563,38566],[38563,38566],[38614,38617],[38614,38617],[38704,38707],[38704,38707],[39553,39556],[39553,39556],[41429,41432],[41429,41432],[43184,43187],[43184,43187],[43874,43877],[43874,43877],[45746,45749],[45746,45749],[47256,47259],[47256,47259],[48250,48253],[48250,48253],[49537,49540],[49537,49540],[50675,50678],[50675,50678],[51428,51431],[51428,51431],[52641,52644],[52641,52644],[52970,52973],[52970,52973],[53725,53728],[53725,53728],[53927,53930],[53927,53930],[55045,55048],[55045,55048],[55906,55909],[55906,55909],[55956,55959],[55956,55959],[56850,56853],[56850,56853],[56900,56903],[56900,56903],[3370,3373],[3370,3373],[3424,3427],[3424,3427],[1302,1305],[1302,1305],[1340,1343],[1340,1343],[1354,1357],[1354,1357],[2118,2121],[2118,2121],[2494,2497],[2494,2497],[2848,2851],[2848,2851],[5208,5211],[5208,5211],[2967,2970],[2967,2970],[3262,3265],[3262,3265],[9048,9051],[9048,9051],[9282,9285],[9282,9285],[9347,9350],[9347,9350],[2507,2510],[2507,2510],[4463,4466],[4463,4466],[19159,19162],[19159,19162],[19903,19906],[19903,19906],[4764,4767],[4764,4767],[2927,2930],[2927,2930],[3682,3685],[3682,3685],[4050,4053],[4050,4053],[4400,4403],[4400,4403],[4637,4640],[4637,4640],[4675,4678],[4675,4678],[4689,4692],[4689,4692],[6532,6535],[6532,6535],[722,725],[722,725],[1399,1402],[1399,1402],[2119,2122],[2119,2122],[2638,2641],[2638,2641],[2393,2396],[2393,2396],[384,387],[384,387],[469,472],[469,472],[775,778],[775,778],[1761,1764],[1761,1764],[2949,2952],[2949,2952],[3025,3028],[3025,3028],[3116,3119],[3116,3119],[3258,3261],[3258,3261],[366,369],[366,369],[2595,2598],[2595,2598],[2646,2649],[2646,2649],[3190,3193],[3190,3193],[3241,3244],[3241,3244],[4160,4163],[4160,4163],[4211,4214],[4211,4214],[1513,1516],[1513,1516],[2664,2667],[2664,2667],[3218,3221],[3218,3221],[4439,4442],[4439,4442],[5497,5500],[5497,5500],[7154,7157],[7154,7157],[8525,8528],[8525,8528],[7162,7165],[7162,7165],[2526,2529],[2526,2529],[4174,4177],[4174,4177],[4221,4224],[4221,4224],[4531,4534],[4531,4534],[945,948],[945,948],[1813,1816],[1813,1816],[2625,2628],[2625,2628],[3335,3338],[3335,3338],[2104,2107],[2104,2107],[2873,2876],[2873,2876],[2936,2939],[2936,2939],[3001,3004],[3001,3004],[4351,4354],[4351,4354],[5383,5386],[5383,5386],[5448,5451],[5448,5451],[2113,2116],[2113,2116],[2273,2276],[2273,2276],[2972,2975],[2972,2975],[4915,4918],[4915,4918],[2244,2247],[2244,2247],[3126,3129],[3126,3129],[3337,3340],[3337,3340],[3365,3368],[3365,3368],[4328,4331],[4328,4331],[4484,4487],[4484,4487],[4531,4534],[4531,4534],[3266,3269],[3266,3269],[3326,3329],[3326,3329],[3401,3404],[3401,3404],[3449,3452],[3449,3452],[4420,4423],[4420,4423],[4483,4486],[4483,4486],[4812,4815],[4812,4815],[12688,12691],[12688,12691],[12751,12754],[12751,12754],[12794,12797],[12794,12797],[12820,12823],[12820,12823],[12877,12880],[12877,12880],[12908,12911],[12908,12911],[13008,13011],[13008,13011],[13085,13088],[13085,13088],[13123,13126],[13123,13126],[13171,13174],[13171,13174],[13185,13188],[13185,13188],[13240,13243],[13240,13243],[13304,13307],[13304,13307],[7894,7897],[7894,7897],[2710,2713],[2710,2713],[2856,2859],[2856,2859],[3076,3079],[3076,3079],[4035,4038],[4035,4038],[4181,4184],[4181,4184],[4384,4387],[4384,4387],[5054,5057],[5054,5057],[5172,5175],[5172,5175],[5779,5782],[5779,5782],[13725,13728],[13725,13728],[603,606],[603,606],[950,953],[950,953],[1340,1343],[1340,1343],[257,260],[257,260],[8648,8651],[8648,8651],[9751,9754],[9751,9754],[948,951],[948,951],[707,710],[707,710],[2297,2300],[2297,2300],[3098,3101],[3098,3101],[3220,3223],[3220,3223],[4079,4082],[4079,4082],[4202,4205],[4202,4205],[779,782],[779,782],[2834,2837],[2834,2837],[5123,5126],[5123,5126],[6468,6471],[6468,6471],[755,758],[755,758],[1375,1378],[1375,1378],[2263,2266],[2263,2266],[5159,5162],[5159,5162],[5714,5717],[5714,5717],[6504,6507],[6504,6507],[7132,7135],[7132,7135],[4045,4048],[4045,4048],[4375,4378],[4375,4378],[4932,4935],[4932,4935],[8384,8387],[8384,8387],[9255,9258],[9255,9258],[10430,10433],[10430,10433],[11463,11466],[11463,11466],[12174,12177],[12174,12177],[13303,13306],[13303,13306],[14928,14931],[14928,14931],[15618,15621],[15618,15621],[16357,16360],[16357,16360],[16898,16901],[16898,16901],[18297,18300],[18297,18300],[18427,18430],[18427,18430],[19202,19205],[19202,19205],[20148,20151],[20148,20151],[21506,21509],[21506,21509],[21561,21564],[21561,21564],[23222,23225],[23222,23225],[23277,23280],[23277,23280],[24162,24165],[24162,24165],[24591,24594],[24591,24594],[25327,25330],[25327,25330],[26076,26079],[26076,26079],[26861,26864],[26861,26864],[27473,27476],[27473,27476],[28588,28591],[28588,28591],[29204,29207],[29204,29207],[30042,30045],[30042,30045],[31035,31038],[31035,31038],[31940,31943],[31940,31943],[33127,33130],[33127,33130],[36088,36091],[36088,36091],[39220,39223],[39220,39223],[40542,40545],[40542,40545],[42518,42521],[42518,42521],[44621,44624],[44621,44624],[45457,45460],[45457,45460],[46029,46032],[46029,46032],[46611,46614],[46611,46614],[47168,47171],[47168,47171],[48225,48228],[48225,48228],[49397,49400],[49397,49400],[50618,50621],[50618,50621],[51862,51865],[51862,51865],[53904,53907],[53904,53907],[55640,55643],[55640,55643],[57059,57062],[57059,57062],[58241,58244],[58241,58244],[59086,59089],[59086,59089],[59781,59784],[59781,59784],[60995,60998],[60995,60998],[62474,62477],[62474,62477],[1723,1726],[1723,1726],[2566,2569],[2566,2569],[4041,4044],[4041,4044],[4124,4127],[4124,4127],[4657,4660],[4657,4660],[5084,5087],[5084,5087],[5559,5562],[5559,5562],[6116,6119],[6116,6119],[6587,6590],[6587,6590],[2445,2448],[2445,2448],[3148,3151],[3148,3151],[3201,3204],[3201,3204],[4066,4069],[4066,4069],[4895,4898],[4895,4898],[5479,5482],[5479,5482],[6238,6241],[6238,6241],[6837,6840],[6837,6840],[7552,7555],[7552,7555],[8366,8369],[8366,8369],[9007,9010],[9007,9010],[10341,10344],[10341,10344],[11583,11586],[11583,11586],[1060,1063],[1060,1063],[1213,1216],[1213,1216],[1224,1227],[1224,1227],[2193,2196],[2193,2196],[3124,3127],[3124,3127],[3717,3720],[3717,3720],[4240,4243],[4240,4243],[8369,8372],[8369,8372],[4458,4461],[4458,4461],[6787,6790],[6787,6790],[8535,8538],[8535,8538],[10443,10446],[10443,10446],[13032,13035],[13032,13035],[15782,15785],[15782,15785],[4430,4433],[4430,4433],[4888,4891],[4888,4891],[5386,5389],[5386,5389],[5774,5777],[5774,5777],[6617,6620],[6617,6620],[6628,6631],[6628,6631],[477,480],[477,480],[9414,9417],[9414,9417],[11066,11069],[11066,11069],[11284,11287],[11284,11287],[12695,12698],[12695,12698],[1803,1806],[1803,1806],[3859,3862],[3859,3862],[8943,8946],[8943,8946],[10066,10069],[10066,10069],[560,563],[560,563],[645,648],[645,648],[842,845],[842,845],[858,861],[858,861],[893,896],[893,896],[909,912],[909,912],[949,952],[949,952],[1085,1088],[1085,1088],[6420,6423],[6420,6423],[7348,7351],[7348,7351],[4202,4205],[4202,4205],[3112,3115],[3112,3115],[5297,5300],[5297,5300],[5522,5525],[5522,5525],[5881,5884],[5881,5884],[6556,6559],[6556,6559],[7291,7294],[7291,7294],[8431,8434],[8431,8434],[11721,11724],[11721,11724],[13325,13328],[13325,13328],[13997,14000],[13997,14000],[14454,14457],[14454,14457],[15824,15827],[15824,15827],[17357,17360],[17357,17360],[18010,18013],[18010,18013],[18937,18940],[18937,18940],[19863,19866],[19863,19866],[20306,20309],[20306,20309],[20550,20553],[20550,20553],[23235,23238],[23235,23238],[23908,23911],[23908,23911],[25137,25140],[25137,25140],[25689,25692],[25689,25692],[5346,5349],[5346,5349],[1656,1659],[1656,1659],[1692,1695],[1692,1695],[1713,1716],[1713,1716],[2319,2322],[2319,2322],[4376,4379],[4376,4379],[4891,4894],[4891,4894],[4990,4993],[4990,4993],[5028,5031],[5028,5031],[5080,5083],[5080,5083],[5134,5137],[5134,5137],[5770,5773],[5770,5773],[6082,6085],[6082,6085],[6120,6123],[6120,6123],[6172,6175],[6172,6175],[6226,6229],[6226,6229],[7208,7211],[7208,7211],[7277,7280],[7277,7280],[7747,7750],[7747,7750],[8413,8416],[8413,8416],[9122,9125],[9122,9125],[9817,9820],[9817,9820],[10969,10972],[10969,10972],[11020,11023],[11020,11023],[11082,11085],[11082,11085],[11617,11620],[11617,11620],[11794,11797],[11794,11797],[11863,11866],[11863,11866],[11915,11918],[11915,11918],[12731,12734],[12731,12734],[12845,12848],[12845,12848],[13039,13042],[13039,13042],[13140,13143],[13140,13143],[13257,13260],[13257,13260],[13327,13330],[13327,13330],[13452,13455],[13452,13455],[13645,13648],[13645,13648],[13713,13716],[13713,13716],[13831,13834],[13831,13834],[13932,13935],[13932,13935],[15549,15552],[15549,15552],[15740,15743],[15740,15743],[15935,15938],[15935,15938],[16005,16008],[16005,16008],[16118,16121],[16118,16121],[16388,16391],[16388,16391],[16456,16459],[16456,16459],[16567,16570],[16567,16570],[16667,16670],[16667,16670],[17085,17088],[17085,17088],[17234,17237],[17234,17237],[17272,17275],[17272,17275],[17326,17329],[17326,17329],[17385,17388],[17385,17388],[17439,17442],[17439,17442],[2305,2308],[2305,2308],[2364,2367],[2364,2367],[3433,3436],[3433,3436],[8552,8555],[8552,8555],[12437,12440],[12437,12440],[12552,12555],[12552,12555],[925,928],[925,928],[1637,1640],[1637,1640],[3368,3371],[3368,3371],[1797,1800],[1797,1800],[1890,1893],[1890,1893],[2130,2133],[2130,2133],[2165,2168],[2165,2168],[2299,2302],[2299,2302],[2333,2336],[2333,2336],[438,441],[438,441],[519,522],[519,522],[3044,3047],[3044,3047],[3895,3898],[3895,3898],[1328,1331],[1328,1331],[1276,1279],[1276,1279],[4080,4083],[4080,4083],[1274,1277],[1274,1277],[1620,1623],[1620,1623],[2263,2266],[2263,2266],[1296,1299],[1296,1299],[2241,2244],[2241,2244],[2280,2283],[2280,2283],[2999,3002],[2999,3002],[3038,3041],[3038,3041],[3928,3931],[3928,3931],[3967,3970],[3967,3970],[4810,4813],[4810,4813],[4849,4852],[4849,4852],[1295,1298],[1295,1298],[836,839],[836,839],[855,858],[855,858],[2956,2959],[2956,2959],[4103,4106],[4103,4106],[807,810],[807,810],[1936,1939],[1936,1939],[1365,1368],[1365,1368],[1372,1375],[1372,1375],[3561,3564],[3561,3564],[4854,4857],[4854,4857],[6472,6475],[6472,6475],[4010,4013],[4010,4013],[4059,4062],[4059,4062],[4187,4190],[4187,4190],[4344,4347],[4344,4347],[4386,4389],[4386,4389],[4505,4508],[4505,4508],[4673,4676],[4673,4676],[4712,4715],[4712,4715],[2251,2254],[2251,2254],[2343,2346],[2343,2346],[2404,2407],[2404,2407],[3008,3011],[3008,3011],[3069,3072],[3069,3072],[3657,3660],[3657,3660],[3718,3721],[3718,3721],[4050,4053],[4050,4053],[4919,4922],[4919,4922],[4970,4973],[4970,4973],[3165,3168],[3165,3168],[3221,3224],[3221,3224],[3280,3283],[3280,3283],[3310,3313],[3310,3313],[3433,3436],[3433,3436],[3501,3504],[3501,3504],[3530,3533],[3530,3533],[3620,3623],[3620,3623],[4126,4129],[4126,4129],[4207,4210],[4207,4210],[4700,4703],[4700,4703],[4727,4730],[4727,4730],[4775,4778],[4775,4778],[5333,5336],[5333,5336],[5360,5363],[5360,5363],[5446,5449],[5446,5449],[5880,5883],[5880,5883],[6480,6483],[6480,6483],[6554,6557],[6554,6557],[6647,6650],[6647,6650],[7190,7193],[7190,7193],[7271,7274],[7271,7274],[7843,7846],[7843,7846],[8293,8296],[8293,8296],[8374,8377],[8374,8377],[8964,8967],[8964,8967],[9048,9051],[9048,9051],[9146,9149],[9146,9149],[9281,9284],[9281,9284],[9899,9902],[9899,9902],[10948,10951],[10948,10951],[11003,11006],[11003,11006],[11064,11067],[11064,11067],[11112,11115],[11112,11115],[11137,11140],[11137,11140],[11189,11192],[11189,11192],[11214,11217],[11214,11217],[11271,11274],[11271,11274],[11296,11299],[11296,11299],[11371,11374],[11371,11374],[11431,11434],[11431,11434],[11445,11448],[11445,11448],[11498,11501],[11498,11501],[11578,11581],[11578,11581],[11945,11948],[11945,11948],[12750,12753],[12750,12753],[13732,13735],[13732,13735],[13788,13791],[13788,13791],[13806,13809],[13806,13809],[13876,13879],[13876,13879],[13953,13956],[13953,13956],[14019,14022],[14019,14022],[14062,14065],[14062,14065],[14087,14090],[14087,14090],[14146,14149],[14146,14149],[14226,14229],[14226,14229],[14314,14317],[14314,14317],[15958,15961],[15958,15961],[16046,16049],[16046,16049],[16445,16448],[16445,16448],[16530,16533],[16530,16533],[16874,16877],[16874,16877],[16963,16966],[16963,16966],[17709,17712],[17709,17712],[17782,17785],[17782,17785],[17862,17865],[17862,17865],[18298,18301],[18298,18301],[18383,18386],[18383,18386],[19433,19436],[19433,19436],[20206,20209],[20206,20209],[20866,20869],[20866,20869],[22647,22650],[22647,22650],[23711,23714],[23711,23714],[24701,24704],[24701,24704],[25735,25738],[25735,25738],[26305,26308],[26305,26308],[26739,26742],[26739,26742],[27188,27191],[27188,27191],[27652,27655],[27652,27655],[28157,28160],[28157,28160],[28550,28553],[28550,28553],[28926,28929],[28926,28929],[29316,29319],[29316,29319],[1129,1132],[1129,1132],[1144,1147],[1144,1147],[1961,1964],[1961,1964],[1976,1979],[1976,1979],[6966,6969],[6966,6969],[6977,6980],[6977,6980],[821,824],[821,824],[1294,1297],[1294,1297],[1880,1883],[1880,1883],[2464,2467],[2464,2467],[2514,2517],[2514,2517],[2566,2569],[2566,2569],[2628,2631],[2628,2631],[2952,2955],[2952,2955],[3004,3007],[3004,3007],[3066,3069],[3066,3069],[3396,3399],[3396,3399],[3448,3451],[3448,3451],[3506,3509],[3506,3509],[7375,7378],[7375,7378],[8101,8104],[8101,8104],[8787,8790],[8787,8790],[9386,9389],[9386,9389],[10037,10040],[10037,10040],[10732,10735],[10732,10735],[10758,10761],[10758,10761],[11309,11312],[11309,11312],[11335,11338],[11335,11338],[11660,11663],[11660,11663],[11993,11996],[11993,11996],[12327,12330],[12327,12330],[13088,13091],[13088,13091],[13419,13422],[13419,13422],[13787,13790],[13787,13790],[14225,14228],[14225,14228],[15027,15030],[15027,15030],[15572,15575],[15572,15575],[15621,15624],[15621,15624],[16125,16128],[16125,16128],[16925,16928],[16925,16928],[17202,17205],[17202,17205],[5531,5534],[5531,5534],[5919,5922],[5919,5922],[5984,5987],[5984,5987],[6035,6038],[6035,6038],[7501,7504],[7501,7504],[10818,10821],[10818,10821],[10882,10885],[10882,10885],[10937,10940],[10937,10940],[10994,10997],[10994,10997],[11055,11058],[11055,11058],[11111,11114],[11111,11114],[11170,11173],[11170,11173],[11247,11250],[11247,11250],[11346,11349],[11346,11349],[11399,11402],[11399,11402],[11474,11477],[11474,11477],[11537,11540],[11537,11540],[14660,14663],[14660,14663],[14724,14727],[14724,14727],[14784,14787],[14784,14787],[14852,14855],[14852,14855],[14916,14919],[14916,14919],[16551,16554],[16551,16554],[17227,17230],[17227,17230],[17290,17293],[17290,17293],[18168,18171],[18168,18171],[18545,18548],[18545,18548],[19606,19609],[19606,19609],[20694,20697],[20694,20697],[22197,22200],[22197,22200],[24365,24368],[24365,24368],[24428,24431],[24428,24431],[24485,24488],[24485,24488],[24532,24535],[24532,24535],[24589,24592],[24589,24592],[24648,24651],[24648,24651],[24719,24722],[24719,24722],[24782,24785],[24782,24785],[24835,24838],[24835,24838],[24900,24903],[24900,24903],[24967,24970],[24967,24970],[25030,25033],[25030,25033],[26861,26864],[26861,26864],[27563,27566],[27563,27566],[27636,27639],[27636,27639],[27699,27702],[27699,27702],[29492,29495],[29492,29495],[29559,29562],[29559,29562],[32125,32128],[32125,32128],[32925,32928],[32925,32928],[33496,33499],[33496,33499],[34779,34782],[34779,34782],[35917,35920],[35917,35920],[36588,36591],[36588,36591],[37893,37896],[37893,37896],[40226,40229],[40226,40229],[42961,42964],[42961,42964],[1524,1527],[1524,1527],[1564,1567],[1564,1567],[1585,1588],[1585,1588],[1622,1625],[1622,1625],[1643,1646],[1643,1646],[2222,2225],[2222,2225],[2283,2286],[2283,2286],[2331,2334],[2331,2334],[2909,2912],[2909,2912],[710,713],[710,713],[741,744],[741,744],[769,772],[769,772],[818,821],[818,821],[846,849],[846,849],[1089,1092],[1089,1092],[1117,1120],[1117,1120],[1171,1174],[1171,1174],[2186,2189],[2186,2189],[2488,2491],[2488,2491],[2733,2736],[2733,2736],[3033,3036],[3033,3036],[1494,1497],[1494,1497],[3161,3164],[3161,3164],[7459,7462],[7459,7462],[9486,9489],[9486,9489],[10949,10952],[10949,10952],[12517,12520],[12517,12520],[13931,13934],[13931,13934],[976,979],[976,979],[1508,1511],[1508,1511],[2041,2044],[2041,2044],[2325,2328],[2325,2328],[2587,2590],[2587,2590],[1335,1338],[1335,1338],[3168,3171],[3168,3171],[1736,1739],[1736,1739],[1971,1974],[1971,1974],[2538,2541],[2538,2541],[3615,3618],[3615,3618],[4478,4481],[4478,4481],[5427,5430],[5427,5430],[6426,6429],[6426,6429],[7128,7131],[7128,7131],[7826,7829],[7826,7829],[8620,8623],[8620,8623],[9466,9469],[9466,9469],[507,510],[507,510],[547,550],[547,550],[685,688],[685,688],[1969,1972],[1969,1972],[2098,2101],[2098,2101],[2122,2125],[2122,2125],[2819,2822],[2819,2822],[2866,2869],[2866,2869],[2887,2890],[2887,2890],[2923,2926],[2923,2926],[2948,2951],[2948,2951],[3506,3509],[3506,3509],[3565,3568],[3565,3568],[3613,3616],[3613,3616],[841,844],[841,844],[1183,1186],[1183,1186],[1247,1250],[1247,1250],[1708,1711],[1708,1711],[2498,2501],[2498,2501],[2640,2643],[2640,2643],[2894,2897],[2894,2897],[3072,3075],[3072,3075],[3921,3924],[3921,3924],[4723,4726],[4723,4726],[5111,5114],[5111,5114],[3901,3904],[3901,3904],[2499,2502],[2499,2502],[2005,2008],[2005,2008],[2642,2645],[2642,2645],[3186,3189],[3186,3189],[3390,3393],[3390,3393],[3765,3768],[3765,3768],[5242,5245],[5242,5245],[5295,5298],[5295,5298],[5352,5355],[5352,5355],[5542,5545],[5542,5545],[3958,3961],[3958,3961],[4772,4775],[4772,4775],[5659,5662],[5659,5662],[6163,6166],[6163,6166],[7148,7151],[7148,7151],[8643,8646],[8643,8646],[9482,9485],[9482,9485],[1017,1020],[1017,1020],[1170,1173],[1170,1173],[9848,9851],[9848,9851],[10653,10656],[10653,10656],[11624,11627],[11624,11627],[13024,13027],[13024,13027],[15459,15462],[15459,15462],[15681,15684],[15681,15684],[18058,18061],[18058,18061],[22324,22327],[22324,22327],[24196,24199],[24196,24199],[24846,24849],[24846,24849],[25396,25399],[25396,25399],[25464,25467],[25464,25467],[1309,1312],[1309,1312],[1862,1865],[1862,1865],[2228,2231],[2228,2231],[38667,38670],[38667,38670],[38720,38723],[38720,38723],[38780,38783],[38780,38783],[38855,38858],[38855,38858],[38930,38933],[38930,38933],[58227,58230],[58227,58230],[58280,58283],[58280,58283],[58336,58339],[58336,58339],[58415,58418],[58415,58418],[59659,59662],[59659,59662],[59724,59727],[59724,59727],[59812,59815],[59812,59815],[59895,59898],[59895,59898],[60038,60041],[60038,60041],[5954,5957],[5954,5957],[6987,6990],[6987,6990],[7605,7608],[7605,7608],[8241,8244],[8241,8244],[9003,9006],[9003,9006],[9562,9565],[9562,9565],[11830,11833],[11830,11833],[12496,12499],[12496,12499],[13322,13325],[13322,13325],[14169,14172],[14169,14172],[15981,15984],[15981,15984],[16733,16736],[16733,16736],[17894,17897],[17894,17897],[18264,18267],[18264,18267],[18676,18679],[18676,18679],[19097,19100],[19097,19100],[19922,19925],[19922,19925],[20657,20660],[20657,20660],[3049,3052],[3049,3052],[3402,3405],[3402,3405],[3115,3118],[3115,3118],[3560,3563],[3560,3563],[4224,4227],[4224,4227],[4611,4614],[4611,4614],[5543,5546],[5543,5546],[1012,1015],[1012,1015],[1661,1664],[1661,1664],[1712,1715],[1712,1715],[1738,1741],[1738,1741],[5196,5199],[5196,5199],[1402,1405],[1402,1405],[2333,2336],[2333,2336],[2363,2366],[2363,2366],[4041,4044],[4041,4044],[4068,4071],[4068,4071],[3224,3227],[3224,3227],[1080,1083],[1080,1083],[1011,1014],[1011,1014],[1032,1035],[1032,1035],[1068,1071],[1068,1071],[1003,1006],[1003,1006],[7178,7181],[7178,7181],[7450,7453],[7450,7453],[9789,9792],[9789,9792],[10064,10067],[10064,10067],[11800,11803],[11800,11803],[12021,12024],[12021,12024],[14576,14579],[14576,14579],[16931,16934],[16931,16934],[19643,19646],[19643,19646],[1230,1233],[1230,1233],[8788,8791],[8788,8791],[9013,9016],[9013,9016],[11147,11150],[11147,11150],[11423,11426],[11423,11426],[12069,12072],[12069,12072],[13375,13378],[13375,13378],[15224,15227],[15224,15227],[16916,16919],[16916,16919],[17106,17109],[17106,17109],[17196,17199],[17196,17199],[1952,1955],[1952,1955],[2121,2124],[2121,2124],[5178,5181],[5178,5181],[7056,7059],[7056,7059],[8087,8090],[8087,8090],[9545,9548],[9545,9548],[10477,10480],[10477,10480],[13002,13005],[13002,13005],[14104,14107],[14104,14107],[15175,15178],[15175,15178],[16264,16267],[16264,16267],[18066,18069],[18066,18069],[19147,19150],[19147,19150],[20990,20993],[20990,20993],[22062,22065],[22062,22065],[43360,43363],[43360,43363],[43434,43437],[43434,43437],[1595,1598],[1595,1598],[1643,1646],[1643,1646],[1665,1668],[1665,1668],[1714,1717],[1714,1717],[1736,1739],[1736,1739],[1798,1801],[1798,1801],[2120,2123],[2120,2123],[2682,2685],[2682,2685],[2709,2712],[2709,2712],[2726,2729],[2726,2729],[2779,2782],[2779,2782],[2834,2837],[2834,2837],[1621,1624],[1621,1624],[1771,1774],[1771,1774],[1782,1785],[1782,1785],[9196,9199],[9196,9199],[9289,9292],[9289,9292],[9374,9377],[9374,9377],[9385,9388],[9385,9388],[7003,7006],[7003,7006],[7545,7548],[7545,7548],[8505,8508],[8505,8508],[8571,8574],[8571,8574],[8641,8644],[8641,8644],[7458,7461],[7458,7461],[8763,8766],[8763,8766],[10333,10336],[10333,10336],[11466,11469],[11466,11469],[1728,1731],[1728,1731],[1773,1776],[1773,1776],[2458,2461],[2458,2461],[4317,4320],[4317,4320],[4383,4386],[4383,4386],[4856,4859],[4856,4859],[4906,4909],[4906,4909],[5636,5639],[5636,5639],[5686,5689],[5686,5689],[6101,6104],[6101,6104],[6151,6154],[6151,6154],[7319,7322],[7319,7322],[7369,7372],[7369,7372],[8216,8219],[8216,8219],[8266,8269],[8266,8269],[9002,9005],[9002,9005],[9049,9052],[9049,9052],[9568,9571],[9568,9571],[9615,9618],[9615,9618],[9981,9984],[9981,9984],[11759,11762],[11759,11762],[3038,3041],[3038,3041],[3132,3135],[3132,3135],[3312,3315],[3312,3315],[3532,3535],[3532,3535],[3922,3925],[3922,3925],[7469,7472],[7469,7472],[7593,7596],[7593,7596],[7758,7761],[7758,7761],[7877,7880],[7877,7880],[7974,7977],[7974,7977],[10416,10419],[10416,10419],[11383,11386],[11383,11386],[13418,13421],[13418,13421],[14013,14016],[14013,14016],[15686,15689],[15686,15689],[1446,1449],[1446,1449],[2456,2459],[2456,2459],[2487,2490],[2487,2490],[2509,2512],[2509,2512],[2541,2544],[2541,2544],[2563,2566],[2563,2566],[2627,2630],[2627,2630],[2695,2698],[2695,2698],[2770,2773],[2770,2773],[2839,2842],[2839,2842],[2894,2897],[2894,2897],[2965,2968],[2965,2968],[3030,3033],[3030,3033],[3096,3099],[3096,3099],[3156,3159],[3156,3159],[3210,3213],[3210,3213],[3264,3267],[3264,3267],[3320,3323],[3320,3323],[3369,3372],[3369,3372],[3417,3420],[3417,3420],[3467,3470],[3467,3470],[3979,3982],[3979,3982],[4010,4013],[4010,4013],[4197,4200],[4197,4200],[4408,4411],[4408,4411],[4492,4495],[4492,4495],[1355,1358],[1355,1358],[2012,2015],[2012,2015],[2038,2041],[2038,2041],[2258,2261],[2258,2261],[2284,2287],[2284,2287],[2944,2947],[2944,2947],[2996,2999],[2996,2999],[3054,3057],[3054,3057],[3113,3116],[3113,3116],[3139,3142],[3139,3142],[3732,3735],[3732,3735],[4372,4375],[4372,4375],[9826,9829],[9826,9829],[9885,9888],[9885,9888],[11847,11850],[11847,11850],[11902,11905],[11902,11905],[11948,11951],[11948,11951],[11994,11997],[11994,11997],[12069,12072],[12069,12072],[12891,12894],[12891,12894],[13088,13091],[13088,13091],[13174,13177],[13174,13177],[13224,13227],[13224,13227],[13280,13283],[13280,13283],[13943,13946],[13943,13946],[14742,14745],[14742,14745],[15251,15254],[15251,15254],[15922,15925],[15922,15925],[15995,15998],[15995,15998],[16040,16043],[16040,16043],[16563,16566],[16563,16566],[17356,17359],[17356,17359],[17378,17381],[17378,17381],[17430,17433],[17430,17433],[17452,17455],[17452,17455],[17521,17524],[17521,17524],[17582,17585],[17582,17585],[17917,17920],[17917,17920],[17979,17982],[17979,17982],[18400,18403],[18400,18403],[18771,18774],[18771,18774],[19346,19349],[19346,19349],[19523,19526],[19523,19526],[19584,19587],[19584,19587],[20462,20465],[20462,20465],[20543,20546],[20543,20546],[21272,21275],[21272,21275],[21327,21330],[21327,21330],[21427,21430],[21427,21430],[21543,21546],[21543,21546],[21925,21928],[21925,21928],[21947,21950],[21947,21950],[22004,22007],[22004,22007],[22059,22062],[22059,22062],[22424,22427],[22424,22427],[22480,22483],[22480,22483],[22843,22846],[22843,22846],[22865,22868],[22865,22868],[22922,22925],[22922,22925],[22977,22980],[22977,22980],[26377,26380],[26377,26380],[27523,27526],[27523,27526],[28098,28101],[28098,28101],[29539,29542],[29539,29542],[31352,31355],[31352,31355],[32492,32495],[32492,32495],[33971,33974],[33971,33974],[34032,34035],[34032,34035],[34090,34093],[34090,34093],[34173,34176],[34173,34176],[34923,34926],[34923,34926],[35215,35218],[35215,35218],[35797,35800],[35797,35800],[36431,36434],[36431,36434],[37638,37641],[37638,37641],[38175,38178],[38175,38178],[11229,11232],[11229,11232],[11975,11978],[11975,11978],[13087,13090],[13087,13090],[13171,13174],[13171,13174],[13255,13258],[13255,13258],[13337,13340],[13337,13340],[15207,15210],[15207,15210],[15414,15417],[15414,15417],[16036,16039],[16036,16039],[16941,16944],[16941,16944],[17499,17502],[17499,17502],[17539,17542],[17539,17542],[17940,17943],[17940,17943],[18632,18635],[18632,18635],[19537,19540],[19537,19540],[20145,20148],[20145,20148],[21279,21282],[21279,21282],[24046,24049],[24046,24049],[25674,25677],[25674,25677],[27083,27086],[27083,27086],[28501,28504],[28501,28504],[28923,28926],[28923,28926],[29009,29012],[29009,29012],[29071,29074],[29071,29074],[29131,29134],[29131,29134],[29195,29198],[29195,29198],[29996,29999],[29996,29999],[31175,31178],[31175,31178],[31224,31227],[31224,31227],[32892,32895],[32892,32895],[32928,32931],[32928,32931],[33151,33154],[33151,33154],[33236,33239],[33236,33239],[33300,33303],[33300,33303],[33714,33717],[33714,33717],[33750,33753],[33750,33753],[33832,33835],[33832,33835],[33917,33920],[33917,33920],[33981,33984],[33981,33984],[34635,34638],[34635,34638],[34795,34798],[34795,34798],[34945,34948],[34945,34948],[35044,35047],[35044,35047],[35680,35683],[35680,35683],[36071,36074],[36071,36074],[36526,36529],[36526,36529],[36652,36655],[36652,36655],[36972,36975],[36972,36975],[37106,37109],[37106,37109],[37163,37166],[37163,37166],[37535,37538],[37535,37538],[37709,37712],[37709,37712],[37774,37777],[37774,37777],[38377,38380],[38377,38380],[39125,39128],[39125,39128],[39968,39971],[39968,39971],[40894,40897],[40894,40897],[40986,40989],[40986,40989],[41240,41243],[41240,41243],[41945,41948],[41945,41948],[42473,42476],[42473,42476],[42539,42542],[42539,42542],[42559,42562],[42559,42562],[48056,48059],[48056,48059],[50809,50812],[50809,50812],[51128,51131],[51128,51131],[51176,51179],[51176,51179],[53205,53208],[53205,53208],[54427,54430],[54427,54430],[54888,54891],[54888,54891],[55346,55349],[55346,55349],[55956,55959],[55956,55959],[56810,56813],[56810,56813],[57357,57360],[57357,57360],[3279,3282],[3279,3282],[4440,4443],[4440,4443],[5039,5042],[5039,5042],[5647,5650],[5647,5650],[6676,6679],[6676,6679],[6814,6817],[6814,6817],[14473,14476],[14473,14476],[15454,15457],[15454,15457],[16065,16068],[16065,16068],[17418,17421],[17418,17421],[24991,24994],[24991,24994],[28197,28200],[28197,28200],[28374,28377],[28374,28377],[29706,29709],[29706,29709],[29820,29823],[29820,29823],[30003,30006],[30003,30006],[30145,30148],[30145,30148],[2053,2056],[2053,2056],[2139,2142],[2139,2142],[2564,2567],[2564,2567],[2647,2650],[2647,2650],[3039,3042],[3039,3042],[3089,3092],[3089,3092],[993,996],[993,996],[1081,1084],[1081,1084],[1116,1119],[1116,1119],[1243,1246],[1243,1246],[1872,1875],[1872,1875],[2033,2036],[2033,2036],[1520,1523],[1520,1523],[1563,1566],[1563,1566],[1585,1588],[1585,1588],[1632,1635],[1632,1635],[1654,1657],[1654,1657],[1730,1733],[1730,1733],[1815,1818],[1815,1818],[1894,1897],[1894,1897],[1974,1977],[1974,1977],[2001,2004],[2001,2004],[2129,2132],[2129,2132],[2205,2208],[2205,2208],[2667,2670],[2667,2670],[2712,2715],[2712,2715],[2731,2734],[2731,2734],[2784,2787],[2784,2787],[2850,2853],[2850,2853],[1066,1069],[1066,1069],[1112,1115],[1112,1115],[1134,1137],[1134,1137],[1181,1184],[1181,1184],[1203,1206],[1203,1206],[1262,1265],[1262,1265],[1313,1316],[1313,1316],[1383,1386],[1383,1386],[1464,1467],[1464,1467],[1517,1520],[1517,1520],[1543,1546],[1543,1546],[2733,2736],[2733,2736],[2777,2780],[2777,2780],[2829,2832],[2829,2832],[2845,2848],[2845,2848],[2910,2913],[2910,2913],[2929,2932],[2929,2932],[3003,3006],[3003,3006],[3088,3091],[3088,3091],[3115,3118],[3115,3118],[3212,3215],[3212,3215],[3311,3314],[3311,3314],[3338,3341],[3338,3341],[3447,3450],[3447,3450],[3534,3537],[3534,3537],[3561,3564],[3561,3564],[3606,3609],[3606,3609],[3628,3631],[3628,3631],[3696,3699],[3696,3699],[3752,3755],[3752,3755],[3799,3802],[3799,3802],[3821,3824],[3821,3824],[3877,3880],[3877,3880],[3955,3958],[3955,3958],[4322,4325],[4322,4325],[4366,4369],[4366,4369],[4425,4428],[4425,4428],[4476,4479],[4476,4479],[4540,4543],[4540,4543],[5502,5505],[5502,5505],[6343,6346],[6343,6346],[10714,10717],[10714,10717],[11673,11676],[11673,11676],[12099,12102],[12099,12102],[13064,13067],[13064,13067],[13186,13189],[13186,13189],[13357,13360],[13357,13360],[13943,13946],[13943,13946],[14287,14290],[14287,14290],[14658,14661],[14658,14661],[15017,15020],[15017,15020],[15158,15161],[15158,15161],[15277,15280],[15277,15280],[16022,16025],[16022,16025],[16385,16388],[16385,16388],[19538,19541],[19538,19541],[20481,20484],[20481,20484],[20844,20847],[20844,20847],[21594,21597],[21594,21597],[21719,21722],[21719,21722],[25256,25259],[25256,25259],[26412,26415],[26412,26415],[27396,27399],[27396,27399],[28208,28211],[28208,28211],[28367,28370],[28367,28370],[29760,29763],[29760,29763],[30094,30097],[30094,30097],[31109,31112],[31109,31112],[31455,31458],[31455,31458],[33184,33187],[33184,33187],[34094,34097],[34094,34097],[34834,34837],[34834,34837],[34920,34923],[34920,34923],[36397,36400],[36397,36400],[37104,37107],[37104,37107],[11699,11702],[11699,11702],[11735,11738],[11735,11738],[11757,11760],[11757,11760],[11794,11797],[11794,11797],[11816,11819],[11816,11819],[11877,11880],[11877,11880],[11945,11948],[11945,11948],[12002,12005],[12002,12005],[12067,12070],[12067,12070],[12128,12131],[12128,12131],[12177,12180],[12177,12180],[12203,12206],[12203,12206],[12273,12276],[12273,12276],[12334,12337],[12334,12337],[1625,1628],[1625,1628],[1671,1674],[1671,1674],[1694,1697],[1694,1697],[2943,2946],[2943,2946],[2989,2992],[2989,2992],[3012,3015],[3012,3015],[4275,4278],[4275,4278],[4321,4324],[4321,4324],[4344,4347],[4344,4347],[5286,5289],[5286,5289],[6193,6196],[6193,6196],[6744,6747],[6744,6747],[8887,8890],[8887,8890],[8901,8904],[8901,8904],[8907,8910],[8907,8910],[8928,8931],[8928,8931],[2153,2156],[2153,2156],[2383,2386],[2383,2386],[2420,2423],[2420,2423],[2900,2903],[2900,2903],[2937,2940],[2937,2940],[4012,4015],[4012,4015],[4205,4208],[4205,4208],[4468,4471],[4468,4471],[4505,4508],[4505,4508],[868,871],[868,871],[1184,1187],[1184,1187],[1397,1400],[1397,1400],[1424,1427],[1424,1427],[1594,1597],[1594,1597],[1772,1775],[1772,1775],[1953,1956],[1953,1956],[2076,2079],[2076,2079],[2278,2281],[2278,2281],[2421,2424],[2421,2424],[2654,2657],[2654,2657],[6815,6818],[6815,6818],[7060,7063],[7060,7063],[7299,7302],[7299,7302],[7379,7382],[7379,7382],[7543,7546],[7543,7546],[7273,7276],[7273,7276],[7379,7382],[7379,7382],[7403,7406],[7403,7406],[7509,7512],[7509,7512],[7533,7536],[7533,7536],[10041,10044],[10041,10044],[10253,10256],[10253,10256],[10307,10310],[10307,10310],[10356,10359],[10356,10359],[10401,10404],[10401,10404],[10445,10448],[10445,10448],[10494,10497],[10494,10497],[10542,10545],[10542,10545],[10596,10599],[10596,10599],[10652,10655],[10652,10655],[10706,10709],[10706,10709],[10761,10764],[10761,10764],[11197,11200],[11197,11200],[11852,11855],[11852,11855],[11947,11950],[11947,11950],[12860,12863],[12860,12863],[12955,12958],[12955,12958],[514,517],[514,517],[617,620],[617,620],[642,645],[642,645],[1391,1394],[1391,1394],[1946,1949],[1946,1949],[3464,3467],[3464,3467],[3650,3653],[3650,3653],[4490,4493],[4490,4493],[5032,5035],[5032,5035],[5789,5792],[5789,5792],[7049,7052],[7049,7052],[8579,8582],[8579,8582],[10025,10028],[10025,10028],[11736,11739],[11736,11739],[12382,12385],[12382,12385],[13391,13394],[13391,13394],[15872,15875],[15872,15875],[16560,16563],[16560,16563],[17546,17549],[17546,17549],[18608,18611],[18608,18611],[19125,19128],[19125,19128],[19784,19787],[19784,19787],[20485,20488],[20485,20488],[20806,20809],[20806,20809],[21242,21245],[21242,21245],[23987,23990],[23987,23990],[24705,24708],[24705,24708],[25079,25082],[25079,25082],[25423,25426],[25423,25426],[25785,25788],[25785,25788],[26327,26330],[26327,26330],[26727,26730],[26727,26730],[27260,27263],[27260,27263],[27657,27660],[27657,27660],[28683,28686],[28683,28686],[29015,29018],[29015,29018],[29462,29465],[29462,29465],[29651,29654],[29651,29654],[30003,30006],[30003,30006],[31344,31347],[31344,31347],[32134,32137],[32134,32137],[32869,32872],[32869,32872],[33966,33969],[33966,33969],[34515,34518],[34515,34518],[34911,34914],[34911,34914],[34990,34993],[34990,34993],[36229,36232],[36229,36232],[37033,37036],[37033,37036],[37477,37480],[37477,37480],[38063,38066],[38063,38066],[43273,43276],[43273,43276],[43971,43974],[43971,43974],[44889,44892],[44889,44892],[45128,45131],[45128,45131],[45337,45340],[45337,45340],[45597,45600],[45597,45600],[45880,45883],[45880,45883],[46589,46592],[46589,46592],[47247,47250],[47247,47250],[1269,1272],[1269,1272],[2013,2016],[2013,2016],[1909,1912],[1909,1912],[2373,2376],[2373,2376],[2921,2924],[2921,2924],[3355,3358],[3355,3358],[1666,1669],[1666,1669],[1659,1662],[1659,1662],[1913,1916],[1913,1916],[3301,3304],[3301,3304],[3741,3744],[3741,3744],[892,895],[892,895],[1042,1045],[1042,1045],[1081,1084],[1081,1084],[3947,3950],[3947,3950],[4115,4118],[4115,4118],[4821,4824],[4821,4824],[4873,4876],[4873,4876],[5664,5667],[5664,5667],[6689,6692],[6689,6692],[6890,6893],[6890,6893],[7644,7647],[7644,7647],[8767,8770],[8767,8770],[8939,8942],[8939,8942],[10246,10249],[10246,10249],[11581,11584],[11581,11584],[11625,11628],[11625,11628],[12748,12751],[12748,12751],[12800,12803],[12800,12803],[14194,14197],[14194,14197],[14246,14249],[14246,14249],[14352,14355],[14352,14355],[14476,14479],[14476,14479],[15779,15782],[15779,15782],[17421,17424],[17421,17424],[17539,17542],[17539,17542],[17615,17618],[17615,17618],[18410,18413],[18410,18413],[18543,18546],[18543,18546],[19472,19475],[19472,19475],[19602,19605],[19602,19605],[20519,20522],[20519,20522],[21905,21908],[21905,21908],[22208,22211],[22208,22211],[22936,22939],[22936,22939],[22988,22991],[22988,22991],[23757,23760],[23757,23760],[24536,24539],[24536,24539],[24590,24593],[24590,24593],[26067,26070],[26067,26070],[26232,26235],[26232,26235],[26423,26426],[26423,26426],[26549,26552],[26549,26552],[27209,27212],[27209,27212],[27416,27419],[27416,27419],[27636,27639],[27636,27639],[27842,27845],[27842,27845],[27943,27946],[27943,27946],[29398,29401],[29398,29401],[29963,29966],[29963,29966],[30927,30930],[30927,30930],[31057,31060],[31057,31060],[31748,31751],[31748,31751],[31804,31807],[31804,31807],[32687,32690],[32687,32690],[32969,32972],[32969,32972],[33645,33648],[33645,33648],[34099,34102],[34099,34102],[34869,34872],[34869,34872],[35351,35354],[35351,35354],[36416,36419],[36416,36419],[37170,37173],[37170,37173],[37695,37698],[37695,37698],[38561,38564],[38561,38564],[40970,40973],[40970,40973],[42404,42407],[42404,42407],[43688,43691],[43688,43691],[44729,44732],[44729,44732],[45663,45666],[45663,45666],[2017,2020],[2017,2020],[9366,9369],[9366,9369],[1866,1869],[1866,1869],[1940,1943],[1940,1943],[975,978],[975,978],[1005,1008],[1005,1008],[1060,1063],[1060,1063],[1200,1203],[1200,1203],[1594,1597],[1594,1597]] \ No newline at end of file diff --git a/.fakebin-9475/npm b/.fakebin-9475/npm new file mode 100755 index 0000000000..9422990b9c --- /dev/null +++ b/.fakebin-9475/npm @@ -0,0 +1,4 @@ +#!/usr/bin/env bash +if [ "$1" = "view" ]; then echo "3.8.99"; exit 0; fi +if [ "$1" = "install" ]; then echo "added 1 package"; exit 0; fi +exit 0 diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000000..954ac64653 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,57 @@ +name: Build App + +on: + workflow_dispatch: + push: + branches: ["**"] + +permissions: + contents: read + +jobs: + build: + name: Fast Production Build + runs-on: ubuntu-latest + steps: + - name: Expand Virtual Memory (Native 10GB Swap) + run: | + sudo swapoff -a || true + sudo rm -f /mnt/swapfile /swapfile + sudo fallocate -l 10G /mnt/swapfile || sudo dd if=/dev/zero of=/mnt/swapfile bs=1M count=10240 + sudo chmod 600 /mnt/swapfile + sudo mkswap /mnt/swapfile + sudo swapon /mnt/swapfile + free -h + + - name: Checkout repository + uses: actions/checkout@v7 + with: + persist-credentials: false + + - name: Setup Node.js + uses: actions/setup-node@v7 + with: + node-version: "24" + cache: npm + + - name: Install dependencies + run: npm ci + + - name: Build Next.js app & CLI bundle + run: | + npm run build:release + env: + NODE_OPTIONS: "--max-old-space-size=12288" + OMNIROUTE_BUILD_MEMORY_MB: "12288" + OMNIROUTE_USE_TURBOPACK: "1" + + - name: Archive build outputs + run: | + tar -czf omniroute-build.tar.gz .build dist + + - name: Upload build artifact + uses: actions/upload-artifact@v4 + with: + name: omniroute-build + path: omniroute-build.tar.gz + retention-days: 7 diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 542f44b973..2439c63a94 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1213,8 +1213,10 @@ jobs: cache: npm - uses: ./.github/actions/npm-ci-retry - run: npm run check:node-runtime - # (tsx/esm = QW-b; o alinhamento de ESCOPO do integration com o npm script fica p/ follow-up) - - run: node --import tsx/esm --import ./tests/_setup/isolateDataDir.ts --test --test-force-exit --test-concurrency=1 --test-shard=${{ matrix.shard }}/2 tests/integration/*.test.ts + - name: Integration tests (shard ${{ matrix.shard }}/2) + env: + TEST_SHARD: ${{ matrix.shard }}/2 + run: npm run test:integration:ci test-security: name: Security Tests diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 25fb72db24..b32487da27 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -22,10 +22,10 @@ jobs: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: persist-credentials: false - - uses: github/codeql-action/init@e4fba868fa4b1b91e1fdab776edc8cfbe6e9fb81 # v4.37.3 + - uses: github/codeql-action/init@f205ea1c3313d32999d8d6a48b4f6530d4437b38 # v4.37.4 with: languages: javascript-typescript queries: security-extended - - uses: github/codeql-action/analyze@e4fba868fa4b1b91e1fdab776edc8cfbe6e9fb81 # v4.37.3 + - uses: github/codeql-action/analyze@f205ea1c3313d32999d8d6a48b4f6530d4437b38 # v4.37.4 with: category: "/language:javascript-typescript" diff --git a/.github/workflows/docker-publish.yml b/.github/workflows/docker-publish.yml index 4ec8ae2dab..9cca65ac09 100644 --- a/.github/workflows/docker-publish.yml +++ b/.github/workflows/docker-publish.yml @@ -4,6 +4,7 @@ on: push: branches: - main + - "release/v*" tags: - "v*" paths-ignore: @@ -57,39 +58,20 @@ jobs: REF_TYPE: ${{ github.ref_type }} INPUT_VERSION: ${{ inputs.version }} PROMOTE_INPUT: ${{ inputs.promote_latest }} + DEFAULT_BRANCH: ${{ github.event.repository.default_branch }} run: | set -euo pipefail - # 1) Resolve version string from the trigger (all inputs come via env). - case "$EVENT_NAME" in - workflow_dispatch) - VERSION="${INPUT_VERSION#v}" - ;; - push) - if [ "$REF_TYPE" = "tag" ]; then - VERSION="${REF_NAME#v}" - else - # Push to main → build & tag as `main` only. Never touch :latest. - VERSION="main" - fi - ;; - release) - VERSION="${REF_NAME#v}" - ;; - *) - VERSION="${REF_NAME#v}" - ;; - esac - # Sanity-check: only allow [A-Za-z0-9._-] in VERSION (defense in depth). - if ! printf '%s' "$VERSION" | grep -qE '^[A-Za-z0-9._-]+$'; then - echo "Refusing to use unsafe VERSION value: $VERSION" >&2 - exit 1 - fi + # 1) Resolve version/channel from the trigger. Only the current default + # release branch publishes the mutable `next` channel; main keeps `main`. + VERSION=$(bash scripts/ci/resolve-docker-publish-version.sh \ + "$EVENT_NAME" "$REF_TYPE" "$REF_NAME" "$INPUT_VERSION" "$DEFAULT_BRANCH") echo "version=$VERSION" >> "$GITHUB_OUTPUT" - # 2) Decide whether to promote :latest. + # 2) Decide whether to promote :latest. Floating channels are never + # eligible, and the helper independently fails closed for non-semver. PROMOTE="false" - if [ "$VERSION" = "main" ]; then + if [ "$VERSION" = "main" ] || [ "$VERSION" = "next" ]; then PROMOTE="false" elif printf '%s' "$VERSION" | grep -qE -- '-(rc|alpha|beta|pre|next)'; then echo "Pre-release identifier detected — skipping :latest." @@ -109,10 +91,10 @@ jobs: fi echo "promote_latest=$PROMOTE" >> "$GITHUB_OUTPUT" - # 3) Skip if this exact version is already published in Docker Hub. - # `main` is always rebuilt (mutable floating tag). + # 3) Skip immutable version tags that already exist. Floating `main` + # and `next` channels are intentionally rebuilt on every matching push. SKIP="false" - if [ "$VERSION" != "main" ]; then + if [ "$VERSION" != "main" ] && [ "$VERSION" != "next" ]; then if docker manifest inspect "diegosouzapw/omniroute:${VERSION}" >/dev/null 2>&1; then echo "Image diegosouzapw/omniroute:${VERSION} already exists on Docker Hub — skipping rebuild." SKIP="true" @@ -155,13 +137,13 @@ jobs: uses: docker/setup-buildx-action@v4 - name: Login to Docker Hub - uses: docker/login-action@v4.5.2 + uses: docker/login-action@v4.6.0 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Login to GitHub Container Registry - uses: docker/login-action@v4.5.2 + uses: docker/login-action@v4.6.0 with: registry: ghcr.io username: ${{ github.actor }} @@ -255,13 +237,13 @@ jobs: uses: docker/setup-buildx-action@v4 - name: Login to Docker Hub - uses: docker/login-action@v4.5.2 + uses: docker/login-action@v4.6.0 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Login to GitHub Container Registry - uses: docker/login-action@v4.5.2 + uses: docker/login-action@v4.6.0 with: registry: ghcr.io username: ${{ github.actor }} @@ -390,14 +372,14 @@ jobs: - name: Upload Trivy SARIF to Security tab if: needs.prepare.outputs.version != 'main' continue-on-error: true - uses: github/codeql-action/upload-sarif@v4.37.3 + uses: github/codeql-action/upload-sarif@v4.37.4 with: sarif_file: trivy-results.sarif category: trivy-image - name: Update Docker Hub description # Only refresh README/description when we actually promote :latest - # (avoids overwriting from main pushes or back-fill builds). + # (avoids overwriting from main, next, or back-fill builds). if: needs.prepare.outputs.promote_latest == 'true' uses: peter-evans/dockerhub-description@v5 with: diff --git a/.github/workflows/nightly-release-green.yml b/.github/workflows/nightly-release-green.yml index f435bf5acd..65d12db4de 100644 --- a/.github/workflows/nightly-release-green.yml +++ b/.github/workflows/nightly-release-green.yml @@ -193,7 +193,7 @@ jobs: gh issue comment "$EXISTING" --repo "$GITHUB_REPOSITORY" --body-file issue-body.md echo "Updated existing issue #$EXISTING" else - gh issue create --repo "$GITHUB_REPOSITORY" --title "$TITLE" --body-file issue-body.md + gh issue create --repo "$GITHUB_REPOSITORY" --title "$TITLE" --label base-red --body-file issue-body.md fi - name: Upload report artifact @@ -291,7 +291,7 @@ jobs: gh issue comment "$EXISTING" --repo "$GITHUB_REPOSITORY" --body-file issue-body.md echo "Updated existing issue #$EXISTING" else - gh issue create --repo "$GITHUB_REPOSITORY" --title "$TITLE" --body-file issue-body.md + gh issue create --repo "$GITHUB_REPOSITORY" --title "$TITLE" --label base-red --body-file issue-body.md fi - name: Upload report artifact diff --git a/.github/workflows/quality.yml b/.github/workflows/quality.yml index 7a167afcd0..2dafec6c89 100644 --- a/.github/workflows/quality.yml +++ b/.github/workflows/quality.yml @@ -151,63 +151,6 @@ jobs: key: eslint-${{ runner.os }}-${{ hashFiles('eslint.config.mjs', 'eslint.complexity-ratchets.config.mjs', 'config/quality/eslint-suppressions.json', 'package-lock.json') }} restore-keys: | eslint-${{ runner.os }}- - - run: npm run check:provider-consistency - - run: npm run check:fetch-targets - # docs-all / openapi-routes / docs-symbols live in docs-gates (path-filtered). - - run: npm run check:deps - # #8522: --base-ref mode for PR events — compare against max(frozen, base) so - # inherited drift (base already over frozen cap) doesn't red an innocent PR. - # workflow_dispatch (no PR base) falls back to absolute comparison. - - name: File-size ratchet (base-relative on PR) - env: - PR_BASE_SHA: ${{ github.event.pull_request.base.sha }} - run: | - if [ -n "$PR_BASE_SHA" ]; then - npm run check:file-size -- --base-ref "$PR_BASE_SHA" - else - npm run check:file-size - fi - - run: npm run check:error-helper - - run: npm run check:migration-numbering - - run: npm run check:public-creds - - run: npm run check:db-rules - - run: npm run check:known-symbols - - run: npm run check:route-guard-membership - - run: npm run check:test-discovery - - run: npm run check:test-runner-api - # Guards tap.testFiles drift: a covering unit test absent from stryker.conf.json - # tap.testFiles makes its module's mutants survive on a cold nightly-mutation run, - # false-failing the blocking mutationScore ratchet. See check-mutation-test-coverage.mjs. - - run: npm run check:mutation-test-coverage - - run: npm run check:any-budget:t11 - # Build-scope guard: fails if worktrees/cruft leak into the tsconfig include - # scope (would OOM `next build`). Instant. See incident 2026-06-25 / #5031. - - run: npm run check:build-scope - # Pack-policy (unexpected-files allowlist) WITHOUT a build — catches a stray file - # leaking into the npm tarball (v3.8.36: 6 ops bin/*.sh) per-PR instead of only on - # the release PR's heavy Package Artifact job. - - run: npm run check:pack-policy - # Complexity + cognitive-complexity: ONE ESLint walk (both baselines still - # enforced separately by ruleId). Avoids two cold tree walks on fast-path. - - run: npm run check:complexity-ratchets - # ── G0 (trilho .50): gates do trilho A que faltavam no trilho B ────────────── - # The god-file refactor happens in PRs→release/**; without these, the release - # rail never sees a new import cycle, dead code, duplication or a security - # regression until the release PR to main. Deliberately NOT brought here: - # bundle-size (self-skips without a build — this rail's build job is advisory - # and uploads nothing, so it would be dead configuration) and the coverage - # run (fast-unit already runs the full suite; the coverage ratchet stays on - # the main rail via --allow-missing in lint-guard). - - run: npm run check:cycles - - run: npm run check:lockfile - - name: Duplication ratchet - run: npm run check:duplication - - name: Dead-code ratchet (knip) - run: npm run check:dead-code - - name: Type coverage ratchet - run: npm run check:type-coverage - - name: Compression budget ratchet - run: npm run check:compression-budget # Security scanners — same hardened install as ci.yml quality-extended # (gh release download = authenticated, 5000 req/hr; curl to api.github.com # is rate-limited to 60/hr and silently no-ops when throttled). The blocking @@ -251,26 +194,63 @@ jobs: "$HOME/.local/bin/osv-scanner" --version || true "$HOME/.local/bin/oasdiff" --version || true zizmor --version || true - - name: Secret scan (gitleaks, ratchet, blocking) - run: npm run check:secrets -- --ratchet - - name: Vulnerability ratchet (osv-scanner, ratchet, blocking) - run: npm run check:vuln-ratchet -- --ratchet - - name: Workflow lint (actionlint+zizmor, ratchet, blocking) - run: npm run check:workflows -- --ratchet - # BASE_REF is read by the script from the env (never interpolated into a - # shell body) — workflow-injection-safe. actions/checkout fetches remote - # refs, not a local branch named github.base_ref, so prefix origin/ or this - # gate self-skips every PR with reason=base-unresolved. - - name: OpenAPI breaking-change (oasdiff, ratchet, blocking) + # Quality gates (all, non-fail-fast) — #8542: replaces 17 bare check:* steps, + # 6 G0 gates, 4 ratchet gates, and 3 typecheck steps with a single aggregation + # step. Each gate runs in a loop with ::group::; failures are collected and + # reported at the end. set -uo pipefail (NOT set -e) so one failing gate does + # not abort the job and mask every later gate. Release-added gates are folded + # in: open-sse typecheck (#8781) and file-size base-relative mode (#8522). + - name: Quality gates (all, non-fail-fast) env: + # #8522: base-relative file-size mode on PR events — inherited drift (base + # already over frozen cap) must not red an innocent PR. Unset on + # workflow_dispatch (no PR base) → absolute comparison. + PR_BASE_SHA: ${{ github.event.pull_request.base.sha }} BASE_REF: ${{ github.base_ref && format('origin/{0}', github.base_ref) || '' }} - run: npm run check:openapi-breaking -- --ratchet - - name: Typecheck (core) - run: npm run typecheck:core - # #7033: dashboard-scoped typecheck gate — src/app/(dashboard) TSX is not - # covered by typecheck:core's curated allowlist. See check-dashboard-typecheck.mjs. - - name: Typecheck (dashboard) - run: npm run check:dashboard-typecheck + run: | + set -uo pipefail + gates=( + provider-consistency fetch-targets deps file-size error-helper + migration-numbering public-creds db-rules known-symbols + route-guard-membership test-discovery test-runner-api + mutation-test-coverage any-budget:t11 build-scope pack-policy + complexity-ratchets + cycles lockfile duplication dead-code type-coverage compression-budget + # #8781: open-sse workspace typecheck gate — the workspace imports @/ which + # escapes to src/ via undeclared path aliases. See check-open-sse-typecheck.mjs. + open-sse-typecheck + ) + ratchet_gates=( + secrets vuln-ratchet workflows openapi-breaking + ) + failed=() + for g in "${gates[@]}"; do + echo "::group::check:$g" + # #8522: file-size is base-relative on PR events (compare against + # max(frozen, base)) so inherited drift doesn't red an innocent PR; + # workflow_dispatch (no PR base) falls back to absolute comparison. + if [ "$g" = "file-size" ] && [ -n "${PR_BASE_SHA:-}" ]; then + npm run "check:$g" -- --base-ref "$PR_BASE_SHA" || failed+=("$g") + else + npm run "check:$g" || failed+=("$g") + fi + echo "::endgroup::" + done + for g in "${ratchet_gates[@]}"; do + echo "::group::check:$g (ratchet)" + npm run "check:$g" -- --ratchet || failed+=("$g") + echo "::endgroup::" + done + echo "::group::typecheck:core" + npm run typecheck:core || failed+=("typecheck:core") + echo "::endgroup::" + echo "::group::check:dashboard-typecheck" + npm run check:dashboard-typecheck || failed+=("check:dashboard-typecheck") + echo "::endgroup::" + if (( ${#failed[@]} )); then + printf '::error::%d gate(s) failed: %s\n' "${#failed[@]}" "${failed[*]}" + exit 1 + fi # WS4.2 (v3.8.49 plan): TypeScript 7 native-compiler SHADOW — advisory only. # TS7 went GA 2026-07-08 with 8-12x type-check speedups; its Compiler API only # arrives in 7.1, so typescript-eslint / type-coverage / Stryker stay on 6.x diff --git a/.gitignore b/.gitignore index 4636007b51..ffccb9d763 100644 --- a/.gitignore +++ b/.gitignore @@ -72,6 +72,7 @@ yarn-error.log* # env files (can opt-in for committing if needed) .env* !.env.example +!.env.devin-bridge.example !.env.homolog.example # Provider API keys (never commit) *.api-key @@ -209,6 +210,8 @@ scripts/i18n/_pending-keys.json .agents/ .antigravitycli/ .claude/ +!tests/fixtures/devin-bridge/e2e-workspace/.claude/ +!tests/fixtures/devin-bridge/e2e-workspace/.claude/** # PR Reviews and local feedback files pr_reviews*.json @@ -248,6 +251,8 @@ _artifacts/ # CI/local quality artifacts (eslint-results.json, quality-ratchet.md, etc.) .artifacts/ +# Isolated Devin bridge workspaces, evidence, and test databases +.sandbox/ # Homologation E2E suite (npm run homolog) — real-environment credentials + report output .env.homolog @@ -260,3 +265,7 @@ docker-compose.yml.bak # output/**/.playwright-cli/ (covered above), but anything written directly to # output/ would otherwise show up as untracked. /output/ + +# _tasks e um repo git SEPARADO (ver AGENTS.md). _tasks/ (com barra) NAO ignora um +# SYMLINK _tasks; /_tasks (ancorado) cobre symlink/dir na raiz (incidente 2026-08-08). +/_tasks diff --git a/@omniroute/opencode-plugin/README.md b/@omniroute/opencode-plugin/README.md index 5f09259716..570ff4285a 100644 --- a/@omniroute/opencode-plugin/README.md +++ b/@omniroute/opencode-plugin/README.md @@ -30,7 +30,7 @@ omniroute setup opencode --auth # 3. Restart OpenCode — /models lists the full live catalog ``` -The `--auth` flag runs `opencode auth login --provider omniroute` automatically. +The `--auth` flag runs `opencode auth login --provider opencode-omniroute` automatically. Use `--base-url` to point at a non-default OmniRoute address: ```sh @@ -84,7 +84,7 @@ Peer dep: `@opencode-ai/plugin` (managed by your OpenCode install). ``` ```sh -opencode auth login --provider omniroute +opencode auth login --provider opencode-omniroute # prompts for the OmniRoute API key, writes to ~/.local/share/opencode/auth.json ``` @@ -164,8 +164,8 @@ Then in `~/.config/opencode/opencode.json` reference each directory by absolute Paths are relative to `~/.config/opencode/`. Each entry now resolves to a distinct module file, so OC loads them as two separate plugin instances. Authenticate each: ```sh -opencode auth login --provider omniroute -opencode auth login --provider omniroute-preprod +opencode auth login --provider opencode-omniroute +opencode auth login --provider opencode-omniroute-preprod ``` Each entry gets its own provider id, its own model picker entry, its own slot in `auth.json`, and its own TTL cache. Closures are isolated per plugin instance — no cross-talk. @@ -196,6 +196,7 @@ npm install --prefix ~/.config/opencode/plugins/omniroute-opencode-plugin-prepro | Compression pipeline tags | Combo names get tagged with their compression pipeline (e.g. `Combo: claude-primary [rtk🟡 → caveman🟠]`) when `features.compressionMetadata: true`. Intensity tokens render as a traffic-light emoji: 🟢 lite/minimal · 🟡 standard · 🟠 aggressive/full · 🔴 ultra | both hooks | | Provider-tag prefix | Prepend short upstream-provider label to enriched names (e.g. `Claude - Claude Opus 4.7` vs `Kiro - Claude Opus 4.7`, `GHM - GPT 5`) so same-id models routed via different upstream connections group visibly in the picker (default-on, opt-out via `features.providerTag: false`) | both hooks | | Usable-only filter | Filter to providers with at least one healthy connection in `/api/providers` (opt-in via `features.usableOnly`) | both hooks | +| Model allowlist/blocklist | Curate the model picker to a fixed set of IDs via `features.visibleModels` (allowlist) and/or `features.hiddenModels` (blocklist). Bare suffixes like `claude-opus-4-7` match any `{prefix}/claude-opus-4-7`. Both compose with `usableOnly` (all filters AND together). Blocklist wins over allowlist (deny takes precedence) | both hooks | | Disk-cache fallback | Last-known-good catalog persisted to disk; hydrates on a cold start when `/v1/models` is unreachable (default-on, opt-out via `features.diskCache: false`) | `config` | | Bearer injection + suffix-spoof guard | Adds `Authorization` on baseURL-matched requests only | `auth.loader.fetch` | | Gemini schema sanitization | Strips `$schema`/`$ref`/`additionalProperties` for `gemini-*`/`google-vertex-gemini/*` | `auth.loader.fetch` wrap | @@ -226,6 +227,8 @@ Every field is optional. Defaults mirror v0.1.0 behaviour so existing `opencode. | `compressionMetadata` | `boolean` | `false` | Pull `/api/context/combos` so combo names get tagged with their compression pipeline, e.g. `Combo: claude-primary [rtk🟡 → caveman🟠]`. Intensity tokens render as traffic-light emoji (🟢 lite/minimal · 🟡 standard · 🟠 aggressive/full · 🔴 ultra) so the picker advertises "how compressed" each combo is at a glance. | | `providerTag` | `boolean` | `true` | Prepend a short upstream-provider label to the enriched display name with `" - "` separator, so `cc/claude-opus-4-7 → Claude - Claude Opus 4.7` differs visibly from `kr/claude-opus-4-7 → Kiro - Claude Opus 4.7` in the OC TUI model picker. Label resolution: use `/api/pricing/models[].name` verbatim when ≤8 chars (e.g. `Claude`, `Kiro`, `Codex`, `Qwen`), otherwise fall back to `UPPER(alias)` (e.g. `GitHub Models` → `GHM`, `Gemini` → `GEMINI`). Idempotent. Combos intentionally skipped (the `Combo:` prefix already conveys multi-upstream). | | `usableOnly` | `boolean` | `false` | Read `/api/providers` and filter the catalog to providers that have at least one connection with `isActive: true` AND `testStatus: 'active'`. Subtract-filter semantics: providers unknown to BOTH the pricing-models catalog AND the connection table pass through (so synthetic prefixes like `agentrouter/*` survive). On fetch failure the filter is disabled for the refresh — never hides the whole catalog. | +| `visibleModels` | `string[]` | _unset_ | Allowlist — when set and non-empty, only models whose raw `/v1/models` ID matches are emitted. Bare IDs (no slash, e.g. `claude-opus-4-7`) match any `{prefix}/claude-opus-4-7`; full IDs (e.g. `cc/claude-opus-4-7`) match exactly. Composes with `usableOnly` and `hiddenModels` (all filters AND together). Unset or empty = no filter. | +| `hiddenModels` | `string[]` | _unset_ | Blocklist — models whose raw ID matches are dropped. Same matching rules as `visibleModels`. When a model is in both `visibleModels` and `hiddenModels`, the blocklist wins (deny takes precedence). Composes with `usableOnly` and `visibleModels` (all filters AND together). Unset or empty = no filter. | | `diskCache` | `boolean` | `true` | Persist the last successful `/v1/models` + `/api/combos` + enrichment + connections + compression snapshot to `${OPENCODE_DATA_DIR ?? ~/.local/share/opencode}/plugins/omniroute-.json`. On a subsequent cold start where `/v1/models` throws (network down / IP whitelist drop / 5xx) the static block hydrates from the snapshot so OC's model picker survives offline. Soft-fail on read/write — never blocks publishing. | | `geminiSanitization` | `boolean` | `true` | Strip `$schema`/`$ref`/`additionalProperties` from tool params when the model id matches `gemini` | | `mcpAutoEmit` | `boolean` | `false` | Auto-write an `mcp.` remote entry into the OC config pointing at `/api/mcp/stream` with the resolved Bearer token | @@ -298,7 +301,45 @@ If you want a narrower-scoped Bearer for MCP (different from the chat/inference - `compressionMetadata: true` annotates combo display names with their pipeline using traffic-light emoji for intensity (e.g. `Combo: claude-primary [rtk🟡 → caveman🟠]`) so the picker advertises which compression each combo applies and how heavy it is at a glance. Palette: 🟢 lite/minimal · 🟡 standard · 🟠 aggressive/full · 🔴 ultra. Unknown intensities fall through to raw text (`[rtk:custom-thing]`) so the plugin never hides a value OmniRoute knows but the plugin doesn't. - `providerTag: true` (default) prepends a short upstream-provider label so the picker shows `Claude - Claude Opus 4.7` for `cc/claude-opus-4-7`, `Kiro - Claude Opus 4.7` for `kr/claude-opus-4-7`, and `GHM - GPT 5` for `ghm/gpt-5` (slot.name `GitHub Models` > 8 chars → abbreviated). Critical when the same model id is sold through multiple upstream connections with different cost/auth/rate-limit profiles. Set to `false` to keep the pre-v3.8.3 unsuffixed format. -## Comparison vs `@omniroute/opencode-provider` +#### Example — curating the model picker (allowlist + blocklist) + +A typical OmniRoute instance serves 600+ models. The OpenCode TUI/CLI picker becomes unusable when you need to scroll through hundreds of entries to find the ~30 models you actually use. `visibleModels` and `hiddenModels` let you curate the picker to a fixed set of model IDs that persists in `opencode.json` across config resets. + +```jsonc +{ + "plugin": [ + [ + "@omniroute/opencode-plugin", + { + "providerId": "omniroute", + "baseURL": "https://or.example.com", + "features": { + "combos": true, + "enrichment": true, + "usableOnly": true, + "visibleModels": [ + "claude-opus-4-7", // bare suffix: matches cc/claude-opus-4-7, kr/claude-opus-4-7, etc. + "cc/claude-sonnet-4-6", // exact: only the cc/ alias + "gemini-2.5-pro", + "gpt-5", + "o3", + "o3-pro", + "o4-mini", + ], + "hiddenModels": [ + "o3-mini", // hide the mini variant even if visibleModels is unset + ], + }, + }, + ], + ], +} +``` + +- `visibleModels` is an allowlist — only models whose raw ID matches are emitted. Bare IDs (no slash) match any provider prefix; full IDs (with slash) match exactly. +- `hiddenModels` is a blocklist — listed models are dropped. When a model is in both lists, the blocklist wins (deny takes precedence). +- Both compose with `usableOnly` (all filters AND together: a model must pass usableOnly AND visibleModels AND not be in hiddenModels). +- Unset or empty = no filter (current behavior). [`@omniroute/opencode-provider`](https://github.com/diegosouzapw/OmniRoute/tree/main/%40omniroute/opencode-provider) is the existing config-generator package — it writes a frozen `provider.` block into `opencode.json` at build time. This plugin is the runtime integration. diff --git a/@omniroute/opencode-plugin/package-lock.json b/@omniroute/opencode-plugin/package-lock.json index b75338eb09..82fac18dc1 100644 --- a/@omniroute/opencode-plugin/package-lock.json +++ b/@omniroute/opencode-plugin/package-lock.json @@ -1,12 +1,12 @@ { "name": "@omniroute/opencode-plugin", - "version": "0.2.0", + "version": "0.2.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@omniroute/opencode-plugin", - "version": "0.2.0", + "version": "0.2.1", "license": "MIT", "dependencies": { "zod": "^4.4.3" diff --git a/@omniroute/opencode-plugin/package.json b/@omniroute/opencode-plugin/package.json index 97ab734d4a..848bca4b3a 100644 --- a/@omniroute/opencode-plugin/package.json +++ b/@omniroute/opencode-plugin/package.json @@ -23,7 +23,7 @@ "scripts": { "build": "tsup", "clean": "rm -rf dist", - "test": "node --import tsx/esm --test tests/scaffold.test.ts tests/auth.test.ts tests/options-schema.test.ts tests/multi-instance.test.ts tests/fetch-interceptor.test.ts tests/provider.test.ts tests/gemini-sanitize.test.ts tests/combos.test.ts tests/config-shim.test.ts tests/features.test.ts tests/feature-defaults.test.ts tests/usable-combo.test.ts tests/disk-snapshot-perms.test.ts tests/fork-features.test.ts tests/auto-combo-context.test.ts tests/provider-id-routing.test.ts tests/management-read-token.test.ts tests/auto-sync.test.ts", + "test": "node --import tsx/esm --test tests/scaffold.test.ts tests/auth.test.ts tests/options-schema.test.ts tests/multi-instance.test.ts tests/fetch-interceptor.test.ts tests/provider.test.ts tests/gemini-sanitize.test.ts tests/combos.test.ts tests/config-shim.test.ts tests/features.test.ts tests/feature-defaults.test.ts tests/usable-combo.test.ts tests/disk-snapshot-perms.test.ts tests/fork-features.test.ts tests/auto-combo-context.test.ts tests/provider-id-routing.test.ts tests/management-read-token.test.ts tests/auto-sync.test.ts tests/model-allowlist.test.ts", "prepublishOnly": "npm run clean && npm run build && npm test" }, "keywords": [ diff --git a/@omniroute/opencode-plugin/src/index.ts b/@omniroute/opencode-plugin/src/index.ts index dcd881ab4e..35d29b3eac 100644 --- a/@omniroute/opencode-plugin/src/index.ts +++ b/@omniroute/opencode-plugin/src/index.ts @@ -177,6 +177,8 @@ const featuresSchema = z mcpToken: z.string().min(1).optional(), fetchInterceptor: z.boolean().optional(), usableOnly: z.boolean().optional(), + visibleModels: z.array(z.string().min(1)).optional(), + hiddenModels: z.array(z.string().min(1)).optional(), diskCache: z.boolean().optional(), providerTag: z.boolean().optional(), debugLog: z.boolean().optional(), @@ -241,6 +243,11 @@ export const OMNIROUTE_FEATURE_DEFAULTS = { // default-OFF (read sites use `features.X === true`) compressionMetadata: false, usableOnly: false, + // Array flags: unset/empty = no filter. These are not boolean toggles — + // they are operator-curated model-ID lists applied in the dynamic and static + // hooks alongside usableOnly (all filters AND together). + // visibleModels: undefined, // allowlist — only listed IDs pass + // hiddenModels: undefined, // blocklist — listed IDs are dropped mcpAutoEmit: false, debugLog: false, startupDebug: false, @@ -330,7 +337,10 @@ function trimLeadingDashes(value: string): string { * sees a consistent identifier. */ export function resolveOmniRoutePluginOptions(opts?: OmniRoutePluginOptions): Required< - Pick + Pick< + OmniRoutePluginOptions, + "providerId" | "displayName" | "modelCacheTtl" | "autoSyncIntervalMs" + > > & { /** * #6859: the UNPREFIXED provider id ("omniroute", "omniroute-preprod", …). @@ -621,7 +631,7 @@ export function createOmniRouteAuthHook(opts?: OmniRoutePluginOptions): AuthHook */ export function invalidateOmniRouteFetchCache( cache: OmniRouteFetchCache, - baseURL?: string, + baseURL?: string ): number { if (!baseURL) { const n = cache.size; @@ -645,7 +655,7 @@ export function invalidateOmniRouteFetchCache( */ export async function resolveOmniRouteRuntimeAuth( resolved: ResolvedOmniRoutePluginOptions, - readAuthJson?: OmniRouteReadAuthJson, + readAuthJson?: OmniRouteReadAuthJson ): Promise<{ apiKey: string; baseURL: string; managementReadToken: string } | null> { const reader = readAuthJson ?? defaultReadAuthJson; let authJson: AuthJsonShape | undefined | null; @@ -672,7 +682,7 @@ export async function resolveOmniRouteRuntimeAuth( e && (e as { type?: unknown }).type === "api" && typeof (e as { key?: unknown }).key === "string" && - ((e as { key: string }).key).length > 0 + (e as { key: string }).key.length > 0 ) { entry = e as AuthJsonApiEntry; break; @@ -737,7 +747,7 @@ export async function forceSyncOmniRouteModels(args: { const auth = await resolveOmniRouteRuntimeAuth( resolved, - args.readAuthJson ?? defaultReadAuthJson, + args.readAuthJson ?? defaultReadAuthJson ); if (!auth) { return { @@ -795,7 +805,7 @@ export async function forceSyncOmniRouteModels(args: { rawCompressionCombos = await compressionMetaFetcher( auth.baseURL, auth.managementReadToken, - 10_000, + 10_000 ); } catch { rawCompressionCombos = []; @@ -820,10 +830,7 @@ export async function forceSyncOmniRouteModels(args: { rawConnections, expiresAt: t + resolved.modelCacheTtl, }; - const cacheKey = modelsCacheKey( - auth.baseURL, - `${auth.apiKey}\0${auth.managementReadToken}`, - ); + const cacheKey = modelsCacheKey(auth.baseURL, `${auth.apiKey}\0${auth.managementReadToken}`); cache.set(cacheKey, entry); if (wantDiskCache) { @@ -831,7 +838,7 @@ export async function forceSyncOmniRouteModels(args: { const fingerprint = diskSnapshotIdentityFingerprint( auth.baseURL, auth.apiKey, - auth.managementReadToken, + auth.managementReadToken ); const { expiresAt: _expiresAt, ...diskEntry } = entry; await defaultDiskSnapshotWriter(resolved.providerId, diskEntry, fingerprint); @@ -843,7 +850,7 @@ export async function forceSyncOmniRouteModels(args: { console.warn( `[omniroute-plugin] force sync ok providerId=${resolved.providerId} ` + `models=${rawModels.length} combos=${rawCombos.length} ` + - `clearedMemory=${clearedMemory + clearedAll} disk=${clearedDisk}`, + `clearedMemory=${clearedMemory + clearedAll} disk=${clearedDisk}` ); return { @@ -944,7 +951,7 @@ export function startOmniRouteAutoSync(args: { const result = await forceSyncOmniRouteModels({ resolved, cache }); if (!result.ok) { console.warn( - `[omniroute-plugin] auto-sync failed providerId=${resolved.providerId}: ${result.error}`, + `[omniroute-plugin] auto-sync failed providerId=${resolved.providerId}: ${result.error}` ); return; } @@ -955,7 +962,7 @@ export function startOmniRouteAutoSync(args: { if (result.count !== lastCount) { console.warn( `[omniroute-plugin] auto-sync catalog size changed ${lastCount} → ${result.count} ` + - `(providerId=${resolved.providerId})`, + `(providerId=${resolved.providerId})` ); lastCount = result.count; } @@ -976,7 +983,7 @@ export function startOmniRouteAutoSync(args: { } console.warn( - `[omniroute-plugin] auto-sync enabled intervalMs=${intervalMs} providerId=${resolved.providerId}`, + `[omniroute-plugin] auto-sync enabled intervalMs=${intervalMs} providerId=${resolved.providerId}` ); return () => { @@ -1032,7 +1039,13 @@ export const OmniRoutePlugin: Plugin = async (_input, options) => { const cfg = input as Config & { command?: Record< string, - { template: string; description?: string; agent?: string; model?: string; subtask?: boolean } + { + template: string; + description?: string; + agent?: string; + model?: string; + subtask?: boolean; + } >; }; if (!cfg.command) cfg.command = {}; @@ -2820,6 +2833,118 @@ export function isUsableCombo( return false; } +// ───────────────────────────────────────────────────────────────────────── +// #9473 — Model allowlist / blocklist filter helpers +// ───────────────────────────────────────────────────────────────────────── + +/** + * Pre-compiled filter structure for the model allowlist/blocklist. + * + * "exact" holds full raw IDs (e.g. "cc/claude-opus-4-7") for O(1) match. + * "suffixes" holds bare model IDs (e.g. "claude-opus-4-7") that match any + * "{prefix}/claude-opus-4-7" — so operators can curate by model name without + * knowing the provider prefix. + */ +export interface ModelListFilter { + exact: Set; + suffixes: Set; +} + +/** + * Compile a string[] of model IDs into a pre-computed filter structure. + * Returns undefined when the list is empty or undefined — the "no filter" + * state that callers use as a passthrough. + * + * IDs containing a "/" are stored in "exact"; bare IDs (no slash) go into + * "suffixes" and match any "{prefix}/" at check time. + */ +export function compileModelListFilter(list?: string[]): ModelListFilter | undefined { + if (!list || list.length === 0) return undefined; + const exact = new Set(); + const suffixes = new Set(); + for (const id of list) { + if (id.includes("/")) { + exact.add(id); + } else { + suffixes.add(id); + } + } + if (exact.size === 0 && suffixes.size === 0) return undefined; + return { exact, suffixes }; +} + +/** + * Decide whether a raw model ID passes the allowlist/blocklist filter. + * + * Rules (all filters AND together with usableOnly): + * - No visible filter and no hidden filter → keep (passthrough). + * - Visible filter set: id must match either the exact set or the suffix + * set (bare suffix "claude-opus-4-7" matches any "{prefix}/claude-opus-4-7"). + * - Hidden filter set: id must NOT match either the exact or suffix set. + * - If id is in BOTH visible and hidden → DROP (deny wins — safer). + * - No-slash ids (e.g. combo names like "claude-primary") are checked + * against the exact set directly, and against the suffix set as a bare + * match. + * + * Pure function — exported so static + dynamic hooks share the same + * verdict logic without divergence. + */ +export function passesModelAllowlist( + id: string, + visible?: ModelListFilter, + hidden?: ModelListFilter +): boolean { + // Hidden filter takes precedence (deny wins over allow). + if (hidden) { + if (hidden.exact.has(id) || matchesSuffix(id, hidden.suffixes)) return false; + } + // Visible filter: if set, id must match. + if (visible) { + if (!visible.exact.has(id) && !matchesSuffix(id, visible.suffixes)) return false; + } + return true; +} + +/** + * Decide whether a combo passes the allowlist filter. A combo keeps when + * AT LEAST ONE of its members matches the visible filter. When no visible + * filter is set, all combos pass. Combos with zero resolvable members pass + * (mirrors `isUsableCombo` semantics). + */ +export function passesComboAllowlist( + combo: OmniRouteRawCombo, + visible?: ModelListFilter +): boolean { + if (!visible) return true; + const steps = Array.isArray(combo.models) ? combo.models : []; + if (steps.length === 0) return true; + let sawResolvableMember = false; + for (const step of steps) { + if (step?.kind === "combo-ref") continue; + const modelId = typeof step?.model === "string" ? step.model : ""; + if (modelId.length === 0) continue; + sawResolvableMember = true; + if (visible.exact.has(modelId) || matchesSuffix(modelId, visible.suffixes)) return true; + } + // No resolvable member → can't prove it should be hidden; keep. + if (!sawResolvableMember) return true; + // Every resolvable member failed the allowlist → drop. + return false; +} + +/** + * Check whether a raw model ID matches any suffix in the set. + * For an id like `cc/claude-opus-4-7`, the suffix after the first `/` + * is checked against the suffixes set. For a bare id like `claude-primary`, + * the id itself is checked against the suffixes set. + */ +function matchesSuffix(id: string, suffixes: Set): boolean { + if (suffixes.size === 0) return false; + const slash = id.indexOf("/"); + const suffix = slash > 0 ? id.slice(slash + 1) : id; + return suffixes.has(suffix); +} + /** * Slugify a combo display name into a copy/paste-friendly URL-safe segment. * Lowercases, replaces any run of non-alphanumeric chars with a single dash, @@ -3003,6 +3128,9 @@ export function createOmniRouteProviderHook( const wantCompressionMeta = features.compressionMetadata === true; const wantUsableOnly = features.usableOnly === true; const wantProviderTag = features.providerTag !== false; + // #9473: model allowlist/blocklist — compile once per hook instance. + const visibleFilter = compileModelListFilter(features.visibleModels); + const hiddenFilter = compileModelListFilter(features.hiddenModels); const now = deps.now ?? Date.now; // T-07: cache holds RAW fetch results (not pre-derived ModelV2) so that // the config-shim hook can share the same cache and derive its stripped @@ -3237,6 +3365,8 @@ export function createOmniRouteProviderHook( if (!entry.id) continue; if (canonicalDedup.has(entry.id)) continue; if (usable && !isUsableRawModelId(entry.id, usable, rawEnrichment)) continue; + // #9473: allowlist/blocklist filter (AND with usableOnly). + if (!passesModelAllowlist(entry.id, visibleFilter, hiddenFilter)) continue; const model = mapRawModelToModelV2(entry, { // #6859: server-facing id — NOT the OC-gate-prefixed `resolved.providerId`. providerId: resolved.omnirouteProviderId, @@ -3312,6 +3442,8 @@ export function createOmniRouteProviderHook( if (!combo.id) return false; if (combo.isHidden === true) return false; if (usable && !isUsableCombo(combo, usable)) return false; + // #9473: combo allowlist — drop when no member matches visible filter. + if (visibleFilter && !passesComboAllowlist(combo, visibleFilter)) return false; return true; }); // Resolved nested combos keyed by their friendly name, so parent @@ -4129,6 +4261,9 @@ export function buildStaticProviderEntry( wantUsableOnly && connections && connections.length > 0 ? usableProviderAliasSet(connections, enrichment) : undefined; + // #9473: model allowlist/blocklist — compile once per static-block build. + const visibleFilter = compileModelListFilter(opts.features?.visibleModels); + const hiddenFilter = compileModelListFilter(opts.features?.hiddenModels); // Provider-tag suffix — default-on, opt-out via `features.providerTag: false`. // Prepends e.g. `Claude - ` to enriched raw-model names so the picker // can tell `cc/claude-opus-4-7` (Anthropic) apart from `kr/claude-opus-4-7` @@ -4166,6 +4301,8 @@ export function buildStaticProviderEntry( // Skip canonical-named twins when the alias-keyed enriched row exists. if (canonicalDedup.has(raw.id)) continue; if (usable && !isUsableRawModelId(raw.id, usable, enrichment)) continue; + // #9473: allowlist/blocklist filter (AND with usableOnly). + if (!passesModelAllowlist(raw.id, visibleFilter, hiddenFilter)) continue; const caps = raw.capabilities ?? {}; // Enrichment overlay: `/api/pricing/models` carries human display names // (e.g. "Claude Opus 4.7" for raw id "cc/claude-opus-4-7"). The OC TUI @@ -4266,12 +4403,12 @@ export function buildStaticProviderEntry( entry.release_date = raw.release_date; } - // OC's static-catalog reader parses each key on `/` and rejects the - // entire provider block if ANY key resolves to a parsed providerID that - // has no corresponding provider block. So bare keys (no `/`) MUST be - // prefixed with the resolved providerId. Already-prefixed keys - // (e.g. `cc/claude-opus-4-7`) are left as-is to avoid double-prefixing. - models[raw.id.includes("/") ? raw.id : `${opts.providerId}/${raw.id}`] = entry; + // #9175: OC's `getModel` looks the model up by BARE id — the part after + // the first `/` in the user's request — so a dict key with an embedded + // provider prefix (`/`) is unreachable. Keys are the + // raw id verbatim; ids that already contain `/` (e.g. `cc/claude-opus-4-7`) + // keep it because the slash is part of the upstream model id itself. + models[raw.id] = entry; } // Combo entries → stripped LCD shape. Each combo is keyed as @@ -4318,6 +4455,8 @@ export function buildStaticProviderEntry( if (!combo.id) return false; if (combo.isHidden === true) return false; if (usable && !isUsableCombo(combo, usable)) return false; + // #9473: combo allowlist — drop when no member matches visible filter. + if (visibleFilter && !passesComboAllowlist(combo, visibleFilter)) return false; return true; }); @@ -4466,7 +4605,8 @@ export function buildStaticProviderEntry( // (`opencode-omniroute/opencode-omniroute/`), and `parseModel()` // resolves credentials for the nonexistent provider `opencode-omniroute` // instead of `omniroute`. See #7976. - models[buildComboKey(combo, usedComboKeys, opts.omnirouteProviderId)] = entry; + models[buildComboKey(combo, usedComboKeys, opts.omnirouteProviderId).split("/").pop()!] = + entry; // Make this combo's resolved entry available to parent combos // that reference it via combo-ref. Use the friendly name since diff --git a/@omniroute/opencode-plugin/tests/config-shim.test.ts b/@omniroute/opencode-plugin/tests/config-shim.test.ts index 04ec61f1b7..9ea884c0a3 100644 --- a/@omniroute/opencode-plugin/tests/config-shim.test.ts +++ b/@omniroute/opencode-plugin/tests/config-shim.test.ts @@ -227,7 +227,7 @@ test("config: with valid auth.json + apiKey + baseURL → mutates input.provider // Stripped per-model shape: name + cap flags + modalities + (optional) // cost. OC's SDK static schema accepts only `limit.{context,output}` — // `limit.input` is NOT in the SDK shape and gets dropped silently. - const claude = entry.models["opencode-omniroute/claude-sonnet-4-6"]; + const claude = entry.models["claude-sonnet-4-6"]; assert.ok(claude, "claude model surfaced"); assert.equal(claude.name, "claude-sonnet-4-6"); assert.equal(claude.attachment, true); @@ -248,7 +248,7 @@ test("config: with valid auth.json + apiKey + baseURL → mutates input.provider // Combo surfaces under bare key + LCD'd // (gemini's reasoning=false → combo reasoning=false). - const combo = entry.models["omniroute/claude-tier"]; + const combo = entry.models["claude-tier"]; assert.ok(combo, "combo surfaced under bare key"); assert.equal(combo.name, "Claude Tier"); assert.equal(combo.reasoning, false, "LCD: any member reasoning=false → combo reasoning=false"); @@ -471,10 +471,10 @@ test("config: combos fetcher throws → emit models-only catalog (no combos in m assert.ok(entry); const ids = Object.keys(entry.models).sort(); assert.deepEqual(ids, [ - "opencode-omniroute/claude-sonnet-4-6", - "opencode-omniroute/gemini-3-flash", + "claude-sonnet-4-6", + "gemini-3-flash", ]); - assert.equal(entry.models["omniroute/claude-tier"], undefined, "no combo entry"); + assert.equal(entry.models["claude-tier"], undefined, "no combo entry"); assert.ok( logger.entries.some((e) => String(e[0]).includes("/api/combos fetch failed")), "combos-fetch breadcrumb emitted" @@ -723,7 +723,7 @@ test("buildStaticProviderEntry: stripped per-model shape matches sibling @omniro } // Sanity: claude entry has all expected stripped fields. - const claude = block.models["opencode-omniroute/claude-sonnet-4-6"]; + const claude = block.models["claude-sonnet-4-6"]; assert.equal(typeof claude.name, "string"); assert.equal(typeof claude.attachment, "boolean"); assert.equal(typeof claude.reasoning, "boolean"); @@ -748,8 +748,8 @@ test("buildStaticProviderEntry: hidden combos are excluded", () => { "https://or.example/v1", "sk-test" ); - assert.equal(block.models["omniroute/claude-tier"], undefined); - assert.ok(block.models["opencode-omniroute/claude-sonnet-4-6"]); + assert.equal(block.models["claude-tier"], undefined); + assert.ok(block.models["claude-sonnet-4-6"]); }); // ──────────────────────────────────────────────────────────────────────────── @@ -765,7 +765,7 @@ test("buildStaticProviderEntry: emits modalities.input from raw.input_modalities "https://or.example/v1", "sk-test" ); - const claude = block.models["opencode-omniroute/claude-sonnet-4-6"]; + const claude = block.models["claude-sonnet-4-6"]; assert.deepEqual(claude.modalities?.input, ["text", "image"]); assert.deepEqual(claude.modalities?.output, ["text"]); }); @@ -779,7 +779,7 @@ test("buildStaticProviderEntry: never emits limit.input (OC SDK rejects it)", () "https://or.example/v1", "sk-test" ); - const claude = block.models["opencode-omniroute/claude-sonnet-4-6"]; + const claude = block.models["claude-sonnet-4-6"]; assert.equal((claude.limit as Record).input, undefined); assert.equal(typeof claude.limit?.context, "number"); assert.equal(typeof claude.limit?.output, "number"); @@ -807,7 +807,7 @@ test("buildStaticProviderEntry: emits cost when enrichment carries pricing", () "sk-test", enrichment ); - const claude = block.models["opencode-omniroute/claude-sonnet-4-6"]; + const claude = block.models["claude-sonnet-4-6"]; assert.equal(claude.cost?.input, 3); assert.equal(claude.cost?.output, 15); assert.equal(claude.cost?.cache_read, 0.3); @@ -828,8 +828,8 @@ test("buildStaticProviderEntry: emits release_date when raw carries it; omits wh "https://or.example/v1", "sk-test" ); - assert.equal(block.models["opencode-omniroute/claude-with-date"].release_date, "2026-02-19"); - assert.equal(block.models["opencode-omniroute/gemini-3-flash"].release_date, undefined); + assert.equal(block.models["claude-with-date"].release_date, "2026-02-19"); + assert.equal(block.models["gemini-3-flash"].release_date, undefined); }); test("buildStaticProviderEntry: combo modalities = intersection of members (LCD)", () => { @@ -858,7 +858,7 @@ test("buildStaticProviderEntry: combo modalities = intersection of members (LCD) "https://or.example/v1", "sk-test" ); - const combo = block.models["omniroute/mixed-tier"]; + const combo = block.models["mixed-tier"]; assert.ok(combo, "combo emitted under slug key"); // claude has text+image, text-only has text → intersection drops image. assert.deepEqual(combo.modalities?.input, ["text"]); @@ -967,10 +967,10 @@ test("config: enrichment fetched + name overlaid on raw-model entries", async () "opencode-omniroute" ]; assert.ok(entry); - assert.equal(entry.models["opencode-omniroute/claude-sonnet-4-6"].name, "Claude Sonnet 4.6"); - assert.equal(entry.models["opencode-omniroute/gemini-3-flash"].name, "Gemini 3 Flash"); + assert.equal(entry.models["claude-sonnet-4-6"].name, "Claude Sonnet 4.6"); + assert.equal(entry.models["gemini-3-flash"].name, "Gemini 3 Flash"); // Combo names still come from /api/combos — enrichment overlay does NOT touch combos. - assert.equal(entry.models["omniroute/claude-tier"].name, "Claude Tier"); + assert.equal(entry.models["claude-tier"].name, "Claude Tier"); assert.equal(enrichmentFetcher.callCount(), 1); }); @@ -1000,7 +1000,7 @@ test("config: features.enrichment=false skips enrichment fetch + keeps raw-id na assert.ok(entry); assert.equal(enrichmentFetcher.callCount(), 0, "enrichment fetch suppressed by feature flag"); assert.equal( - entry.models["opencode-omniroute/claude-sonnet-4-6"].name, + entry.models["claude-sonnet-4-6"].name, "claude-sonnet-4-6", "raw id retained" ); @@ -1027,7 +1027,7 @@ test("config: enrichment fetcher throws → soft-fail (warn + raw-id static cata ]; assert.ok(entry, "static block still published on enrichment failure"); assert.equal( - entry.models["opencode-omniroute/claude-sonnet-4-6"].name, + entry.models["claude-sonnet-4-6"].name, "claude-sonnet-4-6", "raw id retained" ); @@ -1229,11 +1229,11 @@ test("config: diskCache hydrates stale snapshot when /v1/models throws", async ( "opencode-omniroute" ]; assert.ok( - entry.models["opencode-omniroute/claude-sonnet-4-6"], + entry.models["claude-sonnet-4-6"], "stale snapshot hydrated into static block" ); assert.equal( - entry.models["opencode-omniroute/claude-sonnet-4-6"].name, + entry.models["claude-sonnet-4-6"].name, "Claude Sonnet 4.6 (cached)", "stale enrichment also reused" ); @@ -1281,7 +1281,7 @@ test("config: cached rawEnrichment from earlier provider hook is reused (no refe const entry = (input as { provider: Record }).provider[ "opencode-omniroute" ]; - assert.equal(entry.models["opencode-omniroute/claude-sonnet-4-6"].name, "Claude Sonnet 4.6"); + assert.equal(entry.models["claude-sonnet-4-6"].name, "Claude Sonnet 4.6"); }); // ───────────────────────────────────────────────────────────────────── @@ -1332,12 +1332,12 @@ test("config: providerTag (default-on) prepends ' - ' to enriched raw- ]; assert.ok(entry); assert.equal( - entry.models["opencode-omniroute/claude-sonnet-4-6"].name, + entry.models["claude-sonnet-4-6"].name, "Claude - Claude Sonnet 4.6" ); - assert.equal(entry.models["opencode-omniroute/gemini-3-flash"].name, "Gemini - Gemini 3 Flash"); + assert.equal(entry.models["gemini-3-flash"].name, "Gemini - Gemini 3 Flash"); // Combos stay untouched — `Combo: ` prefix already conveys multi-upstream. - assert.equal(entry.models["omniroute/claude-tier"].name, "Claude Tier"); + assert.equal(entry.models["claude-tier"].name, "Claude Tier"); }); test("config: providerTag=false suppresses the suffix", async () => { @@ -1364,7 +1364,7 @@ test("config: providerTag=false suppresses the suffix", async () => { "opencode-omniroute" ]; assert.equal( - entry.models["opencode-omniroute/claude-sonnet-4-6"].name, + entry.models["claude-sonnet-4-6"].name, "Claude Sonnet 4.6", "enriched name kept, provider tag suppressed" ); @@ -1396,7 +1396,7 @@ test("config: providerTag falls back to UPPER(alias) when providerDisplayName mi const entry = (input as { provider: Record }).provider[ "opencode-omniroute" ]; - assert.equal(entry.models["opencode-omniroute/claude-sonnet-4-6"].name, "CC - Claude Sonnet 4.6"); + assert.equal(entry.models["claude-sonnet-4-6"].name, "CC - Claude Sonnet 4.6"); }); test("config: providerTag skipped entirely when neither providerDisplayName nor providerAlias set", async () => { @@ -1423,7 +1423,7 @@ test("config: providerTag skipped entirely when neither providerDisplayName nor const entry = (input as { provider: Record }).provider[ "opencode-omniroute" ]; - assert.equal(entry.models["opencode-omniroute/claude-sonnet-4-6"].name, "Claude Sonnet 4.6"); + assert.equal(entry.models["claude-sonnet-4-6"].name, "Claude Sonnet 4.6"); }); test("config: providerTag is idempotent — second hook call doesn't double-suffix", async () => { @@ -1451,7 +1451,7 @@ test("config: providerTag is idempotent — second hook call doesn't double-suff "opencode-omniroute" ]; assert.equal( - entryA.models["opencode-omniroute/claude-sonnet-4-6"].name, + entryA.models["claude-sonnet-4-6"].name, "Claude - Claude Sonnet 4.6" ); @@ -1462,7 +1462,7 @@ test("config: providerTag is idempotent — second hook call doesn't double-suff "opencode-omniroute" ]; assert.equal( - entryB.models["opencode-omniroute/claude-sonnet-4-6"].name, + entryB.models["claude-sonnet-4-6"].name, "Claude - Claude Sonnet 4.6" ); }); @@ -1516,7 +1516,7 @@ test("buildStaticProviderEntry: nested combo-ref context is the bottleneck acros ); // Pre-fix: Parent would advertise 200_000 (only raw-big counted). // Post-fix: Parent should advertise 8_000 (TinyCombo bottleneck). - const parent = block.models["omniroute/parent"]; + const parent = block.models["parent"]; assert.ok(parent, "Parent combo must be in the static catalog"); assert.equal(parent.limit?.context, 8_000); }); diff --git a/@omniroute/opencode-plugin/tests/model-allowlist.test.ts b/@omniroute/opencode-plugin/tests/model-allowlist.test.ts new file mode 100644 index 0000000000..de22aa2bba --- /dev/null +++ b/@omniroute/opencode-plugin/tests/model-allowlist.test.ts @@ -0,0 +1,317 @@ +/** + * #9473 — Model allowlist/blocklist for the opencode-plugin. + * + * Tests for the pure filter helpers (`compileModelListFilter`, + * `passesModelAllowlist`, `passesComboAllowlist`) and the schema + hook-level + * integration. The allowlist/blocklist composes with `usableOnly` (all filters + * AND together), blocklist wins over allowlist (deny takes precedence), and + * bare-suffix entries (e.g. "claude-opus-4-7") match any "{prefix}/claude-opus-4-7". + */ + +import test from "node:test"; +import assert from "node:assert/strict"; + +import { + compileModelListFilter, + passesModelAllowlist, + passesComboAllowlist, + parseOmniRoutePluginOptions, + buildStaticProviderEntry, + resolveOmniRoutePluginOptions, + type OmniRouteRawCombo, + type OmniRouteRawModelEntry, +} from "../src/index.js"; + +// ───────────────────────────────────────────────────────────────────────── +// compileModelListFilter +// ───────────────────────────────────────────────────────────────────────── + +test("compileModelListFilter: undefined list → undefined", () => { + assert.equal(compileModelListFilter(undefined), undefined); +}); + +test("compileModelListFilter: empty array → undefined", () => { + assert.equal(compileModelListFilter([]), undefined); +}); + +test("compileModelListFilter: raw IDs with slash → exact set populated", () => { + const f = compileModelListFilter(["cc/claude-opus-4-7", "glm/gpt-5"]); + assert.ok(f); + assert.equal(f.exact.has("cc/claude-opus-4-7"), true); + assert.equal(f.exact.has("glm/gpt-5"), true); + assert.equal(f.suffixes.size, 0); +}); + +test("compileModelListFilter: bare IDs (no slash) → suffixes set populated", () => { + const f = compileModelListFilter(["claude-opus-4-7", "gpt-5"]); + assert.ok(f); + assert.equal(f.suffixes.has("claude-opus-4-7"), true); + assert.equal(f.suffixes.has("gpt-5"), true); + assert.equal(f.exact.size, 0); +}); + +test("compileModelListFilter: mixed raw + bare → both sets populated", () => { + const f = compileModelListFilter(["cc/claude-opus-4-7", "gpt-5"]); + assert.ok(f); + assert.equal(f.exact.has("cc/claude-opus-4-7"), true); + assert.equal(f.suffixes.has("gpt-5"), true); +}); + +// ───────────────────────────────────────────────────────────────────────── +// passesModelAllowlist +// ───────────────────────────────────────────────────────────────────────── + +test("passesModelAllowlist: no visible, no hidden → keep (passthrough)", () => { + assert.equal(passesModelAllowlist("cc/claude-opus-4-7", undefined, undefined), true); +}); + +test("passesModelAllowlist: visible undefined, hidden undefined → keep", () => { + assert.equal(passesModelAllowlist("cc/claude-opus-4-7", undefined, undefined), true); +}); + +test("passesModelAllowlist: visible set, id matches exact → keep", () => { + const vis = compileModelListFilter(["cc/claude-opus-4-7"]); + assert.equal(passesModelAllowlist("cc/claude-opus-4-7", vis, undefined), true); +}); + +test("passesModelAllowlist: visible set, id matches suffix → keep", () => { + const vis = compileModelListFilter(["claude-opus-4-7"]); + assert.equal(passesModelAllowlist("cc/claude-opus-4-7", vis, undefined), true); +}); + +test("passesModelAllowlist: visible set, id does NOT match → drop", () => { + const vis = compileModelListFilter(["cc/claude-opus-4-7"]); + assert.equal(passesModelAllowlist("glm/gpt-5", vis, undefined), false); +}); + +test("passesModelAllowlist: visible set, bare suffix matches different prefix → keep", () => { + const vis = compileModelListFilter(["claude-opus-4-7"]); + assert.equal(passesModelAllowlist("kr/claude-opus-4-7", vis, undefined), true); +}); + +test("passesModelAllowlist: hidden set, id matches exact → drop", () => { + const hid = compileModelListFilter(["cc/claude-opus-4-7"]); + assert.equal(passesModelAllowlist("cc/claude-opus-4-7", undefined, hid), false); +}); + +test("passesModelAllowlist: hidden set, id matches suffix → drop", () => { + const hid = compileModelListFilter(["claude-opus-4-7"]); + assert.equal(passesModelAllowlist("cc/claude-opus-4-7", undefined, hid), false); +}); + +test("passesModelAllowlist: hidden set, id does NOT match → keep", () => { + const hid = compileModelListFilter(["cc/claude-opus-4-7"]); + assert.equal(passesModelAllowlist("glm/gpt-5", undefined, hid), true); +}); + +test("passesModelAllowlist: id in BOTH visible and hidden → DROP (deny wins)", () => { + const vis = compileModelListFilter(["cc/claude-opus-4-7"]); + const hid = compileModelListFilter(["cc/claude-opus-4-7"]); + assert.equal(passesModelAllowlist("cc/claude-opus-4-7", vis, hid), false); +}); + +test("passesModelAllowlist: visible allows, hidden blocks different id → keep the visible one", () => { + const vis = compileModelListFilter(["cc/claude-opus-4-7"]); + const hid = compileModelListFilter(["glm/gpt-5"]); + assert.equal(passesModelAllowlist("cc/claude-opus-4-7", vis, hid), true); + assert.equal(passesModelAllowlist("glm/gpt-5", vis, hid), false); +}); + +test("passesModelAllowlist: bare-suffix hidden blocks exact match too", () => { + const hid = compileModelListFilter(["claude-opus-4-7"]); + assert.equal(passesModelAllowlist("cc/claude-opus-4-7", undefined, hid), false); + assert.equal(passesModelAllowlist("kr/claude-opus-4-7", undefined, hid), false); +}); + +test("passesModelAllowlist: no-slash id, visible set has bare match → keep", () => { + const vis = compileModelListFilter(["claude-primary"]); + assert.equal(passesModelAllowlist("claude-primary", vis, undefined), true); +}); + +test("passesModelAllowlist: no-slash id, visible set has no match → drop", () => { + const vis = compileModelListFilter(["cc/claude-opus-4-7"]); + assert.equal(passesModelAllowlist("claude-primary", vis, undefined), false); +}); + +// ───────────────────────────────────────────────────────────────────────── +// passesComboAllowlist +// ───────────────────────────────────────────────────────────────────────── + +function combo(models: OmniRouteRawCombo["models"]): OmniRouteRawCombo { + return { id: "c1", name: "Test Combo", models }; +} + +test("passesComboAllowlist: visible undefined → keep", () => { + const c = combo([{ kind: "model", model: "cc/claude-opus-4-7" }]); + assert.equal(passesComboAllowlist(c, undefined), true); +}); + +test("passesComboAllowlist: ≥1 member matches visible → keep", () => { + const vis = compileModelListFilter(["cc/claude-opus-4-7"]); + const c = combo([ + { kind: "model", model: "dead/legacy" }, + { kind: "model", model: "cc/claude-opus-4-7" }, + ]); + assert.equal(passesComboAllowlist(c, vis), true); +}); + +test("passesComboAllowlist: zero members match visible → drop", () => { + const vis = compileModelListFilter(["cc/claude-opus-4-7"]); + const c = combo([ + { kind: "model", model: "glm/gpt-5" }, + { kind: "model", model: "kr/claude-opus-4-7" }, + ]); + assert.equal(passesComboAllowlist(c, vis), false); +}); + +test("passesComboAllowlist: bare suffix matches any prefix → keep", () => { + const vis = compileModelListFilter(["claude-opus-4-7"]); + const c = combo([{ kind: "model", model: "kr/claude-opus-4-7" }]); + assert.equal(passesComboAllowlist(c, vis), true); +}); + +test("passesComboAllowlist: zero members → keep", () => { + const vis = compileModelListFilter(["cc/claude-opus-4-7"]); + assert.equal(passesComboAllowlist(combo([]), vis), true); + assert.equal(passesComboAllowlist(combo(undefined), vis), true); +}); + +test("passesComboAllowlist: only combo-ref steps → keep", () => { + const vis = compileModelListFilter(["cc/claude-opus-4-7"]); + const c = combo([{ kind: "combo-ref", comboName: "nested" }]); + assert.equal(passesComboAllowlist(c, vis), true); +}); + +// ───────────────────────────────────────────────────────────────────────── +// Schema — visibleModels / hiddenModels +// ───────────────────────────────────────────────────────────────────────── + +test("parseOmniRoutePluginOptions: visibleModels string[] → preserved", () => { + const r = parseOmniRoutePluginOptions({ + features: { visibleModels: ["cc/claude-opus-4-7", "gpt-5"] }, + }); + assert.deepEqual(r.features?.visibleModels, ["cc/claude-opus-4-7", "gpt-5"]); +}); + +test("parseOmniRoutePluginOptions: hiddenModels string[] → preserved", () => { + const r = parseOmniRoutePluginOptions({ + features: { hiddenModels: ["glm/gpt-5"] }, + }); + assert.deepEqual(r.features?.hiddenModels, ["glm/gpt-5"]); +}); + +test("parseOmniRoutePluginOptions: both lists together → preserved", () => { + const r = parseOmniRoutePluginOptions({ + features: { + visibleModels: ["cc/claude-opus-4-7"], + hiddenModels: ["glm/gpt-5"], + }, + }); + assert.deepEqual(r.features?.visibleModels, ["cc/claude-opus-4-7"]); + assert.deepEqual(r.features?.hiddenModels, ["glm/gpt-5"]); +}); + +test("parseOmniRoutePluginOptions: empty string in visibleModels → rejects", () => { + assert.throws( + () => + parseOmniRoutePluginOptions({ + features: { visibleModels: [""] }, + }), + /Invalid @omniroute\/opencode-plugin options/ + ); +}); + +test("parseOmniRoutePluginOptions: empty string in hiddenModels → rejects", () => { + assert.throws( + () => + parseOmniRoutePluginOptions({ + features: { hiddenModels: [""] }, + }), + /Invalid @omniroute\/opencode-plugin options/ + ); +}); + +test("parseOmniRoutePluginOptions: unknown features key still rejects (strict invariant)", () => { + assert.throws( + () => + parseOmniRoutePluginOptions({ + features: { visibleModels: ["x"], unknownKey: true }, + }), + /Invalid @omniroute\/opencode-plugin options/ + ); +}); + +// ───────────────────────────────────────────────────────────────────────── +// buildStaticProviderEntry — allowlist/blocklist integration +// ───────────────────────────────────────────────────────────────────────── + +const FAKE_RAW_MODELS: OmniRouteRawModelEntry[] = [ + { id: "cc/claude-opus-4-7", owned_by: "anthropic" }, + { id: "glm/gpt-5", owned_by: "openai" }, + { id: "kr/claude-opus-4-7", owned_by: "anthropic" }, + { id: "claude-primary", owned_by: "combo" }, +]; + +test("buildStaticProviderEntry: no allowlist → all models emitted", () => { + const opts = resolveOmniRoutePluginOptions({ features: {} }); + const entry = buildStaticProviderEntry(FAKE_RAW_MODELS, [], opts, "http://localhost:20128/v1", "sk-test"); + const ids = Object.keys(entry.models); + assert.ok(ids.includes("cc/claude-opus-4-7"), "cc/claude-opus-4-7 should be present"); + assert.ok(ids.includes("glm/gpt-5"), "glm/gpt-5 should be present"); + assert.ok(ids.includes("kr/claude-opus-4-7"), "kr/claude-opus-4-7 should be present"); +}); + +test("buildStaticProviderEntry: visibleModels filters to only listed IDs", () => { + const opts = resolveOmniRoutePluginOptions({ + features: { visibleModels: ["cc/claude-opus-4-7"] }, + }); + const entry = buildStaticProviderEntry(FAKE_RAW_MODELS, [], opts, "http://localhost:20128/v1", "sk-test"); + const ids = Object.keys(entry.models); + assert.ok(ids.includes("cc/claude-opus-4-7"), "cc/claude-opus-4-7 should be present"); + assert.equal(ids.includes("glm/gpt-5"), false, "glm/gpt-5 should be filtered out"); + assert.equal(ids.includes("kr/claude-opus-4-7"), false, "kr/claude-opus-4-7 should be filtered out"); +}); + +test("buildStaticProviderEntry: hiddenModels drops listed IDs", () => { + const opts = resolveOmniRoutePluginOptions({ + features: { hiddenModels: ["glm/gpt-5"] }, + }); + const entry = buildStaticProviderEntry(FAKE_RAW_MODELS, [], opts, "http://localhost:20128/v1", "sk-test"); + const ids = Object.keys(entry.models); + assert.ok(ids.includes("cc/claude-opus-4-7"), "cc/claude-opus-4-7 should be present"); + assert.equal(ids.includes("glm/gpt-5"), false, "glm/gpt-5 should be hidden"); + assert.ok(ids.includes("kr/claude-opus-4-7"), "kr/claude-opus-4-7 should be present"); +}); + +test("buildStaticProviderEntry: bare-suffix visibleModels matches any prefix", () => { + const opts = resolveOmniRoutePluginOptions({ + features: { visibleModels: ["claude-opus-4-7"] }, + }); + const entry = buildStaticProviderEntry(FAKE_RAW_MODELS, [], opts, "http://localhost:20128/v1", "sk-test"); + const ids = Object.keys(entry.models); + assert.ok(ids.includes("cc/claude-opus-4-7"), "cc/claude-opus-4-7 should match via suffix"); + assert.ok(ids.includes("kr/claude-opus-4-7"), "kr/claude-opus-4-7 should match via suffix"); + assert.equal(ids.includes("glm/gpt-5"), false, "glm/gpt-5 should be filtered out"); +}); + +test("buildStaticProviderEntry: id in both visible and hidden → hidden wins", () => { + const opts = resolveOmniRoutePluginOptions({ + features: { + visibleModels: ["cc/claude-opus-4-7"], + hiddenModels: ["cc/claude-opus-4-7"], + }, + }); + const entry = buildStaticProviderEntry(FAKE_RAW_MODELS, [], opts, "http://localhost:20128/v1", "sk-test"); + const ids = Object.keys(entry.models); + assert.equal(ids.includes("cc/claude-opus-4-7"), false, "deny takes precedence"); +}); + +test("buildStaticProviderEntry: empty visibleModels → no filter (passthrough)", () => { + const opts = resolveOmniRoutePluginOptions({ + features: { visibleModels: [] }, + }); + const entry = buildStaticProviderEntry(FAKE_RAW_MODELS, [], opts, "http://localhost:20128/v1", "sk-test"); + const ids = Object.keys(entry.models); + assert.ok(ids.includes("cc/claude-opus-4-7"), "empty visibleModels should not filter"); + assert.ok(ids.includes("glm/gpt-5"), "empty visibleModels should not filter"); +}); diff --git a/@omniroute/opencode-plugin/tests/provider-id-routing.test.ts b/@omniroute/opencode-plugin/tests/provider-id-routing.test.ts index a55e935475..0d2fda45e2 100644 --- a/@omniroute/opencode-plugin/tests/provider-id-routing.test.ts +++ b/@omniroute/opencode-plugin/tests/provider-id-routing.test.ts @@ -111,7 +111,9 @@ test("#6859: createOmniRouteProviderHook end-to-end — catalog keys/providerID // `opencode-omniroute`. Confirmed against the issue's own curl repro // (`model: "opencode-omniroute/hermes-smart-stack"` → "No active // credentials for provider: opencode-omniroute"). -test("#7976: buildStaticProviderEntry keys bare-slug combo ids with the unprefixed omnirouteProviderId (no double OC-gate prefix)", () => { +// #9175 tightened this further: OC's `getModel` looks models up by BARE id, +// so combo dict keys now carry NO prefix at all (not even `omniroute/`). +test("#7976/#9175: buildStaticProviderEntry keys combos by bare slug (no prefix at all — never the OC-gate providerId)", () => { const resolved = resolveOmniRoutePluginOptions({ providerId: "omniroute" }); assert.equal(resolved.providerId, "opencode-omniroute"); assert.equal(resolved.omnirouteProviderId, "omniroute"); @@ -131,7 +133,7 @@ test("#7976: buildStaticProviderEntry keys bare-slug combo ids with the unprefix "sk-test" ); - assert.deepEqual(Object.keys(block.models), ["omniroute/hermes-smart-stack"]); + assert.deepEqual(Object.keys(block.models), ["hermes-smart-stack"]); assert.equal( block.models["opencode-omniroute/hermes-smart-stack"], undefined, diff --git a/AGENTS.md b/AGENTS.md index c57fdd55b2..f88c9056a5 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -1,63 +1,229 @@ # OmniRoute agent guide -## Project +> **Single source of truth.** This file holds ALL project rules, conventions, architecture notes +> and Hard Rules for every AI assistant working this repository (Claude Code, Gemini, Codex, +> Copilot, and any other agent). `CLAUDE.md` and `GEMINI.md` only add assistant-specific deltas +> and point back here. When a rule needs to change, change it HERE — never re-fork it into an +> assistant-specific file. -OmniRoute is a unified AI proxy/router. The repository contains the Next.js application -(`src/`), streaming engine workspace (`open-sse/`), Electron desktop app (`electron/`), -CLI (`bin/`), and tests (`tests/`). +## Quick Start -## Setup and focused checks +```bash +npm install # Install deps (auto-generates .env from .env.example) +npm run dev # Dev server at http://localhost:20128 +npm run build # Production build (Next.js 16 standalone) +npm run build:release # Release build +npm run lint # ESLint (0 errors expected; warnings are pre-existing) +npm run typecheck:core # TypeScript check (should be clean) +npm run typecheck:noimplicit:core # Strict check (no implicit any) +npm run test:coverage # Unit tests + coverage gate (60/60/60/60 — statements/lines/functions/branches) +npm run check # lint + test combined +npm run check:cycles # Detect circular dependencies +npm run check:docs-all # Run after changing documentation (includes fabricated-docs validation) +``` -- Runtime: Node.js `>=22.22.3 <23` or `>=24.0.0 <27`; npm 10+. -- Install dependencies: `npm install`. -- Start development: `npm run dev`. -- Build: `npm run build`; release build: `npm run build:release`. -- Lint: `npm run lint`. -- Core type check: `npm run typecheck:core`. -- Run the most focused test for changed code first: - `node --import tsx/esm --test tests/unit/.test.ts`. -- Other suites: `npm run test:vitest`, `npm run test:e2e`, - `npm run test:protocols:e2e`, and `npm run test:ecosystem`. -- Run `npm run check:docs-all` after changing documentation. +### Running Tests -For the complete test matrix, coverage requirements, and pull-request gates, read -[`CONTRIBUTING.md`](CONTRIBUTING.md#running-tests). +Run the most focused test for changed code first: -## Documentation accuracy +```bash +# Single test file (Node.js native test runner — most tests) +node --import tsx/esm --test tests/unit/your-file.test.ts -Documentation must describe verified behavior, not plausible behavior. +# Vitest (MCP server, autoCombo, cache) +npm run test:vitest -1. Before documenting an API name, endpoint, path, CLI command, or environment variable, - search for it: `rg -n "name" src/ open-sse/ bin/`. If it has no source match, do not - document it. -2. Measure mutable counts instead of writing them from memory: use `wc -l ` or a - directory-specific count command. -3. Copy code examples from working usage or run them. Prefer a source link such as - `path/to/file.ts:line` to an invented signature. -4. Run `npm run check:docs-all` for edits under `docs/`; it includes the fabricated-docs - validation. +# All suites +npm run test:all +``` -## Code conventions +Other suites: `npm run test:e2e`, `npm run test:protocols:e2e`, `npm run test:ecosystem`. -- Format with Prettier: two spaces, semicolons, double quotes, 100-character line width, - and ES5 trailing commas. Run Prettier on changed files. -- TypeScript target is ES2022 with bundler module resolution. Prefer explicit types. -- Import order: external, internal (`@/` and `@omniroute/open-sse`), then relative. -- Do not add logic to `src/lib/localDb.ts`; import from the owning `src/lib/db/` module. -- Use specific errors and contextual logging. Do not silently swallow SSE-stream failures; - use abort signals for cleanup and return appropriate HTTP status codes. +For full test matrix, see `CONTRIBUTING.md` → "Running Tests". For deep architecture, see the +Repository map and Reference Documentation sections below. -## Security requirements +--- -- Never commit credentials or log SQLite encryption keys. -- Validate API inputs with Zod and use the route's required authentication path. -- Sanitize user HTML with DOMPurify. -- Use `resolvePublicCred()` for public upstream OAuth identifiers; never add them as string - literals. See [`docs/security/PUBLIC_CREDS.md`](docs/security/PUBLIC_CREDS.md). -- Use `buildErrorBody()` or `sanitizeErrorMessage()` for HTTP, SSE, executor, and MCP errors; - do not return raw `err.stack` or `err.message`. See - [`docs/security/ERROR_SANITIZATION.md`](docs/security/ERROR_SANITIZATION.md). -- Pass runtime values to `exec()` or `spawn()` through `env`, not interpolation into a script. +## Project at a Glance + +**OmniRoute** — unified AI proxy/router. One endpoint, 291 LLM providers, auto-fallback. + +| Layer | Location | Purpose | +| ------------- | ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | +| API Routes | `src/app/api/v1/` | Next.js App Router — entry points | +| Handlers | `open-sse/handlers/` | Request processing (chat, embeddings, etc) | +| Executors | `open-sse/executors/` | Provider-specific HTTP dispatch | +| Translators | `open-sse/translator/` | Format conversion (OpenAI↔Claude↔Gemini) | +| Transformer | `open-sse/transformer/` | Responses API ↔ Chat Completions | +| Services | `open-sse/services/` | Combo routing, rate limits, caching, etc | +| Database | `src/lib/db/` | SQLite domain modules (130 migrations) | +| Domain/Policy | `src/domain/` | Policy engine, cost rules, fallback logic | +| MCP Server | `open-sse/mcp-server/` | 105 tools (42 base + memory/skill/agentSkill/pool/notion/obsidian/gamification/plugin modules), 3 transports (stdio / SSE / Streamable HTTP), 31 scopes | +| A2A Server | `src/lib/a2a/` | JSON-RPC 2.0 agent protocol | +| Skills | `src/lib/skills/` | Extensible skill framework | +| Memory | `src/lib/memory/` | Persistent conversational memory | + +Monorepo: `src/` (Next.js 16 app), `open-sse/` (streaming engine workspace), `electron/` (desktop app), `tests/`, `bin/` (CLI entry point). + +--- + +## Request Pipeline + +``` +Client → /v1/chat/completions (Next.js route) + → CORS → Zod validation → auth? → policy check → prompt injection guard + → handleChatCore() [open-sse/handlers/chatCore.ts] + → cache check → rate limit → combo routing? + → resolveComboTargets() → handleSingleModel() per target + → translateRequest() → getExecutor() → executor.execute() + → fetch() upstream → retry w/ backoff + → response translation → SSE stream or JSON + → If Responses API: responsesTransformer.ts TransformStream +``` + +API routes follow a consistent pattern: `Route → CORS preflight → Zod body validation → Optional auth (extractApiKey/isValidApiKey) → API key policy enforcement → Handler delegation (open-sse)`. No global Next.js middleware — interception is route-specific. + +**Combo routing** (`open-sse/services/combo.ts`): 19 public strategies (priority, weighted, fill-first, round-robin, p2c, random, least-used, cost-optimized, reset-aware, reset-window, headroom, strict-random, auto, lkgp, context-optimized, cache-optimized, context-relay, fusion, pipeline). Each target calls `handleSingleModel()` which wraps `handleChatCore()` with per-target error handling and circuit breaker checks. The `fusion` strategy is the exception: it fans out to a panel of models in parallel, then a judge model synthesizes one final answer (`open-sse/services/fusion.ts`). See `docs/routing/AUTO-COMBO.md` for the 13-factor Auto-Combo scoring + the full strategy table and `docs/architecture/RESILIENCE_GUIDE.md` for the 3 resilience layers. + +--- + +## Resilience Runtime State + +OmniRoute has three related but distinct temporary-failure mechanisms. Keep their +scope separate when debugging routing behavior. See the +[3-layer resilience diagram](./docs/diagrams/exported/resilience-3layers.svg) +(source: [docs/diagrams/resilience-3layers.mmd](./docs/diagrams/resilience-3layers.mmd)) +for an at-a-glance map. + +### Provider Circuit Breaker + +**Scope**: whole provider, e.g. `glm`, `openai`, `anthropic`. + +**Purpose**: stop sending traffic to a provider that is repeatedly failing at the +upstream/service level, so one unhealthy provider does not slow down every request. + +**Implementation**: + +- Core class: `src/shared/utils/circuitBreaker.ts` +- Chat gate/execution wiring: `src/sse/handlers/chatHelpers.ts`, `src/sse/handlers/chat.ts` +- Runtime status API: `src/app/api/monitoring/health/route.ts` +- Shared wrappers: `open-sse/services/accountFallback.ts` +- Persisted state table: `domain_circuit_breakers` + +**States**: + +- `CLOSED`: normal traffic is allowed. +- `OPEN`: provider is temporarily blocked; callers get a provider-circuit-open response + or combo routing skips to another target. +- `HALF_OPEN`: reset timeout has elapsed; allow a probe request. Success closes the + breaker, failure opens it again. + +**Defaults** (`open-sse/config/constants.ts`): + +- OAuth providers: threshold `3`, reset timeout `60s`. +- API-key providers: threshold `5`, reset timeout `30s`. +- Local providers: threshold `2`, reset timeout `15s`. + +Only provider-level failure statuses should trip the provider breaker: + +```ts +(408, 500, 502, 503, 504); +``` + +Do not trip the whole-provider breaker for normal account/key/model errors like most +`401`, `403`, or `429` cases. Those usually belong to connection cooldown or model +lockout. A generic API-key provider `403` should be recoverable unless it is classified +as a terminal provider/account error. + +The breaker uses lazy recovery, not a background timer. When `OPEN` expires, reads such +as `getStatus()`, `canExecute()`, and `getRetryAfterMs()` refresh the state to +`HALF_OPEN`, so dashboards and combo candidate builders do not keep excluding an +expired provider forever. + +### Connection Cooldown + +**Scope**: one provider connection/account/key. + +**Purpose**: temporarily skip one bad key/account while allowing other connections for +the same provider to continue serving requests. + +**Implementation**: + +- Write/update path: `src/sse/services/auth.ts::markAccountUnavailable()` +- Account selection/filtering: `src/sse/services/auth.ts::getProviderCredentials...` +- Cooldown calculation: `open-sse/services/accountFallback.ts::checkFallbackError()` +- Settings: `src/lib/resilience/settings.ts` + +Important fields on provider connections: + +```ts +rateLimitedUntil; +testStatus: "unavailable"; +lastError; +lastErrorType; +errorCode; +backoffLevel; +``` + +During account selection, a connection is skipped while: + +```ts +new Date(rateLimitedUntil).getTime() > Date.now(); +``` + +Cooldowns are also lazy: when `rateLimitedUntil` is in the past, the connection becomes +eligible again. On successful use, `clearAccountError()` clears `testStatus`, +`rateLimitedUntil`, error fields, and `backoffLevel`. + +Default connection cooldown behavior: + +- OAuth base cooldown: `5s`. +- API-key base cooldown: `3s`. +- API-key `429` should prefer upstream retry hints (`Retry-After`, reset headers, or + parseable reset text) when available. +- Repeated recoverable failures use exponential backoff: + +```ts +baseCooldownMs * 2 ** failureIndex; +``` + +The anti-thundering-herd guard prevents concurrent failures on the same connection from +repeatedly extending the cooldown or double-incrementing `backoffLevel`. + +Terminal states are not cooldowns. `banned`, `expired`, and `credits_exhausted` are +intended to stay unavailable until credentials/settings change or an operator resets +them. Do not overwrite terminal states with transient cooldown state. + +### Model Lockout + +**Scope**: provider + connection + model. + +**Purpose**: avoid disabling a whole connection when only one model is unavailable or +quota-limited for that connection. + +Examples: + +- Per-model quota providers returning `429`. +- Local providers returning `404` for one missing model. +- Provider-specific mode/model permission failures such as selected Grok modes. + +Model lockout lives in `open-sse/services/accountFallback.ts` and lets the same +connection continue serving other models. + +### Debugging Guidance + +- If all keys for a provider are skipped, inspect both provider breaker state and each + connection's `rateLimitedUntil`/`testStatus`. +- If a provider appears permanently excluded after the reset window, check whether code + is reading raw `state` instead of using `getStatus()`/`canExecute()`. +- If one provider key fails but others should work, prefer connection cooldown over + provider breaker. +- If only one model fails, prefer model lockout over connection cooldown. +- If a state should self-recover, it should have a future timestamp/reset timeout and a + read path that refreshes expired state. Permanent statuses require manual credential + or config changes. + +--- ## Repository map @@ -76,6 +242,218 @@ Read the nearest `AGENTS.md` and the linked deep-dive before making a non-trivia | Safety and governance | `src/lib/{guardrails,compliance}/`, `src/server/authz/` | [`docs/security/GUARDRAILS.md`](docs/security/GUARDRAILS.md), [`docs/architecture/AUTHZ_GUIDE.md`](docs/architecture/AUTHZ_GUIDE.md) | | Operations | `src/mitm/`, tunnel modules, `electron/` | [`docs/ops/TUNNELS_GUIDE.md`](docs/ops/TUNNELS_GUIDE.md), [`docs/guides/ELECTRON_GUIDE.md`](docs/guides/ELECTRON_GUIDE.md) | +--- + +## File placement & repo-root hygiene + +- **Test files**: ALL unit tests, integration tests, ecosystem tests, or Vitest files MUST strictly be placed within the `tests/` directory (e.g., `tests/unit/`, `tests/integration/`). NEVER create test files in the project root (`/`). +- **Scripts and utilities**: ALL maintenance, debugging, generation, or experimental scripts (`.cjs`, `.mjs`, `.js`, `.ts`) MUST be placed strictly inside one of the `scripts/` subfolders (`build/`, `dev/`, `check/`, `docs/`, `i18n/`, `ad-hoc/`). One-shot or experimental code goes under `scripts/ad-hoc/`. NEVER dump loose scripts in the project root (`/`) or the top-level `scripts/` folder. + +**The project root MUST ONLY contain:** + +- Configuration files (`vitest.config.ts`, `next.config.mjs`, `eslint.config.mjs`, `tsconfig*.json`, `playwright.config.ts`, `prettier.config.mjs`, `postcss.config.mjs`, `sonar-project.properties`, `fly.toml`, `docker-compose*.yml`, `Dockerfile`) +- Dependency files (`package.json`, `package-lock.json`) +- Documentation files (`README.md`, `CHANGELOG.md`, `LICENSE`, `AGENTS.md`, `CLAUDE.md`, `GEMINI.md`, `CONTRIBUTING.md`, `SECURITY.md`, `CODE_OF_CONDUCT.md`, `llm.txt`, `Tuto_Qdrant.md`) +- CI/CD files and ignore definitions (`.gitignore`, `.dockerignore`, `.npmignore`, `.npmrc`, `.node-version`, `.nvmrc`, `.env.example`) + +When creating _any_ validation tests or one-off logic scripts, default to `scripts/ad-hoc/` or `tests/unit/` according to your goals. Do not pollute the `/` root context. + +--- + +## Key Conventions + +### Code Style + +- **2 spaces**, semicolons, double quotes, 100 char width, es5 trailing commas (enforced by lint-staged via Prettier) — run Prettier on changed files +- **Imports**: external → internal (`@/`, `@omniroute/open-sse`) → relative +- **Naming**: files=camelCase/kebab, components=PascalCase, constants=UPPER_SNAKE +- **ESLint**: `no-eval`, `no-implied-eval`, `no-new-func` = error everywhere; `no-explicit-any` = **error** in `open-sse/` and `tests/` (since #6218 — pre-existing violations are frozen in `config/quality/eslint-suppressions.json`, new ones must be fixed; `npm run lint` applies the suppressions and is what CI runs) +- **TypeScript**: `strict: false`, target ES2022, module esnext, resolution bundler. Prefer explicit types. + +### Database + +- **Always** go through `src/lib/db/` domain modules — **never** write raw SQL in routes or handlers +- **Never** add logic to `src/lib/localDb.ts` (re-export layer only) +- **Never** barrel-import from `localDb.ts` — import specific `db/` modules instead +- DB singleton: `getDbInstance()` from `src/lib/db/core.ts` (WAL journaling) +- Migrations: `src/lib/db/migrations/` — versioned SQL files, idempotent, run in transactions + +### Error Handling + +- try/catch with specific error types, log with pino context +- Never swallow errors in SSE streams — use abort signals for cleanup +- Return proper HTTP status codes (4xx/5xx) + +### Security + +- **Never** use `eval()`, `new Function()`, or implied eval +- Validate all inputs with Zod schemas +- Encrypt credentials at rest (AES-256-GCM); never log SQLite encryption keys +- Sanitize user HTML with DOMPurify +- Upstream header denylist: `src/shared/constants/upstreamHeaders.ts` — keep sanitize, Zod schemas, and unit tests aligned when editing +- **Public upstream credentials** (Gemini/Antigravity/Windsurf-style OAuth client_id/secret + Firebase Web keys extracted from public CLIs): **MUST** be embedded via `resolvePublicCred()` from `open-sse/utils/publicCreds.ts` — **never** as string literals. See `docs/security/PUBLIC_CREDS.md` for the mandatory pattern. +- **Error responses** (HTTP / SSE / executor / MCP handler): **MUST** route through `buildErrorBody()` or `sanitizeErrorMessage()` from `open-sse/utils/error.ts` — **never** put raw `err.stack` or `err.message` in a response body. See `docs/security/ERROR_SANITIZATION.md`. +- **Shell commands built from variables**: when calling `exec()`/`spawn()` with a script that needs runtime values, pass them via the `env` option (shell-escaped automatically) — **never** string-interpolate untrusted/external paths into the script body. Reference: `src/mitm/cert/install.ts::updateNssDatabases`. +- **Secure-by-default libraries** ([tldrsec/awesome-secure-defaults](https://github.com/tldrsec/awesome-secure-defaults)): prefer Helmet.js, DOMPurify, ssrf-req-filter, safe-regex, Google Tink over custom implementations whenever adding new security-sensitive surfaces. + +--- + +## Documentation accuracy + +Documentation must describe verified behavior, not plausible behavior. + +1. Before documenting an API name, endpoint, path, CLI command, or environment variable, + search for it: `rg -n "name" src/ open-sse/ bin/`. If it has no source match, do not + document it. +2. Measure mutable counts instead of writing them from memory: use `wc -l ` or a + directory-specific count command. +3. Copy code examples from working usage or run them. Prefer a source link such as + `path/to/file.ts:line` to an invented signature. +4. Run `npm run check:docs-all` for edits under `docs/`; it includes the fabricated-docs + validation. + +--- + +## Common Modification Scenarios + +### Adding a New Provider + +1. Register in `src/shared/constants/providers.ts` (Zod-validated at load) +2. Add executor in `open-sse/executors/` if custom logic needed (extend `BaseExecutor`) +3. Add translator in `open-sse/translator/` if non-OpenAI format +4. Add OAuth config in `src/lib/oauth/constants/oauth.ts` if OAuth-based — if the upstream CLI ships a public client_id/secret, embed via `resolvePublicCred()` (see `docs/security/PUBLIC_CREDS.md`), **never** as a literal +5. Register models in `open-sse/config/providerRegistry.ts` +6. Write tests in `tests/unit/` (include the publicCreds shape assertion if you added a new embedded default) + +### Adding a New API Route + +1. Create directory under `src/app/api/v1/your-route/` +2. Create `route.ts` with `GET`/`POST` handlers +3. Follow pattern: CORS → Zod body validation → optional auth → handler delegation +4. Handler goes in `open-sse/handlers/` (import from there, not inline) +5. Error responses use `buildErrorBody()` / `errorResponse()` from `open-sse/utils/error.ts` (auto-sanitized — never put `err.stack` or `err.message` raw in the body). See `docs/security/ERROR_SANITIZATION.md`. +6. Add tests — including at least one assertion that error responses do not leak stack traces (`!body.error.message.includes("at /")`) + +### Adding a New DB Module + +1. Create `src/lib/db/yourModule.ts` — import `getDbInstance` from `./core.ts` +2. Export CRUD functions for your domain table(s) +3. Add migration in `src/lib/db/migrations/` if new tables needed +4. Re-export from `src/lib/localDb.ts` (add to the re-export list only) +5. Write tests + +### Adding a New MCP Tool + +1. Add tool definition in `open-sse/mcp-server/tools/` with Zod input schema + async handler +2. Register in tool set (wired by `createMcpServer()`) +3. Assign to appropriate scope(s) +4. Write tests (tool invocation logged to `mcp_audit` table) + +### Adding a New A2A Skill + +1. Create skill in `src/lib/a2a/skills/` (5 already exist: smart-routing, quota-management, provider-discovery, cost-analysis, health-report) +2. Skill receives task context (messages, metadata) → returns structured result +3. Register in `A2A_SKILL_HANDLERS` in `src/lib/a2a/taskExecution.ts` +4. Expose in `src/app/.well-known/agent.json/route.ts` (Agent Card) +5. Write tests in `tests/unit/` +6. Document in `docs/frameworks/A2A-SERVER.md` skill table + +### Adding a New Cloud Agent + +1. Create agent class in `src/lib/cloudAgent/agents/` extending `CloudAgentBase` (3 already exist: codex-cloud, devin, jules) +2. Implement `createTask`, `getStatus`, `approvePlan`, `sendMessage`, `listSources` +3. Register in `src/lib/cloudAgent/registry.ts` +4. Add OAuth/credentials handling if needed (`src/lib/oauth/providers/`) +5. Tests + document in `docs/frameworks/CLOUD_AGENT.md` + +### Adding a New Embedded Service + +1. Create installer in `src/lib/services/installers/{name}.ts` modeled on `ninerouter.ts` (use `runNpm` from `installers/utils.ts` — no shell interpolation, hard rule #13). +2. Register the service in `src/lib/services/bootstrap.ts` (add to `SERVICES[]` array and extend `buildSpawnArgsFactory()`). +3. Add a DB seed row for the new service in `src/lib/db/migrations/` (`version_manager` table, `status='not_installed'`, `auto_start=0`). +4. Create 7 API endpoints under `src/app/api/services/{name}/` (`_lib.ts`, `install`, `start`, `stop`, `restart`, `update`, `status`, `auto-start`). All delegate errors through `createErrorResponse()`. The shared `logs` endpoint is already wired via `[name]/logs/route.ts`. +5. Verify `/api/services/` is in `LOCAL_ONLY_API_PREFIXES` in `src/server/authz/routeGuard.ts`; add a test asserting `isLocalOnlyPath()` returns `true` for the new prefix if you add one (hard rule #17). +6. Add a UI tab in `src/app/(dashboard)/dashboard/providers/services/tabs/` reusing `ServiceStatusCard`, `ServiceLifecycleButtons`, `ServiceLogsPanel`. +7. Document in `docs/frameworks/EMBEDDED-SERVICES.md` (update §1 service table + §4 API reference) and `docs/openapi.yaml`. +8. Write tests: unit (`tests/unit/services/`), integration (`tests/integration/services/`, gated by `RUN_SERVICES_INT=1`), and update `docs/ops/RELEASE_CHECKLIST.md` smoke section. + +### Adding a New Guardrail / Eval / Skill / Webhook event + +- Guardrail: `src/lib/guardrails/` → docs: `docs/security/GUARDRAILS.md` +- Eval suite: `src/lib/evals/` → docs: `docs/frameworks/EVALS.md` +- Skill (sandbox): `src/lib/skills/` → docs: `docs/frameworks/SKILLS.md` +- Webhook event: `src/lib/webhookDispatcher.ts` → docs: `docs/frameworks/WEBHOOKS.md` + +--- + +## Reference Documentation + +For any non-trivial change, read the matching deep-dive first: + +| Area | Doc | +| --------------------------------------------- | ------------------------------------------------------- | +| Repo navigation | `docs/architecture/REPOSITORY_MAP.md` | +| Architecture | `docs/architecture/ARCHITECTURE.md` | +| Engineering reference | `docs/architecture/CODEBASE_DOCUMENTATION.md` | +| Auto-Combo (13-factor scoring, 19 strategies) | `docs/routing/AUTO-COMBO.md` | +| Resilience (3 mechanisms) | `docs/architecture/RESILIENCE_GUIDE.md` | +| Reasoning replay | `docs/routing/REASONING_REPLAY.md` | +| Skills framework | `docs/frameworks/SKILLS.md` | +| Radar (free-model catalog overlay) | `docs/frameworks/RADAR.md` | +| Memory system (FTS5 + Qdrant) | `docs/frameworks/MEMORY.md` | +| Cloud agents | `docs/frameworks/CLOUD_AGENT.md` | +| Guardrails (PII / injection / vision) | `docs/security/GUARDRAILS.md` | +| Public upstream credentials (Gemini/etc.) | `docs/security/PUBLIC_CREDS.md` | +| Error message sanitization | `docs/security/ERROR_SANITIZATION.md` | +| Evals | `docs/frameworks/EVALS.md` | +| Compliance / audit | `docs/security/COMPLIANCE.md` | +| Webhooks | `docs/frameworks/WEBHOOKS.md` | +| Authorization pipeline | `docs/architecture/AUTHZ_GUIDE.md` | +| Stealth (TLS / fingerprint) | `docs/security/STEALTH_GUIDE.md` | +| Agent protocols (A2A / ACP / Cloud) | `docs/frameworks/AGENT_PROTOCOLS_GUIDE.md` | +| MCP server | `docs/frameworks/MCP-SERVER.md` | +| A2A server | `docs/frameworks/A2A-SERVER.md` | +| API reference + OpenAPI | `docs/reference/API_REFERENCE.md` + `docs/openapi.yaml` | +| Provider catalog (auto-generated) | `docs/reference/PROVIDER_REFERENCE.md` | +| Tunnels | `docs/ops/TUNNELS_GUIDE.md` | +| Electron desktop app | `docs/guides/ELECTRON_GUIDE.md` | +| Release flow | `docs/ops/RELEASE_CHECKLIST.md` | +| Embedded services | `docs/frameworks/EMBEDDED-SERVICES.md` | +| Quality gates (~48 scripts, allowlist policy) | `docs/architecture/QUALITY_GATES.md` | + +--- + +## Testing + +| What | Command | +| ----------------------- | --------------------------------------------------------------------------- | +| Unit tests | `npm run test:unit` | +| Single file | `node --import tsx/esm --test tests/unit/your-file.test.ts` | +| Vitest (MCP, autoCombo) | `npm run test:vitest` | +| E2E (Playwright) | `npm run test:e2e` | +| Protocol E2E (MCP+A2A) | `npm run test:protocols:e2e` | +| Ecosystem | `npm run test:ecosystem` | +| Coverage gate | `npm run test:coverage` (60/60/60/60 — statements/lines/functions/branches) | +| Coverage report | `npm run coverage:report` | + +**PR rule**: If you change production code in `src/`, `open-sse/`, `electron/`, or `bin/`, you must include or update tests in the same PR. + +**Test layer preference**: unit first → integration (multi-module or DB state) → e2e (UI/workflow only). Encode bug reproductions as automated tests before or alongside the fix. + +**Both test runners must pass**: `npm run test:unit` (Node native — most tests) AND `npm run test:vitest` (MCP server, autoCombo, cache) cover **non-overlapping files**. Both are wired in CI (jobs `test-unit` and `test-vitest`) and must be green before merging. A PR where only one suite passes may silently ship broken MCP tools or routing regressions. + +**Bug fix / issue triage protocol (Hard Rule #18)**: Every fix for a reported issue must be validated by one of the following — no exceptions: + +1. **TDD (preferred)** — write a failing test reproducing the bug → fix it → confirm the test passes. The test becomes the permanent regression guard. Touch only the files the test proves need changing; nothing more. +2. **Real-environment test (when TDD is not possible)** — deploy to the production VPS (`root@192.168.0.15`) and run a documented live test. Record the exact command + result in the PR description. Applies to: OAuth upstream flows, Cloudflare/WS upstream behavior, UI-only regressions, hardware-dependent behavior. +3. "It worked locally without a test" does not count. A fix without a test or a VPS validation record is not a fix — it is a guess. + +Why this matters: fixing bug A while opening bug B is worse than not fixing at all. The TDD/VPS gate enforces surgical scope — you touch only what the failing test proves is broken. Examples where this paid off: #3090 (claude-web 403), #3113 (WS HTTP fallback), #3052 (heap-guard auto-calibration). + +**Copilot coverage policy**: When a PR changes production code and coverage is below 60% (statements/lines/functions/branches), do not just report — add or update tests, rerun the coverage gate, then ask for confirmation. Include commands run, changed test files, and final coverage result in the PR report. + +--- + ## Review focus - Keep database operations in `src/lib/db/`; do not issue raw SQL from routes. @@ -88,6 +466,119 @@ Read the nearest `AGENTS.md` and the linked deep-dive before making a non-trivia - Do not close a contributor pull request after using its code; merge it through GitHub so the contributor receives credit. +--- + +## Planning & Research Artifacts + +`_tasks/` is a **separate, isolated git repository** that is gitignored by the main +repo (`.gitignore` → `_tasks/`). It is the canonical home for working artifacts — +plans, specs/designs, research, hand-offs — so they stay **versioned in their own +repo** instead of polluting the main OmniRoute tree. + +**Hard rule — never write planning / research output under `docs/` or the repo root.** +Whenever any plan/spec/research generator runs in this project (superpowers or otherwise), +save to `_tasks/` using the filename convention: + +| Artifact | Save here | +| -------------- | ------------------------------------------------------------- | +| Plans | `_tasks/superpowers/plans/YYYY-MM-DD-.md` | +| Specs / design | `_tasks/superpowers/specs/YYYY-MM-DD--design.md` | +| Research | `_tasks/research/…` | +| Hand-offs | `_tasks/hands-off/__v_sess-/` | + +Commit those artifacts inside the `_tasks/` repo (`git -C _tasks …`), never in the main repo. + +--- + +## Git Workflow + +```bash +# Never commit directly to main +git checkout -b feat/your-feature +git commit -m "feat: describe your change" +git push -u origin feat/your-feature +``` + +**Branch prefixes**: `feat/`, `fix/`, `refactor/`, `docs/`, `test/`, `chore/` + +**Commit format** (Conventional Commits): `feat(db): add circuit breaker` — scopes: `db`, `sse`, `oauth`, `dashboard`, `api`, `cli`, `docker`, `ci`, `mcp`, `a2a`, `memory`, `skills` + +**Husky hooks**: + +- **pre-commit**: lint-staged + `check-docs-sync` + `check:any-budget:t11` + `check:tracked-artifacts` +- **pre-push**: intentionally light (PATH/npm sanity only). `any-budget` + `tracked-artifacts` + already run on pre-commit; re-running them on every push was pure double-pay. CI still + enforces both. (Was Fase 6A.12 full pre-push gate; folded into pre-commit in #6716.) + +### Worktree isolation (MANDATORY for every development task) + +Multiple sessions/agents work this repo in parallel. The main checkout is **shared**, so a +`git checkout`/branch switch in it silently discards another session's uncommitted work and +yanks the branch out from under whatever else is running (incidents: 2026-06-05, 2026-06-13). + +**Rule: never develop on the shared main checkout. Every task gets its own git worktree on its +own dedicated branch, and you MUST confirm the base branch with the operator before creating it.** + +1. **Ask first — which base branch?** Before creating anything, ask the operator (unless they + already told you) from which branch the new worktree/branch should be cut. Do NOT assume + `main` or "whatever I'm on" — the answer is usually the active `release/vX.Y.Z`, but it can + be another feature/release branch. Get the base explicitly. +2. **Create an isolated worktree + branch off that base** (never reuse the main checkout). + **🔴 MANDATORY PATH: every worktree lives under `.claude/worktrees/` — and nowhere else.** + This is the single canonical location. It is gitignored AND in the `tsconfig.json` / + `.dockerignore` excludes, so worktrees never leak into the build scope. **Never** use + `.worktrees/`, repo-root, or any other path — a worktree outside `.claude/worktrees/` + (a) escapes the build-scope excludes and poisons `next build` (the `tsconfig` + `include: **/*` globs ~70× the codebase → OOM; incident 2026-06-25) and (b) scatters + worktrees across two dirs. + + ```bash + BASE_BRANCH="release/vX.Y.Z" # ← the branch the operator confirmed in step 1 + TASK="feat/your-feature" # feat/ fix/ refactor/ docs/ test/ chore/ + git fetch origin "$BASE_BRANCH" + git worktree add ".claude/worktrees/${TASK##*/}" -b "$TASK" "origin/$BASE_BRANCH" + cd ".claude/worktrees/${TASK##*/}" + # Reuse the main checkout's node_modules to skip a per-worktree npm install. + # HARD LINKS (`cp -al`), never a symlink: ~5s for the whole tree and near-zero extra + # disk (the inodes are shared), and unlike a symlink it does not break the dev server. + cp -al "$(git -C rev-parse --show-toplevel)/node_modules" node_modules + ``` + + **Never `ln -s` node_modules.** Turbopack rejects a symlink that resolves outside the + project root, so `npm run dev` dies with a FATAL panic (`Symlink [project]/node_modules +is invalid, it points out of the filesystem root`) while typecheck, lint and the test + runners all keep passing — the error names "filesystem root", not the worktree, so it + reads like a Next/build bug and costs real time to trace (incident 2026-07-31, #9043). + +3. **Work, commit, push, open the PR — all from inside the worktree.** Never `git checkout` a + different branch inside a worktree another session might share. +4. **Tear down only your own** worktree + branch when done, from the main checkout: + `git worktree remove .claude/worktrees/` then `git branch -D `. Never blanket-delete + `fix/*`/`feat/*` — other sessions keep their own; delete only the branches you created, by name. +5. **Never touch another session's worktree, branch, or uncommitted changes.** If `git worktree +list` shows worktrees you didn't create, leave them alone. End every session with the main + checkout back on the branch it started on (the active `release/vX.Y.Z`, never `main`). + +### Base-green check (PRs must not be born red) + +Before cutting a branch, merging the base into a PR branch, mass-retargeting PRs, or opening a +PR: check whether the base tip is green. The `Release-Green (continuous)` workflow +(`.github/workflows/nightly-release-green.yml`) publishes the verdict in a single deduplicated +issue titled `🔴 Release branch not green: ` (label `base-red`). One call replaces any +local suite run for this purpose: + +```bash +gh issue list --repo diegosouzapw/OmniRoute --state open \ + --search "Release branch not green: in:title" +``` + +If the base is red: never treat the inherited failures as your branch's defect; never "fix" them +inside your feature branch (a base-red fix is its own freeze-gated `fix/release-vX.Y.Z-basereds` +PR); and if you must open a PR anyway, add `⚠️ base-red inherited: #` to the PR body so +reviewers and CI babysitters do not chase ghosts. + +--- + ## Upstream contributions This checkout is a fork of `diegosouzapw/OmniRoute`. Keep fork-only deployment and personal @@ -103,15 +594,98 @@ git switch -c upstream/ Target that same release branch in the pull request. Stage only the intended files, run the focused checks, and use a Conventional Commit message (for example, `docs: slim AGENTS.md`). -## Reference documentation +--- -Use the source of truth for the area you are changing: +## Environment -| Area | Reference | -| -------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| Repository navigation and architecture | [`docs/architecture/REPOSITORY_MAP.md`](docs/architecture/REPOSITORY_MAP.md), [`docs/architecture/ARCHITECTURE.md`](docs/architecture/ARCHITECTURE.md) | -| API and providers | [`docs/reference/API_REFERENCE.md`](docs/reference/API_REFERENCE.md), [`docs/reference/PROVIDER_REFERENCE.md`](docs/reference/PROVIDER_REFERENCE.md), [`docs/openapi.yaml`](docs/openapi.yaml) | -| Routing, resilience, and reasoning | [`docs/routing/AUTO-COMBO.md`](docs/routing/AUTO-COMBO.md), [`docs/architecture/RESILIENCE_GUIDE.md`](docs/architecture/RESILIENCE_GUIDE.md), [`docs/routing/REASONING_REPLAY.md`](docs/routing/REASONING_REPLAY.md) | -| Security | [`docs/security/GUARDRAILS.md`](docs/security/GUARDRAILS.md), [`docs/security/COMPLIANCE.md`](docs/security/COMPLIANCE.md), [`docs/security/STEALTH_GUIDE.md`](docs/security/STEALTH_GUIDE.md) | -| Platform features | [`docs/frameworks/MCP-SERVER.md`](docs/frameworks/MCP-SERVER.md), [`docs/frameworks/A2A-SERVER.md`](docs/frameworks/A2A-SERVER.md), [`docs/frameworks/SKILLS.md`](docs/frameworks/SKILLS.md), [`docs/frameworks/MEMORY.md`](docs/frameworks/MEMORY.md) | -| Releases and quality | [`docs/ops/RELEASE_CHECKLIST.md`](docs/ops/RELEASE_CHECKLIST.md), [`docs/architecture/QUALITY_GATES.md`](docs/architecture/QUALITY_GATES.md) | +- **Runtime**: Node.js ≥22.0.0 <23 || ≥24.0.0 <27, ES Modules. This is the **only supported** runtime for the published `omniroute` CLI, the server, and the test suites (`node:test` + vitest) — `engines.node` is authoritative and end users never need Bun. A **best-effort `bun:sqlite` compatibility path** exists so a global Bun install (`bun install -g omniroute`) can start without `better-sqlite3` (driver adapter + Bun-aware process spawning); it is **not** a supported runtime — no support guarantees — and every Bun-specific runtime change MUST preserve the Node driver/fallback chain and ship a Bun test (`test:bun:db`) or an explicit reason why the path is Node-only. +- **Bun (build/dev script runner + compatibility smoke only)**: Bun `1.3.14` is pinned as an **exact devDependency** (provisioned through the existing `npm ci` via the lockfile's `@oven/bun-*` platform binaries — no `setup-bun`/ad-hoc install). It is used **only** to execute a small, allow-listed set of TypeScript **gate/generator scripts** (replacing `node --import tsx` for startup speed): the CI checks `check:provider-consistency`, `check:compression-budget`, `check:known-symbols`, and the non-CI `gen:provider-reference`, `bench:compression` — plus the focused `test:bun:db` compatibility smoke suite for the best-effort `bun:sqlite` path. **Do NOT** widen Bun to `npm install`, the build (`build:cli*`), `check:pack-artifact`, the supported published runtime, or the main test runners — those stay on Node. Any new Bun-invoking gate/generator script must be validated byte-identical against its `node --import tsx` output first. After pulling the lockfile change, run `npm install` so `bun` resolves locally (a stale `node_modules` will fail those scripts with `bun: not found`). +- **TypeScript**: 6.0+, target ES2022, module esnext, resolution bundler +- **Path aliases**: `@/*` → `src/`, `@omniroute/open-sse` → `open-sse/`, `@omniroute/open-sse/*` → `open-sse/*` +- **Default port**: 20128 (API + dashboard on same port) +- **Data directory**: `DATA_DIR` env var, defaults to `~/.omniroute/` +- **Key env vars**: `PORT`, `JWT_SECRET`, `API_KEY_SECRET`, `INITIAL_PASSWORD`, `REQUIRE_API_KEY`, `APP_LOG_LEVEL` +- Setup: `cp .env.example .env` then generate `JWT_SECRET` (`openssl rand -base64 48`) and `API_KEY_SECRET` (`openssl rand -hex 32`) + +--- + +## Quality Gates & Ratchets + +OmniRoute has **~48 quality-gate scripts** (`scripts/check/` + `scripts/quality/`) wired +across **9 gate-running jobs** in `.github/workflows/ci.yml` (`lint`, `quality-gate`, +`quality-extended`, `docs-sync-strict`, `i18n-ui-coverage`, `i18n`, `pr-test-policy`, +`test-vitest`, `sonarqube`), plus the `quality.yml` fast-gates job (PR→`release/**`) and +3 nightly workflows (`nightly-property`, `nightly-resilience`, `nightly-llm-security`; +`nightly-mutation` once merged). Full inventory, per-job breakdown, and operational +procedures are in [`docs/architecture/QUALITY_GATES.md`](docs/architecture/QUALITY_GATES.md). + +**Quick reference:** + +- Gates in jobs `lint` + `docs-sync-strict`: pass/fail policy gates — + fix the violation or add an allowlist entry with a justification comment + tracking issue. +- Gates in job `quality-gate`: ratchet — metrics (ESLint warnings, code coverage, duplication, + complexity) must not regress vs `quality-baseline.json`. Update via + `npm run quality:ratchet -- --update` when a metric genuinely improves. +- Job `test-vitest` runs `npm run test:vitest` (MCP tools, autoCombo, cache) — blocking. + `test:vitest:ui` is advisory until UI component tests are triaged. + +**Allowlist policy (short form):** Fix the cause; use the allowlist only for pre-existing +violations you cannot fix in the same PR. Add a comment with justification + issue number. +Stale allowlist entries (suppressing a violation that no longer exists) will be caught by +the stale-enforcement added in Fase 6A.3. + +--- + +## Hard Rules + +1. Never commit secrets or credentials +2. Never add logic to `localDb.ts` +3. Never use `eval()` / `new Function()` / implied eval +4. Never commit directly to `main` +5. Never write raw SQL in routes — use `src/lib/db/` modules +6. Never silently swallow errors in SSE streams +7. Always validate inputs with Zod schemas +8. Always include tests when changing production code +9. Coverage must not regress below the baseline frozen in `quality-baseline.json` (ratchet); absolute floor is 60% (statements/lines/functions/branches). Update the baseline via `npm run quality:ratchet -- --update` only when coverage genuinely improves. See `docs/architecture/QUALITY_GATES.md`. +10. Never bypass Husky hooks (`--no-verify`, `--no-gpg-sign`) without explicit operator approval. +11. Never embed public upstream OAuth client_id/secret or Firebase Web keys as string literals — always go through `resolvePublicCred()` (`open-sse/utils/publicCreds.ts`). See `docs/security/PUBLIC_CREDS.md`. +12. Never return raw `err.stack` / `err.message` in HTTP / SSE / executor responses — always route through `buildErrorBody()` or `sanitizeErrorMessage()` (`open-sse/utils/error.ts`). See `docs/security/ERROR_SANITIZATION.md`. +13. Never string-interpolate external paths or runtime values into shell scripts passed to `exec()`/`spawn()` — pass via the `env` option instead. Reference: `src/mitm/cert/install.ts::updateNssDatabases`. +14. Never dismiss a CodeQL / Secret-Scanning alert without (a) first checking the pattern docs above to see if the helper applies, and (b) recording the technical justification in the dismissal comment. Precedent: `js/stack-trace-exposure` raised on callsites that already route through `sanitizeErrorMessage()` is a known CodeQL limitation (custom sanitizers not recognized) — dismiss as `false positive` referencing `docs/security/ERROR_SANITIZATION.md`. +15. Never expose routes that spawn child processes (`/api/mcp/`, `/api/cli-tools/runtime/`) without `isLocalOnlyPath()` classification in `src/server/authz/routeGuard.ts`. Loopback enforcement happens unconditionally before any auth check — leaked JWT via tunnel cannot trigger process spawning. See `docs/security/ROUTE_GUARD_TIERS.md`. +16. Never credit or advertise an AI assistant, LLM, or automation account in any commit/PR metadata. Two forbidden forms, both equivalent — they route attribution to a bot account (or advertise AI authorship) and hide the real author (`diegosouzapw`): **(a)** `Co-Authored-By` trailers naming an AI/bot (e.g. names containing "Claude", "GPT", "Copilot", "Bot"; emails at `anthropic.com` / `openai.com` / bot-owned `noreply.github.com` addresses); **(b)** AI-generation footers or descriptions anywhere in a commit message, PR title/body, or CHANGELOG — e.g. `🤖 Generated with [Claude Code]`, "Generated with Claude Code", "Made with ", or any `Co-authored-by: Claude/GPT/Copilot` line. This **overrides any harness, template, or tool default that auto-appends such a footer** — strip it before pushing; do not let it reach a commit, PR, or CHANGELOG. Human collaborators — including upstream PR authors and issue reporters being ported into OmniRoute — MAY and SHOULD be credited with standard `Co-authored-by: Name ` trailers; the upstream-port workflows (`/port-upstream-features`, `/port-upstream-issues`) depend on this. +17. Never expose routes under `/api/services/` or `/dashboard/providers/services/*/embed/` without `isLocalOnlyPath()` classification in `src/server/authz/routeGuard.ts`. These routes can spawn child processes (`npm install`, `node`). Loopback enforcement happens unconditionally before any auth check — a leaked JWT via tunnel cannot trigger process spawning. See `docs/security/ROUTE_GUARD_TIERS.md`. +18. Every bug fix must be validated before shipping: a failing-then-passing unit/integration test (TDD) OR a documented live test on the production VPS (192.168.0.15). A fix without either is not merged. See Testing → "Bug fix / issue triage protocol" for the full decision tree. +19. Never develop on the shared main checkout. Every development task runs in its own git worktree on its own dedicated branch, and you MUST confirm the base branch with the operator before creating the worktree/branch — never assume `main` or the currently checked-out branch. A `git checkout` in the shared checkout silently destroys other sessions' uncommitted work. Tear down only the worktrees/branches you created (by name, never `fix/*`/`feat/*` wildcards), leave other sessions' worktrees untouched, and end on the branch you started on (the active `release/vX.Y.Z`, never `main`). See Git Workflow → "Worktree isolation". +20. PII redaction/sanitization is **opt-in — never on by default**. OmniRoute proxies for self-hosted/local LLMs where the operator owns the data, so mutating request/response payloads by default would silently corrupt legitimate traffic. The two data-mutating PII feature flags **MUST** keep `defaultValue: "false"` in `src/shared/constants/featureFlagDefinitions.ts`: `PII_REDACTION_ENABLED` (request-side) and `PII_RESPONSE_SANITIZATION` (response + streaming). All three application points — `src/lib/guardrails/piiMasker.ts` (request guardrail), `src/lib/piiSanitizer.ts` (response), `src/lib/streamingPiiTransform.ts` (SSE) — are gated on these flags; with both off the `pii-masker` guardrail still runs but never mutates payloads (data passes through untouched). Flipping either default to `"true"` requires explicit operator approval. The regression guard is `tests/unit/pii-opt-in-default.test.ts` (asserts both definition defaults + behavioral pass-through). Opt-in is per-operator via env or the settings/DB override (`src/lib/db/featureFlags.ts`), never a silent default. See `docs/security/GUARDRAILS.md`. +21. **Release-freeze — the FROZEN release branch belongs to the release captain; development does NOT stop (parallel-cycle model, 2026-07-04).** `/generate-release` opens a marker issue labeled `release-freeze` at the start of reconciliation (Phase 0a), **immediately cuts the next cycle's branch `release/vX+1` from the frozen tip (Phase 0a.0b — bump + living release PR + re-home of open PRs)**, and closes the freeze once the release PR squash-merges to `main`. Before merging **any** PR, every campaign workflow (`/review-prs`, `/review-group-prs`, `/merge-prs`, `/triage-fix-bugs`, `/implement-fix-bugs`, `/triage-features`, `/implement-features`, `/green-prs`, `/port-upstream-*`) **MUST** check `gh issue list --repo diegosouzapw/OmniRoute --label release-freeze --state open` — if a freeze is active: **NEVER merge into the frozen `release/vX.Y.Z` named in the freeze title**; instead resolve the ACTIVE development branch (the **highest** `release/v*` by semver — normally `release/vX+1`, announced in a freeze-issue comment) and **retarget the PR there** (`gh pr edit --base release/vX+1`, then VERIFY with `gh pr view --json baseRefName` — the edit fails silently) and merge normally. **HOLD only when the highest release/v\* branch IS the frozen one** (the short window before 0a.0b completes, or a pre-parallel-cycle release) — in that case leave the PR ready and open, tell the operator, and resume when the next branch appears or the freeze lifts. The just-shipped fixes reach `release/vX+1` via the Phase 5 sync-back (`scripts/release/sync-next-cycle.mjs`); do not try to sync mid-release. This is a **coordination signal, not a permission lock**: the release captain and the campaign sessions share the `diegosouzapw` identity, so a GitHub branch-protection lock cannot distinguish them — only this honored marker prevents the mid-release commit races that forced full CHANGELOG re-reconciliation in v3.8.40/v3.8.41 (a parallel campaign advanced `release/vX.Y.Z` by 34 commits mid-run). The release captain's own reconciliation/cycle-open pushes are exempt — they _are_ the release. Fixes that must land during a freeze (a homologation finding) follow the post-merge read-only rule: land on `main` first via `fix/release-vX.Y.Z-*`. **⛔ ONLY `/generate-release` may raise a release-freeze, and ONLY at its Phase 0a (start of generating a new version) — lifted at Phase 12c after the squash-merge to `main`.** No campaign, session, or agent may open a `release-freeze` marker at any other time — a freeze is **never** a mid-development coordination tool. If a session ever believes a freeze is genuinely, unavoidably necessary outside the `/generate-release` flow, it **MUST first ask the operator (`diegosouzapw`) in chat, explicitly alert "estou criando um freeze" and get an explicit yes** — never open, extend, or re-open a `release-freeze` autonomously. Conversely, do **not** close/lift an active `/generate-release` freeze to unblock campaign merges: it protects the captain's single clean CI run and auto-lifts at Phase 12c — closing it early re-triggers the exact commit race it prevents. Verify a freeze is legitimate before acting on it: an open `release-freeze` whose title/body references an **OPEN** release PR (`gh pr view --json state`) is the authorized captain freeze — hold, don't touch. (Cycle-model proposal: `_tasks/finished/release-flow/2026-07-04_proposta-ciclo-paralelo-v2.md`.) +22. **Cross-session safety — this repo is worked by MANY parallel sessions/agents at once; never step on another's in-flight work.** Two absolute bans, both recurring incidents (this rule exists because they keep happening): + - **(a) Never `git stash` / `git stash pop` — ANYWHERE in this repo, including inside an isolated worktree, and including inside any subagent you dispatch.** `git stash` operates on the **shared repository object store**, not the per-worktree working tree — so a stash pushed or popped in one session can silently clobber or resurrect another parallel session's uncommitted changes. This is not hypothetical: 2026-07-02 a `#5923` quotaCache change leaked into the unrelated `#2296` worktree via a global `stash pop`, and the same class reincided through a **subagent**. To compare working changes against a base ref **without** stashing, use `git show :` or `git diff -- `; to confirm a typecheck/lint error is pre-existing on the base, inspect the base ref directly (`git show origin/release/vX.Y.Z:`) — never stash your tree away to "get it clean". **Put this ban verbatim in the prompt of every subagent that touches git** (agents don't inherit this file's context — the recurrence was a subagent). + - **(b) Never merge, push, rebase, or force-push a PR / branch / worktree that another session is actively working.** An open PR whose head is a live fix worktree in `.claude/worktrees/` you did **not** create (e.g. `fix-5852`/`fix-5923` carrying fresh commits, even when they share your `diegosouzapw` identity), or any branch another session owns, is **off-limits — HOLD**, and let the owning session merge it. **Before** merging or pushing to any PR you did not create _this_ session, run `git worktree list` to check for a matching in-flight worktree and re-check `gh pr view --json state,headRefOid`. Only the owning session merges its own in-flight PR; mid-flight merges race the owner and re-trigger the exact commit/CHANGELOG races Rule #19 and Rule #21 guard against. (Reinforces Rule #19.) + +--- + +## PII & Stream Sanitization Learnings + +### 1. Regex Security (ReDoS) + +All regex patterns matching variable-length strings (e.g. IPv6 address, credit cards) must use strictly bounded, non-overlapping sequences (e.g., limit occurrences with bounded ranges `{1,7}`) to prevent catastrophic backtracking when processing untrusted inputs. + +### 2. SSE Snapshot Handling + +When parsing streaming LLM responses (e.g. Responses API), check if a chunk represents a final snapshot (`done` or `completed` events). Snapshot text must be sanitized directly as a standalone string (bypassing rolling delta buffers) to prevent text duplication at the end of the stream. + +### 3. Database Handles in Tests + +Ensure that any unit tests that trigger database migrations or establish SQLite connections call `resetDbInstance()` and properly clean up/close all DB handles in a `test.after(...)` hook. Failure to release database connection handles will cause Node's native test runner to hang indefinitely. + +--- + +## Local development access + +The dashboard is reachable at the operator's chosen URL/port (default `http://localhost:20128`). Credentials are operator-specific: + +- **Initial admin password** is read from the `INITIAL_PASSWORD` env var on first install (defaults to `CHANGEME` in `.env.example`; rotate immediately after first login). +- **Local VPS / shared dev environments**: ask the operator for the URL and current credentials — they live in their personal vault, NOT in this repo. + +> Any credential observed in a previous version of this file was a non-production demo value; treat it as compromised and do not reuse it. diff --git a/CLAUDE.md b/CLAUDE.md index 170bbb08d0..102ecd1378 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -1,406 +1,42 @@ # CLAUDE.md -This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. +@AGENTS.md -## Quick Start +**All project rules live in [`AGENTS.md`](AGENTS.md)** — the single source of truth for every AI +assistant (architecture, conventions, testing, quality gates, git workflow, the 22 Hard Rules, +PII learnings). Read it in full; do not re-add project rules here. Everything below applies ONLY +to Claude Code — operational refinements of rules already defined in `AGENTS.md`. -```bash -npm install # Install deps (auto-generates .env from .env.example) -npm run dev # Dev server at http://localhost:20128 -npm run build # Production build (Next.js 16 standalone) -npm run lint # ESLint (0 errors expected; warnings are pre-existing) -npm run typecheck:core # TypeScript check (should be clean) -npm run typecheck:noimplicit:core # Strict check (no implicit any) -npm run test:coverage # Unit tests + coverage gate (60/60/60/60 — statements/lines/functions/branches) -npm run check # lint + test combined -npm run check:cycles # Detect circular dependencies -``` +## Worktree isolation — Claude Code specifics -### Running Tests +The full mandatory worktree protocol (base-branch confirmation, `.claude/worktrees/` canonical +path, `cp -al` node_modules, teardown rules) is in `AGENTS.md` → Git Workflow → "Worktree +isolation". Claude-Code-specific points: -```bash -# Single test file (Node.js native test runner — most tests) -node --import tsx/esm --test tests/unit/your-file.test.ts +- Confirm the base branch with the operator via `AskUserQuestion` (Hard Rule #19) unless they + already told you. +- Prefer the native `EnterWorktree` tool — it already creates worktrees under + `.claude/worktrees/` (the canonical path). Create the worktree with the documented `git +worktree add` command, then call `EnterWorktree` with its `path`. -# Vitest (MCP server, autoCombo, cache) -npm run test:vitest +## Cross-session safety — Claude Code specifics -# All suites -npm run test:all -``` +Hard Rules #19/#21/#22 (in `AGENTS.md`) govern parallel sessions. Operational reminders for this +harness: -For full test matrix, see `CONTRIBUTING.md` → "Running Tests". For deep architecture, see `AGENTS.md`. +- **Replicate the `git stash` ban verbatim in the prompt of every subagent that touches git** + (Agent tool / Workflow scripts) — subagents do not inherit this file, and the recorded + recurrence of the stash incident came through a subagent. +- Before merging or pushing to any PR you did not create _this session_, run `git worktree list` + and re-check `gh pr view --json state,headRefOid` (Hard Rule #22b). +- End every session with the main checkout on the branch it started on. ---- +## Superpowers / planning artifacts — path overrides -## Project at a Glance - -**OmniRoute** — unified AI proxy/router. One endpoint, 290 LLM providers, auto-fallback. - -| Layer | Location | Purpose | -| ------------- | ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | -| API Routes | `src/app/api/v1/` | Next.js App Router — entry points | -| Handlers | `open-sse/handlers/` | Request processing (chat, embeddings, etc) | -| Executors | `open-sse/executors/` | Provider-specific HTTP dispatch | -| Translators | `open-sse/translator/` | Format conversion (OpenAI↔Claude↔Gemini) | -| Transformer | `open-sse/transformer/` | Responses API ↔ Chat Completions | -| Services | `open-sse/services/` | Combo routing, rate limits, caching, etc | -| Database | `src/lib/db/` | SQLite domain modules (130 migrations) | -| Domain/Policy | `src/domain/` | Policy engine, cost rules, fallback logic | -| MCP Server | `open-sse/mcp-server/` | 104 tools (42 base + memory/skill/agentSkill/pool/notion/obsidian/gamification/plugin modules), 3 transports (stdio / SSE / Streamable HTTP), 31 scopes | -| A2A Server | `src/lib/a2a/` | JSON-RPC 2.0 agent protocol | -| Skills | `src/lib/skills/` | Extensible skill framework | -| Memory | `src/lib/memory/` | Persistent conversational memory | - -Monorepo: `src/` (Next.js 16 app), `open-sse/` (streaming engine workspace), `electron/` (desktop app), `tests/`, `bin/` (CLI entry point). - ---- - -## Request Pipeline - -``` -Client → /v1/chat/completions (Next.js route) - → CORS → Zod validation → auth? → policy check → prompt injection guard - → handleChatCore() [open-sse/handlers/chatCore.ts] - → cache check → rate limit → combo routing? - → resolveComboTargets() → handleSingleModel() per target - → translateRequest() → getExecutor() → executor.execute() - → fetch() upstream → retry w/ backoff - → response translation → SSE stream or JSON - → If Responses API: responsesTransformer.ts TransformStream -``` - -API routes follow a consistent pattern: `Route → CORS preflight → Zod body validation → Optional auth (extractApiKey/isValidApiKey) → API key policy enforcement → Handler delegation (open-sse)`. No global Next.js middleware — interception is route-specific. - -**Combo routing** (`open-sse/services/combo.ts`): 19 public strategies (priority, weighted, fill-first, round-robin, p2c, random, least-used, cost-optimized, reset-aware, reset-window, headroom, strict-random, auto, lkgp, context-optimized, cache-optimized, context-relay, fusion, pipeline). Each target calls `handleSingleModel()` which wraps `handleChatCore()` with per-target error handling and circuit breaker checks. The `fusion` strategy is the exception: it fans out to a panel of models in parallel, then a judge model synthesizes one final answer (`open-sse/services/fusion.ts`). See `docs/routing/AUTO-COMBO.md` for the 13-factor Auto-Combo scoring + the full strategy table and `docs/architecture/RESILIENCE_GUIDE.md` for the 3 resilience layers. - ---- - -## Resilience Runtime State - -OmniRoute has three related but distinct temporary-failure mechanisms. Keep their -scope separate when debugging routing behavior. See the -[3-layer resilience diagram](./docs/diagrams/exported/resilience-3layers.svg) -(source: [docs/diagrams/resilience-3layers.mmd](./docs/diagrams/resilience-3layers.mmd)) -for an at-a-glance map. - -### Provider Circuit Breaker - -**Scope**: whole provider, e.g. `glm`, `openai`, `anthropic`. - -**Purpose**: stop sending traffic to a provider that is repeatedly failing at the -upstream/service level, so one unhealthy provider does not slow down every request. - -**Implementation**: - -- Core class: `src/shared/utils/circuitBreaker.ts` -- Chat gate/execution wiring: `src/sse/handlers/chatHelpers.ts`, `src/sse/handlers/chat.ts` -- Runtime status API: `src/app/api/monitoring/health/route.ts` -- Shared wrappers: `open-sse/services/accountFallback.ts` -- Persisted state table: `domain_circuit_breakers` - -**States**: - -- `CLOSED`: normal traffic is allowed. -- `OPEN`: provider is temporarily blocked; callers get a provider-circuit-open response - or combo routing skips to another target. -- `HALF_OPEN`: reset timeout has elapsed; allow a probe request. Success closes the - breaker, failure opens it again. - -**Defaults** (`open-sse/config/constants.ts`): - -- OAuth providers: threshold `3`, reset timeout `60s`. -- API-key providers: threshold `5`, reset timeout `30s`. -- Local providers: threshold `2`, reset timeout `15s`. - -Only provider-level failure statuses should trip the provider breaker: - -```ts -(408, 500, 502, 503, 504); -``` - -Do not trip the whole-provider breaker for normal account/key/model errors like most -`401`, `403`, or `429` cases. Those usually belong to connection cooldown or model -lockout. A generic API-key provider `403` should be recoverable unless it is classified -as a terminal provider/account error. - -The breaker uses lazy recovery, not a background timer. When `OPEN` expires, reads such -as `getStatus()`, `canExecute()`, and `getRetryAfterMs()` refresh the state to -`HALF_OPEN`, so dashboards and combo candidate builders do not keep excluding an -expired provider forever. - -### Connection Cooldown - -**Scope**: one provider connection/account/key. - -**Purpose**: temporarily skip one bad key/account while allowing other connections for -the same provider to continue serving requests. - -**Implementation**: - -- Write/update path: `src/sse/services/auth.ts::markAccountUnavailable()` -- Account selection/filtering: `src/sse/services/auth.ts::getProviderCredentials...` -- Cooldown calculation: `open-sse/services/accountFallback.ts::checkFallbackError()` -- Settings: `src/lib/resilience/settings.ts` - -Important fields on provider connections: - -```ts -rateLimitedUntil; -testStatus: "unavailable"; -lastError; -lastErrorType; -errorCode; -backoffLevel; -``` - -During account selection, a connection is skipped while: - -```ts -new Date(rateLimitedUntil).getTime() > Date.now(); -``` - -Cooldowns are also lazy: when `rateLimitedUntil` is in the past, the connection becomes -eligible again. On successful use, `clearAccountError()` clears `testStatus`, -`rateLimitedUntil`, error fields, and `backoffLevel`. - -Default connection cooldown behavior: - -- OAuth base cooldown: `5s`. -- API-key base cooldown: `3s`. -- API-key `429` should prefer upstream retry hints (`Retry-After`, reset headers, or - parseable reset text) when available. -- Repeated recoverable failures use exponential backoff: - -```ts -baseCooldownMs * 2 ** failureIndex; -``` - -The anti-thundering-herd guard prevents concurrent failures on the same connection from -repeatedly extending the cooldown or double-incrementing `backoffLevel`. - -Terminal states are not cooldowns. `banned`, `expired`, and `credits_exhausted` are -intended to stay unavailable until credentials/settings change or an operator resets -them. Do not overwrite terminal states with transient cooldown state. - -### Model Lockout - -**Scope**: provider + connection + model. - -**Purpose**: avoid disabling a whole connection when only one model is unavailable or -quota-limited for that connection. - -Examples: - -- Per-model quota providers returning `429`. -- Local providers returning `404` for one missing model. -- Provider-specific mode/model permission failures such as selected Grok modes. - -Model lockout lives in `open-sse/services/accountFallback.ts` and lets the same -connection continue serving other models. - -### Debugging Guidance - -- If all keys for a provider are skipped, inspect both provider breaker state and each - connection's `rateLimitedUntil`/`testStatus`. -- If a provider appears permanently excluded after the reset window, check whether code - is reading raw `state` instead of using `getStatus()`/`canExecute()`. -- If one provider key fails but others should work, prefer connection cooldown over - provider breaker. -- If only one model fails, prefer model lockout over connection cooldown. -- If a state should self-recover, it should have a future timestamp/reset timeout and a - read path that refreshes expired state. Permanent statuses require manual credential - or config changes. - ---- - -## Key Conventions - -### Code Style - -- **2 spaces**, semicolons, double quotes, 100 char width, es5 trailing commas (enforced by lint-staged via Prettier) -- **Imports**: external → internal (`@/`, `@omniroute/open-sse`) → relative -- **Naming**: files=camelCase/kebab, components=PascalCase, constants=UPPER_SNAKE -- **ESLint**: `no-eval`, `no-implied-eval`, `no-new-func` = error everywhere; `no-explicit-any` = **error** in `open-sse/` and `tests/` (since #6218 — pre-existing violations are frozen in `config/quality/eslint-suppressions.json`, new ones must be fixed; `npm run lint` applies the suppressions and is what CI runs) -- **TypeScript**: `strict: false`, target ES2022, module esnext, resolution bundler. Prefer explicit types. - -### Database - -- **Always** go through `src/lib/db/` domain modules — **never** write raw SQL in routes or handlers -- **Never** add logic to `src/lib/localDb.ts` (re-export layer only) -- **Never** barrel-import from `localDb.ts` — import specific `db/` modules instead -- DB singleton: `getDbInstance()` from `src/lib/db/core.ts` (WAL journaling) -- Migrations: `src/lib/db/migrations/` — versioned SQL files, idempotent, run in transactions - -### Error Handling - -- try/catch with specific error types, log with pino context -- Never swallow errors in SSE streams — use abort signals for cleanup -- Return proper HTTP status codes (4xx/5xx) - -### Security - -- **Never** use `eval()`, `new Function()`, or implied eval -- Validate all inputs with Zod schemas -- Encrypt credentials at rest (AES-256-GCM) -- Upstream header denylist: `src/shared/constants/upstreamHeaders.ts` — keep sanitize, Zod schemas, and unit tests aligned when editing -- **Public upstream credentials** (Gemini/Antigravity/Windsurf-style OAuth client_id/secret + Firebase Web keys extracted from public CLIs): **MUST** be embedded via `resolvePublicCred()` from `open-sse/utils/publicCreds.ts` — **never** as string literals. See `docs/security/PUBLIC_CREDS.md` for the mandatory pattern. -- **Error responses** (HTTP / SSE / executor / MCP handler): **MUST** route through `buildErrorBody()` or `sanitizeErrorMessage()` from `open-sse/utils/error.ts` — **never** put raw `err.stack` or `err.message` in a response body. See `docs/security/ERROR_SANITIZATION.md`. -- **Shell commands built from variables**: when calling `exec()`/`spawn()` with a script that needs runtime values, pass them via the `env` option (shell-escaped automatically) — **never** string-interpolate untrusted/external paths into the script body. Reference: `src/mitm/cert/install.ts::updateNssDatabases`. -- **Secure-by-default libraries** ([tldrsec/awesome-secure-defaults](https://github.com/tldrsec/awesome-secure-defaults)): prefer Helmet.js, DOMPurify, ssrf-req-filter, safe-regex, Google Tink over custom implementations whenever adding new security-sensitive surfaces. - ---- - -## Common Modification Scenarios - -### Adding a New Provider - -1. Register in `src/shared/constants/providers.ts` (Zod-validated at load) -2. Add executor in `open-sse/executors/` if custom logic needed (extend `BaseExecutor`) -3. Add translator in `open-sse/translator/` if non-OpenAI format -4. Add OAuth config in `src/lib/oauth/constants/oauth.ts` if OAuth-based — if the upstream CLI ships a public client_id/secret, embed via `resolvePublicCred()` (see `docs/security/PUBLIC_CREDS.md`), **never** as a literal -5. Register models in `open-sse/config/providerRegistry.ts` -6. Write tests in `tests/unit/` (include the publicCreds shape assertion if you added a new embedded default) - -### Adding a New API Route - -1. Create directory under `src/app/api/v1/your-route/` -2. Create `route.ts` with `GET`/`POST` handlers -3. Follow pattern: CORS → Zod body validation → optional auth → handler delegation -4. Handler goes in `open-sse/handlers/` (import from there, not inline) -5. Error responses use `buildErrorBody()` / `errorResponse()` from `open-sse/utils/error.ts` (auto-sanitized — never put `err.stack` or `err.message` raw in the body). See `docs/security/ERROR_SANITIZATION.md`. -6. Add tests — including at least one assertion that error responses do not leak stack traces (`!body.error.message.includes("at /")`) - -### Adding a New DB Module - -1. Create `src/lib/db/yourModule.ts` — import `getDbInstance` from `./core.ts` -2. Export CRUD functions for your domain table(s) -3. Add migration in `src/lib/db/migrations/` if new tables needed -4. Re-export from `src/lib/localDb.ts` (add to the re-export list only) -5. Write tests - -### Adding a New MCP Tool - -1. Add tool definition in `open-sse/mcp-server/tools/` with Zod input schema + async handler -2. Register in tool set (wired by `createMcpServer()`) -3. Assign to appropriate scope(s) -4. Write tests (tool invocation logged to `mcp_audit` table) - -### Adding a New A2A Skill - -1. Create skill in `src/lib/a2a/skills/` (5 already exist: smart-routing, quota-management, provider-discovery, cost-analysis, health-report) -2. Skill receives task context (messages, metadata) → returns structured result -3. Register in `A2A_SKILL_HANDLERS` in `src/lib/a2a/taskExecution.ts` -4. Expose in `src/app/.well-known/agent.json/route.ts` (Agent Card) -5. Write tests in `tests/unit/` -6. Document in `docs/frameworks/A2A-SERVER.md` skill table - -### Adding a New Cloud Agent - -1. Create agent class in `src/lib/cloudAgent/agents/` extending `CloudAgentBase` (3 already exist: codex-cloud, devin, jules) -2. Implement `createTask`, `getStatus`, `approvePlan`, `sendMessage`, `listSources` -3. Register in `src/lib/cloudAgent/registry.ts` -4. Add OAuth/credentials handling if needed (`src/lib/oauth/providers/`) -5. Tests + document in `docs/frameworks/CLOUD_AGENT.md` - -### Adding a New Embedded Service - -1. Create installer in `src/lib/services/installers/{name}.ts` modeled on `ninerouter.ts` (use `runNpm` from `installers/utils.ts` — no shell interpolation, hard rule #13). -2. Register the service in `src/lib/services/bootstrap.ts` (add to `SERVICES[]` array and extend `buildSpawnArgsFactory()`). -3. Add a DB seed row for the new service in `src/lib/db/migrations/` (`version_manager` table, `status='not_installed'`, `auto_start=0`). -4. Create 7 API endpoints under `src/app/api/services/{name}/` (`_lib.ts`, `install`, `start`, `stop`, `restart`, `update`, `status`, `auto-start`). All delegate errors through `createErrorResponse()`. The shared `logs` endpoint is already wired via `[name]/logs/route.ts`. -5. Verify `/api/services/` is in `LOCAL_ONLY_API_PREFIXES` in `src/server/authz/routeGuard.ts`; add a test asserting `isLocalOnlyPath()` returns `true` for the new prefix if you add one (hard rule #17). -6. Add a UI tab in `src/app/(dashboard)/dashboard/providers/services/tabs/` reusing `ServiceStatusCard`, `ServiceLifecycleButtons`, `ServiceLogsPanel`. -7. Document in `docs/frameworks/EMBEDDED-SERVICES.md` (update §1 service table + §4 API reference) and `docs/openapi.yaml`. -8. Write tests: unit (`tests/unit/services/`), integration (`tests/integration/services/`, gated by `RUN_SERVICES_INT=1`), and update `docs/ops/RELEASE_CHECKLIST.md` smoke section. - -### Adding a New Guardrail / Eval / Skill / Webhook event - -- Guardrail: `src/lib/guardrails/` → docs: `docs/security/GUARDRAILS.md` -- Eval suite: `src/lib/evals/` → docs: `docs/frameworks/EVALS.md` -- Skill (sandbox): `src/lib/skills/` → docs: `docs/frameworks/SKILLS.md` -- Webhook event: `src/lib/webhookDispatcher.ts` → docs: `docs/frameworks/WEBHOOKS.md` - ---- - -## Reference Documentation - -For any non-trivial change, read the matching deep-dive first: - -| Area | Doc | -| --------------------------------------------- | ------------------------------------------------------- | -| Repo navigation | `docs/architecture/REPOSITORY_MAP.md` | -| Architecture | `docs/architecture/ARCHITECTURE.md` | -| Engineering reference | `docs/architecture/CODEBASE_DOCUMENTATION.md` | -| Auto-Combo (13-factor scoring, 19 strategies) | `docs/routing/AUTO-COMBO.md` | -| Resilience (3 mechanisms) | `docs/architecture/RESILIENCE_GUIDE.md` | -| Reasoning replay | `docs/routing/REASONING_REPLAY.md` | -| Skills framework | `docs/frameworks/SKILLS.md` | -| Memory system (FTS5 + Qdrant) | `docs/frameworks/MEMORY.md` | -| Cloud agents | `docs/frameworks/CLOUD_AGENT.md` | -| Guardrails (PII / injection / vision) | `docs/security/GUARDRAILS.md` | -| Public upstream credentials (Gemini/etc.) | `docs/security/PUBLIC_CREDS.md` | -| Error message sanitization | `docs/security/ERROR_SANITIZATION.md` | -| Evals | `docs/frameworks/EVALS.md` | -| Compliance / audit | `docs/security/COMPLIANCE.md` | -| Webhooks | `docs/frameworks/WEBHOOKS.md` | -| Authorization pipeline | `docs/architecture/AUTHZ_GUIDE.md` | -| Stealth (TLS / fingerprint) | `docs/security/STEALTH_GUIDE.md` | -| Agent protocols (A2A / ACP / Cloud) | `docs/frameworks/AGENT_PROTOCOLS_GUIDE.md` | -| MCP server | `docs/frameworks/MCP-SERVER.md` | -| A2A server | `docs/frameworks/A2A-SERVER.md` | -| API reference + OpenAPI | `docs/reference/API_REFERENCE.md` + `docs/openapi.yaml` | -| Provider catalog (auto-generated) | `docs/reference/PROVIDER_REFERENCE.md` | -| Release flow | `docs/ops/RELEASE_CHECKLIST.md` | -| Embedded services | `docs/frameworks/EMBEDDED-SERVICES.md` | -| Quality gates (~48 scripts, allowlist policy) | `docs/architecture/QUALITY_GATES.md` | - ---- - -## Testing - -| What | Command | -| ----------------------- | --------------------------------------------------------------------------- | -| Unit tests | `npm run test:unit` | -| Single file | `node --import tsx/esm --test tests/unit/file.test.ts` | -| Vitest (MCP, autoCombo) | `npm run test:vitest` | -| E2E (Playwright) | `npm run test:e2e` | -| Protocol E2E (MCP+A2A) | `npm run test:protocols:e2e` | -| Ecosystem | `npm run test:ecosystem` | -| Coverage gate | `npm run test:coverage` (60/60/60/60 — statements/lines/functions/branches) | -| Coverage report | `npm run coverage:report` | - -**PR rule**: If you change production code in `src/`, `open-sse/`, `electron/`, or `bin/`, you must include or update tests in the same PR. - -**Test layer preference**: unit first → integration (multi-module or DB state) → e2e (UI/workflow only). Encode bug reproductions as automated tests before or alongside the fix. - -**Both test runners must pass**: `npm run test:unit` (Node native — most tests) AND `npm run test:vitest` (MCP server, autoCombo, cache) cover **non-overlapping files**. Both are wired in CI (jobs `test-unit` and `test-vitest`) and must be green before merging. A PR where only one suite passes may silently ship broken MCP tools or routing regressions. - -**Bug fix / issue triage protocol (Hard Rule #18)**: Every fix for a reported issue must be validated by one of the following — no exceptions: - -1. **TDD (preferred)** — write a failing test reproducing the bug → fix it → confirm the test passes. The test becomes the permanent regression guard. Touch only the files the test proves need changing; nothing more. -2. **Real-environment test (when TDD is not possible)** — deploy to the production VPS (`root@192.168.0.15`) and run a documented live test. Record the exact command + result in the PR description. Applies to: OAuth upstream flows, Cloudflare/WS upstream behavior, UI-only regressions, hardware-dependent behavior. -3. "It worked locally without a test" does not count. A fix without a test or a VPS validation record is not a fix — it is a guess. - -Why this matters: fixing bug A while opening bug B is worse than not fixing at all. The TDD/VPS gate enforces surgical scope — you touch only what the failing test proves is broken. Examples where this paid off: #3090 (claude-web 403), #3113 (WS HTTP fallback), #3052 (heap-guard auto-calibration). - -**Copilot coverage policy**: When a PR changes production code and coverage is below 60% (statements/lines/functions/branches), do not just report — add or update tests, rerun the coverage gate, then ask for confirmation. Include commands run, changed test files, and final coverage result in the PR report. - ---- - -## Planning & Research Artifacts (superpowers, deep-research) - -`_tasks/` is a **separate, isolated git repository** that is gitignored by the main -repo (`.gitignore` → `_tasks/`). It is the canonical home for working artifacts — -plans, specs/designs, research, hand-offs — so they stay **versioned in their own -repo** instead of polluting the main OmniRoute tree. - -**Hard rule — never write superpowers / planning / research output under `docs/` or -the repo root.** The superpowers skills ship with defaults that point at `docs/…` -(`writing-plans` → `docs/superpowers/plans/`, `brainstorming` → `docs/superpowers/specs/`). -Those defaults are **overridden here**. Whenever you invoke superpowers (or any -plan/spec/research generator) in this project, save to `_tasks/` instead, using the -same filename convention: +The `_tasks/` convention is defined in `AGENTS.md` → "Planning & Research Artifacts". The +superpowers skills ship with defaults that point at `docs/…` — those defaults are **overridden +here**. When a superpowers skill announces a path like "saved to `docs/superpowers/plans/…`", +rewrite it to the `_tasks/…` equivalent before writing: | Artifact (skill) | Default (do NOT use) | Save here instead | | ---------------------------------- | ------------------------- | ------------------------------------------------------------- | @@ -409,164 +45,11 @@ same filename convention: | Research (`deep-research`, ad-hoc) | `docs/research/` | `_tasks/research/…` | | Hand-offs (`/handoff`) | — | `_tasks/hands-off/__v_sess-/` | -When a superpowers skill announces a path like "saved to `docs/superpowers/plans/…`", -rewrite it to the `_tasks/…` equivalent before writing. Commit those artifacts inside -the `_tasks/` repo (`git -C _tasks …`), never in the main repo. +Commit those artifacts inside the `_tasks/` repo (`git -C _tasks …`), never in the main repo. -## Git Workflow +## Base-green before opening PRs -```bash -# Never commit directly to main -git checkout -b feat/your-feature -git commit -m "feat: describe your change" -git push -u origin feat/your-feature -``` - -**Branch prefixes**: `feat/`, `fix/`, `refactor/`, `docs/`, `test/`, `chore/` - -**Commit format** (Conventional Commits): `feat(db): add circuit breaker` — scopes: `db`, `sse`, `oauth`, `dashboard`, `api`, `cli`, `docker`, `ci`, `mcp`, `a2a`, `memory`, `skills` - -**Husky hooks**: - -- **pre-commit**: lint-staged + `check-docs-sync` + `check:any-budget:t11` + `check:tracked-artifacts` -- **pre-push**: intentionally light (PATH/npm sanity only). `any-budget` + `tracked-artifacts` - already run on pre-commit; re-running them on every push was pure double-pay. CI still - enforces both. (Was Fase 6A.12 full pre-push gate; folded into pre-commit in #6716.) - -### Worktree isolation (MANDATORY for every development task) - -Multiple sessions/agents work this repo in parallel. The main checkout is **shared**, so a -`git checkout`/branch switch in it silently discards another session's uncommitted work and -yanks the branch out from under whatever else is running (incidents: 2026-06-05, 2026-06-13). - -**Rule: never develop on the shared main checkout. Every task gets its own git worktree on its -own dedicated branch, and you MUST confirm the base branch with the operator before creating it.** - -1. **Ask first — which base branch?** Before creating anything, ask the operator (via - `AskUserQuestion`, unless they already told you) from which branch the new worktree/branch - should be cut. Do NOT assume `main` or "whatever I'm on" — the answer is usually the active - `release/vX.Y.Z`, but it can be another feature/release branch. Get the base explicitly. -2. **Create an isolated worktree + branch off that base** (never reuse the main checkout). - **🔴 MANDATORY PATH: every worktree lives under `.claude/worktrees/` — and nowhere else.** - This is the single canonical location (the same dir the native `EnterWorktree` tool uses). It - is gitignored AND in the `tsconfig.json` / `.dockerignore` excludes, so worktrees never leak - into the build scope. **Never** use `.worktrees/`, repo-root, or any other path — a worktree - outside `.claude/worktrees/` (a) escapes the build-scope excludes and poisons `next build` (the - `tsconfig` `include: **/*` globs ~70× the codebase → OOM; incident 2026-06-25) and (b) scatters - worktrees across two dirs. - - ```bash - BASE_BRANCH="release/vX.Y.Z" # ← the branch the operator confirmed in step 1 - TASK="feat/your-feature" # feat/ fix/ refactor/ docs/ test/ chore/ - git fetch origin "$BASE_BRANCH" - git worktree add ".claude/worktrees/${TASK##*/}" -b "$TASK" "origin/$BASE_BRANCH" - cd ".claude/worktrees/${TASK##*/}" - # Reuse the main checkout's node_modules to skip a per-worktree npm install. - # HARD LINKS (`cp -al`), never a symlink: ~5s for the whole tree and near-zero extra - # disk (the inodes are shared), and unlike a symlink it does not break the dev server. - cp -al "$(git -C rev-parse --show-toplevel)/node_modules" node_modules - ``` - - **Never `ln -s` node_modules.** Turbopack rejects a symlink that resolves outside the - project root, so `npm run dev` dies with a FATAL panic (`Symlink [project]/node_modules - is invalid, it points out of the filesystem root`) while typecheck, lint and the test - runners all keep passing — the error names "filesystem root", not the worktree, so it - reads like a Next/build bug and costs real time to trace (incident 2026-07-31, #9043). - - In Claude Code prefer the native `EnterWorktree` tool (it already creates worktrees under - `.claude/worktrees/`): create the worktree with the command above, then call `EnterWorktree` - with its `path`. - -3. **Work, commit, push, open the PR — all from inside the worktree.** Never `git checkout` a - different branch inside a worktree another session might share. -4. **Tear down only your own** worktree + branch when done, from the main checkout: - `git worktree remove .claude/worktrees/` then `git branch -D `. Never blanket-delete - `fix/*`/`feat/*` — other sessions keep their own; delete only the branches you created, by name. -5. **Never touch another session's worktree, branch, or uncommitted changes.** If `git worktree -list` shows worktrees you didn't create, leave them alone. End every session with the main - checkout back on the branch it started on (the active `release/vX.Y.Z`, never `main`). - ---- - -## Environment - -- **Runtime**: Node.js ≥22.0.0 <23 || ≥24.0.0 <27, ES Modules. This is the **only supported** runtime for the published `omniroute` CLI, the server, and the test suites (`node:test` + vitest) — `engines.node` is authoritative and end users never need Bun. A **best-effort `bun:sqlite` compatibility path** exists so a global Bun install (`bun install -g omniroute`) can start without `better-sqlite3` (driver adapter + Bun-aware process spawning); it is **not** a supported runtime — no support guarantees — and every Bun-specific runtime change MUST preserve the Node driver/fallback chain and ship a Bun test (`test:bun:db`) or an explicit reason why the path is Node-only. -- **Bun (build/dev script runner + compatibility smoke only)**: Bun `1.3.14` is pinned as an **exact devDependency** (provisioned through the existing `npm ci` via the lockfile's `@oven/bun-*` platform binaries — no `setup-bun`/ad-hoc install). It is used **only** to execute a small, allow-listed set of TypeScript **gate/generator scripts** (replacing `node --import tsx` for startup speed): the CI checks `check:provider-consistency`, `check:compression-budget`, `check:known-symbols`, and the non-CI `gen:provider-reference`, `bench:compression` — plus the focused `test:bun:db` compatibility smoke suite for the best-effort `bun:sqlite` path. **Do NOT** widen Bun to `npm install`, the build (`build:cli*`), `check:pack-artifact`, the supported published runtime, or the main test runners — those stay on Node. Any new Bun-invoking gate/generator script must be validated byte-identical against its `node --import tsx` output first. After pulling the lockfile change, run `npm install` so `bun` resolves locally (a stale `node_modules` will fail those scripts with `bun: not found`). -- **TypeScript**: 6.0+, target ES2022, module esnext, resolution bundler -- **Path aliases**: `@/*` → `src/`, `@omniroute/open-sse` → `open-sse/`, `@omniroute/open-sse/*` → `open-sse/*` -- **Default port**: 20128 (API + dashboard on same port) -- **Data directory**: `DATA_DIR` env var, defaults to `~/.omniroute/` -- **Key env vars**: `PORT`, `JWT_SECRET`, `API_KEY_SECRET`, `INITIAL_PASSWORD`, `REQUIRE_API_KEY`, `APP_LOG_LEVEL` -- Setup: `cp .env.example .env` then generate `JWT_SECRET` (`openssl rand -base64 48`) and `API_KEY_SECRET` (`openssl rand -hex 32`) - ---- - -## Quality Gates & Ratchets - -OmniRoute has **~48 quality-gate scripts** (`scripts/check/` + `scripts/quality/`) wired -across **9 gate-running jobs** in `.github/workflows/ci.yml` (`lint`, `quality-gate`, -`quality-extended`, `docs-sync-strict`, `i18n-ui-coverage`, `i18n`, `pr-test-policy`, -`test-vitest`, `sonarqube`), plus the `quality.yml` fast-gates job (PR→`release/**`) and -3 nightly workflows (`nightly-property`, `nightly-resilience`, `nightly-llm-security`; -`nightly-mutation` once merged). Full inventory, per-job breakdown, and operational -procedures are in [`docs/architecture/QUALITY_GATES.md`](docs/architecture/QUALITY_GATES.md). - -**Quick reference:** - -- Gates in jobs `lint` + `docs-sync-strict`: pass/fail policy gates — - fix the violation or add an allowlist entry with a justification comment + tracking issue. -- Gates in job `quality-gate`: ratchet — metrics (ESLint warnings, code coverage, duplication, - complexity) must not regress vs `quality-baseline.json`. Update via - `npm run quality:ratchet -- --update` when a metric genuinely improves. -- Job `test-vitest` runs `npm run test:vitest` (MCP tools, autoCombo, cache) — blocking. - `test:vitest:ui` is advisory until UI component tests are triaged. - -**Allowlist policy (short form):** Fix the cause; use the allowlist only for pre-existing -violations you cannot fix in the same PR. Add a comment with justification + issue number. -Stale allowlist entries (suppressing a violation that no longer exists) will be caught by -the stale-enforcement added in Fase 6A.3. - ---- - -## Hard Rules - -1. Never commit secrets or credentials -2. Never add logic to `localDb.ts` -3. Never use `eval()` / `new Function()` / implied eval -4. Never commit directly to `main` -5. Never write raw SQL in routes — use `src/lib/db/` modules -6. Never silently swallow errors in SSE streams -7. Always validate inputs with Zod schemas -8. Always include tests when changing production code -9. Coverage must not regress below the baseline frozen in `quality-baseline.json` (ratchet); absolute floor is 60% (statements/lines/functions/branches). Update the baseline via `npm run quality:ratchet -- --update` only when coverage genuinely improves. See `docs/architecture/QUALITY_GATES.md`. -10. Never bypass Husky hooks (`--no-verify`, `--no-gpg-sign`) without explicit operator approval. -11. Never embed public upstream OAuth client_id/secret or Firebase Web keys as string literals — always go through `resolvePublicCred()` (`open-sse/utils/publicCreds.ts`). See `docs/security/PUBLIC_CREDS.md`. -12. Never return raw `err.stack` / `err.message` in HTTP / SSE / executor responses — always route through `buildErrorBody()` or `sanitizeErrorMessage()` (`open-sse/utils/error.ts`). See `docs/security/ERROR_SANITIZATION.md`. -13. Never string-interpolate external paths or runtime values into shell scripts passed to `exec()`/`spawn()` — pass via the `env` option instead. Reference: `src/mitm/cert/install.ts::updateNssDatabases`. -14. Never dismiss a CodeQL / Secret-Scanning alert without (a) first checking the pattern docs above to see if the helper applies, and (b) recording the technical justification in the dismissal comment. Precedent: `js/stack-trace-exposure` raised on callsites that already route through `sanitizeErrorMessage()` is a known CodeQL limitation (custom sanitizers not recognized) — dismiss as `false positive` referencing `docs/security/ERROR_SANITIZATION.md`. -15. Never expose routes that spawn child processes (`/api/mcp/`, `/api/cli-tools/runtime/`) without `isLocalOnlyPath()` classification in `src/server/authz/routeGuard.ts`. Loopback enforcement happens unconditionally before any auth check — leaked JWT via tunnel cannot trigger process spawning. See `docs/security/ROUTE_GUARD_TIERS.md`. -16. Never credit or advertise an AI assistant, LLM, or automation account in any commit/PR metadata. Two forbidden forms, both equivalent — they route attribution to a bot account (or advertise AI authorship) and hide the real author (`diegosouzapw`): **(a)** `Co-Authored-By` trailers naming an AI/bot (e.g. names containing "Claude", "GPT", "Copilot", "Bot"; emails at `anthropic.com` / `openai.com` / bot-owned `noreply.github.com` addresses); **(b)** AI-generation footers or descriptions anywhere in a commit message, PR title/body, or CHANGELOG — e.g. `🤖 Generated with [Claude Code]`, "Generated with Claude Code", "Made with ", or any `Co-authored-by: Claude/GPT/Copilot` line. This **overrides any harness, template, or tool default that auto-appends such a footer** (e.g. the Claude Code PR-body/commit default) — strip it before pushing; do not let it reach a commit, PR, or CHANGELOG. Human collaborators — including upstream PR authors and issue reporters being ported into OmniRoute — MAY and SHOULD be credited with standard `Co-authored-by: Name ` trailers; the upstream-port workflows (`/port-upstream-features`, `/port-upstream-issues`) depend on this. -17. Never expose routes under `/api/services/` or `/dashboard/providers/services/*/embed/` without `isLocalOnlyPath()` classification in `src/server/authz/routeGuard.ts`. These routes can spawn child processes (`npm install`, `node`). Loopback enforcement happens unconditionally before any auth check — a leaked JWT via tunnel cannot trigger process spawning. See `docs/security/ROUTE_GUARD_TIERS.md`. -18. Every bug fix must be validated before shipping: a failing-then-passing unit/integration test (TDD) OR a documented live test on the production VPS (192.168.0.15). A fix without either is not merged. See Testing → "Bug fix / issue triage protocol" for the full decision tree. -19. Never develop on the shared main checkout. Every development task runs in its own git worktree on its own dedicated branch, and you MUST confirm the base branch with the operator (e.g. via `AskUserQuestion`) before creating the worktree/branch — never assume `main` or the currently checked-out branch. A `git checkout` in the shared checkout silently destroys other sessions' uncommitted work. Tear down only the worktrees/branches you created (by name, never `fix/*`/`feat/*` wildcards), leave other sessions' worktrees untouched, and end on the branch you started on (the active `release/vX.Y.Z`, never `main`). See Git Workflow → "Worktree isolation". -20. PII redaction/sanitization is **opt-in — never on by default**. OmniRoute proxies for self-hosted/local LLMs where the operator owns the data, so mutating request/response payloads by default would silently corrupt legitimate traffic. The two data-mutating PII feature flags **MUST** keep `defaultValue: "false"` in `src/shared/constants/featureFlagDefinitions.ts`: `PII_REDACTION_ENABLED` (request-side) and `PII_RESPONSE_SANITIZATION` (response + streaming). All three application points — `src/lib/guardrails/piiMasker.ts` (request guardrail), `src/lib/piiSanitizer.ts` (response), `src/lib/streamingPiiTransform.ts` (SSE) — are gated on these flags; with both off the `pii-masker` guardrail still runs but never mutates payloads (data passes through untouched). Flipping either default to `"true"` requires explicit operator approval. The regression guard is `tests/unit/pii-opt-in-default.test.ts` (asserts both definition defaults + behavioral pass-through). Opt-in is per-operator via env or the settings/DB override (`src/lib/db/featureFlags.ts`), never a silent default. See `docs/security/GUARDRAILS.md`. -21. **Release-freeze — the FROZEN release branch belongs to the release captain; development does NOT stop (parallel-cycle model, 2026-07-04).** `/generate-release` opens a marker issue labeled `release-freeze` at the start of reconciliation (Phase 0a), **immediately cuts the next cycle's branch `release/vX+1` from the frozen tip (Phase 0a.0b — bump + living release PR + re-home of open PRs)**, and closes the freeze once the release PR squash-merges to `main`. Before merging **any** PR, every campaign workflow (`/review-prs`, `/review-group-prs`, `/merge-prs`, `/triage-fix-bugs`, `/implement-fix-bugs`, `/triage-features`, `/implement-features`, `/green-prs`, `/port-upstream-*`) **MUST** check `gh issue list --repo diegosouzapw/OmniRoute --label release-freeze --state open` — if a freeze is active: **NEVER merge into the frozen `release/vX.Y.Z` named in the freeze title**; instead resolve the ACTIVE development branch (the **highest** `release/v*` by semver — normally `release/vX+1`, announced in a freeze-issue comment) and **retarget the PR there** (`gh pr edit --base release/vX+1`, then VERIFY with `gh pr view --json baseRefName` — the edit fails silently) and merge normally. **HOLD only when the highest release/v\* branch IS the frozen one** (the short window before 0a.0b completes, or a pre-parallel-cycle release) — in that case leave the PR ready and open, tell the operator, and resume when the next branch appears or the freeze lifts. The just-shipped fixes reach `release/vX+1` via the Phase 5 sync-back (`scripts/release/sync-next-cycle.mjs`); do not try to sync mid-release. This is a **coordination signal, not a permission lock**: the release captain and the campaign sessions share the `diegosouzapw` identity, so a GitHub branch-protection lock cannot distinguish them — only this honored marker prevents the mid-release commit races that forced full CHANGELOG re-reconciliation in v3.8.40/v3.8.41 (a parallel campaign advanced `release/vX.Y.Z` by 34 commits mid-run). The release captain's own reconciliation/cycle-open pushes are exempt — they _are_ the release. Fixes that must land during a freeze (a homologation finding) follow the post-merge read-only rule: land on `main` first via `fix/release-vX.Y.Z-*`. **⛔ ONLY `/generate-release` may raise a release-freeze, and ONLY at its Phase 0a (start of generating a new version) — lifted at Phase 12c after the squash-merge to `main`.** No campaign, session, or agent may open a `release-freeze` marker at any other time — a freeze is **never** a mid-development coordination tool. If a session ever believes a freeze is genuinely, unavoidably necessary outside the `/generate-release` flow, it **MUST first ask the operator (`diegosouzapw`) in chat, explicitly alert "estou criando um freeze" and get an explicit yes** — never open, extend, or re-open a `release-freeze` autonomously. Conversely, do **not** close/lift an active `/generate-release` freeze to unblock campaign merges: it protects the captain's single clean CI run and auto-lifts at Phase 12c — closing it early re-triggers the exact commit race it prevents. Verify a freeze is legitimate before acting on it: an open `release-freeze` whose title/body references an **OPEN** release PR (`gh pr view --json state`) is the authorized captain freeze — hold, don't touch. -22. **Cross-session safety — this repo is worked by MANY parallel sessions/agents at once; never step on another's in-flight work.** Two absolute bans, both recurring incidents (this rule exists because they keep happening): - - **(a) Never `git stash` / `git stash pop` — ANYWHERE in this repo, including inside an isolated worktree, and including inside any subagent you dispatch.** `git stash` operates on the **shared repository object store**, not the per-worktree working tree — so a stash pushed or popped in one session can silently clobber or resurrect another parallel session's uncommitted changes. This is not hypothetical: 2026-07-02 a `#5923` quotaCache change leaked into the unrelated `#2296` worktree via a global `stash pop`, and the same class reincided through a **subagent**. To compare working changes against a base ref **without** stashing, use `git show :` or `git diff -- `; to confirm a typecheck/lint error is pre-existing on the base, inspect the base ref directly (`git show origin/release/vX.Y.Z:`) — never stash your tree away to "get it clean". **Put this ban verbatim in the prompt of every subagent that touches git** (agents don't inherit this file's context — the recurrence was a subagent). - - **(b) Never merge, push, rebase, or force-push a PR / branch / worktree that another session is actively working.** An open PR whose head is a live fix worktree in `.claude/worktrees/` you did **not** create (e.g. `fix-5852`/`fix-5923` carrying fresh commits, even when they share your `diegosouzapw` identity), or any branch another session owns, is **off-limits — HOLD**, and let the owning session merge it. **Before** merging or pushing to any PR you did not create _this_ session, run `git worktree list` to check for a matching in-flight worktree and re-check `gh pr view --json state,headRefOid`. Only the owning session merges its own in-flight PR; mid-flight merges race the owner and re-trigger the exact commit/CHANGELOG races Rule #19 and Rule #21 guard against. (Reinforces Rule #19.) - ---- - -## PII & Stream Sanitization Learnings - -### 1. Regex Security (ReDoS) - -All regex patterns matching variable-length strings (e.g. IPv6 address, credit cards) must use strictly bounded, non-overlapping sequences (e.g., limit occurrences with bounded ranges `{1,7}`) to prevent catastrophic backtracking when processing untrusted inputs. - -### 2. SSE Snapshot Handling - -When parsing streaming LLM responses (e.g. Responses API), check if a chunk represents a final snapshot (`done` or `completed` events). Snapshot text must be sanitized directly as a standalone string (bypassing rolling delta buffers) to prevent text duplication at the end of the stream. - -### 3. Database Handles in Tests - -Ensure that any unit tests that trigger database migrations or establish SQLite connections call `resetDbInstance()` and properly clean up/close all DB handles in a `test.after(...)` hook. Failure to release database connection handles will cause Node's native test runner to hang indefinitely. +Before cutting a branch or opening a PR, run the base-green check (`AGENTS.md` → Git Workflow → +"Base-green check"; project skills reference it as `.agents/skills/_shared/base-green.md`). A PR +opened while the base tip is red must carry `⚠️ base-red inherited: #` in its body. To +drain an accumulated red state (base tip + red PRs), use the `/sweep-reds` skill. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 8688d253d6..564aedadfa 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -15,6 +15,12 @@ coverage, and reconciliation steps. - **Node.js** `>=22.22.3 <23`, or `>=24.0.0 <27` (recommended: 24 LTS) - **npm** 10+ + +> **npm v11+ users (Node 24+):** After `npm install`, verify native modules were installed: +> `node -e "require('better-sqlite3')"`. If it fails with `MODULE_NOT_FOUND`, +> run `npm approve-scripts better-sqlite3 && npm install`. See +> [Troubleshooting](docs/guides/TROUBLESHOOTING.md#npm-v11-better-sqlite3-not-installed-cannot-find-module). + - **Git** ### Clone & Install diff --git a/Dockerfile b/Dockerfile index 1924fcef5a..905fb294e0 100644 --- a/Dockerfile +++ b/Dockerfile @@ -77,7 +77,7 @@ RUN test -f package-lock.json \ # a broken/rate-limited fetch fails the BUILD loudly instead of shipping a # broken image. RUN --mount=type=cache,id=npm-cache,target=/root/.npm \ - npm ci --no-audit --no-fund --legacy-peer-deps --ignore-scripts \ + npm ci --include=optional --no-audit --no-fund --legacy-peer-deps --ignore-scripts \ && (cd node_modules/better-sqlite3 \ && node /usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js rebuild) \ && node -e "require('better-sqlite3')(':memory:').close()" \ @@ -119,7 +119,9 @@ ENV NODE_OPTIONS="--max-old-space-size=${OMNIROUTE_BUILD_MEMORY_MB}" COPY . ./ RUN --mount=type=cache,id=next-cache,target=/app/.build/next/cache \ - mkdir -p /app/data && npm run build + mkdir -p /app/data \ + && npm run build \ + && node --input-type=module -e "import { createRequire } from 'node:module'; import { pathToFileURL } from 'node:url'; const standaloneRoot = '/app/.build/next/standalone/node_modules/'; const require = createRequire('/app/.build/next/standalone/package.json'); for (const pkg of ['@atjsh/llmlingua-2', '@huggingface/transformers', '@tensorflow/tfjs', 'js-tiktoken']) { const resolved = require.resolve(pkg); if (!resolved.startsWith(standaloneRoot)) throw new Error(pkg + ' resolved outside standalone: ' + resolved); await import(pathToFileURL(resolved).href); } const onnxRuntime = require.resolve('onnxruntime-node'); if (!onnxRuntime.startsWith(standaloneRoot)) throw new Error('onnxruntime-node resolved outside standalone: ' + onnxRuntime); await import(pathToFileURL(onnxRuntime).href);" # ── Runner base ──────────────────────────────────────────────────────────── FROM base AS runner-base @@ -179,8 +181,8 @@ EXPOSE 20128 USER node # Warns if the mounted data volume has wrong ownership -COPY --chmod=755 scripts/check-permissions.sh /tmp/check-permissions.sh -ENTRYPOINT ["/tmp/check-permissions.sh"] +COPY --chmod=755 scripts/check-permissions.sh /app/check-permissions.sh +ENTRYPOINT ["/app/check-permissions.sh"] HEALTHCHECK --interval=30s --timeout=5s --start-period=15s --retries=3 \ CMD ["node", "healthcheck.mjs"] diff --git a/GEMINI.md b/GEMINI.md index 31cc71e761..7c33fee37b 100644 --- a/GEMINI.md +++ b/GEMINI.md @@ -1,50 +1,13 @@ -# Security and Cleanliness Rules for AI Assistants +# GEMINI.md -> **Scope:** rules for Gemini-based agents. For Claude Code, see `CLAUDE.md`. For other AI assistants, see `AGENTS.md`. +> **Single source of truth:** all project rules for AI assistants live in +> [`AGENTS.md`](AGENTS.md). Read it in full before any change — it contains the 22 Hard Rules, +> quality gates, code conventions, file-placement / repo-root hygiene rules, the repository map +> and the local development access notes that used to live in this file. -## 1. File Placement & Organization +Gemini-specific notes: -- **Test Files**: ALL unit tests, integration tests, ecosystem tests, or Vitest files MUST strictly be placed within the `tests/` directory (e.g., `tests/unit/`, `tests/integration/`). NEVER create test files in the project root (`/`). -- **Scripts and Utilities**: ALL maintenance, debugging, generation, or experimental scripts (`.cjs`, `.mjs`, `.js`, `.ts`) MUST be placed strictly inside one of the `scripts/` subfolders (`build/`, `dev/`, `check/`, `docs/`, `i18n/`, `ad-hoc/`). One-shot or experimental code goes under `scripts/ad-hoc/`. NEVER dump loose scripts in the project root (`/`) or the top-level `scripts/` folder. - -**The Project Root MUST ONLY CONTAIN:** - -- Configuration files (`vitest.config.ts`, `next.config.mjs`, `eslint.config.mjs`, `tsconfig*.json`, `playwright.config.ts`, `prettier.config.mjs`, `postcss.config.mjs`, `sonar-project.properties`, `fly.toml`, `docker-compose*.yml`, `Dockerfile`) -- Dependency files (`package.json`, `package-lock.json`) -- Documentation files (`README.md`, `CHANGELOG.md`, `LICENSE`, `AGENTS.md`, `CLAUDE.md`, `GEMINI.md`, `CONTRIBUTING.md`, `SECURITY.md`, `CODE_OF_CONDUCT.md`, `llm.txt`, `Tuto_Qdrant.md`) -- CI/CD files and ignore definitions (`.gitignore`, `.dockerignore`, `.npmignore`, `.npmrc`, `.node-version`, `.nvmrc`, `.env.example`) - -When creating _any_ validation tests or one-off logic scripts, default to using `scripts/ad-hoc/` or the `tests/unit/` directories according to your goals. Do not pollute the `/` root context. - -## 2. Hard Rules (mirror of `CLAUDE.md`) - -1. **Never commit secrets or credentials.** Use `.env` (auto-generated from `.env.example`) or a vault. Passwords, OAuth secrets, API keys, and Cookie values must never appear in committed files. -2. **Never add logic to `src/lib/localDb.ts`.** It is a re-export barrel only. -3. **Never use `eval()`, `new Function()`, or any implied eval.** ESLint enforces this. -4. **Never commit directly to `main`.** Use `feat/`, `fix/`, `refactor/`, `docs/`, `test/`, or `chore/` branches. -5. **Never write raw SQL in routes** — always go through `src/lib/db/` domain modules. -6. **Never silently swallow errors in SSE streams** — propagate them or abort the stream cleanly. -7. **Never bypass Husky hooks** (`--no-verify`, `--no-gpg-sign`) without explicit operator approval. -8. **Always validate inputs with Zod schemas** from `src/shared/validation/schemas.ts`. -9. **Always include tests when changing production code** (`src/`, `open-sse/`, `electron/`, `bin/`). -10. **Coverage must stay** ≥ 60 % statements / lines / functions / branches — the official CI gate (`npm run test:coverage`). The ratchet baseline in `quality-baseline.json` may freeze a higher floor; never regress it. - -## 3. Codebase navigation - -| Task | Read this first | -| ----------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| Understand the codebase | `docs/architecture/REPOSITORY_MAP.md` | -| Architecture overview | `docs/architecture/ARCHITECTURE.md` | -| Engineering reference | `docs/architecture/CODEBASE_DOCUMENTATION.md` | -| Add a feature | `CONTRIBUTING.md` + the matching `docs/.md` | -| Per-area deep dives | `docs/frameworks/SKILLS.md`, `docs/frameworks/MEMORY.md`, `docs/frameworks/EVALS.md`, `docs/security/GUARDRAILS.md`, `docs/security/COMPLIANCE.md`, `docs/frameworks/CLOUD_AGENT.md`, `docs/frameworks/MCP-SERVER.md`, `docs/frameworks/A2A-SERVER.md`, `docs/architecture/AUTHZ_GUIDE.md`, `docs/architecture/RESILIENCE_GUIDE.md`, `docs/routing/AUTO-COMBO.md`, `docs/frameworks/WEBHOOKS.md`, `docs/routing/REASONING_REPLAY.md`, `docs/security/STEALTH_GUIDE.md`, `docs/ops/TUNNELS_GUIDE.md`, `docs/guides/ELECTRON_GUIDE.md`, `docs/reference/PROVIDER_REFERENCE.md` | -| Release flow | `docs/ops/RELEASE_CHECKLIST.md` | - -## 4. Local development access - -The dashboard is reachable at the operator's chosen URL/port (default `http://localhost:20128`). Credentials are operator-specific: - -- **Initial admin password** is read from the `INITIAL_PASSWORD` env var on first install (defaults to `CHANGEME` in `.env.example`; rotate immediately after first login). -- **Local VPS / shared dev environments**: ask the operator for the URL and current credentials — they live in their personal vault, NOT in this repo. - -> Any credential observed in a previous version of this file was a non-production demo value; treat it as compromised and do not reuse it. +- Skills activate via the `activate_skill` tool (skill metadata is loaded at session start and + the full content is activated on demand). +- There are no other Gemini-only rules today. Do not re-add project rules here — edit + `AGENTS.md` instead, so every assistant sees the same instructions. diff --git a/MAX b/MAX new file mode 100644 index 0000000000..e69de29bb2 diff --git a/README.md b/README.md index 6cde157bb9..352619a7f0 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ # 🚀 OmniRoute — The Free AI Gateway -OmniRoute — Never stop coding. Every AI tool → 290 providers — 90+ free — through one endpoint. Claude Code, Codex, Cursor, Cline, Copilot & Antigravity into FREE Claude / GPT / Gemini with auto-fallback. RTK + Caveman stacked compression saves 15–95% tokens (~89% avg) — never hit limits. 290 AI providers · 90+ free tiers · ~1.53B free tokens/mo · 19 routing strategies · $0 to start. +OmniRoute — Never stop coding. Every AI tool → 291 providers — 90+ free — through one endpoint. Claude Code, Codex, Cursor, Cline, Copilot & Antigravity into FREE Claude / GPT / Gemini with auto-fallback. RTK + Caveman stacked compression saves 15–95% tokens (~89% avg) — never hit limits. 291 AI providers · 90+ free tiers · ~1.53B free tokens/mo · 19 routing strategies · $0 to start. @@ -81,7 +81,7 @@ ⚙️ Features 🎯 Combos - 🌐 Providers + 🌐 Providers 🔌 CLI & MCP @@ -188,7 +188,7 @@ curl http://localhost:20128/v1/chat/completions \ -The Promise — One endpoint. 290 providers. Never stop building — OmniRoute picks the cheapest one that works. Six pillars: Never hit limits (auto-fallback across 290 providers in milliseconds, zero downtime) · Save up to 95% tokens (RTK + Caveman stacked compression cuts 15–95%, ~89% avg on tool-heavy sessions) · $0 to start (90+ free tiers, 40+ free forever — no card needed) · Every tool works (33 coding agents through one config) · One endpoint (OpenAI ↔ Claude ↔ Gemini ↔ Responses API at /v1) · Production-grade (circuit breakers, TLS stealth, MCP 104 tools, A2A, memory, guardrails, evals — 25,000+ tests). +The Promise — One endpoint. 291 providers. Never stop building — OmniRoute picks the cheapest one that works. Six pillars: Never hit limits (auto-fallback across 291 providers in milliseconds, zero downtime) · Save up to 95% tokens (RTK + Caveman stacked compression cuts 15–95%, ~89% avg on tool-heavy sessions) · $0 to start (90+ free tiers, 40+ free forever — no card needed) · Every tool works (33 coding agents through one config) · One endpoint (OpenAI ↔ Claude ↔ Gemini ↔ Responses API at /v1) · Production-grade (circuit breakers, TLS stealth, MCP 105 tools, A2A, memory, guardrails, evals — 25,000+ tests).

@@ -439,7 +439,7 @@ All **19** strategies — mix & match per combo step: -What sets OmniRoute apart — comparison table vs 9router, OpenRouter, CLIProxyAPI and LiteLLM across 13 capabilities. OmniRoute: 290 providers, 90+ free providers built-in, 19 routing strategies, 12-engine token compression, built-in MCP server with 104 tools, A2A agent protocol, persistent memory, guardrails, cloud agents, TLS fingerprint stealth, Desktop/Termux/PWA, 43 i18n UI locales, 100% MIT self-hosted. OmniRoute is the only one with the full set; competitors show a mix of checks, partials and crosses. Verified from each project's docs. +What sets OmniRoute apart — comparison table vs 9router, OpenRouter, CLIProxyAPI and LiteLLM across 13 capabilities. OmniRoute: 291 providers, 90+ free providers built-in, 19 routing strategies, 12-engine token compression, built-in MCP server with 105 tools, A2A agent protocol, persistent memory, guardrails, cloud agents, TLS fingerprint stealth, Desktop/Termux/PWA, 43 i18n UI locales, 100% MIT self-hosted. OmniRoute is the only one with the full set; competitors show a mix of checks, partials and crosses. Verified from each project's docs. 📊 Full methodology & per-feature detail vs 9router, OpenRouter, CLIProxyAPI & LiteLLM → [`docs/comparison/OMNIROUTE_VS_ALTERNATIVES.md`](docs/comparison/OMNIROUTE_VS_ALTERNATIVES.md) @@ -452,7 +452,6 @@ OmniRoute is MIT-licensed and maintained in the open. If it saves you time or mo - @@ -514,7 +513,7 @@ Pix copia-e-cola: - **🖼️ New endpoints** — `/v1/ocr` (Mistral OCR) and `/v1/audio/translations` (Whisper-style) round out the media surface. → [API Reference](docs/reference/API_REFERENCE.md) - **🎨 Image / video / audio generation** — one API for media: xAI Grok Imagine & Novita AI video, ComfyUI, Freepik, Adobe Firefly, Microsoft Designer, Google Imagen, Segmind, EdgeTTS. → [API Reference](docs/reference/API_REFERENCE.md) - **🌍 Deployment & ops** — reverse-proxy `basePath`, browser-language auto-detect, per-key device tracking, root-less MITM trust, zh-TW localization. → [Environment](docs/reference/ENVIRONMENT.md) -- **🤝 More providers & agents** — Cursor Cloud Agent, Grok Build (xAI) with browser + OAuth login, Ollama first-class card, Claude Opus 5 & Sonnet 5, Kimi official partnership (Code/Web/Moonshot), Zed, Requesty, SenseNova, Yuanbao, Agnes AI… and a refreshed **290-provider catalog**. → [Providers](docs/reference/PROVIDER_REFERENCE.md) +- **🤝 More providers & agents** — Cursor Cloud Agent, Grok Build (xAI) with browser + OAuth login, Ollama first-class card, Claude Opus 5 & Sonnet 5, Kimi official partnership (Code/Web/Moonshot), Zed, Requesty, SenseNova, Yuanbao, Agnes AI… and a refreshed **291-provider catalog**. → [Providers](docs/reference/PROVIDER_REFERENCE.md) - **📡 Routing transparency** — every response carries an `X-OmniRoute-Decision` header naming the strategy/provider/latency that served it, a new `cache-optimized` combo strategy + Auto-Combo `cacheAffinity` factor route repeat requests back to the connection holding the cached prefix, and a read-only `/v1/auto-combo/{channel}/candidates` endpoint exposes an `auto/*` channel's live candidate pool. → [Auto-Combo](docs/routing/AUTO-COMBO.md) - **⚡ Local performance & infra** — one-click local Redis, Cloudflare Workers / Deno Deploy relay deployers, Bifrost & Mux as supervised embedded services. → [Embedded Services](docs/frameworks/EMBEDDED-SERVICES.md) @@ -533,7 +532,7 @@ Pix copia-e-cola: - + @@ -575,11 +574,11 @@ Pix copia-e-cola:
-## 🌐 290 AI Providers — 90+ Free +## 🌐 291 AI Providers — 90+ Free
-> The most complete catalog of any open-source router: **290 providers**, **90+ with a free tier**, **40+ free forever**. +> The most complete catalog of any open-source router: **291 providers**, **90+ with a free tier**, **40+ free forever**.
@@ -724,7 +723,7 @@ Expose OmniRoute over **MCP**, **A2A**, a **REST API**, **webhooks** or a **remo
Star the repoFree — genuinely helps visibilityStar OmniRoute
🐙 GitHub SponsorsOne-off or monthly · zero platform feegithub.com/sponsors/diegosouzapw
🏢 Open CollectiveCompanies — issues an invoice/receipt · transparent booksopencollective.com/omniroute
Ko-fiQuick one-off tip, no signup for the donorko-fi.com/diegosouzapw
🧋 Buy Me a CoffeeSmall, informal gesturebuymeacoffee.com/diegosouzapw
🖐 LiberapayRecurring · non-profit · open sourceliberapay.com/diegosouzapw
Codex CLI
Codex CLI
                           
Cline
Cline
                           
Kilo Code
Kilo Code
                           
Roo CodeRoo Code
Roo Code
                           
Zoo Code
Zoo Code
                           
Continue
Continue
                           
- + @@ -891,6 +890,12 @@ docker run -d --name omniroute --restart unless-stopped --stop-timeout 40 \ -p 127.0.0.1:20128:20128 -v omniroute-data:/app/data diegosouzapw/omniroute:latest ``` +> **Pre-release Docker channel:** `diegosouzapw/omniroute:next` and +> `diegosouzapw/omniroute:next-web` follow the current default `release/v*` +> branch. These mutable tags are intended only for testing unreleased fixes and +> are **not supported for production**. See +> [Docker Release Channels](docs/guides/DOCKER_RELEASE_CHANNELS.md). + **🛠️ From source** ```bash diff --git a/_references/_sistemas_cli/01-relatorio-pesquisa-clis-omniroute.md b/_references/_sistemas_cli/01-relatorio-pesquisa-clis-omniroute.md new file mode 100644 index 0000000000..450ff31530 --- /dev/null +++ b/_references/_sistemas_cli/01-relatorio-pesquisa-clis-omniroute.md @@ -0,0 +1,296 @@ +# Relatorio de pesquisa: repositorios de CLI integraveis com OmniRoute + +> **Status final (2026-08-03):** este documento preserva o inventário inicial. A pesquisa foi concluída para `104/104` casos. Para resultados por projeto, use `04-tracker-integracoes-clis.md`; para o fechamento executivo e a estratégia de publicação, use `06-relatorio-final-104-clis-e-estrategia-prs.md`. + +**Data da pesquisa:** 2026-08-01 +**Escopo:** agentes de codigo de terminal, CLIs de LLM, runtimes de agentes e harnesses que possam consumir um endpoint HTTP compativel com OpenAI, Anthropic ou Gemini, ou que possam ser adaptados por provider/plugin/ACP/MITM. +**Fonte local principal:** `_tasks/hands-off/2026-08-01_release-v3.8.50_v3.8.50_sess-e1846bc2/handoff.md` +**Fontes externas principais:** GitHub Search/API, READMEs dos repositorios e a lista publica `bradAGI/awesome-cli-coding-agents` (atualizada em 2026-07-29). + +## 1. Resumo executivo + +O OmniRoute ja possui uma integracao funcional com o jcode e um catalogo local de ferramentas CLI. O proximo ganho de maior valor e transformar o OmniRoute em um endpoint reconhecido pelos principais agentes de terminal, priorizando configuracao nativa e PR upstream quando o projeto aceitar contribuicoes. + +A pesquisa encontrou: + +- **33 entradas de ferramentas no registro local `CLI_TOOLS`**, contando o registro extraido de Grok Build em `src/shared/constants/cliToolsGrokBuild.ts`, incluindo Claude Code, Codex CLI, Cline, Kilo, Continue, OpenCode, Aider, jcode, Smelt, Pi, Crush, Goose, Open Interpreter, OpenClaw, Hermes Agent, Letta CLI e outros. +- **Mais de 90 projetos publicos** no inventario externo consultado, entre agentes de codigo, CLIs generalistas, forks, runtimes e orquestradores. +- **Candidatos com evidencia forte de endpoint customizavel:** Gemini CLI, Claw Code, Plandex, MiMo Code, Trae Agent, Kimi CLI, Every Code, Open Codex, VT Code, OpenHands CLI, gptme, Nanocoder, RA.Aid, CoreCoder, Grok CLI, Gitlawb Zero, DeepSeek Reasonix, KlaatCode, CodeMini, DvalinCode, Coro Code, Mini-Kode, Late CLI, Agentty, Aizen, Minacode, YottaCode, aichat, ShellGPT, Mistral Vibe, OpenSquilla, Kode CLI e outros. +- **Candidatos que exigem pesquisa confirmatoria:** projetos com README generico, configuracao recente, repositorio ambiguo, binario fechado ou sem evidencia textual suficiente de `base_url`/provider. +- **Candidatos que podem ser integrados por outros caminhos:** ACP, MCP, wrapper/launcher, provider adapter, proxy MITM ou apenas documentacao; eles nao devem ser classificados automaticamente como OpenAI-compatible. + +Conclusao: devemos pesquisar e tentar todos os candidatos tecnicamente viaveis, mas separar claramente `suporte no catalogo OmniRoute`, `configuracao generica`, `adaptacao upstream publicada` e `PR/issue aceita`. O tracker acompanha essas dimensoes separadamente. + +## 2. Metodo e limites + +### 2.1 Como a busca foi feita + +1. Leitura integral do handoff do caso jcode para capturar o padrao de integracao, validacao, publicacao e as restricoes de worktree. +2. Inspecao do catalogo local em `src/shared/constants/cliTools.ts`, da documentacao de CLI e do fluxo de setup em `docs/guides/CLI-INTEGRATIONS.md`. +3. Consulta do GitHub Search/API para resolver o repositorio canonico de cada nome, evitando homonimos. +4. Leitura de README/raw quando disponivel, procurando sinais como `base_url`, `baseURL`, `OPENAI_BASE_URL`, `OPENAI_API_BASE`, `LLM_BASE_URL`, `provider`, `gateway`, `model provider`, `Anthropic` e `Gemini`. +5. Consulta da lista `https://github.com/bradAGI/awesome-cli-coding-agents`, que serve como descoberta ampla, nao como prova de compatibilidade. +6. Classificacao por adocao, manutencao, licenca, evidencia de endpoint, maturidade, potencial de PR e utilidade para o ecossistema OmniRoute. + +### 2.2 O que ainda nao foi afirmado + +- Nao foi feita implementacao ou abertura de PR/issue para os candidatos abaixo; o unico caso publicado nesta sessao anterior e o jcode. +- A presenca da palavra `provider` no README nao prova que uma URL arbitraria funciona em runtime. +- Estrelas e datas sao snapshots aproximados obtidos em 2026-08-01 e podem mudar. +- Repositorios fechados ou com EULA entram no inventario para avaliacao de configuracao, mas nao implicam possibilidade de fork ou PR. +- Cada task de integracao precisa repetir a pesquisa no upstream antes de editar codigo. + +## 3. Baseline do OmniRoute + +### 3.1 Superficie que o OmniRoute oferece + +- Endpoint OpenAI em `/v1`. +- Superficie Anthropic na raiz, usada por clientes que esperam `/v1/messages` a partir do `ANTHROPIC_BASE_URL`. +- Superficie Gemini em `/v1beta`. +- Catalogo de modelos consultavel pelos comandos de setup quando o cliente suporta descoberta. +- Chave via `OMNIROUTE_API_KEY` ou chave selecionada no dashboard. +- Traducao entre formatos, streaming SSE, tool calling, fallback, combos, custos e politicas de autenticacao. +- Modos de consumo: configuracao de ambiente, arquivo nativo do cliente, provider customizado, ACP/MCP e MITM. + +### 3.2 Catalogo local ja registrado + +Fonte: `src/shared/constants/cliTools.ts` e `src/shared/constants/cliToolsGrokBuild.ts`. + +**Codigo/CLI:** Claude Code, OpenAI Codex CLI, Factory Droid, OpenClaw, Cursor, Cline, Kilo Code, Continue, Antigravity, GitHub Copilot CLI, OpenCode, Kiro, Qwen Code, Aider, ForgeCode, Cursor Agent CLI, Roo Code, jcode, DeepSeek TUI, CodeWhale, Smelt, Pi, Crush. + +**Agentes:** Hermes, Hermes Agent, Goose, Open Interpreter, Oh My Pi, Letta CLI, Warp AI, Agent Deck. + +Os documentos do catalogo tambem mantem um backlog MITM para ferramentas sem base URL, como Windsurf, Amp, Amazon Q/Kiro CLI e Cowork. Esses casos devem permanecer separados de uma integracao direta. + +### 3.3 Caso jcode (referencia validada) + +- Upstream: `https://github.com/1jehuang/jcode` +- Mecanismo: perfil OpenAI-compatible dirigido por metadados; nao foi criado um plugin de runtime. +- Branch: `feat/omniroute-provider` +- Commit: `ee4f904e6` +- PR no fork: `https://github.com/diegosouzapw/jcode/pull/1` +- Issue no upstream: `https://github.com/1jehuang/jcode/issues/704` +- Diff: 6 arquivos, `+56/-3`. +- Validacao: `cargo check --workspace` limpo; 205 testes passaram e uma falha foi preexistente/ambiental. +- Estado: aguardando mantenedor; o upstream nao aceita PR de forks externos, por isso a issue e o artefato oficial. +- Pendencia prometida: adicionar no README do OmniRoute a secao "Tools & repositories that work with OmniRoute". + +Licao: o trabalho deve comecar descobrindo o mecanismo real de providers do upstream. Nem todos os clientes precisam de mudanca no OmniRoute; alguns precisam somente de um perfil local, e outros exigirao um adaptador especifico. + +## 4. Candidatos prioritarios com evidencia concreta + +As evidencias abaixo sao sinais de README/configuracao observados na pesquisa inicial. A task individual deve abrir o arquivo exato, confirmar a versao atual e executar um smoke test. + +| Projeto | Repositorio | Evidencia inicial | Rota provavel | +|---|---|---|---| +| Gemini CLI | `google-gemini/gemini-cli` | `GOOGLE_GEMINI_BASE_URL` | configuracao direta; possivel PR/documentacao | +| Claw Code | `ultraworkers/claw-code` | `OPENAI_BASE_URL`, provider compativel | configuracao direta ou provider | +| Plandex | `plandex-ai/plandex` | providers customizados com `baseUrl` | provider/preset | +| MiMo Code | `XiaomiMiMo/MiMo-Code` | `@ai-sdk/openai-compatible` e `baseURL` | provider customizado | +| Trae Agent | `bytedance/trae-agent` | `model_providers` e `base_url` | provider/config | +| Kimi CLI | `MoonshotAI/kimi-cli` | modos `openai_legacy`, `openai_responses`, `anthropic` e `base_url` | provider nativo/config | +| Every Code | `just-every/code` | fork Codex com providers OpenAI/Claude/Gemini | perfil/provider | +| Open Codex | `ymichael/open-codex` | multi-provider e OpenAI-compatible | fork/provider | +| VT Code | `vinhnx/vtcode` | `custom_providers[].base_url`, failover | provider customizado | +| OpenHands CLI | `OpenHands/OpenHands-CLI` | `LLM_BASE_URL` | configuracao direta | +| gptme | `gptme/gptme` | `OPENAI_BASE_URL` e providers | configuracao direta | +| Nanocoder | `Nano-Collective/nanocoder` | qualquer API OpenAI-compatible | configuracao direta | +| RA.Aid | `ai-christianson/RA.Aid` | `OPENAI_API_BASE` | configuracao direta | +| CoreCoder | `he-yufeng/CoreCoder` | `OPENAI_BASE_URL` | configuracao direta | +| Grok CLI | `superagent-ai/grok-cli` | `GROK_BASE_URL`/`baseURL` | configuracao direta | +| Gitlawb Zero | `Gitlawb/zero` | provider `custom-openai-compatible`, `--base-url` | provider/flag | +| DeepSeek Reasonix | `esengine/DeepSeek-Reasonix` | provider compativel e endpoint | confirmar configuracao | +| KlaatCode | `KlaatAI/klaatcode` | `customModels` OpenAI-compatible | configuracao JSON | +| CodeMini CLI | `havingautism/Codemini-CLI` | `gateway.base_url` | gateway/config | +| Zot | `patriceckhart/zot` | `--base-url` e provider custom em `models.json` | flag/config | +| Pool | `poolsideai/pool` | `POOLSIDE_STANDALONE_BASE_URL`; licenca proprietaria | configuracao, sem PR assumido | +| Octomind | `Muvon/octomind` | `_API_URL`/`LOCAL_API_URL` | provider/env | +| Coro Code | `Blushyes/coro-code` | `OPENAI_BASE_URL` | configuracao direta | +| Mini-Kode | `minmaxflow/mini-kode` | `MINIKODE_BASE_URL` | configuracao direta | +| Late CLI | `mlhher/late-cli` | `OPENAI_BASE_URL`/`api-url` | env/flag | +| Agentty | `1ay1/agentty` | modelo agnostico e endpoints compativeis | confirmar arquivo de config | +| Aizen | `aizen-stack/aizen` | CLI Rust OpenAI-compatible; `AIZEN_BASE_URL` | configuracao direta | +| Clif-Code | `DLhugly/Clif-Code` | OpenRouter/OpenAI/Anthropic/Ollama | provider/config | +| Minacode | `hit9/minacode` | provider e compatibilidade no README | confirmar URL | +| YottaCode | `yottadynamics/yottacode` | modelo escolhido, gateway/provider | confirmar config | +| aichat | `sigoden/aichat` | providers OpenAI/Claude/Gemini e compatibilidade | `models.yaml`/provider | +| ShellGPT | `TheR1D/shell_gpt` | `API_BASE_URL` | env/config | +| Mistral Vibe | `mistralai/mistral-vibe` | `base_url`, API base e provider | config/env | +| OpenSquilla | `opensquilla/opensquilla` | 20+ providers e gateway | provider/config | +| Kode CLI | `shareAI-lab/Kode-cli` | provider, endpoint e Anthropic/OpenAI/Gemini | config | +| Crush | `charmbracelet/crush` | `base_url`, provider compativel | ja catalogado no OmniRoute; validar upstream | +| Hermes Agent | `NousResearch/hermes-agent` | endpoint/gateway e 300+ modelos | ja catalogado; validar modo de endpoint | +| OpenClaw | `openclaw/openclaw` | providers, gateway e endpoints | ja catalogado; validar configuracao atual | + +## 5. Inventario amplo localizado + +### 5.1 Agentes de terminal e coding CLIs + +Os projetos desta tabela foram encontrados na lista curada ou no GitHub Search. `Pesquisa` indica o proximo gate; nao significa que a integracao ja esta pronta. + +| Projeto | Repositorio | Licenca/sinal publico | Situacao inicial | +|---|---|---|---| +| OpenCode | `anomalyco/opencode` | multi-provider, 75+ providers | ja suportado; acompanhar provider/plugin | +| Codex CLI | `openai/codex` | Apache-2.0, provider configuravel | ja suportado | +| OpenHands principal | `All-Hands-AI/OpenHands` | OSS, CLI e web | pesquisar CLI e `LLM_BASE_URL` | +| Pi | `badlogic/pi-mono` | harness multi-provider | ja suportado; confirmar repo atual | +| Open Interpreter | `OpenInterpreter/open-interpreter` | Apache-2.0, `--api_base` | ja suportado | +| Cline | `cline/cline` | Apache-2.0, base URL/gateway | ja suportado | +| Goose | `aaif-goose/goose` | Apache-2.0, providers | ja suportado | +| Aider | `Aider-AI/aider` | Apache-2.0, Anthropic/OpenAI | ja suportado | +| Continue | `continuedev/continue` | Apache-2.0, multi-model | ja suportado | +| Deep Agents Code | `langchain-ai/deepagents` | MIT, tool-calling LLM | pesquisar pacote `deepagents-code` | +| Crush | `charmbracelet/crush` | provider/base URL | ja suportado | +| Kilo Code | `Kilo-Org/kilocode` | MIT, providers | ja suportado | +| Qwen Code | `QwenLM/qwen-code` | Apache-2.0, providers | ja suportado | +| Roo Code | `RooCodeInc/Roo-Code` | Apache-2.0 | ja catalogado; validar CLI | +| Grok Build | `xai-org/grok-build` | Apache-2.0, provider | ja suportado | +| Oh My Pi | `can1357/oh-my-pi` | provider custom em YAML | ja suportado | +| SWE-agent | `SWE-agent/SWE-agent` | MIT | pesquisar backend e base URL | +| Smol Developer | `smol-ai/developer` | embeddable agent | adapter/SDK, nao necessariamente CLI | +| Claude Engineer | `Doriandarko/claude-engineer` | CLI Claude | pesquisar provider | +| Claurst | `Kuberwastaken/claurst` | GPL-3.0, provider | confirmar endpoint e politica de fork | +| Free Code | `paoloanzn/free-code` | fork de Claude Code | pesquisar licenca e endpoint | +| Codebuff | `CodebuffAI/codebuff` | multi-agent CLI | pesquisar provider | +| ForgeCode | `antinomyhq/forge` | 300+ modelos | ja suportado | +| OpenSquilla | `opensquilla/opensquilla` | Apache-2.0, gateway | candidato forte | +| Kode CLI | `shareAI-lab/Kode-cli` | Apache-2.0, endpoint | candidato forte | +| Devon | `entropy-research/Devon` | pair programmer TUI | pesquisar backend | +| AutoCodeRover | `AutoCodeRoverSG/auto-code-rover` | agente de issues | pesquisar configuracao de modelos | +| Letta Code | `letta-ai/letta-code` | Apache-2.0, model-agnostic | pesquisar API base | +| CodeMachine CLI | `moazbuilds/CodeMachine-CLI` | multi-agent local | pesquisar provider | +| Codel | `semanser/codel` | AGPL-3.0, Docker/web UI | confirmar servidor OpenAI e restricoes AGPL | +| Agentless | `OpenAutoCoder/Agentless` | workflow sem loop persistente | pesquisar entrada de modelo | +| Amazon Q Developer CLI | `aws/amazon-q-developer-cli` | Apache-2.0 | provavelmente auth/ecossistema AWS; pesquisar | +| Neovate Code | `neovateai/neovate-code` | MIT, plugin/multi-provider | candidato forte | +| Groq Code CLI | `build-with-groq/groq-code-cli` | multi-model | pesquisar endpoint | +| Dexto | `truffle-ai/dexto` | CLI/web/API, subagentes | pesquisar provider | +| claw-code-agent | `HarnessLab/claw-code-agent` | Python, sem dependencias | confirmar endpoint | +| g3 | `dhanji/g3` | Rust, provider abstraction | confirmar licenca e URL | +| Coro Code | `Blushyes/coro-code` | base URL/OpenAI | candidato | +| Mini-Kode | `minmaxflow/mini-kode` | MIT, referencia educacional | candidato | +| zot | `patriceckhart/zot` | MIT, TUI/JSON/RPC | candidato | +| agentty | `1ay1/agentty` | MIT, ACP e multi-provider | candidato | +| nori-cli | `tilework-tech/nori-cli` | multi-provider sobre Codex | pesquisar base URL | +| cursor-agent clone | `civai-technologies/cursor-agent` | OpenAI/Claude/Ollama | pesquisar maturidade e licenca | +| DvalinCode | `arthurpanhku/dvalincode` | MIT, OpenAI-compatible | candidato | +| OpenHarness | `zhijiewong/openharness` | Apache-2.0, any LLM | candidato | +| Octomind | `Muvon/octomind` | Apache-2.0, 13+ providers | candidato | +| Codex Infinity | `lee101/codex-infinity` | fork Codex | pesquisar endpoint | +| San | `genai-io/san` | Apache-2.0, provider-neutral | pesquisar endpoint | +| Waveloom | `Menfre01/waveloom` | Apache-2.0, DeepSeek-focused | pesquisar provider | +| picocode | `jondot/picocode` | Rust, multi-LLM | pesquisar provider | +| QQCode | `qnguyen3/qqcode` | Rust, skills | pesquisar provider | +| Keen Code | `mochow13/keen-code` | MIT, 9+ providers | pesquisar provider | +| Smelt | `leonardcser/smelt` | MIT, OpenAI-compatible | ja suportado | +| Grinta | `josephsenior/Grinta-Coding-Agent` | MIT, Python | pesquisar provider | +| Zap | `zap-coding-agent/zap-coding-agent` | MIT, MCP, local/OpenAI | pesquisar endpoint | +| Binharic | `CogitatorTech/binharic-cli` | multi-provider | pesquisar endpoint | +| Darce | `AmerSarhan/darce-cli` | MIT, multi-model | pesquisar endpoint | +| CLAII | `agencyswarm/CLAII` | multi-agent/MCP | pesquisar endpoint | + +### 5.2 Agentes generalistas e ecossistema OpenClaw + +Estes podem consumir OmniRoute como backend, mas a task deve confirmar se a interface de configuracao e realmente uma CLI de codigo ou apenas um gateway de agente. + +| Projeto | Repositorio | Possivel caminho | +|---|---|---| +| OpenClaw | `openclaw/openclaw` | provider/gateway; ja catalogado | +| nanobot | `HKUDS/nanobot` | provider OpenAI-compatible | +| ZeroClaw | `zeroclaw-labs/zeroclaw` | trait de provider | +| NanoClaw | `gavrielc/nanoclaw` | Anthropic SDK; pesquisar base | +| PicoClaw | `sipeed/picoclaw` | provider/config | +| IronClaw | `nearai/ironclaw` | provider Rust | +| NullClaw | `nullclaw/nullclaw` | 23+ providers | +| Clawith | `dataelement/Clawith` | gateway/teams | +| claw0 | `shareAI-lab/claw0` | tutorial/runtime; pesquisa de viabilidade | +| Moltis | `moltis-org/moltis` | provider Rust | +| GitClaw | `open-gitagent/gitclaw` | agente Git-native; pesquisar | +| LionClaw | `moshthepitt/lionclaw` | CLI local; pesquisar | +| Aizen | `aizen-stack/aizen` | OpenAI-compatible | +| aichat | `sigoden/aichat` | provider/model YAML | +| ShellGPT | `TheR1D/shell_gpt` | `API_BASE_URL` | +| gptme | `gptme/gptme` | `OPENAI_BASE_URL` | + +### 5.3 Orquestradores, wrappers e ferramentas adjacentes + +Nao sao todos alvos de um provider OmniRoute. Devem ser avaliados para launcher, ACP, MCP, observabilidade ou configuracao de seus agentes filhos. + +| Projeto | Repositorio | Tipo de integracao a investigar | +|---|---|---| +| Agent Deck | `asheshgoplani/agent-deck` | config dos CLIs filhos; ja catalogado | +| VibePod | `VibePod/vibepod-cli` | wrapper Docker e metricas | +| zeroshot | `the-open-engine/zeroshot` | launcher/worktrees | +| Fractal | `plasma-ai/fractal` | orquestrador de CLIs | +| Bernstein | `chernistry/bernstein` | orquestrador/verificador | +| Traycer | `traycerai/traycer` | CLI custom e agentes filhos | +| h5i | `h5i-dev/h5i` | execucao paralela | +| OMK | `dmae97/open-multi-agent-kit` | control plane/provider-neutral | +| kodo | `ikamensh/kodo` | orquestrador | +| ORCH | `oxgeneral/ORCH` | fila de tarefas | +| LoopTroop | `LoopTroop-ai/LoopTroop` | orchestration sobre OpenCode | +| Galley | `shinpr/galley` | worktree/PR handoff | +| Relay | `jcast90/relay` | MCP/orquestracao | +| sage | `youwangd/SageCLI` | runtime-agnostic | +| 5dive | `5dive-ai/5dive` | agentes em servidor | +| agx | `ramarlina/agx` | checkpoints e agentes | +| claude-code-router | `musistudio/claude-code-router` | proxy/roteamento; possivel upstream consumidor | +| cc-router | `finch-xu/cc-router` | proxy Anthropic multi-provider | +| OneCLI | `onecli/onecli` | broker de credenciais, nao agente | +| agent-browser | `vercel-labs/agent-browser` | ferramenta MCP/plugin | +| OpenWork | `different-ai/openwork` | desktop sobre OpenCode | +| Mistral Vibe | `mistralai/mistral-vibe` | provider/base URL | +| Junie CLI | `junie.jetbrains.com` | fechado; configuracao BYOK a confirmar | +| Pool | `poolsideai/pool` | binario/EULA; sem PR presumido | + +## 6. Evidencias tecnicas e mapeamento para OmniRoute + +### 6.1 Padroes de endpoint encontrados + +| Padrao observado | Exemplos | Acao OmniRoute | +|---|---|---| +| `OPENAI_BASE_URL`/`OPENAI_API_BASE` | Claw Code, RA.Aid, CoreCoder, Coro Code | fornecer root ou `/v1` conforme o cliente; testar append de path | +| `base_url`/`baseURL` em provider | Plandex, MiMo Code, Trae Agent, VT Code, KlaatCode | gerar bloco de provider e modelo | +| `LLM_BASE_URL` | OpenHands CLI | configurar surface OpenAI e validar streaming/tool calling | +| `GOOGLE_GEMINI_BASE_URL` | Gemini CLI | usar superficie `/v1beta`/Gemini; confirmar formato esperado | +| `GROK_BASE_URL` | Grok CLI | decidir se o cliente fala xAI ou OpenAI; testar traducoes | +| `--base-url` | Gitlawb Zero, Zot, jcode | launcher ou perfil persistido | +| `API_BASE_URL` | ShellGPT | config/env direta | +| `_API_URL`/gateway | Octomind, Pool, OpenSquilla | provider selecionavel; testar cada preset | +| ACP/MCP sem URL direta | Agentty, Kimi CLI, Goose, OpenCode | avaliar se OmniRoute deve ser provider ou backend ACP | +| endpoint nao customizavel | Cursor desktop, Antigravity, Kiro, Windsurf, Amp | somente MITM/guide; nao prometer integracao direta | + +### 6.2 Superficies e riscos de protocolo + +- **`/v1` duplicado:** alguns clientes recebem a raiz e acrescentam `/v1/chat/completions`; outros exigem a URL final com `/v1`. Cada task deve registrar o resultado real. +- **Chat Completions vs Responses:** forks do Codex e clientes modernos podem usar Responses; testar ambas quando o cliente permitir. +- **Anthropic:** clientes que mandam `/v1/messages` esperam `ANTHROPIC_BASE_URL` sem `/v1` no valor. A traducao Anthropic do OmniRoute deve ser validada com streaming e tool use. +- **Gemini:** Gemini CLI pode esperar uma base Gemini nativa, nao somente OpenAI-compatible; validar `generateContent`, streaming e headers. +- **Tool calling:** o agente pode exigir nomes/ids de ferramenta estaveis, JSON estrito, `tool_choice` ou blocos de pensamento especificos. +- **Descoberta de modelos:** `/v1/models` pode ser obrigatorio, opcional ou inexistente. O setup precisa aceitar `--model` fixo quando a descoberta nao for suportada. +- **Autenticacao:** alguns projetos leem somente env, outros gravam tokens em arquivo/keyring e alguns usam OAuth proprietario. Nunca reutilizar credenciais de um upstream sem verificar escopo. +- **Streaming e retry:** SSE, timeouts, abort signals e re-tentativas podem divergir do cliente. Validar uma chamada longa e uma falha de provider. +- **Licenca:** GPL/AGPL, EULA e repositorios sem SPDX exigem decisao de distribuicao antes de enviar patch. + +## 7. Riscos de pesquisa e integracao + +1. **Homonomimos e clones:** usar sempre URL canonica, organizacao, release e README do repositorio correto. +2. **Repositorios que mudam rapidamente:** congelar commit/versao no relatorio da task e repetir a consulta no dia da implementacao. +3. **README divergente do codigo:** procurar schema, parser de config, testes e comando de execucao; README sozinho e evidencia Tier 1. +4. **Clientes fechados:** registrar como `needs-mitm` ou `config-only`, nunca como PR upstream. +5. **Forks com historia de origem controversa:** avaliar politica, licenca e aceite de contribuicoes antes de reproduzir componentes. +6. **Segredos no ambiente:** limpar `OMNIROUTE_API_KEY` e chaves de teste quando a suite assume ambiente sem credencial, como ocorreu no jcode. +7. **Mudancas no checkout:** usar worktree em `.claude/worktrees/` por projeto; nao editar o checkout compartilhado do OmniRoute nem usar `git stash`. + +## 8. Recomendacao + +Executar primeiro os lotes P0/P1 do documento de prioridade. Cada lote pode ter ate tres subagentes, um repositorio por worktree. O agente principal deve revisar a pesquisa, o smoke test e a licenca antes de permitir implementacao. O resultado de cada caso deve atualizar o tracker com commit, PR/issue, validacao e status upstream, sem preencher campos externos por suposicao. + +## 9. Referencias + +- OmniRoute CLI catalogo: `src/shared/constants/cliTools.ts` +- OmniRoute CLI reference: `docs/reference/CLI-TOOLS.md` +- OmniRoute setup guide: `docs/guides/CLI-INTEGRATIONS.md` +- Handoff jcode: `_tasks/hands-off/2026-08-01_release-v3.8.50_v3.8.50_sess-e1846bc2/handoff.md` +- Inventario curado: `https://github.com/bradAGI/awesome-cli-coding-agents` +- GitHub Search API: `https://api.github.com/search/repositories` diff --git a/_references/_sistemas_cli/02-prioridade-integracoes-clis.md b/_references/_sistemas_cli/02-prioridade-integracoes-clis.md new file mode 100644 index 0000000000..9db4ca246c --- /dev/null +++ b/_references/_sistemas_cli/02-prioridade-integracoes-clis.md @@ -0,0 +1,167 @@ +# Prioridade de integracoes de CLIs com OmniRoute + +> **Status final (2026-08-03):** esta é a priorização inicial que orientou a execução. Todos os `104/104` casos já foram pesquisados. A classificação final está no tracker `04`; a estratégia revisada de contribuição está no relatório `06`. + +**Snapshot:** 2026-08-01 +**Objetivo:** ordenar do melhor para o pior todos os projetos tecnicamente candidatos a consumir OmniRoute, sem remover projetos pequenos. A ordem e uma fila de pesquisa/execucao; ela nao e promessa de que todo upstream aceitara um PR. + +## Como ler a prioridade + +- **P0:** ja esta no catalogo OmniRoute ou tem evidencia muito forte de endpoint customizavel; executar/consolidar primeiro. +- **P1:** forte candidato novo, com provider/base URL evidente e bom retorno para o ecossistema. +- **P2:** tecnicamente promissor, mas requer confirmacao de protocolo, config, maturidade ou licenca. +- **P3:** possivel via ACP/MCP/wrapper/launcher, ou com menor adocao; pesquisar depois dos P0-P2. +- **P4:** cliente fechado, EULA, MITM ou pesquisa exploratoria; manter no inventario, mas nao bloquear os demais. + +Os fatores usados foram: evidencia de endpoint arbitrario, adocao/atividade, facilidade de teste, compatibilidade OpenAI/Anthropic/Gemini, maturidade, licenca, chance de PR upstream, valor para usuarios OmniRoute e risco de protocolo. + +## A. Catalogo OmniRoute ja existente + +Estas entradas ja aparecem no registro local. A prioridade aqui significa consolidar documentacao, smoke tests, detector/configurador e eventual upstream nominal; nao significa recriar uma integracao que ja existe. + +| Ordem | Projeto | Repositorio/documentacao | Estado local | Proximo foco | +|---:|---|---|---|---| +| A1 | Claude Code | `anthropics/claude-code` | catalogado; Anthropic base URL | manter compatibilidade Anthropic, streaming e tools | +| A2 | Codex CLI | `openai/codex` | catalogado; OpenAI-compatible | Responses, profiles e `/v1` | +| A3 | OpenCode | `anomalyco/opencode` | catalogado; provider | provider nativo/plugin e model discovery | +| A4 | Cline | `cline/cline` | catalogado; base URL | validar CLI/extension e append de `/v1` | +| A5 | Goose | `aaif-goose/goose` | catalogado; `OPENAI_HOST` | validar schema atual e ACP | +| A6 | Aider | `Aider-AI/aider` | catalogado; `OPENAI_API_BASE` | LiteLLM path, tools e custo | +| A7 | Continue | `continuedev/continue` | catalogado; provider OpenAI | CLI e config YAML atual | +| A8 | Kilo Code | `Kilo-Org/kilocode` | catalogado; custom URL | CLI, extension e auth | +| A9 | Roo Code | `RooCodeInc/Roo-Code` | catalogado; custom URL | CLI/headless e provider | +| A10 | Qwen Code | `QwenLM/qwen-code` | catalogado; `modelProviders` | V4 schema, Responses e env | +| A11 | Open Interpreter | `OpenInterpreter/open-interpreter` | catalogado; `--api_base` | streaming e tool execution | +| A12 | OpenClaw | `openclaw/openclaw` | catalogado; gateway/provider | config atual e segurança | +| A13 | Hermes Agent | `NousResearch/hermes-agent` | catalogado; provider/gateway | endpoint custom e modelos | +| A14 | Hermes | `NousResearch/hermes-agent` | catalogado/dual entry | distinguir CLI e agente | +| A15 | Oh My Pi | `can1357/oh-my-pi` | catalogado; YAML provider | auto-discovery e tool calling | +| A16 | Pi | `badlogic/pi-mono` | catalogado; provider | confirmar repositorio/CLI atual | +| A17 | Crush | `charmbracelet/crush` | catalogado; `base_url` | config TOML/JSON atual | +| A18 | Smelt | `leonardcser/smelt` | catalogado; OpenAI-compatible | headless e subagents | +| A19 | ForgeCode | `antinomyhq/forge` | catalogado; multi-provider | base URL e custom agents | +| A20 | jcode | `1jehuang/jcode` | integrado e proposto upstream | aguardar issue #704; manter README OmniRoute | +| A21 | DeepSeek TUI | `hunterbown/deepseek-tui` | catalogado legado | confirmar sucessor CodeWhale | +| A22 | CodeWhale | `Hmbown/CodeWhale` | catalogado | config primaria e legado | +| A23 | Grok Build | `xai-org/grok-build` | catalogado; `~/.grok/config.toml` | provider OmniRoute e modelos | +| A24 | Cursor Agent CLI | `cursor.com/cli` | catalogado parcial | confirmar limites de endpoint | +| A25 | Factory Droid | `Factory-AI/factory` | catalogado parcial | BYOK e endpoint suportado | +| A26 | GitHub Copilot CLI | `github/copilot-cli` | catalogado | provider base URL atual | +| A27 | Letta CLI | `letta-ai/letta-code` | catalogado | config pi-ai/local mode | +| A28 | Warp AI | `warpdotdev/Warp` | catalogado parcial | somente BYOK/desktop | +| A29 | Agent Deck | `asheshgoplani/agent-deck` | catalogado | agentes filhos e ACP | +| A30 | Antigravity | produto Google | MITM backlog | nao tratar como endpoint direto | +| A31 | Kiro AI | produto AWS | MITM backlog | auth/SSO e MITM | +| A32 | Cursor desktop | produto Anysphere | cloud/MITM | manter separado do Cursor CLI | + +## B. Novos candidatos em ordem de execucao + +| Ordem | Prioridade | Projeto | Repositorio | Evidencia inicial | Rota esperada | +|---:|:---:|---|---|---|---| +| 1 | P0 | Gemini CLI | `google-gemini/gemini-cli` | `GOOGLE_GEMINI_BASE_URL` | config direta/Gemini | +| 2 | P0 | Claw Code | `ultraworkers/claw-code` | `OPENAI_BASE_URL`, provider | OpenAI-compatible | +| 3 | P0 | Plandex | `plandex-ai/plandex` | provider com `baseUrl` | preset/provider | +| 4 | P0 | MiMo Code | `XiaomiMiMo/MiMo-Code` | `@ai-sdk/openai-compatible`, `baseURL` | provider | +| 5 | P0 | Trae Agent | `bytedance/trae-agent` | `model_providers`, `base_url` | provider/config | +| 6 | P0 | Kimi CLI | `MoonshotAI/kimi-cli` | OpenAI legacy/Responses/Anthropic, `base_url` | provider nativo | +| 7 | P0 | Every Code | `just-every/code` | fork Codex, OpenAI/Claude/Gemini | profile/provider | +| 8 | P0 | Open Codex | `ymichael/open-codex` | OpenAI/Gemini/OpenRouter/Ollama | profile/provider | +| 9 | P0 | VT Code | `vinhnx/vtcode` | `custom_providers[].base_url` | provider/failover | +| 10 | P0 | OpenHands CLI | `OpenHands/OpenHands-CLI` | `LLM_BASE_URL` | config direta | +| 11 | P0 | gptme | `gptme/gptme` | `OPENAI_BASE_URL` | config direta | +| 12 | P0 | Nanocoder | `Nano-Collective/nanocoder` | qualquer OpenAI-compatible | config direta | +| 13 | P0 | RA.Aid | `ai-christianson/RA.Aid` | `OPENAI_API_BASE` | config direta | +| 14 | P0 | CoreCoder | `he-yufeng/CoreCoder` | `OPENAI_BASE_URL` | config direta | +| 15 | P1 | Grok CLI | `superagent-ai/grok-cli` | `GROK_BASE_URL`/`baseURL` | config direta | +| 16 | P1 | Gitlawb Zero | `Gitlawb/zero` | `custom-openai-compatible`, `--base-url` | provider/flag | +| 17 | P1 | DeepSeek Reasonix | `esengine/DeepSeek-Reasonix` | endpoint/provider compativel | provider | +| 18 | P1 | KlaatCode | `KlaatAI/klaatcode` | `customModels` OpenAI-compatible | config | +| 19 | P1 | CodeMini CLI | `havingautism/Codemini-CLI` | `gateway.base_url` | gateway | +| 20 | P1 | Zot | `patriceckhart/zot` | `--base-url`, `models.json` | flag/config | +| 21 | P1 | Octomind | `Muvon/octomind` | provider URL envs | provider/env | +| 22 | P1 | DvalinCode | `arthurpanhku/dvalincode` | qualquer OpenAI-compatible | config direta | +| 23 | P1 | Coro Code | `Blushyes/coro-code` | `OPENAI_BASE_URL` | env | +| 24 | P1 | Mini-Kode | `minmaxflow/mini-kode` | `MINIKODE_BASE_URL` | env | +| 25 | P1 | Late CLI | `mlhher/late-cli` | `OPENAI_BASE_URL`, `api-url` | env/flag | +| 26 | P1 | Agentty | `1ay1/agentty` | provider-agnostic, ACP | config/ACP | +| 27 | P1 | Aizen | `aizen-stack/aizen` | Rust OpenAI-compatible, `AIZEN_BASE_URL` | config | +| 28 | P1 | Clif-Code | `DLhugly/Clif-Code` | OpenAI/Anthropic/Ollama | provider | +| 29 | P1 | Minacode | `hit9/minacode` | provider/compatibilidade | confirmar URL | +| 30 | P1 | YottaCode | `yottadynamics/yottacode` | modelo escolhido/gateway | provider | +| 31 | P1 | aichat | `sigoden/aichat` | OpenAI/Claude/Gemini | models YAML | +| 32 | P1 | ShellGPT | `TheR1D/shell_gpt` | `API_BASE_URL` | env | +| 33 | P1 | Mistral Vibe | `mistralai/mistral-vibe` | `base_url`, API base | config | +| 34 | P1 | OpenSquilla | `opensquilla/opensquilla` | gateway, 20+ providers | provider | +| 35 | P1 | Kode CLI | `shareAI-lab/Kode-cli` | endpoint/Anthropic/OpenAI/Gemini | config | +| 36 | P1 | Neovate Code | `neovateai/neovate-code` | plugin/multi-provider | plugin/provider | +| 37 | P1 | Deep Agents Code | `langchain-ai/deepagents` | qualquer tool-calling LLM | provider SDK | +| 38 | P1 | Kode fork/variants | `shareAI-lab/Kode-cli` | multi-provider | confirmar upstream | +| 39 | P1 | OpenHands principal | `All-Hands-AI/OpenHands` | CLI/web; pesquisar LLM base | config/CLI | +| 40 | P1 | SWE-agent | `SWE-agent/SWE-agent` | agente de issues | backend/provider | +| 41 | P1 | AutoCodeRover | `AutoCodeRoverSG/auto-code-rover` | agente de patches | backend/provider | +| 42 | P2 | Claurst | `Kuberwastaken/claurst` | provider/Anthropic | config; licenca GPL | +| 43 | P2 | Codebuff | `CodebuffAI/codebuff` | multi-agent CLI | provider | +| 44 | P2 | Devon | `entropy-research/Devon` | TUI pair programmer | backend | +| 45 | P2 | Letta Code | `letta-ai/letta-code` | model-agnostic | provider | +| 46 | P2 | CodeMachine CLI | `moazbuilds/CodeMachine-CLI` | multi-agent local | provider | +| 47 | P2 | Groq Code CLI | `build-with-groq/groq-code-cli` | multi-model | endpoint | +| 48 | P2 | Dexto | `truffle-ai/dexto` | CLI/web/API | provider | +| 49 | P2 | claw-code-agent | `HarnessLab/claw-code-agent` | endpoint/gateway | provider | +| 50 | P2 | g3 | `dhanji/g3` | Rust provider abstraction | provider | +| 51 | P2 | San | `genai-io/san` | provider-neutral | provider | +| 52 | P2 | Waveloom | `Menfre01/waveloom` | DeepSeek/provider | endpoint | +| 53 | P2 | picocode | `jondot/picocode` | multi-LLM | config | +| 54 | P2 | QQCode | `qnguyen3/qqcode` | skills, Rust | config | +| 55 | P2 | Keen Code | `mochow13/keen-code` | 9+ providers | config | +| 56 | P2 | Grinta | `josephsenior/Grinta-Coding-Agent` | provider-agnostic | config | +| 57 | P2 | Zap | `zap-coding-agent/zap-coding-agent` | Claude/Gemini/OpenAI/LM Studio | provider | +| 58 | P2 | Binharic | `CogitatorTech/binharic-cli` | multi-provider | config | +| 59 | P2 | Darce | `AmerSarhan/darce-cli` | multi-model/streaming | config | +| 60 | P2 | CLAII | `agencyswarm/CLAII` | multi-agent/MCP | provider | +| 61 | P2 | nori-cli | `tilework-tech/nori-cli` | multi-provider sobre Codex | config | +| 62 | P2 | cursor-agent clone | `civai-technologies/cursor-agent` | Claude/OpenAI/Ollama | provider | +| 63 | P2 | Free Code | `paoloanzn/free-code` | fork Claude Code | licenca/config | +| 64 | P2 | Claude Engineer | `Doriandarko/claude-engineer` | CLI Claude | provider | +| 65 | P2 | Smol Developer | `smol-ai/developer` | agent embutivel | SDK/adaptador | +| 66 | P2 | Agentless | `OpenAutoCoder/Agentless` | workflow sem loop | entrada de modelo | +| 67 | P2 | Amazon Q Developer CLI | `aws/amazon-q-developer-cli` | CLI AWS | auth/provider | +| 68 | P2 | nanobot | `HKUDS/nanobot` | OpenClaw rewrite | provider | +| 69 | P2 | ZeroClaw | `zeroclaw-labs/zeroclaw` | providers pluggable | provider | +| 70 | P2 | NanoClaw | `gavrielc/nanoclaw` | Anthropic SDK | base URL | +| 71 | P2 | PicoClaw | `sipeed/picoclaw` | provider/config | provider | +| 72 | P2 | IronClaw | `nearai/ironclaw` | provider Rust | provider | +| 73 | P2 | NullClaw | `nullclaw/nullclaw` | 23+ providers | provider | +| 74 | P2 | Moltis | `moltis-org/moltis` | Rust agent | provider | +| 75 | P2 | GitClaw | `open-gitagent/gitclaw` | Git-native agent | provider | +| 76 | P2 | LionClaw | `moshthepitt/lionclaw` | CLI local | provider | +| 77 | P3 | VibePod | `VibePod/vibepod-cli` | wrapper Docker | launcher | +| 78 | P3 | zeroshot | `the-open-engine/zeroshot` | worktrees/orchestration | launcher | +| 79 | P3 | Fractal | `plasma-ai/fractal` | orquestra CLIs | launcher | +| 80 | P3 | Bernstein | `chernistry/bernstein` | executa/verifica agentes | launcher | +| 81 | P3 | Traycer | `traycerai/traycer` | agentes paralelos | launcher | +| 82 | P3 | h5i | `h5i-dev/h5i` | sandbox e peer review | launcher | +| 83 | P3 | OMK | `dmae97/open-multi-agent-kit` | control plane | ACP/MCP | +| 84 | P3 | kodo | `ikamensh/kodo` | orquestrador | launcher | +| 85 | P3 | ORCH | `oxgeneral/ORCH` | fila de tarefas | launcher | +| 86 | P3 | LoopTroop | `LoopTroop-ai/LoopTroop` | orquestrador OpenCode | launcher | +| 87 | P3 | Galley | `shinpr/galley` | worktree/PR | launcher | +| 88 | P3 | Relay | `jcast90/relay` | MCP/orquestracao | MCP | +| 89 | P3 | SageCLI | `youwangd/SageCLI` | runtime-agnostic | launcher/ACP | +| 90 | P3 | 5dive | `5dive-ai/5dive` | agentes em servidor | launcher | +| 91 | P3 | agx | `ramarlina/agx` | checkpoints | launcher | +| 92 | P3 | claude-code-router | `musistudio/claude-code-router` | proxy multi-provider | integrar como consumidor/proxy | +| 93 | P3 | cc-router | `finch-xu/cc-router` | proxy Anthropic | interoperabilidade | +| 94 | P3 | OneCLI | `onecli/onecli` | broker de credenciais | seguranca/integ. adjacente | +| 95 | P3 | agent-browser | `vercel-labs/agent-browser` | ferramenta para agentes | MCP/plugin | +| 96 | P3 | OpenWork | `different-ai/openwork` | desktop sobre OpenCode | config do agente filho | +| 97 | P4 | Pool | `poolsideai/pool` | `POOLSIDE_STANDALONE_BASE_URL`; EULA | config sem PR presumido | +| 98 | P4 | Junie CLI | `junie.jetbrains.com` | fechado/EAP | BYOK/endpoint a confirmar | +| 99 | P4 | Cursor desktop | `Anysphere` | cloud endpoint | MITM/guide | +| 100 | P4 | Windsurf | produto Codeium | sem base URL geral | MITM | +| 101 | P4 | Amp | `sourcegraph.com/amp` | fechado | MITM/sem PR | +| 102 | P4 | Amazon Q/Kiro CLI | AWS | SSO/ecossistema AWS | MITM/adapter | +| 103 | P4 | Cowork | produto Anthropic | endpoint opaco | MITM | + +## C. Regra de promocao/rebaixamento + +Um projeto sobe de prioridade quando a pesquisa individual confirma: configuracao documentada, teste local com OmniRoute, licenca permissiva e contribuicao aceita. Desce quando: a URL e fixa, o endpoint e somente SaaS, o README nao corresponde ao codigo, a autenticacao e inseparavel do provedor, ou a licenca/EULA impede redistribuicao. Nenhum projeto e marcado como impossivel sem registrar a evidencia no tracker. diff --git a/_references/_sistemas_cli/03-plano-integracao-em-lotes.md b/_references/_sistemas_cli/03-plano-integracao-em-lotes.md new file mode 100644 index 0000000000..80d4a02c97 --- /dev/null +++ b/_references/_sistemas_cli/03-plano-integracao-em-lotes.md @@ -0,0 +1,314 @@ +# Plano executavel de integracao de CLIs + +> **Status final (2026-08-03):** a fase de pesquisa foi concluída em lotes de até três worktrees/agentes, cobrindo `104/104` casos. Este documento continua válido como processo operacional para implementação/publicação. Consulte `06-relatorio-final-104-clis-e-estrategia-prs.md` para o resultado final. + +**Data:** 2026-08-01 +**Objetivo:** pesquisar, integrar, validar e publicar suporte ao OmniRoute em todos os projetos tecnicamente possiveis, mantendo uma fila que permite ate tres subagentes simultaneos. + +O ciclo especifico de preparacao, revisao, envio e acompanhamento das contribuicoes upstream esta +em `05-plano-publicacao-prs-upstream.md`. + +## 1. Principios operacionais + +- Um repositorio por subagente e por worktree. +- No maximo tres tasks de repositorios em execucao ao mesmo tempo. +- Cada task pesquisa o upstream novamente antes de editar; o relatorio inicial e somente contexto. +- O agente principal revisa licenca, arquitetura, smoke test e diff antes do proximo lote. +- Nao usar checkout compartilhado para desenvolvimento e nao usar `git stash`/`git pop`. +- Usar worktrees em `.claude/worktrees/` e branches especificas. +- Nao inventar PR, issue, commit ou aceite de mantenedor. +- Nao adicionar trailers ou rodapes de IA em commits/PRs. + +## 2. Fases obrigatorias por projeto + +### Fase 0 - Preparacao da task + +Criar uma task com nome do projeto, URL canonica, prioridade, evidencia inicial, estado no catalogo OmniRoute e objetivo de integrar. Definir a worktree e o agente responsavel. + +### Fase 1 - Pesquisa individual fresca + +O agente deve verificar no upstream atual: + +- arquitetura de providers e ponto de entrada do CLI; +- arquivo/schema de configuracao e suporte a `base_url`, `baseURL`, `OPENAI_BASE_URL`, `OPENAI_API_BASE`, `LLM_BASE_URL` ou equivalente; +- protocolo real (Chat Completions, Responses, Anthropic Messages, Gemini, ACP, MCP ou outro); +- descoberta de modelos e necessidade de `/v1/models`; +- autenticacao, keyring, OAuth e variaveis de ambiente; +- streaming, tool calling, reasoning e limites conhecidos; +- politica de contribuicao, licenca e se PR de fork externo e aceito; +- atividade, releases, issues/PRs sobre providers customizados ou endpoints locais; +- comandos de build, lint, teste e smoke test; +- possibilidade de fork/PR, issue de proposta, documentacao ou apenas wrapper/MITM. + +Registrar commit/release pesquisado e links de evidencia. + +### Fase 2 - Gate de viabilidade + +Classificar exatamente um caminho inicial: + +`viable-direct` (somente configuracao), `viable-upstream` (mudanca no upstream), `viable-acp`, `viable-mcp`, `needs-wrapper`, `needs-mitm`, `config-only`, `blocked` ou `research-more`. + +Nao implementar antes de haver uma conclusao de viabilidade e uma razao verificavel. + +### Fase 3 - Baseline e TDD + +- Executar a suite recomendada pelo upstream antes das mudancas. +- Registrar falhas preexistentes, dependencias ausentes e comandos exatos. +- Limpar `OMNIROUTE_API_KEY` e demais credenciais quando os testes pressupuserem ambiente sem chaves. +- Adicionar primeiro um teste de configuracao, endpoint e selecao de modelo que falhe sem a integracao. + +### Fase 4 - Implementacao minima + +Implementar apenas o necessario para o caso pesquisado: + +- perfil/preset `omniroute` ou provider custom; +- base URL correta (raiz, `/v1` ou `/v1beta` conforme o cliente); +- chave via ambiente ou mecanismo seguro do cliente; +- modelo fixo ou descoberta de modelos; +- selecao/login/report se o CLI tiver esses fluxos; +- documentacao de uso e limites; +- testes de config e chamada. + +Se o upstream nao aceitar mudanca, preparar wrapper/launcher ou documentacao local e registrar a limitacao. + +### Fase 5 - Validacao funcional + +Executar, conforme o protocolo: + +- build, lint, typecheck e testes do upstream; +- smoke request com OmniRoute; +- streaming SSE e encerramento por abort; +- tool calling e JSON de argumentos; +- `/v1/models` ou equivalente; +- Chat Completions, Responses, Anthropic Messages e Gemini `generateContent` quando aplicavel; +- fallback/erro, timeout, retry e modelo inexistente; +- teste com chave limpa e teste com `OMNIROUTE_API_KEY` real fora dos logs. + +### Fase 6 - Publicacao upstream + +- Criar fork somente quando permitido e branch especifica. +- Abrir PR upstream se contribuicoes externas forem aceitas. +- Se PR externo for bloqueado, abrir issue com proposta, patch/referencia e smoke test. +- Se o projeto for fechado/EULA, registrar config manual ou issue de produto; nao criar PR ficticio. +- Atualizar o tracker com URL, commit, estado e resposta do mantenedor. + +### Fase 7 - Catalogo e integracao OmniRoute + +Quando houver valor para usuarios OmniRoute: + +- criar worktree propria do OmniRoute; +- atualizar `src/shared/constants/cliTools.ts` ou `src/shared/constants/cliToolsGrokBuild.ts`; +- atualizar detector em `src/lib/cli-helper/tool-detector.ts` se necessario; +- adicionar gerador/configurador e rota de settings somente se o caso exigir; +- adicionar testes do catalogo, detector, settings, `baseUrlSupport` e `/v1`; +- atualizar `docs/reference/CLI-TOOLS.md`, `docs/guides/CLI-INTEGRATIONS.md` e README quando apropriado; +- atualizar o tracker com a integracao local e evidencias. + +### Fase 8 - Fechamento + +Registrar commit, branch, PR/issue, testes, limitacoes, status do upstream, status do catalogo OmniRoute e proximo passo. O agente principal faz uma revisao final de seguranca, licenca e factualidade. + +## 3. Lotes de ate tres subagentes + +O lote e uma unidade operacional. A fila abaixo e ordenada pelo documento `02-prioridade-integracoes-clis.md`; cada linha representa uma task individual. + +### Lote 0 - consolidacao do caso de referencia + +- `CLI-000` - jcode - manter a issue #704, validar resposta do mantenedor e concluir a secao do README OmniRoute. + +### Lote P0.1 + +- `CLI-001` - Gemini CLI - integrar provider/base URL Gemini. +- `CLI-002` - Claw Code - integrar `OPENAI_BASE_URL`/provider OmniRoute. +- `CLI-003` - Plandex - integrar provider custom com `baseUrl`. + +### Lote P0.2 + +- `CLI-004` - MiMo Code - integrar provider OpenAI-compatible. +- `CLI-005` - Trae Agent - integrar `model_providers` e `base_url`. +- `CLI-006` - Kimi CLI - integrar modos OpenAI/Responses/Anthropic. + +### Lote P0.3 + +- `CLI-007` - Every Code - integrar perfil derivado do Codex. +- `CLI-008` - Open Codex - integrar provider multi-modelo. +- `CLI-009` - VT Code - integrar `custom_providers` e failover. + +### Lote P0.4 + +- `CLI-010` - OpenHands CLI - integrar `LLM_BASE_URL`. +- `CLI-011` - gptme - integrar `OPENAI_BASE_URL`. +- `CLI-012` - Nanocoder - integrar API OpenAI-compatible. + +### Lote P0.5 + +- `CLI-013` - RA.Aid - integrar `OPENAI_API_BASE`. +- `CLI-014` - CoreCoder - integrar `OPENAI_BASE_URL`. +- `CLI-015` - Grok CLI - integrar `GROK_BASE_URL`. + +### Lote P1.1 + +- `CLI-016` - Gitlawb Zero - integrar provider custom e `--base-url`. +- `CLI-017` - DeepSeek Reasonix - confirmar e integrar endpoint. +- `CLI-018` - KlaatCode - integrar `customModels`. + +### Lote P1.2 + +- `CLI-019` - CodeMini CLI - integrar `gateway.base_url`. +- `CLI-020` - Zot - integrar flag/config `--base-url`. +- `CLI-021` - Octomind - integrar provider URL envs. + +### Lote P1.3 + +- `CLI-022` - DvalinCode - integrar OpenAI-compatible. +- `CLI-023` - Coro Code - integrar `OPENAI_BASE_URL`. +- `CLI-024` - Mini-Kode - integrar `MINIKODE_BASE_URL`. + +### Lote P1.4 + +- `CLI-025` - Late CLI - integrar `OPENAI_BASE_URL`/`api-url`. +- `CLI-026` - Agentty - integrar provider e/ou ACP. +- `CLI-027` - Aizen - integrar `AIZEN_BASE_URL`. + +### Lote P1.5 + +- `CLI-028` - Clif-Code - integrar providers OpenAI/Anthropic/Ollama. +- `CLI-029` - Minacode - confirmar provider e integrar URL. +- `CLI-030` - YottaCode - integrar gateway/provider. + +### Lote P1.6 + +- `CLI-031` - aichat - integrar models YAML/provider. +- `CLI-032` - ShellGPT - integrar `API_BASE_URL`. +- `CLI-033` - Mistral Vibe - integrar base URL/provider. + +### Lote P1.7 + +- `CLI-034` - OpenSquilla - integrar gateway/provider. +- `CLI-035` - Kode CLI - integrar endpoint multi-provider. +- `CLI-036` - Neovate Code - integrar plugin/provider. + +### Lote P1.8 + +- `CLI-037` - Deep Agents Code - integrar provider do pacote CLI. +- `CLI-038` - OpenHands principal - integrar CLI/config. +- `CLI-039` - SWE-agent - integrar backend/provider. + +### Lote P1.9 + +- `CLI-040` - AutoCodeRover - integrar backend/provider. +- `CLI-041` - Claurst - integrar provider, respeitando GPL. +- `CLI-042` - Codebuff - integrar provider. + +### Lote P2.1 + +- `CLI-043` - Devon - integrar backend. +- `CLI-044` - Letta Code - integrar provider. +- `CLI-045` - CodeMachine CLI - integrar provider. + +### Lote P2.2 + +- `CLI-046` - Groq Code CLI - integrar endpoint. +- `CLI-047` - Dexto - integrar provider. +- `CLI-048` - claw-code-agent - integrar endpoint. + +### Lote P2.3 + +- `CLI-049` - g3 - integrar provider Rust. +- `CLI-050` - San - integrar provider-neutral. +- `CLI-051` - Waveloom - integrar provider/endpoint. + +### Lote P2.4 + +- `CLI-052` - picocode - integrar multi-LLM. +- `CLI-053` - QQCode - integrar config. +- `CLI-054` - Keen Code - integrar provider. + +### Lote P2.5 + +- `CLI-055` - Grinta - integrar provider. +- `CLI-056` - Zap - integrar Claude/Gemini/OpenAI. +- `CLI-057` - Binharic - integrar multi-provider. + +### Lote P2.6 + +- `CLI-058` - Darce - integrar multi-modelo. +- `CLI-059` - CLAII - integrar provider/MCP. +- `CLI-060` - nori-cli - integrar provider baseado em Codex. + +### Lote P2.7 + +- `CLI-061` - cursor-agent clone - integrar provider. +- `CLI-062` - Free Code - pesquisar licenca e integrar se viavel. +- `CLI-063` - Claude Engineer - integrar provider. + +### Lote P2.8 + +- `CLI-064` - Smol Developer - integrar SDK/adaptador. +- `CLI-065` - Agentless - integrar entrada de modelo. +- `CLI-066` - Amazon Q Developer CLI - pesquisar auth/provider. + +### Lote P2.9 + +- `CLI-067` - nanobot - integrar provider OpenClaw-compatible. +- `CLI-068` - ZeroClaw - integrar trait de provider. +- `CLI-069` - NanoClaw - confirmar base Anthropic. + +### Lote P2.10 + +- `CLI-070` - PicoClaw - integrar provider/config. +- `CLI-071` - IronClaw - integrar provider Rust. +- `CLI-072` - NullClaw - integrar provider. + +### Lote P2.11 + +- `CLI-073` - Moltis - integrar provider Rust. +- `CLI-074` - GitClaw - integrar provider Git-native. +- `CLI-075` - LionClaw - integrar provider CLI. + +### Lote P3.1 - wrappers e orquestradores + +- `CLI-076` - VibePod; `CLI-077` - zeroshot; `CLI-078` - Fractal. + +### Lote P3.2 + +- `CLI-079` - Bernstein; `CLI-080` - Traycer; `CLI-081` - h5i. + +### Lote P3.3 + +- `CLI-082` - OMK; `CLI-083` - kodo; `CLI-084` - ORCH. + +### Lote P3.4 + +- `CLI-085` - LoopTroop; `CLI-086` - Galley; `CLI-087` - Relay. + +### Lote P3.5 + +- `CLI-088` - SageCLI; `CLI-089` - 5dive; `CLI-090` - agx. + +### Lote P3.6 + +- `CLI-091` - claude-code-router; `CLI-092` - cc-router; `CLI-093` - OneCLI. + +### Lote P3.7 + +- `CLI-094` - agent-browser; `CLI-095` - OpenWork; `CLI-096` - Agent Deck (revisao de agente filho). + +### Lote P4 - fechados/MITM + +- `CLI-097` - Pool; `CLI-098` - Junie CLI; `CLI-099` - Cursor desktop. +- `CLI-100` - Windsurf; `CLI-101` - Amp; `CLI-102` - Amazon Q/Kiro CLI; `CLI-103` - Cowork. + +## 4. Criterio para iniciar o lote seguinte + +O lote seguinte pode iniciar quando os tres agentes do lote atual tiverem: pesquisa upstream anexada, gate de viabilidade preenchido, baseline registrado, resultado de smoke test ou bloqueio reproduzivel, e tracker atualizado. Uma falha de um agente nao deve paralisar os outros dois; o agente principal deve marcar `blocked` ou `research-more` com evidencia e seguir a fila. + +## 5. Entregaveis de cada task + +1. Nota de pesquisa fresca com commit/release e links. +2. Classificacao de viabilidade. +3. Diff minimo ou conclusao documentada de que nao ha diff necessario. +4. Testes e comandos executados, incluindo falhas preexistentes. +5. PR/issue upstream ou justificativa de config-only/MITM. +6. Entrada no catalogo OmniRoute quando aplicavel. +7. Atualizacao do tracker `04-tracker-integracoes-clis.md`. diff --git a/_references/_sistemas_cli/04-tracker-integracoes-clis.md b/_references/_sistemas_cli/04-tracker-integracoes-clis.md new file mode 100644 index 0000000000..1b253d1ca8 --- /dev/null +++ b/_references/_sistemas_cli/04-tracker-integracoes-clis.md @@ -0,0 +1,144 @@ +# Tracker de integracoes de CLIs com OmniRoute + +**Status final da pesquisa:** `104/104` concluídos (`100%`), `0` casos `not-started`. Este é o registro individual autoritativo. O relatório executivo está em `06-relatorio-final-104-clis-e-estrategia-prs.md`. + +**Snapshot inicial:** 2026-08-01 +**Legenda de status:** `not-started`, `researching`, `research-more`, `viable-direct`, `viable-upstream`, `viable-acp`, `viable-mcp`, `needs-wrapper`, `needs-mitm`, `blocked`, `implementing`, `validating`, `published-pr`, `published-issue`, `awaiting-maintainer`, `accepted`, `rejected`, `integrated`. + +Os campos externos (`branch`, `commit`, `PR`, `issue`) ficam como `—` ate haver evidencia real. “Catalogo OmniRoute” significa entrada local, nao necessariamente suporte upstream publicado. + +| ID | Prio | Projeto | Repositorio | Pesquisa | Tipo | Upstream | Branch | Commit | PR | Issue | Catalogo OmniRoute | Observacoes/proximo passo | +|---|:---:|---|---|---|---|---|---|---|---|---|---|---| +| CLI-000 | P0 | jcode | `1jehuang/jcode` | concluida | `viable-upstream` | `awaiting-maintainer` | `feat/omniroute-provider` | `ee4f904e6` | [fork PR](https://github.com/diegosouzapw/jcode/pull/1) | [upstream #704](https://github.com/1jehuang/jcode/issues/704) | integrated | acompanhar mantenedor e concluir secao do README | + +## Caso publicado: jcode + +| Campo | Valor | +|---|---| +| Projeto | jcode | +| Repositorio | `https://github.com/1jehuang/jcode` | +| Status geral | `awaiting-maintainer` | +| Tipo | `viable-upstream`; perfil OpenAI-compatible dirigido por metadados | +| Branch | `feat/omniroute-provider` | +| Commit | `ee4f904e6` | +| PR | `https://github.com/diegosouzapw/jcode/pull/1` (fork de referencia) | +| Issue | `https://github.com/1jehuang/jcode/issues/704` | +| Catalogo OmniRoute | `integrated` / entrada existente | +| Validacao | `cargo check --workspace` limpo; 205 testes passaram; 1 falha preexistente/ambiental | +| Diff | 6 arquivos, `+56/-3` | +| Proximo passo | acompanhar issue #704 e criar secao de README do OmniRoute | + +## Tabela principal + +| ID | Prio | Projeto | Repositorio | Pesquisa | Tipo | Upstream | Branch | Commit | PR | Issue | Catalogo OmniRoute | Observacoes/proximo passo | +|---|:---:|---|---|---|---|---|---|---|---|---|---|---| +| CLI-001 | P0 | Gemini CLI | `google-gemini/gemini-cli` | concluida | `pr-generic` | `published-issue` | `fix/omniroute-gateway-auth` | `8138105c38cc1637fe9e8a9bd520eb835f1620e6` | — | [upstream #27550](https://github.com/google-gemini/gemini-cli/issues/27550#issuecomment-5152312278) | not-in-catalog | regression `AuthType.GATEWAY`; patch +26; auth 10/10, non-interactive 17/17, content generator 55/55, Gemini `/v1beta` stream/tools smoke verde; aguardar `help wanted` antes de terceira PR | +| CLI-002 | P0 | Claw Code | `ultraworkers/claw-code` | concluida | `pr-docs` | `published-issue` | `docs/omniroute-setup` | `de857038b2f9ff9b319132e2241549e86215c351` | — | [upstream #3283](https://github.com/ultraworkers/claw-code/issues/3283) | not-in-catalog | generic OpenAI Chat Completions; docs +37; 1.415 testes, fmt, docs/release checks e clippy oficial verdes; fork bloqueado pelo GitHub, issue-first; smoke OmniRoute parcial/timeout; chave do smoke deve ser rotacionada | +| CLI-003 | P0 | Plandex | `plandex-ai/plandex` | concluida | `pr-docs` | `published-pr` | `feat/omniroute-provider-docs` | `f8f0694bdf7d1cb6e65a1f1c5bc39f84921a4507` | [upstream #359](https://github.com/plandex-ai/plandex/pull/359) | — | not-in-catalog | custom provider OpenAI-compatible ja existia; docs com `/v1`, `OMNIROUTE_API_KEY`, Docker reachability e model mapping; Go indisponivel; Docusaurus build verde; acompanhar mantenedor | +| CLI-004 | P0 | MiMo Code | `XiaomiMiMo/MiMo-Code` | concluida | `config-only` | not-applicable | `research/omniroute-mimo-code` | — | — | — | not-in-catalog | SHA `ce124cb`; provider customizado `@ai-sdk/openai-compatible` já suporta `baseURL`, `apiKey` e modelo; 116 testes focados + typecheck verdes; smoke CLI inconclusivo por travamento ambiental; sem PR artificial | +| CLI-005 | P0 | Trae Agent | `bytedance/trae-agent` | concluida | `pr-docs` | `published-pr` | `research/omniroute-trae-agent` | `4801e48b69d7583300eb86ec5c69235506d7f205` | [upstream #449](https://github.com/bytedance/trae-agent/pull/449) | — | not-in-catalog | README +39; `provider: openai` + mapping `base_url=/v1`; `/v1/responses`, `/v1/models`, Bearer, tools e limitação sem streaming; 62 testes/17 skips, pre-commit e mocks verdes; CLA pendente | +| CLI-006 | P0 | Kimi CLI | `MoonshotAI/kimi-cli` | concluida | `pr-docs` | `published-issue` | `research/omniroute-kimi-cli` | `a2f62bf6108a6954e798db992411aa06670e224f` | — | [upstream #2576](https://github.com/MoonshotAI/kimi-cli/issues/2576) | not-in-catalog | docs EN/ZH +63; `openai_legacy` `/v1`, chave via `OPENAI_API_KEY`, modelo manual; Responses/Anthropic alternativos; 47 testes e VitePress verdes; aguardar direção do mantenedor antes da PR | +| CLI-007 | P0 | Every Code | `just-every/code` | concluida | `pr-docs` / `config-only` | `published-pr` | `feat/omniroute-integration` | `8fbc8dab5fb76bf05535055801af0c3ccfea6f3b` | [upstream #614](https://github.com/just-every/code/pull/614) | — | not-in-catalog | PR documental aberta e mergeable; release `v0.6.162`; `./build-fast.sh` baseline/pós-patch verdes; smoke mock Responses/SSE/tools verde; acompanhar CI/mantenedor | +| CLI-008 | P0 | Open Codex | `ymichael/open-codex` | concluida | `pr-generic` / `issue-first` | `published-issue` | `feat/omniroute-integration` | `f25de99f991c0e4d9d6ae2811d307cdbff92f869` | — | [upstream #4](https://github.com/ymichael/open-codex/issues/4#issuecomment-5152804104) | not-in-catalog | patch genérico pronto localmente; issue-first por firewall de container e PR #19 fechada; 132 testes, typecheck/build/format verdes; lint bloqueado por ambiente; aguardar mantenedor antes de PR | +| CLI-009 | P0 | VT Code | `vinhnx/vtcode` | concluida | `pr-docs` / `config-only` | `published-pr` | `feat/omniroute-integration` | `256682d10c72f3e6e145d852b6d9d53f5c471988` | [upstream #717](https://github.com/vinhnx/VTCode/pull/717) | — | not-in-catalog | PR documental aberta e mergeable; release `0.141.10`; custom provider `/v1`, Bearer, `auto`, discovery manual, streaming/tools; 10 testes config verdes; nextest/docs checks bloqueados por ambiente; acompanhar CI/mantenedor | +| CLI-010 | P0 | OpenHands CLI | `OpenHands/OpenHands-CLI` | concluida | `config-only` | not-applicable | `feat/omniroute-openhands-cli-integration` | — | — | — | not-in-catalog | SHA `2df8a283`; `LLM_BASE_URL=/v1`, `LLM_API_KEY`, modelo obrigatório `openai/auto`, Chat Completions/SSE/tools; 63 testes focados e mock verdes; sem PR artificial | +| CLI-011 | P0 | gptme | `gptme/gptme` | concluida | `config-only` | not-applicable | `feat/omniroute-gptme-integration` | — | — | — | not-in-catalog | SHA `7fe250529`; provider TOML nomeado, `/v1/chat/completions`, `/v1/models`, Bearer, streaming/tools; compileall verde, pytest bloqueado por deps; docs genericas ja cobrem | +| CLI-012 | P0 | Nanocoder | `Nano-Collective/nanocoder` | concluida | `config-only` | not-applicable | `feat/omniroute-nanocoder-integration` | — | — | — | not-in-catalog | SHA `becae998`; `createOpenAICompatible`, `/v1/models`, streaming/native tools + XML/JSON fallback; types/format/lint/build verdes; suite ampla com falhas preexistentes; sem PR artificial | +| CLI-013 | P0 | RA.Aid | `ai-christianson/RA.Aid` | concluida | `config-only` | not-applicable | `feat/omniroute-ra-aid-integration` | — | — | — | not-in-catalog | SHA `e71bb83`; provider `openai-compatible`, `/v1/chat/completions`, Bearer, modelo explicito/`auto`, function tools; 762 testes + 62 focados e smoke verdes; sem Responses/stream HTTP garantido; Aider exige config separada; sem PR artificial | +| CLI-014 | P0 | CoreCoder | `he-yufeng/CoreCoder` | concluida | `pr-docs` / `config-only` | `published-pr` | `feat/omniroute-integration` | `f4d2851649e5dda20738c313a8a94337b24eeb9d` | [upstream #20](https://github.com/he-yufeng/CoreCoder/pull/20) | — | not-in-catalog | PR documental aberta, nao draft e mergeable; `/v1/chat/completions`, Bearer, `auto`, streaming/native tools; 86 testes, compileall, build, twine e smoke verdes; Ruff mantem 41 falhas preexistentes; acompanhar CI/mantenedor | +| CLI-015 | P1 | Grok CLI | `superagent-ai/grok-cli` | concluida | `config-only` | not-applicable | `feat/omniroute-grok-cli-integration` | — | — | — | not-in-catalog | SHA `fb97af8`; `GROK_BASE_URL`/`--base-url`, Chat Completions/SSE, Bearer, `auto` e tools confirmados; 47/48 suites e 246 testes no gate isolado, 6 arquivos/39 testes focados verdes; Node não carrega `bun:sqlite`; Responses/search/STT/Batch/midia não garantidos; monitorar PRs #290/#349 | +| CLI-016 | P1 | Gitlawb Zero | `Gitlawb/zero` | concluida | `config-only` | not-applicable | `feat/omniroute-gitlawb-zero-integration` | — | — | — | not-in-catalog | SHA `8e266797`; release `v0.6.0`; provider custom `/v1`, Bearer, `auto`, Chat/SSE/tools, usage e `/v1/models` confirmados; Go test/vet/fmt e smoke verdes; release build bloqueado por falta de espaco; politica exige issue aprovada; sem contribuicao nominal artificial | +| CLI-017 | P1 | DeepSeek Reasonix | `esengine/DeepSeek-Reasonix` | concluida | `config-only` | not-applicable | `feat/omniroute-deepseek-reasonix-integration` | — | — | — | not-in-catalog | SHA `1c62489d`; release `v1.19.1`; `kind=openai`, `/v1/chat/completions`, Bearer, `auto`, SSE/tools, `/v1/models` e reasoning confirmados; suite completa, vet, fmt, build e smoke verdes apos remover env SSH do runner; sem PR/issue redundante | +| CLI-018 | P1 | KlaatCode | `KlaatAI/klaatcode` | concluida | `config-only` | not-applicable | `feat/omniroute-klaatcode-integration` | — | — | — | not-in-catalog | SHA `0d20f24a`; release `V2.4.0`; `customModels` com `/v1`, Bearer, `auto`, Chat/SSE/tools confirmados; 316 testes, 33 fixtures e build verdes; typecheck local divergiu do CI verde; custom endpoint e apenas TUI; divergencia de metadata de licenca registrada; sem contribuicao nominal artificial | +| CLI-019 | P1 | CodeMini CLI | `havingautism/Codemini-CLI` | concluida | `config-only` | not-applicable | `feat/omniroute-codemini-cli-integration` | — | — | — | not-in-catalog | SHA `a3764b21`; package `0.8.3`; gateway `/v1`, Bearer persistido, `auto`, Chat/SSE/usage/tools e tool round trip confirmados; `/models` e probe, nao picker; 122/123 testes, 10 focados e pack-imports verdes; sem PR nominal redundante | +| CLI-020 | P1 | Zot | `patriceckhart/zot` | concluida | `config-only` | not-applicable | `feat/omniroute-zot-integration` | — | — | — | not-in-catalog | SHA `f3d8eb66`; release `v0.3.29`; custom provider `omniroute` em `models.json`, `/v1`, Bearer, `auto`, Chat/SSE/tools/reasoning opt-in e cache usage confirmados; `--base-url` e so override; PR #36 ja cita OmniRoute; race suite/build/vet/fmt verdes | +| CLI-021 | P1 | Octomind | `Muvon/octomind` | concluida | `config-only` | not-applicable | `feat/omniroute-octomind-integration` | — | — | — | not-in-catalog | SHA `65ab1db1`; release `0.39.0`; provider `local:auto` usa endpoint completo `/v1/chat/completions`, Bearer opcional, Chat JSON buffered, tools/reasoning/usage; sem SSE/Responses/discovery; fmt/fetch e smokes com/sem auth verdes; suite ampla nao executada por disco/contencao | +| CLI-022 | P1 | DvalinCode | `arthurpanhku/dvalincode` | concluida | `config-only` | not-applicable | `feat/omniroute-dvalincode-integration` | — | — | — | not-in-catalog | SHA `7d42664a`; release `v0.14.1`; provider OpenAI-compatible custom com `/v1`, Bearer via env, `auto`, Chat/SSE/usage/tools e tool round trip confirmados; `provider test` bloqueado por trusted presets; issues #109/#118/#135 ja cobrem melhorias genericas; sem PR nominal | +| CLI-023 | P1 | Coro Code | `Blushyes/coro-code` | concluida | `config-only` | not-applicable | `feat/omniroute-coro-code-integration` | — | — | — | not-in-catalog | SHA `679c57af`; release `v0.0.8`; `OPENAI_BASE_URL=/v1`, Bearer, `auto`, Chat JSON e function tools/tool loop confirmados; streaming existe mas nao e usado pelo agente; sem Responses/discovery; `cargo check`/fmt bloqueados por drift preexistente; risco de LICENSE ausente; sem PR nominal | +| CLI-024 | P1 | Mini-Kode | `minmaxflow/mini-kode` | concluida | `config-only` | not-applicable | `feat/omniroute-mini-kode-integration` | — | — | — | not-in-catalog | SHA `4e7f9767`; release/tag npm `0.2.3`; provider custom por `MINIKODE_BASE_URL=/v1`, Bearer, `auto`, Chat/SSE e tools/tool loop confirmados; sem Responses/discovery/reasoning dedicado; sem PR nominal redundante | +| CLI-025 | P1 | Late CLI | `mlhher/late-cli` | concluida | `config-only` | not-applicable | `feat/omniroute-late-cli-integration` | — | — | — | not-in-catalog | SHA `26814e62`; release `v1.4.2`; `OPENAI_BASE_URL=/v1`, Bearer, `auto`, Chat/SSE/usage/reasoning_content/tools e tool round trip confirmados; probes `/props`/`/v1/models` nao sao picker; BSL 1.1/CLA; sem PR nominal | +| CLI-026 | P1 | Agentty | `1ay1/agentty` | concluida | `config-only` | not-applicable | `feat/omniroute-agentty-integration` | — | — | — | not-in-catalog | SHA `e947b26c`; release `v0.2.10`; custom host `127.0.0.1:20128`, Bearer, Chat/SSE/tools e `/v1/models` confirmados; Responses/reasoning/tool round trip dinamico nao confirmados; MIT; sem PR nominal | +| CLI-027 | P1 | Aizen | `aizen-stack/aizen` | concluida | `config-only` | not-applicable | `feat/omniroute-aizen-integration` | — | — | — | not-in-catalog | SHA `3d8ae0f6`; release `v0.5.4`; `AIZEN_BASE_URL=/v1`, Bearer, `auto`/modelo literal, Chat/SSE/reasoning_content e `/v1/models`; tools confirmadas estaticamente, sem smoke dinamico; PolyForm Noncommercial/CLA; sem PR nominal | +| CLI-028 | P1 | Clif-Code | `DLhugly/Clif-Code` | concluida | `config-only` | not-applicable | `feat/omniroute-clif-code-integration` | — | — | — | not-in-catalog | SHA `282a787a`; release `v1.72.0`; `CLIFCODE_API_URL=/v1`, Bearer, `auto`, Chat/SSE/usage/tools e tool loop confirmados por fonte; smoke bloqueado por binario ausente; sem Responses/reasoning; licença proprietária conflitante com FSL declarada exige revisão jurídica; sem PR nominal | +| CLI-029 | P1 | Minacode | `hit9/minacode` | concluida | `config-only` | not-applicable | `feat/omniroute-minacode-integration` | — | — | — | not-in-catalog | SHA `d4ea4a97`; release `v0.18.1`; TOML custom `/v1`, key obrigatória, `auto`, Chat/Responses/Anthropic, SSE/tools/reasoning/discovery confirmados; smoke de protocolo Chat+Responses+models e compileall verdes; CI remoto verde; sem PR nominal | +| CLI-030 | P1 | YottaCode | `yottadynamics/yottacode` | concluida | `config-only` | not-applicable | `feat/omniroute-yottacode-integration` | — | — | — | not-in-catalog | SHA `039f61ce`; release `v0.3.1`; provider `openai-compatible`, `/v1`, Bearer, `/v1/models`, Chat/SSE/tools/reasoning parsing confirmados; smoke oficial com mock passou; Go 1.26 nao instalado e gates completos nao executados por espaco; sem PR nominal | +| CLI-031 | P1 | aichat | `sigoden/aichat` | concluida | `config-only` | not-applicable | `feat/omniroute-aichat-integration` | — | — | — | not-in-catalog | SHA `82976d3`; package/release `v0.30.0`; provider `openai-compatible` com base `/v1`, Bearer opcional e modelo `auto`; Chat stream/JSON, reasoning e tool round-trip confirmados; Responses ausente (#1431); limites de tool SSE ja cobertos por #1454/#1495 e PR #1496; sem publicacao nominal | +| CLI-032 | P1 | ShellGPT | `TheR1D/shell_gpt` | concluida | `config-only` | not-applicable | `feat/omniroute-shellgpt-integration` | — | — | — | not-in-catalog | SHA `a082bd53`; release `1.5.1`; `API_BASE_URL=/v1`, `OPENAI_API_KEY`, `DEFAULT_MODEL=auto` e `USE_LITELLM=false`; smoke real confirmou env e `.sgptrc`, Chat/SSE e Bearer; issue #718 nao reproduz no HEAD; CI baseline vermelho por temperatura default independente; sem publicacao nominal | +| CLI-033 | P1 | Mistral Vibe | `mistralai/mistral-vibe` | concluida | `config-only` | not-applicable | `feat/omniroute-mistral-vibe-integration` | — | — | — | not-in-catalog | SHA/release `99a6efa9` / `v2.23.2`; `GenericBackend` custom com base `/v1`, Bearer, Chat/SSE, usage, tools e reasoning; smoke do binario oficial verde; #790 cobre somente discovery `/v1/models`; upstream nao aceita contribuicoes de codigo no momento; sem publicacao | +| CLI-034 | P1 | OpenSquilla | `opensquilla/opensquilla` | concluida | `config-only` | not-applicable | `feat/omniroute-opensquilla-integration` | — | — | — | not-in-catalog | `custom` com `/v1`, Bearer opcional, Chat/SSE, tools, reasoning recebido, usage e `/v1/models`; smoke provider-level verde; monitorar issue #912 do probe custom; sem publicacao nominal | +| CLI-035 | P1 | Kode CLI | `shareAI-lab/Kode-cli` | concluida | `config-only` | not-applicable | `feat/omniroute-kode-cli-integration` | — | — | — | not-in-catalog | `custom-openai` com `/v1`, discovery `/v1/models`, fallback manual, Bearer, Chat/SSE, tools/tool round-trip e persistencia; smoke runtime bloqueado por Bun/artefato ausente; CI baseline vermelho por formatacao; sem publicacao nominal | +| CLI-036 | P1 | Neovate Code | `neovateai/neovate-code` | concluida | `config-only` | not-applicable | `feat/omniroute-neovate-code-integration` | — | — | — | not-in-catalog | provider JSON custom normalizado para OpenAI-compatible, `/v1`, Bearer, Chat/SSE, tools/tool round-trip; model catalog declarado (sem discovery); smoke do pacote publicado verde; sem publicacao nominal | +| CLI-037 | P1 | Deep Agents Code | `langchain-ai/deepagents` | concluida | `config-only` | not-applicable | `feat/omniroute-deepagents-code-integration` | — | — | — | not-in-catalog | SHA `46ee772b4`; `deepagents-code==0.1.51`; provider `openai`, base OmniRoute `/v1`, model `openai:auto`; Responses e default, Chat usa `use_responses_api=false`; smoke de config verde, sem HTTP/runtime por deps e disco; #3973/#3287 ja cobrem os pontos genericos; sem publicacao nominal | +| CLI-038 | P1 | OpenHands principal | `OpenHands/OpenHands` | concluida | `config-only` | not-applicable | `feat/omniroute-openhands-main-integration` | — | — | — | not-in-catalog | SHA `1708efc44`; Agent Canvas `1.8.0`; `openai/auto` + base `/v1` + API key + `api_mode=chat`; LiteLLM envia `model=auto`, Chat/SSE/tools estruturais; sem discovery generico `/v1/models`; PRs OmniRoute [#15189](https://github.com/OpenHands/OpenHands/pull/15189)/[#15211](https://github.com/OpenHands/OpenHands/pull/15211) fechadas sem merge; sem nova publicacao | +| CLI-039 | P1 | SWE-agent | `SWE-agent/SWE-agent` | concluida | `config-only` | not-applicable | `feat/omniroute-swe-agent-integration` | — | — | — | not-in-catalog | SHA `3ea751c08`; release `v1.1.0`; LiteLLM com `openai/`, `api_base=/v1` e chave por env; Chat/tools/tool round-trip e batch confirmados por fonte; reasoning parcial; smoke HTTP bloqueado por deps ausentes; sem publicacao nominal | +| CLI-040 | P1 | AutoCodeRover | `AutoCodeRoverSG/auto-code-rover` | concluida | `pr-generic` | `validating` | `feat/omniroute-auto-code-rover-integration` | — | — | — | not-in-catalog | SHA `585d3e639`; patch local sem commit em 4 arquivos corrige `litellm-generic-openai/auto`, base `/v1`, precedencia da chave e pricing desconhecido; 9 testes focados com stubs, tracer source-only, compileall e diff-check verdes; sem HTTP real; licenca SONAR Source-Available exige gate juridico antes de publicar | +| CLI-041 | P2 | Claurst | `Kuberwastaken/claurst` | concluida | `config-only` | not-applicable | `feat/omniroute-claurst-integration` | — | — | — | not-in-catalog | SHA `595b0ebe3`; `custom-openai` com settings persistidos, base `/v1`, `CUSTOM_OPENAI_API_KEY`, modelo `auto`, Chat/SSE/tools e `/v1/models`; CI upstream verde; sem build/smoke local e sem publicacao nominal; monitorar PR #365 sem duplicar | +| CLI-042 | P2 | Codebuff | `CodebuffAI/codebuff` | concluida | `blocked` / `issue-first` | `blocked` | `feat/omniroute-codebuff-integration` | — | — | — | not-in-catalog | SHA `195b9bef6`; main nao expoe base/chave/provider custom na CLI/SDK; PR upstream existente [#693](https://github.com/CodebuffAI/codebuff/pull/693) cobre a lacuna, observada OPEN/CONFLICTING/DIRTY; nao criar patch concorrente; acompanhar #693 e validar apos merge/port | +| CLI-043 | P2 | Devon | `entropy-research/Devon` | concluida | `pr-generic` | validating | `feat/omniroute-devon-integration` | — | — | [upstream #100](https://github.com/entropy-research/Devon/issues/100) | not-in-catalog | SHA `8f68f1d74`; diff local genérico em 5 arquivos, sem commit; reprodução literal DeepSeek/OpenRouter e resume corrigidos; 9 testes focados, compileall e diff-check verdes; Standards/Spec aprovados; aguardar autorização antes de fork/push/PR | +| CLI-044 | P2 | Letta Code | `letta-ai/letta-code` | concluida | `config-only` | not-applicable | `feat/omniroute-letta-code-integration` | — | — | — | integrated | SHA `09aff1bb4`; já coberta pelo provider local `lmstudio` (`lmstudio_openai`), discovery `/api/v0/models`→`/v1/models`, Chat/SSE/tools; 8 testes OmniRoute verdes; sem PR nominal | +| CLI-045 | P2 | CodeMachine CLI | `moazbuilds/CodeMachine-CLI` | concluida | `config-only` | not-applicable | `feat/omniroute-codemachine-cli-integration` | — | — | — | not-in-catalog | SHA `572def63e`; integração indireta por OpenCode custom `@ai-sdk/openai-compatible`, base `/v1`, chave por env e `omniroute/auto`; provider/model reconhecidos no smoke de config; alternativa Claude Code; sem PR nominal | +| CLI-046 | P2 | Groq Code CLI | `build-with-groq/groq-code-cli` | concluida | `pr-generic` | `awaiting-maintainer` | `feat/omniroute-groq-code-cli-integration` | — | — | — | not-in-catalog | SHA `a303eb4be`; `groq-sdk@0.27.0` fixa `/openai/v1/chat/completions`, logo não há config-only para OmniRoute; mock confirmou path/Bearer; PR existente [#7](https://github.com/build-with-groq/groq-code-cli/pull/7) é a duplicata natural, mas precisa distinguir Groq-compatible de OpenAI-compatible; 17 testes oficiais + 5 testes de contexto, build e mock verdes; clone limpo, sem patch/publicação | +| CLI-047 | P2 | Dexto | `truffle-ai/dexto` | concluida | `config-only` | `not-applicable` | `feat/omniroute-dexto-integration` | — | — | — | not-in-catalog | SHA `4108a9c73`; provider `openai-compatible` nativo exige `baseURL`, aceita modelo arbitrário, Bearer opcional, Chat/SSE/tools e reasoning effort; receita `/v1` + `auto`; 175 testes focados e builds llm/core verdes; TS2741 em chatgpt-oauth é baseline; ELv2; sem PR/issue nominal | +| CLI-048 | P2 | claw-code-agent | `HarnessLab/claw-code-agent` | concluida | `config-only` | `not-applicable` | `feat/omniroute-claw-code-agent-integration` | — | — | — | not-in-catalog | SHA `167571da8`; `OPENAI_BASE_URL=http://127.0.0.1:20128/v1`, Bearer, model manual/`auto`, Chat/SSE/tools/usage confirmados; smoke `MOCK_SMOKE_OK`, 80 testes focados; sem discovery/Responses API; licença não identificada (`license: null`); sem PR/issue | +| CLI-049 | P2 | g3 | `dhanji/g3` | concluida | `pr-generic` | `validating` | `feat/omniroute-g3-integration` | — | — | [upstream #70](https://github.com/dhanji/g3/issues/70) | not-in-catalog | SHA `0ddb052d2`; diff local provider-neutral em `provider_registration.rs`, 1 arquivo `+25/-1`, corrige registro `custom`→`custom.default`; `cargo check -p g3-config`, 6 testes config e diff-check verdes; teste focal escrito mas build bloqueado em `x11.pc`; manifesto declara MIT sem arquivo LICENSE; Standards/Spec centrais aprovados; sem publicação | +| CLI-050 | P2 | San | `genai-io/san` | concluida | `config-only` | `not-applicable` | `feat/omniroute-san-integration` | — | — | — | not-in-catalog | SHA `e45ec0ef7`; Apache-2.0/release v1.22.1; provider Custom com base `/v1`, Bearer, `/models`, Chat/SSE/tools/tool result e reasoning best-effort; smoke HTTP de dois turnos e gates Go focados verdes; sem provider nominal ou publicação | +| CLI-051 | P2 | Waveloom | `Menfre01/waveloom` | concluida | `config-only` | `not-applicable` | `feat/omniroute-waveloom-integration` | — | — | — | not-in-catalog | SHA `293d5cd11`; Apache-2.0/release v0.5.1; adapter OpenAI com `/v1`, Bearer, `/models`, SSE, 14 tools, tool-result round-trip e sessões; smoke do binário oficial verde e CI remoto do HEAD verde; reasoning/cache avançados não são projetados; sem publicação | +| CLI-052 | P2 | picocode | `jondot/picocode` | concluida | `config-only` | `not-applicable` | `feat/omniroute-picocode-integration` | — | — | — | not-in-catalog | SHA `064a2a6ea`; MIT/release v0.6.0; Rig 0.28 lê `OPENAI_BASE_URL` e usa Responses `/v1/responses`; smoke confirmou Bearer, `auto`, 11 tools e function_call_output; 7 testes/doc-tests verdes; fmt/clippy só baseline; sem PR/issue | +| CLI-053 | P2 | QQCode | `qnguyen3/qqcode` | concluida | `config-only` | `not-applicable` | `feat/omniroute-qqcode-integration` | — | — | — | not-in-catalog | SHA `be6a96ce7`; Apache-2.0/release v1.2.0; provider arbitrário + `GENERIC`/OpenAI com base `/v1`; smoke confirmou JSON/SSE, Bearer, extra_body, reasoning e tool-result; backend 20/20, ACP 13+1 skip, observer 11/11, compileall/helps verdes; sem PR/issue | +| CLI-054 | P2 | Keen Code | `mochow13/keen-code` | concluida | `config-only` | `not-applicable` | `feat/omniroute-keen-code-integration` | — | — | — | not-in-catalog | SHA `ee2eaf0f4`; MIT/release v0.40.0; receita manual `openai-compatible` + `/v1` + Bearer + model arbitrário; smoke oficial confirmou Chat/SSE, tools/tool-result, usage e reasoning replay; provider oculto apenas no picker; CI remoto verde; sem PR/issue | +| CLI-055 | P2 | Grinta | `josephsenior/Grinta-Coding-Agent` | concluida | `config-only` | `not-applicable` | `feat/omniroute-grinta-integration` | — | — | — | not-in-catalog | SHA `df7437524`; provider OpenAI-compatible com `LLM_API_KEY`, model `auto`, base `/v1`; smoke Chat/SSE/tools/tool-result/reasoning/usage/cache verde; 183 testes focados, compileall e Ruff verdes; sem PR/issue nominal | +| CLI-056 | P2 | Zap | `zap-coding-agent/zap-coding-agent` | concluida | `config-only` | `not-applicable` | `feat/omniroute-zap-integration` | — | — | — | not-in-catalog | SHA `f0203f872`; provider arbitrário `kind=openai`, base `/v1`, Bearer, discovery `/models`, Chat JSON/SSE, tools/tool-result, reasoning e usage confirmados; cargo check + 16 testes/gates focados verdes; issue #2 confirma arquitetura; sem PR nominal | +| CLI-057 | P2 | Binharic | `CogitatorTech/binharic-cli` | concluida | `pr-generic` | `validating` | `feat/omniroute-binharic-integration` | — | — | — | not-in-catalog | SHA `52ccca70b`; patch sem commit em `provider.ts` + teste: aplica `baseURL` ao OpenAI/Anthropic e usa Chat Completions para base customizada; RED→GREEN, 14 focal, 88 arquivos/774 testes, typecheck/build e smoke wire verdes; lint upstream bloqueado; sem publicação | +| CLI-058 | P2 | Darce | `AmerSarhan/darce-cli` | concluida | `config-only` | `not-applicable` | `feat/omniroute-darce-integration` | — | — | — | not-in-catalog | SHA `1b90c379a`; MIT declarada no package/npm sem arquivo LICENSE; `DARCE_API_BASE` raiz sem `/v1`, `DARCE_API_KEY`, `DARCE_MODEL=auto`; smoke PTY do binário confirmou 2 Chat/SSE, 7 tools, tool-result e Bearer; 106 testes/build verdes; sem MCP/ACP/A2A; sem PR/issue | +| CLI-059 | P2 | CLAII | `agencyswarm/CLAII` | concluida | `pr-generic` | `blocked` | `feat/omniroute-claii-integration` | — | — | — | not-in-catalog | SHA `89d42311b`; patch sem commit em README/config/providers/test: `CLAII_API_KEY`, `CLAII_BASE_URL` origem sem `/v1beta`, model runtime e reject explícito; 4 wire/loop + 10 calculator + pip install + smoke CLI verdes; unittest discover falha só baseline `calculator`/`pkg`; sem MCP/ACP/A2A; **All Rights Reserved**, não publicar sem autorização jurídica | +| CLI-060 | P2 | nori-cli | `tilework-tech/nori-cli` | concluida | `config-only` | `not-applicable` | `feat/omniroute-nori-cli-integration` | — | — | — | not-in-catalog | SHA `829ecf3fd`; Apache-2.0/v0.24.0; Nori custom ACP → OpenCode `opencode-ai@1.18.11` → OmniRoute `/v1`; MCP separado por `/api/mcp/stream` ou stdio; 5 testes focados, cargo build nori e smoke ACP Nori→OpenCode verdes; sem patch/publicação | +| CLI-061 | P2 | cursor-agent clone | `civai-technologies/cursor-agent` | concluida | `config-only` | `not-applicable` | `feat/omniroute-cursor-agent-clone-integration` | — | — | — | not-in-catalog | SHA `d21a8f3d4`; MIT/v0.1.39; SDK OpenAI usa base `/v1`, Anthropic usa raiz; smokes de 2 turnos/tools verdes; factory rejeita `auto` puro; 23 testes, mypy/build verdes; sem patch/publicação | +| CLI-062 | P2 | Free Code | `freecodexyz/free-code` | concluida | `config-only` | `blocked` | `feat/omniroute-free-code-integration` | — | — | [upstream #20](https://github.com/freecodexyz/free-code/issues/20) | not-in-catalog | SHA `6b25ab68b`; URL antiga `paoloanzn/free-code` redireciona; base Anthropic raiz, `model=auto`, stream/tools/MCP; build verde; sem LICENSE/campo license e código atribuído à Anthropic, não publicar | +| CLI-063 | P2 | Claude Engineer | `Doriandarko/claude-engineer` | concluida | `config-only` / `pr-generic` | `blocked` | `feat/omniroute-claude-engineer-integration` | — | [upstream #250](https://github.com/Doriandarko/claude-engineer/pull/250) | [upstream #116](https://github.com/Doriandarko/claude-engineer/issues/116) | not-in-catalog | SHA `0a9e4b309`; v3 funciona por base Anthropic raiz com modelo fixo; #250 já adiciona `ANTHROPIC_MODEL`; arquivo LICENSE ausente apesar de declaração MIT; sem patch concorrente/publicação | +| CLI-064 | P2 | Smol Developer | `smol-ai/developer` | concluida | `config-only` | `not-applicable` | `feat/omniroute-smol-developer-integration` | — | — | — | not-in-catalog | SHA `a6747d1a6`; `OPENAI_API_BASE=/v1`, `auto`, 3 Chat calls, SSE/function calling e Agent Protocol validados; gates de runtime verdes, build metadata preexistente; sem patch/publicação | +| CLI-065 | P2 | Agentless | `OpenAutoCoder/Agentless` | concluida | `config-only` | `not-applicable` | `feat/omniroute-agentless-integration` | — | — | — | not-in-catalog | SHA `5ce5888b9`; OpenAI chat + embeddings funcionam com bases distintas; Anthropic normal/cache histórico validados; DeepSeek fixa host; pre-commit/compileall verdes; sem patch/publicação | +| CLI-066 | P2 | Amazon Q Developer CLI | `aws/amazon-q-developer-cli` | concluida | `viable-mcp` / `needs-wrapper` | `not-applicable` | `feat/omniroute-amazon-q-developer-cli-integration` | — | — | — | not-in-catalog | SHA `15cc8f3cd`; modelo usa AWS JSON/EventStream Bearer/SigV4 e não `/v1`; MCP stdio imediato, HTTP legado com ressalva; upstream issue-first/manutenção crítica; sem patch/publicação | +| CLI-067 | P2 | nanobot | `HKUDS/nanobot` | concluida | `config-only` | `not-applicable` | `feat/omniroute-nanobot-integration` | — | — | — | not-in-catalog | HEAD `44b7e1bf4`; provider dinâmico OpenAI-compatible com base `/api/v1` e modelo `omniroute/auto`; Chat/SSE/tools/reasoning/usage/images/discovery e retry validados; 424 testes + Ruff; sem PR nominal | +| CLI-068 | P2 | ZeroClaw | `zeroclaw-labs/zeroclaw` | concluida | `config-only` | `not-applicable` | `feat/omniroute-zeroclaw-integration` | — | — | — | not-in-catalog | HEAD `4770420ab`; `custom.omniroute`, base `/v1`, Bearer, `auto`, Chat/Responses e tools nativas opt-in; 1.173 unit + 1 integração, fmt/config/smoke verdes; sem PR nominal | +| CLI-069 | P2 | NanoClaw | `gavrielc/nanoclaw` | concluida | `config-only` | `not-applicable` | `feat/omniroute-nanoclaw-integration` | — | — | — | not-in-catalog | HEAD `dfac7e0af`; provider Claude existente aponta para raiz Anthropic OmniRoute e OneCLI guarda a chave; baseline e 49 testes OmniRoute verdes; Codex #3155/#1984 e OpenCode #2985 ficam como follow-ups; sem PR | +| CLI-070 | P2 | PicoClaw | `sipeed/picoclaw` | concluida | `config-only` | `not-applicable` | `feat/omniroute-picoclaw-integration` | — | — | — | not-in-catalog | HEAD `49183d7`, `/api/v1`, `openai/auto` → `auto`; Chat/SSE/tools/usage/images/discovery; Go ausente, testes locais não executados; issue router #3298; sem publicação | +| CLI-071 | P2 | IronClaw | `nearai/ironclaw` | concluida | `config-only` | `not-applicable` | `feat/omniroute-ironclaw-integration` | — | — | — | not-in-catalog | HEAD `4b71aaae`; `openai_compatible` `/api/v1`, Chat/SSE/tools/images/discovery; 889+5 testes e fmt verdes; reasoning #3673; sem publicação | +| CLI-072 | P2 | NullClaw | `nullclaw/nullclaw` | concluida | `config-only` | `not-applicable` | `feat/omniroute-nullclaw-integration` | — | — | — | not-in-catalog | HEAD `d8a802fd`; custom `/api/v1`, Chat/Responses/Anthropic, tools/streaming/usage/images; Zig ausente, CI run 30788444193 verde; sem publicação | +| CLI-073 | P2 | Moltis | `moltis-org/moltis` | concluida | `config-only` | `not-applicable` | `feat/omniroute-moltis-integration` | — | — | — | not-in-catalog | HEAD `678d407`; `custom-omniroute`, `/api/v1`, `auto`, Chat/SSE/tools/reasoning/usage/images; 401 testes + fmt verdes; MCP/ACP separados; sem publicação | +| CLI-074 | P2 | GitClaw | `open-gitagent/gitclaw` | concluida | `config-only` | `not-applicable` | `feat/omniroute-gitclaw-integration` | — | — | — | not-in-catalog | GitAgent HEAD `d3e25d7`; base `/api/v1`, `omniroute:auto`, Chat/SSE/tools/images; build + 65 testes + smoke verdes; reasoning=false no descriptor; sem publicação | +| CLI-075 | P2 | LionClaw | `moshthepitt/lionclaw` | concluida | `patch-required` / `issue-first` | `awaiting-maintainer` | `feat/omniroute-lionclaw-integration` | — | — | — | not-in-catalog | HEAD `cb59b23d`; Codex app-server não projeta config.toml/secret para runtime confinado; patch seguro necessário, alinhado à #157; gates locais bloqueados por uv/podman; CI verde; sem publicação | +| CLI-076 | P3 | VibePod | `VibePod/vibepod-cli` | concluida | `config-only` | `not-applicable` | `feat/omniroute-vibepod-integration` | — | — | — | not-in-catalog | Claude Code via `/api`, container usa `host.docker.internal`; Codex não injeta chave; compileall verde, pytest bloqueado por typer; sem publicação | +| CLI-077 | P3 | zeroshot | `the-open-engine/zeroshot` | concluida | `config-only` | `not-applicable` | `feat/omniroute-zeroshot-integration` | — | — | — | not-in-catalog | Gateway OpenAI `/api/v1`, `auto`, tools fail-closed; 22 testes + build verdes; sem streaming JSON/reasoning/MCP no gateway; sem publicação | +| CLI-078 | P3 | Fractal | `plasma-ai/fractal` | concluida | `config-only` / `needs-wrapper` | `awaiting-maintainer` | `feat/omniroute-fractal-integration` | — | — | — | not-in-catalog | Codex Responses por node `CODEX_HOME`; caveat tmux quente não encaminha `OMNIROUTE_API_KEY`; fix genérico recomendado, sem PR | +| CLI-079 | P3 | Bernstein | `chernistry/bernstein` | concluida | `config-only` | `not-applicable` | `feat/omniroute-bernstein-integration` | — | — | — | not-in-catalog | Canonical `sipyourdrink-ltd/bernstein`; openai_agents `/api/v1`, auto, api_key_env allowlisted; testes bloqueados por openai ausente; sem publicação | +| CLI-080 | P3 | Traycer | `traycerai/traycer` | concluida | `config-only` indireto | `not-applicable` | `feat/omniroute-traycer-integration` | — | — | — | not-in-catalog | Harness OpenCode + provider `@ai-sdk/openai-compatible`, `/api/v1`, `omniroute/auto`; host central fechado; sem publicação | +| CLI-081 | P3 | h5i | `h5i-dev/h5i` | concluida | `patch-required` | `awaiting-maintainer` | `feat/omniroute-h5i-integration` | — | — | — | not-in-catalog | Auth proxy/egress Codex fixos em OpenAI anulam base custom; patch seguro/policy-pinned necessário; CI externa verde; sem publicação | +| CLI-082 | P3 | OMK | `dmae97/open-multi-agent-kit` | concluida | `viable-mcp` | `not-applicable` | `feat/omniroute-omk-integration` | — | — | — | not-in-catalog | pesquisa concluída neste lote; controle multiagente, MCP é caminho primário; sem provider nominal | +| CLI-083 | P3 | kodo | `ikamensh/kodo` | concluida | `config-only` indireto | `not-applicable` | `feat/omniroute-kodo-integration` | — | — | — | not-in-catalog | pesquisa concluída neste lote; orquestrador/agent child, propagar env/base/model ao agente filho | +| CLI-084 | P3 | ORCH | `oxgeneral/ORCH` | concluida | `needs-wrapper` | `awaiting-maintainer` | `feat/omniroute-orch-integration` | — | — | — | not-in-catalog | pesquisa concluída neste lote; fila/controle sem provider LLM direto, wrapper/adaptador necessário | +| CLI-085 | P3 | LoopTroop | `LoopTroop-ai/LoopTroop` | concluida | `config-only` indireto | `not-applicable` | `feat/omniroute-looptroop-integration` | — | — | — | not-in-catalog | HEAD `cbfc81c5`; OpenCode recebe provider `@ai-sdk/openai-compatible`, `/api/v1`, `omniroute/auto`; 16 testes verdes; sem publicação | +| CLI-086 | P3 | Galley | `shinpr/galley` | concluida | `patch-required` | `awaiting-maintainer` | `feat/omniroute-galley-integration` | — | — | — | not-in-catalog | HEAD `6bcc593d`; registry/transports fechados, requer transport OpenAI-compatible para executor e supervisor; Go ausente; sem publicação | +| CLI-087 | P3 | Relay | `jcast90/relay` | concluida | `config-only` | `not-applicable` | `feat/omniroute-relay-integration` | — | — | — | not-in-catalog | HEAD `7bd5a2f6`; provider profile Codex com `OPENAI_BASE_URL`, key ref e modelo; smoke Responses obrigatório; MCP separado; sem publicação | +| CLI-088 | P3 | SageCLI | `youwangd/SageCLI` | concluida | `config-only` indireto | `not-applicable` | `feat/omniroute-sagecli-integration` | — | — | — | not-in-catalog | HEAD `c167712d`; Codex runtime, base/key configuradas fora do Sage; env plaintext caveat; 45 testes verdes; sem publicação | +| CLI-089 | P3 | 5dive | `5dive-ai/5dive` | concluida | `patch-required` | `awaiting-maintainer` | `feat/omniroute-5dive-integration` | — | — | — | not-in-catalog | HEAD `b64b6dac`; provider/base maps fechados; patch OpenAI-compatible genérico; 50 testes focados verdes; sem publicação | +| CLI-090 | P3 | agx | `ramarlina/agx` | concluida | `config-only` indireto | `not-applicable` | `feat/omniroute-agx-integration` | — | — | — | not-in-catalog | HEAD `e674cec1`; Codex herda base/key/model; smoke Responses e governança `--full-auto`; Jest ausente; sem publicação | +| CLI-091 | P3 | claude-code-router | `musistudio/claude-code-router` | concluida | `config-only` | `not-applicable` | `feat/omniroute-claude-code-router-integration` | — | — | — | not-in-catalog | HEAD `bc8a8e62`; provider custom OpenAI/Anthropic/Gemini, Chat/Responses; smoke por protocolo; sem publicação | +| CLI-092 | P3 | cc-router | `finch-xu/cc-router` | concluida | `config-only` | `not-applicable` | `feat/omniroute-cc-router-integration` | — | — | — | not-in-catalog | HEAD `c4c7579`; custom Responses/Chat com base/path/header, SSE/tools/reasoning; cargo bloqueado por glib; sem publicação | +| CLI-093 | P3 | OneCLI | `onecli/onecli` | concluida | `config-only` | `not-applicable` | `feat/omniroute-onecli-integration` | — | — | — | not-in-catalog | HEAD `84ccaf74`; MITM credential gateway, generic host injection; MCP separado; sem publicação | +| CLI-094 | P3 | agent-browser | `vercel-labs/agent-browser` | concluida | `config-only` | `not-applicable` | `feat/omniroute-agent-browser-integration` | — | — | — | not-in-catalog | HEAD `01c1147d`; chat usa gateway Chat/SSE/tools com env key/model; base precisa validar sufixo `/v1` para não duplicar path; cargo test exit 0; sem publicação | +| CLI-095 | P3 | OpenWork | `different-ai/openwork` | concluida | `config-only` indireto | `not-applicable` | `feat/omniroute-openwork-integration` | — | — | — | not-in-catalog | HEAD `ecb7a5f0`; OpenCode custom provider `/api/v1`, auth gerenciada; sem testes/deps; sem publicação | +| CLI-096 | P3 | Agent Deck review | `asheshgoplani/agent-deck` | concluida | `config-only` indireto | `not-applicable` | `feat/omniroute-agent-deck-review` | — | — | — | integrated | HEAD `46300807`; env/model propagados a Codex/OpenCode; Go ausente; sem publicação | +| CLI-097 | P4 | Pool | `poolsideai/pool` | concluida | `config-only` | `not-applicable` | `feat/omniroute-pool-integration` | — | — | — | not-in-catalog | HEAD `a6fe0ca1`; `pool exec --api-url` OpenAI-compatible, sandbox required, MCP/ACP separado; EULA; sem publicação | +| CLI-098 | P4 | Junie CLI | `junie.jetbrains.com` | concluida | `config-only` | `not-applicable` | `feat/omniroute-junie-integration` | — | — | — | not-in-catalog | HEAD `d2701be6`; custom profile OpenAICompletion/Responses com baseUrl full e env ref; runtime proprietário/EAP; sem publicação | +| CLI-099 | P4 | Cursor desktop | Anysphere | concluida | `config-only` limitado | `awaiting-maintainer` | `feat/omniroute-cursor-desktop-integration` | — | — | — | integrated | disclosure-only; BYO key/chat panel; Composer/Tab nativos; privado/MITM proibido; sem publicação | +| CLI-100 | P4 | Windsurf | Codeium | concluida | `blocked-closed` / MCP-only | `awaiting-maintainer` | `feat/omniroute-windsurf-integration` | — | — | — | not-in-catalog | sem upstream/base custom; BYOK Anthropic específico; MCP separado; MITM proibido; sem publicação | +| CLI-101 | P4 | Amp | Sourcegraph | concluida | `config-only` parcial / Enterprise-gated | `awaiting-maintainer` | `feat/omniroute-amp-integration` | — | — | — | not-in-catalog | CLI fechada/Amp Server; confirmar provider custom com suporte; MCP viável; sem publicação | +| CLI-102 | P4 | Amazon Q/Kiro CLI | AWS | concluida | `patch-required` legado / `blocked-closed` Kiro | `awaiting-maintainer` | `feat/omniroute-amazon-q-integration` | — | — | — | integrated | Q usa AWS EventStream/SigV4; Kiro fechado sem base custom; MCP-only seguro; sem publicação | +| CLI-103 | P4 | Cowork | Anthropic | concluida | `blocked-closed` / MCP-only | `not-applicable` | — | — | — | — | not-in-catalog | inferência gerida pela Anthropic sem BYOK/base custom; Custom Connector MCP remoto; MITM proibido; sem publicação | + +## Como atualizar + +Ao terminar uma fase, alterar somente os campos comprovados e deixar os demais como `—`. Para uma integracao concluida, registrar: versao/commit pesquisado, mecanismo, arquivos modificados, testes, branch, commit, URL de PR/issue e resposta do mantenedor. Se o caso for apenas configuracao, registrar o comando/config real e marcar `config-only` ou `viable-direct`, sem criar uma PR artificial. + +Antes de publicar uma contribuicao, aplicar o gate e o checklist de +`05-plano-publicacao-prs-upstream.md`. diff --git a/_references/_sistemas_cli/05-plano-publicacao-prs-upstream.md b/_references/_sistemas_cli/05-plano-publicacao-prs-upstream.md new file mode 100644 index 0000000000..44c1715662 --- /dev/null +++ b/_references/_sistemas_cli/05-plano-publicacao-prs-upstream.md @@ -0,0 +1,659 @@ +# Plano de publicacao de integracoes OmniRoute nos repositorios upstream + +> **Status da campanha de pesquisa:** `104/104` casos concluídos. Este plano continua sendo o procedimento de execução e publicação. A matriz final, inclusive os casos em que PR é inadequada ou impossível, está em `06-relatorio-final-104-clis-e-estrategia-prs.md`. + +**Data:** 2026-08-01 +**Escopo:** transformar a fila `CLI-000` a `CLI-103` em contribuicoes upstream verificadas, +publicando PR, issue, guia de configuracao, adaptador ou conclusao de bloqueio conforme o mecanismo +real de cada projeto. +**Documentos-base:** `01-relatorio-pesquisa-clis-omniroute.md`, +`02-prioridade-integracoes-clis.md`, `03-plano-integracao-em-lotes.md` e +`04-tracker-integracoes-clis.md`. + +## 1. Resultado esperado + +Para cada repositorio pesquisado, a campanha deve produzir exatamente um resultado principal: + +1. **PR upstream de integracao nominal:** adiciona provider/preset `omniroute`, configuracao, + documentacao e testes quando isso combina com a arquitetura do projeto. +2. **PR upstream de compatibilidade generica:** melhora suporte a endpoint customizado sem acoplar + o projeto ao nome OmniRoute, acompanhado de documentacao comprovando o uso com OmniRoute. +3. **PR somente de documentacao:** registra uma configuracao funcional quando o codigo ja suporta + OmniRoute e o upstream aceita guias de terceiros. +4. **Issue-first:** solicita decisao de arquitetura ou permissao antes do patch quando a politica do + repositorio, o desenho de providers ou o tamanho da mudanca exigirem alinhamento. +5. **Configuracao sem PR:** documenta no OmniRoute um fluxo que ja funciona e para o qual uma mudanca + upstream seria redundante ou rejeitada pela politica do projeto. +6. **Adaptador ACP/MCP/wrapper:** contribui no ponto de extensao correto quando o projeto nao consome + diretamente APIs de modelos. +7. **MITM, produto fechado ou bloqueado:** registra evidencia e nao fabrica uma contribuicao que o + upstream nao pode receber. + +O objetivo e tentar integrar todos os casos tecnicamente possiveis. O objetivo nao e abrir uma PR em +todo repositorio independentemente da arquitetura, licenca ou politica de contribuicao. + +## 2. Regras da campanha + +- Trabalhar em lotes de no maximo tres repositorios, com um subagente por repositorio. +- Usar uma worktree isolada por repositorio dentro de `.claude/worktrees/`. +- Nao editar implementacoes no checkout compartilhado. +- Nao usar `git stash` ou `git pop`. +- Fazer pesquisa fresca no commit atual do upstream antes de criar branch ou editar arquivos. +- Ler `README`, `CONTRIBUTING`, templates de issue/PR, `SECURITY`, licenca e instrucoes locais de + agentes antes da implementacao. +- Procurar issues e PRs abertas/fechadas sobre custom provider, base URL, OpenAI-compatible, + Anthropic-compatible, Gemini endpoint, proxy, gateway e OmniRoute antes de propor uma mudanca. +- Registrar a base pesquisada por commit SHA ou release. Nao usar apenas `main` como evidencia. +- Executar baseline antes da mudanca e distinguir falhas preexistentes de regressao. +- Nunca expor `OMNIROUTE_API_KEY` ou qualquer outra credencial em comandos publicados, fixtures, + logs, commits, screenshots, PRs ou issues. +- Nao inserir trailers, assinaturas ou rodapes de IA em commits, PRs ou issues. +- Nao afirmar que uma integracao funciona sem um teste reproduzivel ou uma limitacao explicitamente + registrada. +- Nao inventar fork, branch, commit, PR, issue, CI ou resposta de mantenedor. +- Atualizar `04-tracker-integracoes-clis.md` ao concluir cada fase material. + +## 3. Unidade de trabalho por repositorio + +Cada item `CLI-NNN` deve possuir uma task individual. A task e o pacote de contexto entregue ao +subagente e o registro que permite retomar o trabalho sem repetir ou perder evidencias. + +### 3.1 Cabecalho obrigatorio da task + +```md +# CLI-NNN - - integracao OmniRoute upstream + +- Repositorio canonico: +- Prioridade/lote: +- Estado no catalogo OmniRoute: +- Evidencia inicial: +- Worktree: +- Branch planejada: +- Commit/release pesquisado: — +- Responsavel: +- Estado: researching +``` + +### 3.2 Pesquisa obrigatoria dentro da task + +O subagente deve responder, com links e caminhos de codigo: + +1. Qual e o repositorio canonico, commit/release atual, licenca e nivel de atividade? +2. Contribuicoes de forks externos sao aceitas? Ha CLA, DCO, sign-off ou issue previa obrigatoria? +3. Qual e a arquitetura de providers e qual e o menor ponto de extensao? +4. O cliente usa Chat Completions, Responses, Anthropic Messages, Gemini, ACP, MCP ou protocolo + proprietario? +5. A base URL esperada e raiz, `/v1`, `/v1beta` ou uma URL completa por operacao? +6. O cliente acrescenta algum sufixo automaticamente? Pode duplicar `/v1` ou `/v1beta`? +7. Como a autenticacao e resolvida: variavel de ambiente, arquivo, keyring, OAuth ou header custom? +8. Como os modelos sao definidos ou descobertos? O cliente chama um endpoint de modelos? +9. Streaming, tool calling, reasoning, imagens e cancelamento funcionam pelo caminho escolhido? +10. Ja existe issue, PR, discussao ou documentacao para endpoints customizados ou OmniRoute? +11. Quais comandos oficiais executam install, format, lint, typecheck, build e testes? +12. Qual contribuicao agrega valor real: codigo nominal, compatibilidade generica, docs, issue, + wrapper, MCP/ACP, somente configuracao ou nenhum patch? + +### 3.3 Gate de contribuicao + +Antes de editar, preencher uma decisao: + +| Decisao | Quando usar | Saida esperada | +|---|---|---| +| `pr-provider` | O upstream possui catalogo/presets de providers | Provider/preset OmniRoute, docs e testes | +| `pr-generic` | Falta uma capacidade generica necessaria, como base URL customizavel | Patch generico, docs e teste com OmniRoute | +| `pr-docs` | O codigo ja funciona e o upstream aceita guias de integracao | Guia minimo e validado | +| `issue-first` | Mudanca arquitetural, politica incerta ou mantenedor exige proposta | Issue com evidencia e desenho do patch | +| `config-only` | Tudo funciona por configuracao e um PR seria redundante | Guia no OmniRoute e smoke test | +| `adapter-acp` | ACP e o ponto real de integracao | Adaptador/registro ACP e testes | +| `adapter-mcp` | MCP e o ponto real de integracao | Config/servidor MCP e testes | +| `wrapper` | O projeto apenas lanca outro agente | Wrapper/env forwarding e teste do filho | +| `needs-mitm` | Endpoint fechado ou fixo | Pesquisa/guia MITM separado; sem PR artificial | +| `blocked` | Licenca, politica, build ou protocolo impedem progresso | Evidencia reproduzivel e proximo desbloqueio | + +O gate deve incluir a alternativa rejeitada. Exemplo: `pr-provider` escolhido porque o repositorio +mantem presets nomeados; `pr-docs` rejeitado porque a configuracao exigiria cinco campos internos e +nao seria uma experiencia suportada. + +## 4. Ciclo completo da PR + +### Fase PR-0 - Preparar o contexto + +- Reservar o item no tracker e marcar pesquisa em andamento. +- Confirmar que nenhum outro agente esta trabalhando no mesmo repositorio. +- Resolver o repositorio canonico, fork existente e permissao de contribuicao. +- Criar a task individual com a evidencia inicial marcada como hipotese. +- Criar a worktree isolada somente depois de confirmar o upstream correto. + +### Fase PR-1 - Pesquisar upstream e contribuicoes existentes + +- Ler integralmente as regras do repositorio aplicaveis aos arquivos que podem mudar. +- Mapear provider registry, configuracao, transporte HTTP, auth, modelo, streaming e ferramentas. +- Pesquisar issues/PRs por termos de compatibilidade e pelo nome OmniRoute. +- Registrar commit/release, caminhos e links de evidencia na task. +- Escolher o gate de contribuicao da secao 3.3. + +### Fase PR-2 - Baseline reproduzivel + +- Instalar dependencias de acordo com o upstream. +- Rodar format check, lint, typecheck/build e testes relevantes antes do patch. +- Rodar um smoke test do caminho existente, mesmo que ele falhe por falta da integracao. +- Limpar chaves do ambiente nos testes que validem o comportamento sem credenciais. +- Registrar comando, codigo de saida, testes aprovados e falhas preexistentes. +- Se o projeto nao puder ser construido, tentar o ambiente documentado e registrar o bloqueio; nao + declarar regressao nem compatibilidade com base apenas na leitura do README. + +### Fase PR-3 - Desenhar o menor patch aceitavel + +A ordem de preferencia e: + +1. Reusar a abstracao de provider ja existente. +2. Adicionar metadados/preset antes de criar codigo especial. +3. Reusar cliente OpenAI/Anthropic/Gemini ja presente. +4. Adicionar capacidade generica quando ela beneficiar outros gateways e for coerente com o projeto. +5. Criar executor/adapter dedicado somente quando o protocolo realmente divergir. + +O patch normalmente deve cobrir: + +- identificador e nome de exibicao `omniroute`, se presets nomeados forem aceitos; +- base URL correta e sem dupla concatenacao de versao; +- chave obtida de ambiente ou storage seguro; +- configuracao/descoberta de modelo; +- headers estritamente necessarios; +- streaming e tool calling preservados; +- mensagens de erro sem expor segredo; +- documentacao curta e executavel; +- testes unitarios/integracao alinhados ao padrao upstream. + +Nao adicionar telemetria, dependencia, fluxo de login ou codigo de rede novo quando o provider +generico existente ja resolve o caso. + +### Fase PR-4 - Implementar com teste primeiro + +- Criar teste que demonstre a ausencia do preset, config ou comportamento requerido. +- Confirmar a falha pelo motivo esperado. +- Implementar o menor patch. +- Fazer o teste passar e executar testes adjacentes. +- Refatorar apenas o necessario para manter o padrao do upstream. +- Formatar somente os arquivos tocados, salvo exigencia contraria do repositorio. + +Para PR somente de documentacao, substituir o teste vermelho por uma validacao real dos comandos e +do arquivo de configuracao documentado. Nao sintetizar exemplos que nao foram executados. + +### Fase PR-5 - Validar contra OmniRoute + +Escolher a matriz compativel com o cliente: + +| Superficie | Base inicial esperada | Validacoes minimas | +|---|---|---| +| OpenAI Chat Completions | confirmar se o cliente espera raiz ou `/v1` | chamada simples, stream, tool call, erro de modelo | +| OpenAI Responses | confirmar regra de concatenacao do cliente | resposta simples, stream/eventos, tool call | +| Anthropic Messages | normalmente base antes de `/v1/messages`; confirmar no codigo | mensagem, stream, tools, headers de versao | +| Gemini | normalmente base antes das operacoes `v1beta`; confirmar no codigo | generateContent, streamGenerateContent, tools | +| ACP | endpoint/transport definido pelo protocolo | discovery, sessao, request e cancelamento | +| MCP | stdio, SSE ou Streamable HTTP conforme suporte | inicializacao, listagem e invocacao de ferramenta | + +Registrar no resultado quais linhas da matriz foram executadas, omitidas ou bloqueadas. Um smoke +test simples nao deve ser apresentado como prova de tool calling ou streaming. + +### Fase PR-6 - Revisar o diff antes de publicar + +O agente responsavel faz uma auto-revisao e o agente principal verifica: + +- aderencia a `CONTRIBUTING` e instrucoes locais; +- escopo minimo e ausencia de refactor oportunista; +- testes cobrindo config, URL, auth sem segredo e modelo; +- documentacao consistente com o codigo executado; +- ausencia de arquivos gerados, caches, logs ou credenciais; +- licenca e atribuicao preservadas; +- branch baseada no upstream atual; +- commits pequenos e com mensagem no estilo do projeto; +- ausencia de trailers ou texto de IA; +- `git diff --check` e gates oficiais limpos, ou falhas preexistentes documentadas. + +Uma PR nao deve ser publicada enquanto houver alteracao sem explicacao, teste essencial faltando ou +duvida material sobre a politica do upstream. + +### Fase PR-7 - Preparar a publicacao + +- Confirmar fork e remotes sem sobrescrever branches existentes. +- Atualizar a branch sobre o ponto exigido pelo upstream usando operacao nao destrutiva. +- Enviar a branch ao fork somente depois da revisao. +- Criar PR contra a branch correta do repositorio canonico. +- Se a contribuicao externa estiver bloqueada, abrir issue-first e anexar o commit/patch de + referencia somente quando isso for permitido. +- Registrar URLs reais no tracker imediatamente apos a publicacao. + +Convencoes de branch sugeridas, sujeitas ao padrao de cada upstream: + +- `feat/omniroute-provider` para provider/preset nominal; +- `feat/custom-base-url` para capacidade generica; +- `docs/omniroute-setup` para documentacao validada; +- `fix/custom-endpoint-versioning` para correcao de raiz versus `/v1`/`/v1beta`. + +### Fase PR-8 - Corpo da PR + +Usar o template oficial do repositorio quando existir. Na ausencia de template, adaptar: + +```md +## Why + +Explain the user problem and the existing extension point. Avoid marketing claims. + +## What changed + +- Add or enable the smallest provider/configuration path required. +- Document the verified setup. +- Cover URL, authentication and model selection behavior with tests. + +## Verification + +- `` +- `` +- `` + +## Compatibility notes + +- API surface: `` +- Base URL rule: `` +- Streaming: `` +- Tool calling: `` + +## Scope + +No unrelated refactors or credential changes. +``` + +O titulo deve descrever a mudanca, nao a campanha. Exemplos de formato, sujeitos ao estilo do +upstream: `Add OmniRoute provider preset`, `Support configurable OpenAI-compatible base URLs` ou +`Document OmniRoute as a custom endpoint`. + +### Fase PR-9 - Issue-first ou fallback + +Quando uma PR direta nao for apropriada, a issue deve conter: + +- problema reproduzivel e publico afetado; +- ponto de extensao encontrado no codigo; +- proposta minima; +- compatibilidade esperada e protocolo; +- evidencia de teste ou prototipo; +- pergunta objetiva ao mantenedor; +- link para patch de referencia apenas se permitido. + +Nao abrir simultaneamente issue e PR sem necessidade. Se o template exigir issue previa, esperar a +decisao ou seguir a politica declarada. + +### Fase PR-10 - Acompanhar ate a decisao + +Depois da publicacao: + +- observar CI e checks obrigatorios; +- responder perguntas tecnicas com evidencia; +- corrigir somente o escopo da contribuicao ou pedidos claros do mantenedor; +- reexecutar testes depois de cada mudanca; +- registrar novos commits, revisoes e estado no tracker; +- marcar `accepted` somente depois de merge/aceite comprovado; +- marcar `rejected` com o motivo fornecido pelo upstream; +- se a PR ficar inativa, registrar `awaiting-maintainer`, sem declarar abandono prematuramente; +- manter o guia/catalogo OmniRoute coerente com o estado real do upstream. + +O acompanhamento pode usar a skill `babysit` individualmente para uma PR aberta. Como essa skill +acompanha uma unica PR, nunca agrupar tres PRs em uma mesma execucao dela. + +### Fase PR-11 - Fechar a task + +Uma task individual termina com: + +- pesquisa fresca e gate registrados; +- diff, configuracao ou bloqueio documentado; +- baseline e validacao final comparados; +- branch/commit reais, quando criados; +- PR/issue reais, quando publicados; +- status no catalogo OmniRoute; +- limitacoes e proximo passo; +- linha correspondente no tracker atualizada. + +## 5. Estrategia de paralelizacao + +### 5.1 Papeis por lote + +- **Subagente A:** primeiro repositorio do lote; dono exclusivo da worktree e do diff upstream. +- **Subagente B:** segundo repositorio do lote; dono exclusivo da worktree e do diff upstream. +- **Subagente C:** terceiro repositorio do lote; dono exclusivo da worktree e do diff upstream. +- **Agente principal:** coordena o tracker, revisa gates/diffs, impede duplicacao e autoriza a + publicacao depois das evidencias. + +Todos os agentes devem ser avisados de que nao estao sozinhos no workspace e nao podem reverter ou +sobrescrever mudancas de outros agentes. + +### 5.2 Barreira do lote + +O lote seguinte pode comecar quando os tres itens atuais tiverem, no minimo: + +1. commit/release upstream pesquisado; +2. gate de contribuicao definido; +3. baseline registrado; +4. patch validado, configuracao comprovada ou bloqueio reproduzivel; +5. decisao de publicacao tomada; +6. tracker atualizado. + +A espera por resposta de mantenedor nao bloqueia o lote seguinte. Depois de uma PR/issue publicada, +o item passa para acompanhamento e libera o slot de implementacao. + +### 5.3 Limite de trabalho em progresso + +- No maximo tres pesquisas/implementacoes ativas. +- Publicacoes aguardando mantenedor nao contam como slot de implementacao, mas ficam no tracker. +- No maximo uma task ativa por repositorio, inclusive forks ou variantes do mesmo upstream. +- Se dois itens resolverem o mesmo repositorio, consolidar a pesquisa e decidir se ha uma ou duas + contribuicoes antes de abrir branches. + +## 6. Fila de publicacao + +A ordem detalhada continua sendo a do `03-plano-integracao-em-lotes.md`. Esta secao define o objetivo +de publicacao de cada onda; a pesquisa individual pode promover, rebaixar ou mudar o tipo de +contribuicao. + +### Onda 0 - referencia e infraestrutura da campanha + +- `CLI-000` jcode: acompanhar issue upstream e PR de referencia; concluir a secao prometida no + README do OmniRoute. +- Preparar o modelo de task individual e aplicar o mesmo tracker a todos os novos repositorios. + +### Onda 1 - P0.1 a P0.5 + +- `CLI-001` Gemini CLI: confirmar se o endpoint Gemini customizado pede apenas docs/config ou um + preset nominal. +- `CLI-002` Claw Code: confirmar provider OpenAI-compatible e propor preset/docs minimos. +- `CLI-003` Plandex: confirmar o registro de providers customizados e propor provider/preset. +- `CLI-004` MiMo Code: confirmar o adapter OpenAI-compatible e propor configuracao/provider. +- `CLI-005` Trae Agent: confirmar `model_providers` e propor entrada OmniRoute/documentacao. +- `CLI-006` Kimi CLI: escolher uma superficie suportada e evitar um patch que misture tres + protocolos sem testes. +- `CLI-007` Every Code: reutilizar a arquitetura herdada do Codex quando ainda aplicavel. +- `CLI-008` Open Codex: confirmar upstream canonico e propor provider multi-modelo. +- `CLI-009` VT Code: validar provider customizado, modelo e failover. +- `CLI-010` OpenHands CLI: verificar se `LLM_BASE_URL` torna o caso docs/config-only. +- `CLI-011` gptme: verificar se `OPENAI_BASE_URL` torna o caso docs/config-only. +- `CLI-012` Nanocoder: confirmar compatibilidade de tool calling e decidir preset versus docs. +- `CLI-013` RA.Aid: verificar se `OPENAI_API_BASE` torna o caso docs/config-only. +- `CLI-014` CoreCoder: verificar se `OPENAI_BASE_URL` torna o caso docs/config-only. +- `CLI-015` Grok CLI: confirmar se o endpoint e genericamente configuravel ou preso ao protocolo + Grok antes de propor patch. + +### Onda 2 - P1.1 a P1.9 + +- `CLI-016` Gitlawb Zero: provider custom/flag; preferir docs ou preset pequeno. +- `CLI-017` DeepSeek Reasonix: confirmar repositorio, atividade e endpoint antes de qualquer PR. +- `CLI-018` KlaatCode: integrar via `customModels` ou preset se o catalogo aceitar nomes. +- `CLI-019` CodeMini CLI: validar `gateway.base_url` e sua regra de versao. +- `CLI-020` Zot: validar `--base-url` e `models.json`; docs-first se ja suficiente. +- `CLI-021` Octomind: confirmar variaveis de URL por provider e propor configuracao minima. +- `CLI-022` DvalinCode: confirmar o cliente OpenAI-compatible e testes disponiveis. +- `CLI-023` Coro Code: confirmar `OPENAI_BASE_URL`; docs-first se nao houver lacuna de codigo. +- `CLI-024` Mini-Kode: confirmar `MINIKODE_BASE_URL`; docs-first se nao houver lacuna de codigo. +- `CLI-025` Late CLI: testar ambiente e flag `api-url`; corrigir precedencia apenas se necessario. +- `CLI-026` Agentty: escolher entre provider direto e ACP conforme a arquitetura atual. +- `CLI-027` Aizen: validar `AIZEN_BASE_URL` e propor docs/preset. +- `CLI-028` Clif-Code: selecionar um unico protocolo principal para a primeira contribuicao. +- `CLI-029` Minacode: pesquisa confirmatoria antes de definir o tipo de PR. +- `CLI-030` YottaCode: confirmar gateway/provider e selecao de modelo. +- `CLI-031` aichat: integrar via configuracao de modelos ou provider nominal, conforme a politica. +- `CLI-032` ShellGPT: validar `API_BASE_URL` e decidir docs/config-only. +- `CLI-033` Mistral Vibe: confirmar base URL customizada e separar suporte generico de marca. +- `CLI-034` OpenSquilla: localizar o registro de gateways e propor provider/preset. +- `CLI-035` Kode CLI: escolher OpenAI, Anthropic ou Gemini com base na implementacao mais nativa. +- `CLI-036` Neovate Code: preferir plugin/provider oficial ao patch no core, se existir. +- `CLI-037` Deep Agents Code: contribuir no pacote CLI/provider correto, nao apenas no SDK generico. +- `CLI-038` OpenHands principal: evitar duplicar `CLI-010`; consolidar se ambos apontarem para o + mesmo mecanismo e upstream. +- `CLI-039` SWE-agent: confirmar backend de modelos e interface publica suportada. +- `CLI-040` AutoCodeRover: confirmar backend e propor config/provider minimo. +- `CLI-041` Claurst: revisar GPL e politica antes de redistribuir qualquer adaptacao. +- `CLI-042` Codebuff: confirmar se o provider e extensivel e se contribuicoes externas sao aceitas. + +### Onda 3 - P2.1 a P2.11 + +- `CLI-043` Devon, `CLI-044` Letta Code e `CLI-045` CodeMachine CLI: pesquisar backend real; + revisar a entrada local ja existente de Letta antes de nova PR. +- `CLI-046` Groq Code CLI, `CLI-047` Dexto e `CLI-048` claw-code-agent: confirmar endpoints, + protocolos e maturidade antes do patch. +- `CLI-049` g3, `CLI-050` San e `CLI-051` Waveloom: localizar a abstracao de provider e preferir + implementacao generica. +- `CLI-052` picocode, `CLI-053` QQCode e `CLI-054` Keen Code: validar configuracao multi-modelo e + documentar o caminho minimo. +- `CLI-055` Grinta, `CLI-056` Zap e `CLI-057` Binharic: escolher o provider compativel com melhor + cobertura de streaming/tools. +- `CLI-058` Darce, `CLI-059` CLAII e `CLI-060` nori-cli: separar integracao de modelo de MCP e de + codigo herdado do Codex. + +Resultado P2.6: + +- `CLI-058` Darce: `config-only`, sem PR necessária; usar `DARCE_API_BASE` na raiz e `DARCE_MODEL`. +- `CLI-059` CLAII: patch genérico local validado, mas publicação bloqueada pela declaração upstream + `All Rights Reserved`/ausência de licença OSS; só reconsiderar com autorização jurídica explícita. +- `CLI-060` nori-cli: `config-only` via agente ACP customizado OpenCode; não alterar backend Codex; + MCP deve ser configurado uma vez, em Nori ou OpenCode, para evitar duplicação de tools. +- `CLI-061` cursor-agent clone, `CLI-062` Free Code e `CLI-063` Claude Engineer: revisar origem, + licenca e politica do fork antes de publicar. + +Lote P2.7 reservado em 2026-08-02, na branch-base local `release/v3.8.50` em +`35405be6020696a7c66158ea7a25f06d61ff88ff`. Os três upstreams foram clonados em worktrees +separadas, indexados e delegados. Nenhuma publicação está autorizada; patches só podem surgir após +prova RED→GREEN e permanecem sem commit até revisão central. + +Resultado P2.7: + +- `CLI-061` cursor-agent clone: `config-only`; OpenAI usa base com `/v1`, Anthropic usa raiz sem + `/v1`; tools/tool-result foram comprovados nos dois protocolos. O factory rejeita `auto` puro, + mas isso não impede uso com modelos reconhecíveis ou classes diretas. Sem PR. +- `CLI-062` Free Code: `config-only` com `ANTHROPIC_BASE_URL` na raiz e `model=auto`; stream, + tools/tool-result e MCP nativo foram comprovados. O repo canônico agora é `freecodexyz/free-code`, + mas não há licença e o README atribui o código à Anthropic; publicação bloqueada. +- `CLI-063` Claude Engineer: endpoint/chave funcionam como `config-only` com modelo fixo. A lacuna + de `ANTHROPIC_MODEL` já está coberta pela PR #250; não criar patch concorrente. Arquivo de licença + segue ausente apesar da issue #116, portanto publicação permanece bloqueada. +- `CLI-064` Smol Developer, `CLI-065` Agentless e `CLI-066` Amazon Q Developer CLI: decidir entre + SDK/adaptador, config de modelo ou bloqueio por autenticacao. + +Lote P2.8 iniciado em 2026-08-02 na branch-base local `release/v3.8.50`, SHA +`35405be6020696a7c66158ea7a25f06d61ff88ff`, com clones limpos e separados. Smol Developer será +testado primeiro como integração do SDK OpenAI legado; Agentless será avaliado por backend +OpenAI/Anthropic/DeepSeek; Amazon Q Developer CLI será tratado como protocolo AWS próprio, com MCP +avaliado separadamente. Não criar adaptador grande para Amazon Q nem qualquer publicação antes de +issue-first/coordenação exigida por `CONTRIBUTING.md`. Estado inicial: nenhum commit, fork, push, +PR, issue ou Discussion. + +Resultado P2.8: + +- `CLI-064` Smol Developer: `config-only`; `OPENAI_API_BASE` com `/v1` e `model=auto` passaram no + CLI, biblioteca e Agent Protocol histórico. Não há lacuna provider-specific e a PR #134 já cobre + uma expansão LiteLLM. Sem publicação. +- `CLI-065` Agentless: `config-only` pelo backend OpenAI, incluindo embeddings. Anthropic normal + também funciona; cache/tools exige SDK histórico e DeepSeek possui host fixo, mas essas melhorias + não são necessárias para integrar o projeto e propostas LiteLLM anteriores foram fechadas. Sem + publicação. +- `CLI-066` Amazon Q Developer CLI: MCP stdio é a integração direta; o backend de modelo fala AWS + JSON/EventStream e precisa de wrapper/backend novo. O upstream está em manutenção crítica e exige + issue-first; não preparar PR nominal ou adaptador surpresa. Sem publicação. + +Estado final P2.8: commits `0`, pushes `0`, forks `0`, PRs `0`, issues `0`, Discussions `0`. +Próxima fila: P2.9 (`CLI-067` nanobot, `CLI-068` ZeroClaw, `CLI-069` NanoClaw), usando no máximo +três worktrees/agentes e repetindo a pesquisa individual antes de qualquer patch. + +Lote P2.9 iniciado em 2026-08-03 sobre a branch-base local `release/v3.8.50`, SHA +`84b1e5e12f238269e698f400766230f985f4a07b`. O checkout principal já continha uma alteração do +operador em `CLAUDE.md`, preservada fora do escopo. As worktrees foram recriadas e os upstreams +foram clonados nos HEADs `44b7e1bf4` (nanobot), `4770420ab` (ZeroClaw) e `dfac7e0af` (NanoClaw). +Os três índices Codebase Memory moderate estão ready, sem skipped, e a pesquisa foi delegada a um +agente por repositório. Nenhuma publicação está autorizada; o estado inicial continua: commits `0`, +pushes `0`, forks `0`, PRs `0`, issues `0`, Discussions `0`. + +- `CLI-067` nanobot, `CLI-068` ZeroClaw e `CLI-069` NanoClaw: validar providers OpenClaw/Anthropic + e evitar assumir que todos aceitam a mesma base URL. + +Resultado P2.9: + +- `CLI-067` nanobot: `config-only` pelo provider dinâmico OpenAI-compatible. A base correta inclui + `/api/v1`; `omniroute/auto` seleciona o provider custom e envia `auto` no wire. Chat, SSE, tools, + reasoning, usage, imagens, discovery e retry foram validados. Sem publicação upstream. +- `CLI-068` ZeroClaw: `config-only` pela família `custom`, com `uri=/v1`, modelo `auto`, wire Chat e + `native_tools=true`. Responses é opt-in. Suite de provider, config, fmt e smoke HTTP passaram. + Sem provider nominal ou publicação upstream. +- `CLI-069` NanoClaw: `config-only` pelo provider Claude existente, apontando a raiz Anthropic do + OmniRoute sem `/v1/messages` e usando OneCLI para a credencial. Codex e OpenCode têm bloqueios + upstream reproduzidos (#3155/#1984/#2985) e ficam fora do caminho de produção atual. + +Estado final P2.9: commits `0`, pushes `0`, forks `0`, PRs `0`, issues `0`, Discussions `0`. +Progresso da pesquisa: `70/104` (`67,3%`); pendentes: `34/104` (`32,7%`). Próxima fila: P2.10 +(`CLI-070` PicoClaw, `CLI-071` IronClaw, `CLI-072` NullClaw). +- `CLI-070` PicoClaw, `CLI-071` IronClaw e `CLI-072` NullClaw: localizar traits/registries e propor + um provider pequeno com testes. +- `CLI-073` Moltis, `CLI-074` GitClaw e `CLI-075` LionClaw: confirmar atividade, provider e comandos + de validacao antes da publicacao. + +### Onda 4 - P3, integracoes indiretas + +- `CLI-076`, `CLI-077`, `CLI-078`, `CLI-079`, `CLI-080` e `CLI-081`: pesquisar forwarding de + ambiente/configuracao para os agentes filhos; + publicar wrapper ou docs somente quando houver um ponto de extensao real. +- `CLI-082`, `CLI-083`, `CLI-084`, `CLI-085`, `CLI-086`, `CLI-087`, `CLI-088`, `CLI-089` e + `CLI-090`: escolher ACP, MCP, launcher ou integracao do agente filho; nao apresentar uma + integracao de orquestrador como provider de modelo. +- `CLI-091` e `CLI-092`: tratar como interoperabilidade entre proxies; documentar loops, headers, + auth e riscos antes de propor codigo. +- `CLI-093` e `CLI-094`: integrar como broker/ferramenta MCP somente se isso estiver no escopo dos + projetos. +- `CLI-095` e `CLI-096`: configurar o agente filho e revisar a entrada existente de Agent Deck. + +### Onda 5 - P4, fechados, EULA e MITM + +- `CLI-097` Pool: confirmar o que a EULA permite; priorizar configuracao local e nao presumir PR. +- `CLI-098` Junie CLI: pesquisar canal oficial de feedback; sem repositorio publico confirmado, nao + existe fila de PR. +- `CLI-099` Cursor desktop, `CLI-100` Windsurf, `CLI-101` Amp, `CLI-102` Amazon Q/Kiro CLI e + `CLI-103` Cowork: tratar como MITM, configuracao de produto ou pedido oficial de feature. So mover + para PR se um repositorio publico e uma politica de contribuicao forem comprovados. + +## 7. Prompt operacional para cada subagente + +O agente principal deve adaptar e enviar este prompt para cada item: + +```text +Voce e responsavel exclusivamente por CLI-NNN - no repositorio . +Voce nao esta sozinho no workspace: nao reverta, sobrescreva ou reorganize mudancas de outros +agentes. Trabalhe somente na worktree isolada atribuida dentro de .claude/worktrees/ e nunca use +git stash/pop. + +Primeiro pesquise o upstream atual. Leia README, CONTRIBUTING, licenca, templates e instrucoes locais. +Registre commit/release, arquitetura de providers, config/base URL, protocolo, auth, modelos, +streaming, tool calling, issues/PRs existentes e comandos oficiais de build/test. A evidencia inicial +do relatorio e uma hipotese, nao uma conclusao. + +Antes de editar, classifique o caso como pr-provider, pr-generic, pr-docs, issue-first, config-only, +adapter-acp, adapter-mcp, wrapper, needs-mitm ou blocked, com justificativa. Execute o baseline e +registre falhas preexistentes. Se houver patch, trabalhe com teste primeiro e implemente somente a +menor integracao coerente com o upstream. Confirme raiz versus /v1 versus /v1beta, autenticacao, +modelo, streaming e tool calling conforme aplicavel. + +Nao publique nada antes da revisao do agente principal. Entregue: pesquisa com links/caminhos, +gate, baseline, diff, testes, smoke test sanitizado, riscos, branch/commit local se criados e a +atualizacao proposta para 04-tracker-integracoes-clis.md. Nao invente dados e nao exponha chaves. +``` + +## 8. Checklist de autorizacao para enviar uma PR + +O agente principal somente autoriza a publicacao quando todas as respostas forem `sim` ou houver +uma excecao registrada: + +- [ ] O repositorio canonico e a branch-alvo foram confirmados. +- [ ] A politica aceita o tipo de contribuicao planejado. +- [ ] Issues/PRs duplicadas foram pesquisadas. +- [ ] O commit/release de base esta registrado. +- [ ] O gate de contribuicao esta justificado. +- [ ] O baseline foi executado e falhas preexistentes estao separadas. +- [ ] O patch e o menor necessario e segue a arquitetura upstream. +- [ ] A base URL e sua regra de versao foram verificadas no codigo e em runtime. +- [ ] Auth/modelos foram testados sem vazar segredo. +- [ ] Streaming/tool calling foram testados ou marcados explicitamente como nao aplicaveis. +- [ ] Testes, lint, format, typecheck/build relevantes foram executados. +- [ ] A documentacao foi executada e corresponde ao codigo. +- [ ] O diff nao contem caches, builds, logs, credenciais ou refactors sem relacao. +- [ ] O titulo e o corpo seguem o template upstream e nao contêm marketing ou texto de IA. +- [ ] O tracker esta pronto para receber branch, commit e URL reais. + +## 9. Campos adicionais recomendados no tracker + +O tracker atual deve continuar como fonte principal. Durante a execucao, registrar nas observacoes ou +em uma nota individual: + +- commit/release pesquisado; +- decisao `pr-provider`, `pr-generic`, `pr-docs`, `issue-first`, `config-only`, adapter, wrapper, + MITM ou bloqueio; +- protocolo e regra da base URL; +- comandos de baseline e resultado; +- comandos finais e resultado; +- smoke tests realizados; +- arquivos modificados; +- fork, branch e commit; +- PR/issue e estado de CI/review; +- limitacoes e proximo passo. + +Campos ainda nao comprovados permanecem `—`. + +## 10. Inicio recomendado + +O primeiro ciclo de publicacao deve usar o lote P0.1: + +1. `CLI-001` - Gemini CLI (`google-gemini/gemini-cli`) +2. `CLI-002` - Claw Code (`ultraworkers/claw-code`) +3. `CLI-003` - Plandex (`plandex-ai/plandex`) + +Os tres subagentes fazem pesquisa fresca e implementacao em paralelo, mas nenhuma PR e enviada antes +da revisao individual do agente principal. Ao publicar ou concluir config-only/bloqueio, atualizar o +tracker e liberar os mesmos tres slots para o lote P0.2. + +## Lote P2.10 iniciado em 2026-08-03 + +Base local: `release/v3.8.50` em `84b1e5e12f238269e698f400766230f985f4a07b`. Worktrees isoladas e um agente por upstream foram criadas para `CLI-070` PicoClaw, `CLI-071` IronClaw e `CLI-072` NullClaw. Nenhuma publicação está autorizada; os agentes devem pesquisar o HEAD atual, provar `config-only` ou RED→GREEN e registrar governança, gates, smoke e estado limpo. + +Resultado P2.10: + +- `CLI-070` PicoClaw: `config-only`, `openai/auto` com base `/api/v1`; Chat/SSE/tools/usage/images/discovery. Go ausente impediu execução local; monitorar #3298, sem PR. +- `CLI-071` IronClaw: `config-only`, `openai_compatible` com `/api/v1` e `auto`; 889 testes do crate LLM, 5 de resolução e fmt passaram. Sem PR; reasoning proprietário segue limitado por #3673. +- `CLI-072` NullClaw: `config-only`, provider custom com Chat Completions recomendado e Responses/Anthropic como alternativas. Zig ausente; CI do mesmo HEAD verde. Sem PR. + +Estado final P2.10: commits `0`, pushes `0`, forks `0`, PRs `0`, issues `0`, Discussions `0`. +Pesquisa acumulada: `73/104` (`70,2%`); pendentes: `31/104` (`29,8%`). Próxima fila: P2.11 (`CLI-073` Moltis, `CLI-074` GitClaw, `CLI-075` LionClaw). + +Resultado P3.1: + +- `CLI-076` VibePod: `config-only` pelo agente Claude Code com raiz Anthropic `/api`; wrapper injeta env no container. Codex sem chave automática permanece não comprovado. +- `CLI-077` zeroshot: `config-only` pelo gateway OpenAI `/api/v1`; 22 testes focados verdes; limitações de streaming JSON, reasoning e MCP registradas. +- `CLI-078` Fractal: `config-only` por Codex Responses em `CODEX_HOME` por node; servidores tmux quentes podem perder `OMNIROUTE_API_KEY`, recomendando fix genérico upstream. + +Estado final P3.1: commits `0`, pushes `0`, forks `0`, PRs `0`, issues `0`, Discussions `0`. Pesquisa acumulada: `79/104` (`76,0%`); pendentes: `25/104` (`24,0%`). + +Resultado P3.2: Bernstein `config-only` por openai_agents; Traycer `config-only` indireto pelo harness OpenCode; h5i `patch-required` porque auth proxy/egress são fixados em OpenAI. Nenhuma publicação externa. Pesquisa acumulada `82/104` (`78,8%`), pendentes `22/104` (`21,2%`). + +Resultado P2.11: + +- `CLI-073` Moltis: `config-only`, provider `custom-omniroute`, `/api/v1`, `auto`, Chat/SSE/tools e capacidades multimodais. 401 testes e fmt passaram. Sem publicação. +- `CLI-074` GitClaw/GitAgent: `config-only`, loader OpenAI-compatible com `GITAGENT_MODEL_BASE_URL`, `OPENAI_API_KEY` e `omniroute:auto`. Build, 65 testes e smoke passaram. Sem publicação. +- `CLI-075` LionClaw: `patch-required`/`issue-first`. O runtime Codex confinado não recebe `config.toml`/provider secret; preparar proposta genérica alinhada à [#157](https://github.com/moshthepitt/lionclaw/issues/157), sem PR até revisão do mantenedor. + +Estado final P2.11: commits `0`, pushes `0`, forks `0`, PRs `0`, issues `0`, Discussions `0`. Pesquisa acumulada: `76/104` (`73,1%`); pendentes: `28/104` (`26,9%`). +Resultado P3.3: OMK `viable-mcp`; kodo `config-only` indireto; ORCH `needs-wrapper`. Pesquisa acumulada `85/104` (`81,7%`), pendentes `19/104` (`18,3%`). Nenhuma publicação externa. + +Resultado P3.4: LoopTroop `config-only` indireto via provider OpenCode; Galley `patch-required` por não possuir transport OpenAI-compatible configurável; Relay `config-only` via provider profile/Codex, condicionado a smoke da Responses API e controles sobre ferramentas nativas. Nenhuma publicação externa. Pesquisa acumulada `88/104` (`84,6%`), pendentes `16/104` (`15,4%`). + +Resultado P3.5: SageCLI `config-only` indireto via Codex, com caveat de env plaintext; 5dive `patch-required` por mapas fechados de provider/base; agx `config-only` indireto via Codex e com gates de Responses/sandbox. Pesquisa acumulada `91/104` (`87,5%`), pendentes `13/104` (`12,5%`). Nenhuma publicação externa. + +Resultado P3.6: claude-code-router, cc-router e OneCLI são config-only; os dois primeiros oferecem endpoints custom OpenAI-compatible e OneCLI injeta credenciais por proxy MITM. Pesquisa acumulada `94/104` (`90,4%`), pendentes `10/104` (`9,6%`). Nenhuma publicação externa. + +Resultado P3.7: agent-browser `config-only` direto por Chat Completions; OpenWork `config-only` via OpenCode custom; Agent Deck `config-only` via CLIs filhos. Pesquisa acumulada `97/104` (`93,3%`), pendentes `7/104` (`6,7%`). Nenhuma publicação externa. + +Resultado P4.1: Pool e Junie são `config-only` OpenAI-compatible; Cursor é `config-only` limitado ao BYO chat panel, sem MITM/protocolo privado. Pesquisa acumulada `100/104` (`96,2%`), pendentes `4/104` (`3,8%`). Nenhuma publicação externa. + +Resultado P4.2: Windsurf está bloqueado para inferência e permite apenas MCP; Amp depende de confirmação Enterprise; Amazon Q legado requer patch substancial e Kiro atual é MCP-only seguro. Pesquisa acumulada `103/104` (`99,0%`), pendente `1/104` (`1,0%`). Nenhuma publicação externa. + +Resultado P4.3: Cowork não permite substituir oficialmente a inferência; Custom Connector MCP remoto é o único caminho suportado e permanece separado do modelo. Pesquisa concluída `104/104` (`100%`), pendentes `0/104` (`0%`). Nenhuma publicação externa nesta fase de pesquisa. diff --git a/_references/_sistemas_cli/06-relatorio-final-104-clis-e-estrategia-prs.md b/_references/_sistemas_cli/06-relatorio-final-104-clis-e-estrategia-prs.md new file mode 100644 index 0000000000..e1929db328 --- /dev/null +++ b/_references/_sistemas_cli/06-relatorio-final-104-clis-e-estrategia-prs.md @@ -0,0 +1,131 @@ +# Relatório final — campanha de 104 integrações CLI OmniRoute + +**Data de fechamento:** 2026-08-03 +**Escopo:** `CLI-000` a `CLI-103` +**Resultado:** `104/104` pesquisados (`100%`), `0` pendentes de pesquisa. + +## Como consultar o resultado individual + +O documento autoritativo, com uma linha para cada caso, é o [tracker completo](./04-tracker-integracoes-clis.md). Ele contém para cada ID: + +- prioridade; +- projeto e repositório; +- classificação de integração; +- estado de contribuição upstream; +- branch e commit quando existentes; +- URL de PR e/ou issue quando publicados; +- estado no catálogo OmniRoute; +- observações, limitações, testes e próximo passo. + +Além do tracker, existem fichas técnicas individuais em `_tasks/cli-integrations/`. A cobertura foi auditada e agora há uma ficha para cada ID `CLI-000`–`CLI-103`; o caso `CLI-000` jcode foi adicionado como ficha de referência nesta revisão. + +## Resumo quantitativo + +| Grupo operacional | Quantidade | Tratamento | +|---|---:|---| +| Configuração direta ou indireta | 76 | Documentar receita, validar smoke e só abrir PR se houver melhoria upstream real | +| Contribuição upstream (PR/issue/docs/patch) | 17 | Preparar diff mínimo, validar, revisar e publicar conforme política do repositório | +| Patch obrigatório | 4 | Implementar genericamente, com RED→GREEN/TDD e revisão do mantenedor | +| Bloqueados/fechados | 4 | Registrar bloqueio; usar apenas MCP ou canal oficial, sem MITM | +| MCP/wrapper/ACP como caminho principal | 2 | Integrar a camada de ferramentas/orquestração, sem falsificar provider de inferência | +| Outros casos híbridos | 1 | Seguir a combinação específica descrita no tracker | + +Os números são derivados do campo `Tipo` do tracker; categorias podem se sobrepor em casos híbridos. Atualmente há **7 PRs reais** e **9 issues reais** registrados no tracker, além de cinco entradas locais marcadas como integradas ao catálogo OmniRoute. Nenhum link foi inventado para os 97 casos sem publicação externa. + +## O que foi feito na campanha + +1. Inventário inicial e busca extensa de CLIs, runtimes, harnesses e control-planes. +2. Priorização P0–P4 considerando compatibilidade de protocolo, adoção, licença, maturidade e risco. +3. Pesquisa fresca, uma a uma, em worktrees isoladas, em lotes de no máximo três agentes. +4. Uso de Codebase Memory para índices upstream e verificação de cobertura; faixas parciais foram lidas diretamente quando aplicável. +5. Classificação por configuração, patch, PR documental, issue-first, MCP, wrapper ou bloqueio. +6. Registro de comandos, base URL, autenticação, modelos, streaming, tools, reasoning, imagens, MCP/ACP/A2A, testes e limitações. +7. Consolidação de cada lote com commit separado no OmniRoute e no repositório `_tasks`. +8. Atualização final do tracker, plano de integração, plano de publicação e handoff. +9. Nenhuma credencial real, publicação externa ou técnica de interceptação não autorizada foi utilizada. + +## Estratégia para abrir PRs em 100% dos casos + +“Abrir PR para 100%” deve ser interpretado como **dar um destino upstream apropriado a 100% dos casos**, e não criar 104 PRs artificiais. Há quatro trilhas: + +### Trilha A — PR de código ou documentação + +Aplicar aos casos `viable-upstream`, `pr-generic`, `pr-docs`, `patch-required` e híbridos que tenham superfície pública e política de contribuição compatível. + +Processo por caso: + +1. Reconfirmar HEAD, licença, branch default, política de contribuição e duplicatas. +2. Criar worktree/branch baseada na versão local vigente. +3. Executar baseline upstream e registrar falhas preexistentes. +4. Escrever teste RED que demonstre a lacuna. +5. Implementar o menor patch genérico possível — preferir `openai-compatible`, `base_url` ou provider abstrato a um provider nominal OmniRoute. +6. Executar GREEN: testes focados, suite upstream, lint, format, typecheck/build e smoke com fake server ou OmniRoute local usando placeholder. +7. Revisar segurança: nenhuma chave em argv, logs, fixtures, URL ou artefato; erros sanitizados; streaming/tools/cancelamento cobertos. +8. Abrir PR somente se contribuições externas forem aceitas. O corpo deve explicar problema, solução genérica, compatibilidade, testes, limitações e não conter marketing/texto de IA. +9. Se o repositório bloquear fork/PR ou pedir discussão prévia, abrir issue de proposta com o mesmo patch/reprodução, sem enviar PR prematuramente. +10. Atualizar tracker com branch, commit, URL, CI, revisão e resposta do mantenedor; acompanhar até `accepted`, `merged`, `rejected` ou `awaiting-maintainer`. + +### Trilha B — Issue-first, discussão ou suporte ao mantenedor + +Aplicar quando a arquitetura é adequada, mas há bloqueio de governança, firewall, CLA, fork fechado, dúvida de protocolo ou necessidade de decisão do autor. A issue deve conter: + +- caso de uso OmniRoute; +- configuração atualmente possível; +- lacuna reproduzível; +- proposta genérica; +- impacto de segurança; +- testes/fake server; +- disposição para enviar PR após aprovação. + +Não abrir uma PR paralela enquanto a política exigir issue-first. + +### Trilha C — Config-only documentado + +Aplicar aos casos em que o upstream já suporta a integração e uma mudança de código seria redundante. O entregável é: + +- ficha individual; +- receita validada; +- smoke test e limitações; +- eventual documentação externa/local do OmniRoute; +- issue somente se houver pedido de documentação ou descoberta de bug real. + +Não criar provider nominal ou PR apenas para adicionar a palavra “OmniRoute”. + +### Trilha D — MCP, wrapper ou bloqueio seguro + +Aplicar a control-planes, produtos fechados e CLIs sem rota de inferência substituível. O resultado pode ser: + +- MCP remoto/stdio do OmniRoute; +- wrapper local claramente identificado como wrapper; +- solicitação oficial de custom provider; +- registro de bloqueio e gate legal/ToS. + +Nunca mascarar OmniRoute como Claude/Codex, falsificar executável, interceptar TLS ou reutilizar tokens privados para fabricar uma PR upstream. + +## Ordem recomendada de execução + +1. **Primeiro:** PRs e issues já preparadas ou com alto retorno e baixo risco — jcode, Gemini CLI, Claw Code, Plandex, Trae Agent, Every Code, VT Code e CoreCoder. +2. **Segundo:** patches genéricos com boa superfície OSS — AutoCodeRover, Galley, 5dive e demais casos `pr-generic`/`patch-required`. +3. **Terceiro:** issues aguardando decisão — Open Codex, Kimi CLI, Devon, g3, Free Code, Claude Engineer e casos com `awaiting-maintainer`. +4. **Quarto:** documentação e receitas config-only agrupadas por ecossistema — OpenCode, Codex, LiteLLM, AI SDK, OpenAI-compatible e Anthropic-compatible. +5. **Quinto:** MCP/plugins para produtos fechados — Windsurf, Amp, Kiro, Cowork e Cursor, sempre pela superfície oficial. + +Cada rodada deve manter no máximo três agentes ativos. O agente principal revisa o resultado do trio antes de liberar o próximo. + +## Critério de encerramento por caso + +Um caso só pode ser marcado como finalizado quando possui: pesquisa, classificação, evidência de protocolo, baseline ou limitação reproduzível, receita/patch/bloqueio, validação proporcional, estado de publicação e próximo passo. Para produtos fechados, `blocked-closed` ou `MCP-only` é um resultado válido e preferível a uma PR não autorizada. + +## Estado de publicação atual + +Os únicos links de publicação comprovados devem continuar sendo os registrados no tracker. O fato de existir uma branch local de pesquisa não significa que exista PR upstream. A matriz de verdade é: + +- PR/issue preenchida: publicação real; +- campo `—`: nenhuma publicação externa comprovada; +- `not-applicable`: configuração ou bloqueio sem contribuição upstream; +- `awaiting-maintainer`: contato feito, aguardando decisão; +- `published-pr`/`published-issue`: URL real presente no tracker. + +## Próxima fase + +A pesquisa está encerrada. A próxima fase é execução controlada da Trilha A/B/C/D, começando pelos casos com maior retorno e menor risco, com revisão central antes de qualquer push, PR, issue ou contato externo. diff --git a/bin/cli/commands/doctor.mjs b/bin/cli/commands/doctor.mjs index 087101b50d..bf7ba10b59 100644 --- a/bin/cli/commands/doctor.mjs +++ b/bin/cli/commands/doctor.mjs @@ -299,6 +299,15 @@ async function checkNativeBinary(rootDir) { "Release", "better_sqlite3.node" ), + path.join( + rootDir, + "dist", + "node_modules", + "better-sqlite3", + "build", + "Release", + "better_sqlite3.node" + ), path.join(rootDir, "node_modules", "better-sqlite3", "build", "Release", "better_sqlite3.node"), ]; const binaryPath = candidates.find((candidate) => fs.existsSync(candidate)); @@ -395,7 +404,10 @@ async function checkServerLiveness(options = {}) { // First attempt: configured health endpoint (may require auth token). const primary = await probeUrl(url); if (primary.ok) { - return ok("Server liveness", "Server health endpoint is reachable", { url, status: primary.status }); + return ok("Server liveness", "Server health endpoint is reachable", { + url, + status: primary.status, + }); } // #6162: /api/health and /api/health/degradation require a management token. @@ -426,7 +438,12 @@ async function checkServerLiveness(options = {}) { return ok( "Server liveness", `Server reachable (health endpoint returned ${primary.status}, likely requires MANAGEMENT_TOKEN)`, - { primaryUrl: url, primaryStatus: primary.status, fallbackUrl, fallbackStatus: fallback.status } + { + primaryUrl: url, + primaryStatus: primary.status, + fallbackUrl, + fallbackStatus: fallback.status, + } ); } @@ -439,8 +456,7 @@ async function checkServerLiveness(options = {}) { export async function collectDoctorChecks(context = {}, options = {}) { const rootDir = - context.rootDir || - path.resolve(path.dirname(fileURLToPath(import.meta.url)), "..", "..", ".."); + context.rootDir || path.resolve(path.dirname(fileURLToPath(import.meta.url)), "..", "..", ".."); const dataDir = resolveDataDir(); const dbPath = resolveStoragePath(dataDir); diff --git a/bin/cli/commands/launch-codex.mjs b/bin/cli/commands/launch-codex.mjs index f00cae7d2b..88e678c56a 100644 --- a/bin/cli/commands/launch-codex.mjs +++ b/bin/cli/commands/launch-codex.mjs @@ -1,8 +1,37 @@ -import { spawn } from "node:child_process"; +import { spawn, execFileSync } from "node:child_process"; import { t } from "../i18n.mjs"; import { resolveActiveContext } from "../contexts.mjs"; import { quoteShellArgs } from "../utils/winShellArgs.mjs"; +/** + * Probe PATH for a Windows executable via `where.exe`, preferring a `.exe` over + * a `.cmd`/`.bat` shim. Returns the absolute path to the preferred binary, or + * `null` when `where.exe` finds nothing (or cannot run). Mirrors the same probe + * in launch.mjs and `locateCommand()` in `src/shared/services/cliRuntime.ts`. + * + * @param {string} command bare command name to look up + * @returns {Promise} absolute path to the preferred match, or null + */ +function probeWindowsBinary(command) { + try { + const out = execFileSync("where.exe", [command], { + stdio: ["ignore", "pipe", "ignore"], + encoding: "utf8", + timeout: 3000, + windowsHide: true, + }); + const lines = out + .split(/\r?\n/) + .map((l) => l.trim()) + .filter(Boolean); + if (lines.length === 0) return null; + const winExt = /\.(exe|cmd|bat|com)$/i; + return lines.find((l) => winExt.test(l)) || null; + } catch { + return null; + } +} + /** OpenAI/Codex env keys stripped from the child so a stale OpenAI key/base-url * in the shell can't shadow the omniroute provider (defense-in-depth). Mirrors * free-claude-code's codex adapter. NOTE: this does NOT silence codex's @@ -23,11 +52,25 @@ const NO_AUTH_SENTINEL = "omniroute-no-auth"; // On Windows the `codex` binary is an npm `.cmd` shim that `spawn` cannot resolve // without a shell (bare "codex" → ENOENT). Mirror the qodercli Windows fix (#6263): // spawn `codex.cmd` through a shell on win32, and the bare binary elsewhere. -export function resolveCodexSpawn(platform) { - if (platform === "win32") { - return { command: "codex.cmd", shell: true }; +// +// #9454: the native codex installer may ship a real `codex.exe` instead of the +// npm `.cmd` shim. Probe PATH for `codex` first: when `where.exe` resolves a +// `.exe`, spawn it directly (no shell — cmd.exe would split an absolute path +// with spaces); otherwise fall back to `codex.cmd` + shell. Off Windows the bare +// binary is spawned unchanged (no shell, no probe). +/** + * @param {NodeJS.Platform|string} platform + * @param {{ probe?: (command: string) => Promise }} [opts] injectable probe for tests + * @returns {Promise<{ command: string, shell: true|undefined }>} + */ +export async function resolveCodexSpawn(platform, opts = {}) { + if (platform !== "win32") return { command: "codex", shell: undefined }; + const probe = opts.probe ?? probeWindowsBinary; + const located = await probe("codex"); + if (located && /\.exe$/i.test(located)) { + return { command: located, shell: undefined }; } - return { command: "codex", shell: undefined }; + return { command: "codex.cmd", shell: true }; } /** @@ -169,8 +212,9 @@ export async function runLaunchCodexCommand(opts = {}, codexArgs = []) { const extraArgs = [...providerArgs, ...profileArgs, ...codexArgs]; const env = buildCodexEnv(process.env, authToken); + const { command: codexLaunch, shell: shellValue } = await resolveCodexSpawn(process.platform); + return await new Promise((resolve) => { - const { command: codexLaunch, shell: shellValue } = resolveCodexSpawn(process.platform); const child = spawn(codexLaunch, quoteCodexArgs(extraArgs, process.platform), { env, stdio: "inherit", diff --git a/bin/cli/commands/launch.mjs b/bin/cli/commands/launch.mjs index 78016257f1..e1b7aca47d 100644 --- a/bin/cli/commands/launch.mjs +++ b/bin/cli/commands/launch.mjs @@ -1,4 +1,4 @@ -import { spawn } from "node:child_process"; +import { spawn, execFileSync } from "node:child_process"; import { join } from "node:path"; import os from "node:os"; import { t } from "../i18n.mjs"; @@ -92,17 +92,61 @@ export function resolveLaunchTarget(opts = {}) { } /** - * #8246: on Windows, npm installs claude as a `.cmd` shim — spawn() without a - * shell cannot resolve PATHEXT shims (and Node refuses to exec `.cmd` directly - * since CVE-2024-27980), so the Windows path must go through cmd.exe. + * Probe PATH for a Windows executable via `where.exe`, preferring a `.exe` over + * a `.cmd`/`.bat` shim. Returns the absolute path to the preferred binary, or + * `null` when `where.exe` finds nothing (or cannot run). + * + * The native Anthropic installer (#9454) creates only `claude.exe` (no npm + * `.cmd` shim), so the launcher must look for the real PE and spawn it without + * a shell. Mirrors the existing `locateCommand()` probe in + * `src/shared/services/cliRuntime.ts`. + * + * @param {string} command bare command name to look up + * @returns {Promise} absolute path to the preferred match, or null + */ +function probeWindowsBinary(command) { + try { + const out = execFileSync("where.exe", [command], { + stdio: ["ignore", "pipe", "ignore"], + encoding: "utf8", + timeout: 3000, + windowsHide: true, + }); + const lines = out + .split(/\r?\n/) + .map((l) => l.trim()) + .filter(Boolean); + if (lines.length === 0) return null; + const winExt = /\.(exe|cmd|bat|com)$/i; + return lines.find((l) => winExt.test(l)) || null; + } catch { + return null; + } +} + +/** + * #8246 / #9454: on Windows, npm installs claude as a `.cmd` shim — spawn() + * without a shell cannot resolve PATHEXT shims (and Node refuses to exec `.cmd` + * directly since CVE-2024-27980), so the npm-shim path must go through cmd.exe. + * But the native installer creates only `claude.exe`, which is a real PE that + * must NOT go through a shell (cmd.exe would split an absolute path with spaces). + * + * So probe PATH for `claude` first: when `where.exe` resolves a `.exe`, spawn it + * directly (no shell); otherwise fall back to the npm `claude.cmd` + shell. Off + * Windows the bare binary is spawned unchanged (no shell, no probe). * * @param {NodeJS.Platform|string} platform - * @returns {{ command: string, shell: true|undefined }} + * @param {{ probe?: (command: string) => Promise }} [opts] injectable probe for tests + * @returns {Promise<{ command: string, shell: true|undefined }>} */ -export function resolveClaudeSpawn(platform) { - return platform === "win32" - ? { command: "claude.cmd", shell: true } - : { command: "claude", shell: undefined }; +export async function resolveClaudeSpawn(platform, opts = {}) { + if (platform !== "win32") return { command: "claude", shell: undefined }; + const probe = opts.probe ?? probeWindowsBinary; + const located = await probe("claude"); + if (located && /\.exe$/i.test(located)) { + return { command: located, shell: undefined }; + } + return { command: "claude.cmd", shell: true }; } /** @@ -148,8 +192,9 @@ export async function runLaunchCommand(opts = {}, claudeArgs = []) { : undefined; const env = buildClaudeEnv(process.env, baseUrl, authToken, { configDir }); + const { command, shell } = await resolveClaudeSpawn(process.platform); + return await new Promise((resolve) => { - const { command, shell } = resolveClaudeSpawn(process.platform); const child = spawn(command, quoteClaudeArgs(claudeArgs, process.platform), { env, stdio: "inherit", diff --git a/bin/cli/commands/login.mjs b/bin/cli/commands/login.mjs index 506f4e28f9..ef98c9d42d 100644 --- a/bin/cli/commands/login.mjs +++ b/bin/cli/commands/login.mjs @@ -19,6 +19,19 @@ import { randomUUID } from "node:crypto"; * * It talks ONLY to Google (no OmniRoute server needed locally), so it works even * if the remote VPS is firewalled from the user's machine. + * + * Push mode: when an active remote context exists (`omniroute connect `), the + * blob is POSTed straight to that install instead of being printed for a manual + * copy-paste — every piece was already in place: + * + * - the context carries an admin-scoped token, and `apiFetch()` injects it; + * - `/api/oauth` requires admin scope (src/server/authz/accessScopes.ts) and stays + * remote-reachable — routeGuard.ts loopback-gates only `/api/oauth/cursor/auto-import`; + * - `/api/oauth//paste-credentials` already decodes the blob and persists. + * + * The push NEVER becomes a hard requirement: this helper exists precisely because it + * needs no route to the VPS, so a failed push falls back to printing the blob rather + * than losing an authorization the operator just completed in their browser. */ const PROVIDER = "antigravity"; @@ -54,7 +67,7 @@ function defaultStartServer(preferredPort) { res.writeHead(200, { "Content-Type": "text/html; charset=utf-8" }); res.end( "OmniRoute" + - "" + + '' + "

✅ Authorization received

" + "

Return to your terminal — you can close this tab.

" ); @@ -73,6 +86,51 @@ function defaultStartServer(preferredPort) { }); } +/** + * Is this context pointing at another machine? Loopback (and an unresolvable value) + * counts as local, so we never auto-push somewhere we cannot reason about. + */ +export function isRemoteBaseUrl(baseUrl) { + if (!baseUrl) return false; + try { + const { hostname } = new URL(baseUrl); + const host = hostname.replace(/^\[|\]$/g, ""); // strip IPv6 brackets + return host !== "localhost" && host !== "127.0.0.1" && host !== "::1"; + } catch { + return false; + } +} + +/** + * POST a credential blob to the active context's install. Never throws: the caller + * decides whether a failure is fatal (it is not — it falls back to printing). + */ +export async function pushCredentialBlob(provider, blob, deps = {}) { + try { + const fetchImpl = deps.fetchImpl ?? (await import("../api.mjs")).apiFetch; + const res = await fetchImpl(`/api/oauth/${provider}/paste-credentials`, { + method: "POST", + body: { blob }, + }); + const data = await res.json().catch(() => ({})); + if (!res.ok || data?.success === false) { + const message = + (typeof data?.error === "string" ? data.error : data?.error?.message) || + `HTTP ${res.status}`; + return { ok: false, error: message }; + } + return { ok: true, connectionId: data?.connection?.id }; + } catch (err) { + return { ok: false, error: err?.message || String(err) }; + } +} + +/** Read the active CLI context (baseUrl + scoped token) written by `omniroute connect`. */ +async function defaultResolveContext(overrideName) { + const { resolveActiveContext } = await import("../contexts.mjs"); + return resolveActiveContext(overrideName); +} + /** Lazy-load the antigravity provider + blob codec (TS source via tsx). */ async function loadDeps() { const { antigravity } = await import("../../../src/lib/oauth/providers/antigravity.ts"); @@ -153,10 +211,41 @@ export async function runAntigravityLogin(opts = {}, deps = {}) { const tokens = await exchange(params.code, redirectUri); const blob = encodeCredentialBlob({ provider: PROVIDER, tokens }); + // Push when the operator explicitly asked, or when the active context already points + // at another machine — that is exactly the situation this helper was built for. + const resolveContext = deps.resolveContext ?? defaultResolveContext; + const push = deps.push ?? pushCredentialBlob; + let context = null; + try { + context = await resolveContext(opts.context); + } catch { + // No usable context store — fall through to printing. + } + const wantsPush = + opts.push === true || (opts.push !== false && isRemoteBaseUrl(context?.baseUrl)); + + if (wantsPush) { + log(`\nSending the credential to ${context?.baseUrl || "the active context"}...\n`); + const result = await push(PROVIDER, blob, { context }); + if (result?.ok) { + log( + `Antigravity connected on ${context?.baseUrl || "the remote install"}` + + `${result.connectionId ? ` (connection ${result.connectionId})` : ""}.\n` + + "Nothing to paste — you can close this terminal.\n" + ); + // Deliberately NOT printed: the blob wraps a refresh token and it already landed. + return blob; + } + log( + `\nCould not deliver the credential automatically: ${result?.error || "unknown error"}\n` + + "Falling back to manual paste — the authorization itself is still valid.\n" + ); + } + print( "\n" + "Antigravity authorized. Copy the line below and paste it into your remote\n" + - "OmniRoute dashboard: Providers → Antigravity → Connect → \"Paste credentials\".\n" + + 'OmniRoute dashboard: Providers → Antigravity → Connect → "Paste credentials".\n' + "(This contains a refresh token — treat it like a password.)\n\n" + blob + "\n\n" @@ -170,6 +259,8 @@ async function runLoginAntigravity(opts) { browser: opts.browser, timeout: opts.timeout, port: opts.port, + push: opts.push, + context: opts.context, }); } catch (err) { process.stderr.write(`\nLogin failed: ${err?.message || err}\n`); @@ -188,5 +279,11 @@ export function registerLogin(program) { .option("--no-browser", "Do not auto-open the browser; print the URL instead") .option("--port ", "Fixed loopback port (default: OS-assigned)", (v) => parseInt(v, 10)) .option("--timeout ", "How long to wait for the callback", (v) => parseInt(v, 10), 300000) + .option( + "--push", + "Send the credential to the active context instead of printing it (default when that context is remote)" + ) + .option("--no-push", "Always print the blob, never contact the server") + .option("--context ", "Push to this context instead of the active one") .action(runLoginAntigravity); } diff --git a/bin/cli/commands/oauth.mjs b/bin/cli/commands/oauth.mjs index 9bcbc92d6c..5c1a6ec4a9 100644 --- a/bin/cli/commands/oauth.mjs +++ b/bin/cli/commands/oauth.mjs @@ -10,11 +10,28 @@ const PROVIDERS_WITH_OAUTH = [ { id: "cursor", name: "Cursor", flow: "import" }, { id: "zed", name: "Zed", flow: "import" }, { id: "kiro", name: "Amazon Kiro", flow: "social" }, - { id: "claude-code", name: "Claude Code (OAuth)", flow: "device" }, + { id: "claude-code", name: "Claude Code (OAuth)", flow: "browser" }, { id: "codex", name: "OpenAI Codex (OAuth)", flow: "device" }, { id: "copilot", name: "GitHub Copilot", flow: "device" }, ]; +// The user-facing provider id (the one shown by `omniroute oauth providers`) +// is NOT always the backend OAuth provider key the server's /api/oauth/[provider]/... +// route expects. `claude-code` is the CLI-facing alias for Anthropic's Claude +// OAuth, which the server registers under the key `claude` (see +// src/lib/oauth/providers/index.ts). Routing `claude-code` to the unrelated +// `command-code` (CommandCode.ai) provider — as the previous code did — sent +// the device-flow request to /api/providers/command-code/auth/start, which is +// gated by requireManagementAuth and returned 401 for a fresh CLI context +// (issue #9474). Map the alias to the real backend key instead. +const BACKEND_OAUTH_KEY = { + "claude-code": "claude", +}; + +function resolveBackendKey(id) { + return BACKEND_OAUTH_KEY[id] ?? id; +} + const oauthProviderSchema = [ { key: "id", header: "Provider ID", width: 16 }, { key: "name", header: "Name", width: 28 }, @@ -56,32 +73,107 @@ async function pollStatus(endpoint, timeoutMs) { } async function runBrowserFlow(def, opts) { - const startRes = await apiFetch(`/api/oauth/${def.id}/start`, { method: "POST" }); + // The user-facing id (`def.id`, e.g. "claude-code") must be translated to the + // backend OAuth provider key the server's /api/oauth/[provider]/... route + // expects (e.g. "claude"). The previous implementation called a non-existent + // `/api/oauth/${def.id}/start` action — no such action exists on the server + // (src/app/api/oauth/[provider]/[action]/route.ts), so the browser flow was + // broken for every browser-flow provider. Use the real `authorize` action and + // complete the PKCE (authorization_code / authorization_code_pkce) flow with a + // manual code paste, mirroring the dashboard's manual "input" step. + const backendKey = resolveBackendKey(def.id); + const redirectUri = opts.redirectUri ?? null; + const authorizeUrl = `/api/oauth/${backendKey}/authorize${ + redirectUri ? `?redirect_uri=${encodeURIComponent(redirectUri)}` : "" + }`; + const startRes = await apiFetch(authorizeUrl, { method: "GET" }); if (!startRes.ok) { - process.stderr.write(`Failed to start OAuth for ${def.id}: ${startRes.status}\n`); + const detail = await safeErrorBody(startRes); + process.stderr.write(`Failed to start OAuth for ${def.id}: ${startRes.status}${detail}\n`); process.exit(1); } const start = await startRes.json(); - const url = start.authorizeUrl ?? start.url; + const url = start.authUrl ?? start.authorizeUrl ?? start.url; + if (!url) { + const hint = start.error ?? "no authUrl returned by the server"; + process.stderr.write(`OAuth unavailable for ${def.id}: ${hint}\n`); + process.exit(1); + } + const { codeVerifier, state, redirectUri: returnedRedirectUri } = start; + const finalRedirectUri = returnedRedirectUri || redirectUri; - if (process.stdout.isTTY && opts.browser !== false) { - const { startOAuthTui } = await import("../tui/OAuthFlow.jsx"); - await openBrowser(url); - const tuiResult = await startOAuthTui({ provider: def.name ?? def.id, url }); - if (tuiResult.status === "cancelled") return; - } else { - process.stdout.write(`\nOpen this URL to authorize:\n ${url}\n\n`); - if (opts.browser !== false) await openBrowser(url); - process.stderr.write("Waiting for authorization... (Ctrl+C to cancel)\n"); + process.stdout.write(`\nOpen this URL to authorize:\n ${url}\n\n`); + if (opts.browser !== false) await openBrowser(url); + process.stdout.write( + "After authorizing, paste the callback URL (or the Authentication Code\n" + + "shown on the confirmation page) here:\n" + ); + + const { createPrompt } = await import("../io.mjs"); + const prompt = createPrompt(); + const input = await prompt.ask("Callback URL or code"); + prompt.close(); + + const trimmed = input.trim(); + if (!trimmed) { + process.stderr.write("No authorization code provided.\n"); + process.exit(1); } - const result = await pollStatus( - `/api/oauth/${def.id}/status?state=${encodeURIComponent(start.state ?? "")}`, - opts.timeout ?? 300000 - ); - process.stdout.write( - `Authorized: ${result.email ?? result.userId ?? result.account ?? "connected"}\n` - ); + // The Anthropic Claude confirmation page (platform.claude.com/oauth/code/callback) + // shows a raw "Authentication Code" like `code#state` rather than a full URL. + // The dashboard's manual submit (src/shared/components/OAuthModal.tsx) parses + // both forms; mirror that here. + let code = null; + let codeState = state || null; + try { + const cbUrl = new URL(trimmed); + code = cbUrl.searchParams.get("code"); + const stateParam = cbUrl.searchParams.get("state") || cbUrl.hash.replace(/^#/, ""); + if (stateParam) codeState = stateParam; + } catch { + const [rawCode, rawState] = trimmed.split("#", 2); + code = rawCode || null; + if (rawState) codeState = rawState; + } + if (!code) { + process.stderr.write( + "No authorization code found. Paste the callback URL or the Authentication Code.\n" + ); + process.exit(1); + } + + const exchangeRes = await apiFetch(`/api/oauth/${backendKey}/exchange`, { + method: "POST", + body: { + code, + redirectUri: finalRedirectUri, + codeVerifier, + ...(codeState ? { state: codeState } : {}), + }, + }); + if (!exchangeRes.ok) { + const detail = await safeErrorBody(exchangeRes); + process.stderr.write(`Token exchange failed: ${exchangeRes.status}${detail}\n`); + process.exit(1); + } + const result = await exchangeRes.json(); + const conn = result.connection ?? {}; + process.stdout.write(`Authorized: ${conn.email ?? conn.displayName ?? conn.id ?? "connected"}\n`); +} + +async function safeErrorBody(res) { + try { + const data = await res.json(); + if (data?.error) { + const msg = typeof data.error === "string" ? data.error : data.error?.message; + if (msg) return `: ${msg}`; + } + if (data?.message) return `: ${data.message}`; + } catch { + /* ignore */ + } + return ""; } async function runImportFlow(def, opts) { @@ -124,7 +216,7 @@ async function runSocialFlow(def, opts) { } async function runDeviceFlow(def, opts) { - const providerKey = def.id === "claude-code" ? "command-code" : def.id; + const providerKey = resolveBackendKey(def.id); const startRes = await apiFetch(`/api/providers/${providerKey}/auth/start`, { method: "POST" }); if (!startRes.ok) { process.stderr.write(`Failed to start device flow: ${startRes.status}\n`); diff --git a/bin/cli/commands/redis.mjs b/bin/cli/commands/redis.mjs index e841abf00b..dd593d9628 100644 --- a/bin/cli/commands/redis.mjs +++ b/bin/cli/commands/redis.mjs @@ -10,9 +10,25 @@ const DEFAULT_IMAGE = "docker.io/redis:7-alpine"; const DEFAULT_NAME = "omniroute-redis"; const DEFAULT_PORT = "6379"; const DEFAULT_VOLUME = "omniroute-redis-data"; +// The launcher starts Redis without AUTH unless --password is given, so the +// published port stays on loopback. `-p 6379:6379` would bind 0.0.0.0 and hand +// the whole LAN an unauthenticated Redis. +const DEFAULT_BIND = "127.0.0.1"; const RUNTIME_PREFERENCE = ["podman", "docker"]; +/** + * Build the `-p` publish spec for the Redis container. + * Always host-qualified so the runtime never falls back to 0.0.0.0. + */ +export function buildRedisPublishSpec(bind = DEFAULT_BIND, port = DEFAULT_PORT) { + const host = String(bind || DEFAULT_BIND).trim() || DEFAULT_BIND; + const hostPort = String(port || DEFAULT_PORT).trim() || DEFAULT_PORT; + // Bracket IPv6 literals (e.g. ::1) so `host:port:port` stays unambiguous. + const normalizedHost = host.includes(":") && !host.startsWith("[") ? `[${host}]` : host; + return `${normalizedHost}:${hostPort}:6379`; +} + async function detectRuntime() { for (const candidate of RUNTIME_PREFERENCE) { try { @@ -27,7 +43,14 @@ async function detectRuntime() { async function containerExists(runtime, name) { try { - const { stdout } = await execFile(runtime, ["ps", "-a", "--filter", `name=^${name}$`, "--format", "{{.Names}}"]); + const { stdout } = await execFile(runtime, [ + "ps", + "-a", + "--filter", + `name=^${name}$`, + "--format", + "{{.Names}}", + ]); return stdout.trim() === name; } catch { return false; @@ -36,7 +59,13 @@ async function containerExists(runtime, name) { async function containerRunning(runtime, name) { try { - const { stdout } = await execFile(runtime, ["ps", "--filter", `name=^${name}$`, "--format", "{{.Names}}"]); + const { stdout } = await execFile(runtime, [ + "ps", + "--filter", + `name=^${name}$`, + "--format", + "{{.Names}}", + ]); return stdout.trim() === name; } catch { return false; @@ -100,6 +129,11 @@ export function registerRedis(program) { .command("up") .description("Start the local Redis container") .option("-p, --port ", "Host port to expose", DEFAULT_PORT) + .option( + "-b, --bind ", + "Host interface to publish on (use 0.0.0.0 only together with --password)", + DEFAULT_BIND + ) .option("-n, --name ", "Container name", DEFAULT_NAME) .option("-i, --image ", "Container image", DEFAULT_IMAGE) .option("--no-pull", "Skip pulling the image if it is missing") @@ -160,6 +194,7 @@ export async function runRedisUpCommand(opts = {}) { const name = opts.name || DEFAULT_NAME; const port = opts.port || DEFAULT_PORT; + const bind = opts.bind || DEFAULT_BIND; const image = opts.image || DEFAULT_IMAGE; const exists = await containerExists(runtime, name); @@ -186,7 +221,11 @@ export async function runRedisUpCommand(opts = {}) { info(`Checking if image '${image}' is present locally…`); let present = false; try { - const { stdout } = await execFile(runtime, ["images", "--format", "{{.Repository}}:{{.Tag}}"]); + const { stdout } = await execFile(runtime, [ + "images", + "--format", + "{{.Repository}}:{{.Tag}}", + ]); present = stdout.split("\n").some((line) => line.trim() === image); } catch { // ignore — fall through to pull @@ -205,10 +244,14 @@ export async function runRedisUpCommand(opts = {}) { const args = [ "run", "-d", - "--name", name, - "--restart", "unless-stopped", - "-p", `${port}:6379`, - "-v", `${DEFAULT_VOLUME}:/data`, + "--name", + name, + "--restart", + "unless-stopped", + "-p", + buildRedisPublishSpec(bind, port), + "-v", + `${DEFAULT_VOLUME}:/data`, ]; if (opts.password) { args.push("-e", `REDIS_PASSWORD=${opts.password}`); @@ -219,8 +262,13 @@ export async function runRedisUpCommand(opts = {}) { info(`Launching ${runtime} run ${args.join(" ")}`); try { await execFile(runtime, args); - success(`Container '${name}' is now running on redis://127.0.0.1:${port}`); - info(`Set OMNIROUTE_REDIS_URL=redis://127.0.0.1:${port} in your .env to wire OmniRoute to it.`); + success(`Container '${name}' is now running on redis://${bind}:${port}`); + info(`Set OMNIROUTE_REDIS_URL=redis://${bind}:${port} in your .env to wire OmniRoute to it.`); + if (bind !== DEFAULT_BIND && !opts.password) { + info( + `Warning: '${bind}' publishes Redis beyond loopback without AUTH. Re-run with --password .` + ); + } return 0; } catch (err) { fail(`Failed to launch container: ${err.message}`); @@ -267,7 +315,13 @@ export async function runRedisStatusCommand(opts = {}) { const exists = await containerExists(runtime, name); if (!exists) { - console.log(JSON.stringify({ runtime, name, port, exists: false, running: false, reachable: false }, null, 2)); + console.log( + JSON.stringify( + { runtime, name, port, exists: false, running: false, reachable: false }, + null, + 2 + ) + ); return 0; } @@ -285,10 +339,12 @@ export async function runRedisStatusCommand(opts = {}) { console.log(` Running: ${running ? "yes" : "no"}`); console.log(` Reachable: ${reachable ? "yes" : "no"} (port ${port})`); if (running && !reachable) { - warn("Container is running but the port is not reachable. Is REDIS_PASSWORD set or another process bound?"); + warn( + "Container is running but the port is not reachable. Is REDIS_PASSWORD set or another process bound?" + ); } if (!running) { info(`Run 'omniroute redis up' to launch it.`); } return 0; -} \ No newline at end of file +} diff --git a/bin/cli/commands/runtime.mjs b/bin/cli/commands/runtime.mjs index ffd8c0dac0..ed41bca352 100644 --- a/bin/cli/commands/runtime.mjs +++ b/bin/cli/commands/runtime.mjs @@ -34,7 +34,14 @@ async function runRepairAction(opts, cmd) { if (ok) { process.stdout.write("✓ better-sqlite3 repaired OK\n"); } else { - process.stderr.write("✗ Repair failed — check npm availability\n"); + process.stderr.write("✗ Repair failed\n"); + process.stderr.write( + " Possible causes:\n" + + " • npm not available — check that Node.js/npm are on your PATH\n" + + " • npm install scripts are blocked — run: npm install-scripts approve better-sqlite3\n" + + " • Network issue — check your internet connection\n" + + " Try: npm install-scripts ls (to see if better-sqlite3 is blocked)\n" + ); process.exit(1); } } diff --git a/bin/cli/commands/serve.mjs b/bin/cli/commands/serve.mjs index 8e819895d6..4ed5ac55cf 100644 --- a/bin/cli/commands/serve.mjs +++ b/bin/cli/commands/serve.mjs @@ -16,7 +16,7 @@ import { resolveMaxOldSpaceMb, calibrateHeapFallbackMb, buildServerNodeOptions, - buildNodeHeapArgs, + buildNodeRuntimeArgs, } from "../../../scripts/build/runtime-env.mjs"; import { resolveTlsOptions } from "../../../scripts/dev/tls-options.mjs"; @@ -269,7 +269,7 @@ function runDaemon(serverJs, env, memoryLimit, dashboardPort, apiPort) { // heap via NODE_OPTIONS (a CLI arg would shadow/override their value). const server = spawn( process.versions.bun ? process.execPath : "node", - [...(process.versions.bun ? [] : buildNodeHeapArgs(process.env, memoryLimit)), serverJs], + process.versions.bun ? [serverJs] : buildNodeRuntimeArgs(process.env, memoryLimit, serverJs), { cwd: APP_DIR, env, @@ -289,7 +289,7 @@ function runWithoutRecovery(serverJs, env, memoryLimit, dashboardPort, apiPort, // heap via NODE_OPTIONS (a CLI arg would shadow/override their value). const server = spawn( process.versions.bun ? process.execPath : "node", - [...(process.versions.bun ? [] : buildNodeHeapArgs(process.env, memoryLimit)), serverJs], + process.versions.bun ? [serverJs] : buildNodeRuntimeArgs(process.env, memoryLimit, serverJs), { cwd: APP_DIR, env, @@ -387,12 +387,19 @@ async function runWithSupervisor( supervisor.start(); + // #9455: persist the supervisor's own PID so `omniroute stop` can SIGTERM it + // before the child — the supervisor's SIGTERM handler sets isShuttingDown=true, + // kills the child, and exits cleanly, so the child is never respawned after stop. + writePidFile("supervisor", process.pid); + process.on("SIGINT", () => { killTrayIfActive(); + cleanupPidFile("supervisor"); supervisor.stop(); }); process.on("SIGTERM", () => { killTrayIfActive(); + cleanupPidFile("supervisor"); supervisor.stop(); }); diff --git a/bin/cli/commands/setup-claude.mjs b/bin/cli/commands/setup-claude.mjs index fbb95d5ff8..600a33d8bb 100644 --- a/bin/cli/commands/setup-claude.mjs +++ b/bin/cli/commands/setup-claude.mjs @@ -156,7 +156,15 @@ export async function runSetupClaudeCommand(opts = {}) { headers, signal: AbortSignal.timeout(10000), }); - if (!res.ok) throw new Error(`HTTP ${res.status} ${res.statusText}`); + if (!res.ok) { + let detail = `HTTP ${res.status}`; + try { + const errorBody = await res.json(); + const serverMsg = errorBody?.error?.message || errorBody?.error || errorBody?.message || ""; + if (serverMsg) detail += ` — ${serverMsg}`; + } catch {} + throw new Error(detail); + } const body = await res.json(); models = body.data ?? body.models ?? []; } catch (err) { diff --git a/bin/cli/commands/setup-open-code.mjs b/bin/cli/commands/setup-open-code.mjs index dd20ba28a6..60f08158c2 100644 --- a/bin/cli/commands/setup-open-code.mjs +++ b/bin/cli/commands/setup-open-code.mjs @@ -218,6 +218,26 @@ function registerPluginInOpenCodeConfig({ * a clear "could not run opencode" message instead of a hard import * failure. */ +/** + * Resolve the provider id used for `opencode auth login --provider `. + * + * The bundled @omniroute/opencode-plugin registers its provider under + * `opencode-` (the `opencode-` prefix is required by OpenCode >=1.17.8's + * native-adapter gate). The auth login command must use the prefixed form + * because OpenCode resolves `--provider ` against the provider id the + * plugin actually registered. + * + * Idempotent: if the id already starts with `opencode-`, it passes through + * unchanged. This protects users who manually worked around the bug with + * `--provider opencode-omniroute`. + * + * @param {string} providerId + * @returns {string} + */ +export function resolveOpenCodeAuthProviderId(providerId) { + return providerId.startsWith("opencode-") ? providerId : `opencode-${providerId}`; +} + /** * Pure resolver for the `opencode auth login` spawn descriptor. Extracted so the * platform-branching logic is unit-testable without mocking child_process or @@ -231,21 +251,23 @@ function registerPluginInOpenCodeConfig({ */ export function resolveOpenCodeAuthSpawn(providerId, platform = process.platform) { const isWin = platform === "win32"; + const authProviderId = resolveOpenCodeAuthProviderId(providerId); return { command: isWin ? "opencode.cmd" : "opencode", - args: ["auth", "login", "--provider", providerId], + args: ["auth", "login", "--provider", authProviderId], options: { stdio: "inherit", shell: isWin }, }; } export function runOpenCodeAuth(providerId) { + const authProviderId = resolveOpenCodeAuthProviderId(providerId); const { command, args, options } = resolveOpenCodeAuthSpawn(providerId); const res = spawnSync(command, args, options); if (res.error) { // ENOENT = opencode is not on PATH if (res.error.code === "ENOENT") { printInfo( - `opencode CLI not found on PATH. Run \`opencode auth login --provider ${providerId}\` manually after installing OpenCode.` + `opencode CLI not found on PATH. Run \`opencode auth login --provider ${authProviderId}\` manually after installing OpenCode.` ); return 1; } @@ -343,7 +365,8 @@ export async function runSetupOpenCodeCommand(opts = {}) { if (wantsAuth) { if (nonInteractive) { printInfo(`Skipping \`opencode auth login\` (non-interactive mode).`); - printInfo(`Run manually: opencode auth login --provider ${providerId}`); + const authProviderId = resolveOpenCodeAuthProviderId(providerId); + printInfo(`Run manually: opencode auth login --provider ${authProviderId}`); } else { printHeading("Authenticating with OpenCode"); const authExit = runOpenCodeAuth(providerId); @@ -352,8 +375,9 @@ export async function runSetupOpenCodeCommand(opts = {}) { } } } else { + const authProviderId = resolveOpenCodeAuthProviderId(providerId); printInfo( - `Next step: opencode auth login --provider ${providerId} (pass --auth to do this automatically)` + `Next step: opencode auth login --provider ${authProviderId} (pass --auth to do this automatically)` ); } diff --git a/bin/cli/commands/stop.mjs b/bin/cli/commands/stop.mjs index b3dbf64b40..8eb989d18c 100644 --- a/bin/cli/commands/stop.mjs +++ b/bin/cli/commands/stop.mjs @@ -24,18 +24,35 @@ export function registerStop(program) { export async function runStopCommand(opts = {}) { const pid = readPidFile("server"); + // #9455: when the server was started with a supervisor (the default), killing only + // the child lets the supervisor respawn it immediately. The supervisor's PID is + // persisted separately by serve.mjs; SIGTERM it FIRST so its handler sets + // isShuttingDown=true and stops the child cleanly without respawning. + const supervisorPid = readPidFile("supervisor"); if (pid && isPidRunning(pid)) { console.log(t("stop.stopping", { pid })); try { + if (supervisorPid && isPidRunning(supervisorPid)) { + try { + process.kill(supervisorPid, "SIGTERM"); + } catch {} + // Give the supervisor a moment to cascade the shutdown to its child so we + // don't race the child kill against the supervisor's own child stop. + await sleep(300); + } + // #8045: on win32, process.kill(pid, "SIGTERM") unconditionally force-terminates // the target instead of delivering an interceptable signal, racing (and beating) // the server's own async graceful shutdown / WAL checkpoint. stopProcessGracefully // skips the immediate SIGTERM on win32 and just polls before escalating to SIGKILL. - await stopProcessGracefully({ pid, timeoutMs: 5000, isPidRunning, sleep }); + if (isPidRunning(pid)) { + await stopProcessGracefully({ pid, timeoutMs: 5000, isPidRunning, sleep }); + } killAllSubprocesses(); cleanupPidFile("server"); + cleanupPidFile("supervisor"); console.log(t("stop.stopped")); return 0; } catch (err) { @@ -49,10 +66,24 @@ export async function runStopCommand(opts = {}) { const port = opts.port ? parseInt(String(opts.port), 10) : 20128; if (pid === null) { console.log(t("stop.portFallback")); - await killByPort(port); + // #9455: a stale supervisor PID file would let the port-fallback stop also + // leave the supervisor running and respawning. Stop it first. + if (supervisorPid && isPidRunning(supervisorPid)) { + try { + process.kill(supervisorPid, "SIGTERM"); + } catch {} + } + const portFreed = await killByPort(port); killAllSubprocesses(); cleanupPidFile("server"); - console.log(t("stop.stopped")); + cleanupPidFile("supervisor"); + // #9455: only report success when the port is actually free — previously stop + // printed "Server stopped." even when killByPort was a no-op (win32). + if (portFreed) { + console.log(t("stop.stopped")); + } else { + console.log(t("stop.notRunning")); + } return 0; } @@ -60,31 +91,84 @@ export async function runStopCommand(opts = {}) { return 0; } -async function killByPort(port) { - if (process.platform === "win32") return; +/** + * Kill the process listening on `port`. Returns true once the port is free + * (or no listener was found), false if it could not be freed. + * + * #9455: previously this was a no-op on win32 (`if (win32) return;`) yet the + * caller still reported "Server stopped." — a lie. The win32 branch now uses + * `netstat -ano` to find LISTENING PIDs and `process.kill()` (SIGTERM then + * SIGKILL), mirroring the POSIX `lsof` path. + */ +export async function killByPort(port, deps = {}) { + const exec = deps.execFileAsync || execFileAsync; + const kill = deps.processKill || ((p, sig) => process.kill(p, sig)); + const running = deps.isPidRunning || isPidRunning; + const wait = deps.sleep || sleep; + const platform = deps.platform || process.platform; + + if (platform === "win32") { + return killByPortWin32(port, { exec, kill, running, wait }); + } + return killByPortPosix(port, { exec, kill, running, wait }); +} + +async function killByPortPosix(port, { exec, kill, running, wait }) { + let pids = []; try { - const { stdout } = await execFileAsync("lsof", ["-ti", `:${port}`]); - const pids = stdout + const { stdout } = await exec("lsof", ["-ti", `:${port}`]); + pids = stdout .trim() .split("\n") .map((p) => parseInt(p, 10)) .filter((p) => Number.isFinite(p) && p > 0); - - for (const p of pids) { - try { - process.kill(p, "SIGTERM"); - } catch {} - } - - if (pids.length > 0) { - await sleep(1000); - for (const p of pids) { - try { - if (isPidRunning(p)) process.kill(p, "SIGKILL"); - } catch {} - } - } } catch { // lsof not available or no process on port } + return terminatePids(pids, { kill, running, wait }); +} + +async function killByPortWin32(port, { exec, kill, running, wait }) { + let pids = []; + try { + const { stdout } = await exec("netstat", ["-ano"]); + pids = parseNetstatPids(stdout, port); + } catch { + // netstat not available or empty + } + return terminatePids(pids, { kill, running, wait }); +} + +function parseNetstatPids(stdout, port) { + const portCol = `:${port}`; + const pids = []; + for (const line of stdout.split(/\r?\n/)) { + const cols = line.trim().split(/\s+/); + // Expected columns: Proto LocalAddress ForeignAddress State PID + if (cols.length < 5) continue; + if (cols[0] !== "TCP" && cols[0] !== "TCPv6") continue; + const local = cols[1] || ""; + if (!local.endsWith(portCol)) continue; + if ((cols[cols.length - 2] || "").toUpperCase() !== "LISTENING") continue; + const pid = parseInt(cols[cols.length - 1], 10); + if (Number.isFinite(pid) && pid > 0 && !pids.includes(pid)) pids.push(pid); + } + return pids; +} + +async function terminatePids(pids, { kill, running, wait }) { + if (pids.length === 0) return true; + for (const p of pids) { + try { + kill(p, "SIGTERM"); + } catch {} + } + await wait(1000); + for (const p of pids) { + try { + if (running(p)) kill(p, "SIGKILL"); + } catch {} + } + // Confirm the port is free: any PID still alive means we failed. + return pids.every((p) => !running(p)); } diff --git a/bin/cli/commands/update.mjs b/bin/cli/commands/update.mjs index 443f9a498b..afdaff68e4 100644 --- a/bin/cli/commands/update.mjs +++ b/bin/cli/commands/update.mjs @@ -181,6 +181,28 @@ export async function runUpdateCommand(opts = {}) { // --include=optional keeps the optionalDependencies (better-sqlite3, keytar, // tls-client, llmlingua SLM stack) on update so an omit=optional config can't drop them. execSync("npm install -g omniroute@latest --include=optional", { stdio: "inherit" }); + // Trust-but-verify: `npm install -g` exits 0 even when a shadowing local install + // (e.g. ~/node_modules/omniroute ahead of the global prefix on PATH) means the + // binary the user actually runs was not touched. Re-read the running binary's + // version and warn instead of lying about success (#9475). + const afterVersion = await getCurrentVersion(); + if (afterVersion && compareVersions(afterVersion, latest) < 0) { + printError( + `Global install updated to ${latest}, but the running binary still reports ${afterVersion}.` + ); + console.log( + " A local `node_modules/omniroute` is likely shadowing the global install on PATH." + ); + console.log(" Diagnose with:"); + console.log(" which -a omniroute"); + console.log(" command -v omniroute"); + console.log(" npm prefix -g"); + console.log( + " Then remove the shadowing local copy (e.g. `npm uninstall omniroute` from its directory)" + ); + console.log(" or reorder PATH so the global bin comes first."); + return 1; + } printSuccess(`Updated to version ${latest}`); printInfo("Run `omniroute --version` to verify."); return 0; diff --git a/bin/cli/runtime/nativeDeps.mjs b/bin/cli/runtime/nativeDeps.mjs index 1dc442270e..b632e689a2 100644 --- a/bin/cli/runtime/nativeDeps.mjs +++ b/bin/cli/runtime/nativeDeps.mjs @@ -94,10 +94,12 @@ export function isBetterSqliteBinaryValid() { const magic = buf.toString("hex"); const os = platform(); let formatOk; - if (os === "linux") formatOk = magic.startsWith("7f454c46"); // ELF + if (os === "linux") + formatOk = magic.startsWith("7f454c46"); // ELF else if (os === "darwin") formatOk = magic.startsWith("cffaedfe") || magic.startsWith("cefaedfe"); // Mach-O - else if (os === "win32") formatOk = magic.startsWith("4d5a"); // PE/MZ + else if (os === "win32") + formatOk = magic.startsWith("4d5a"); // PE/MZ else formatOk = true; if (!formatOk) return false; // File-format magic bytes alone do not guarantee the binary was built for the Node ABI @@ -152,9 +154,18 @@ export function ensureBetterSqliteRuntime({ silent = false, force = false } = {} if (!silent) process.stdout.write("[omniroute][runtime] better-sqlite3 OK\n"); return { betterSqlite: true }; } + if (!silent) { + process.stdout.write( + `[omniroute][runtime] Installing better-sqlite3@${BETTER_SQLITE3_VERSION} into runtime...\n` + ); + } const ok = npmInstallRuntime([`better-sqlite3@${BETTER_SQLITE3_VERSION}`], { silent }); if (!ok && !silent) { - process.stderr.write("[omniroute][runtime] better-sqlite3 install failed\n"); + process.stderr.write( + "[omniroute][runtime] better-sqlite3 install failed.\n" + + " This usually means npm install scripts are blocked.\n" + + " Try: npm install-scripts approve better-sqlite3\n" + ); } return { betterSqlite: ok && hasModule("better-sqlite3") && isBetterSqliteBinaryValid() }; } diff --git a/bin/cli/runtime/processSupervisor.mjs b/bin/cli/runtime/processSupervisor.mjs index 3c79bd213c..7277f9de67 100644 --- a/bin/cli/runtime/processSupervisor.mjs +++ b/bin/cli/runtime/processSupervisor.mjs @@ -8,7 +8,7 @@ import { computeRestartDelayMs, waitUntilPortFree, } from "./supervisorPolicy.mjs"; -import { buildNodeHeapArgs } from "../../../scripts/build/runtime-env.mjs"; +import { buildNodeRuntimeArgs } from "../../../scripts/build/runtime-env.mjs"; import { stopProcessGracefully } from "../../../src/shared/platform/windowsProcess.ts"; import { isFatalInstrumentationHookFailure, @@ -47,7 +47,6 @@ export class ServerSupervisor { // #5238: skip the explicit CLI --max-old-space-size when the user pinned the // heap via NODE_OPTIONS (a CLI arg would shadow/override their value). The // calibrated heap is already carried by env.NODE_OPTIONS either way. - const heapArgs = buildNodeHeapArgs(process.env, this.memoryLimit); // #6321: stdout used to be discarded (`"ignore"`) whenever `--log`/OMNIROUTE_SHOW_LOG // wasn't set (the default) — any debug/pino output written to stdout vanished // silently, so a boot that never becomes ready looked like a dead hang with zero @@ -55,7 +54,9 @@ export class ServerSupervisor { // stderr so a readiness timeout can surface what the child actually printed. this.child = spawn( process.versions.bun ? process.execPath : "node", - [...(process.versions.bun ? [] : heapArgs), this.serverPath], + process.versions.bun + ? [this.serverPath] + : buildNodeRuntimeArgs(process.env, this.memoryLimit, this.serverPath), { cwd: dirname(this.serverPath), env: this.env, diff --git a/bin/cli/runtime/trayRuntime.ts b/bin/cli/runtime/trayRuntime.ts index 712bc720dc..98a3abfccc 100644 --- a/bin/cli/runtime/trayRuntime.ts +++ b/bin/cli/runtime/trayRuntime.ts @@ -17,7 +17,7 @@ export const SYSTRAY_VERSION = "2.1.4"; const SYSTRAY_SPEC = `${SYSTRAY_PACKAGE}@${SYSTRAY_VERSION}`; export function resolveSystrayBinName(platform: NodeJS.Platform): string | null { - if (platform === "win32") return null; + if (platform === "win32") return "tray_windows_release.exe"; if (platform === "darwin") return "tray_darwin_release"; return "tray_linux_release"; } @@ -45,7 +45,6 @@ export function chmodSystrayBinAt(runtimeRoot: string, platform: NodeJS.Platform } export async function loadSystray(): Promise<(new (...args: unknown[]) => unknown) | null> { - if (process.platform === "win32") return null; // Windows uses tray.ps1 instead ensureRuntimeDir(); if (!isInstalled()) { try { diff --git a/bin/cli/sqlite.mjs b/bin/cli/sqlite.mjs index 2bdb7bd544..ce14541480 100644 --- a/bin/cli/sqlite.mjs +++ b/bin/cli/sqlite.mjs @@ -130,7 +130,7 @@ async function openSqliteDatabase(dbPath, options = {}) { try { return new loaded.Database(dbPath, options); } catch (error) { - throw createSqliteNativeError(error); + return openWithSyncDriverFallback(dbPath, options, error); } } diff --git a/bin/cli/tray/autostart.mjs b/bin/cli/tray/autostart.mjs index b8318f2d79..6c1ba21aee 100644 --- a/bin/cli/tray/autostart.mjs +++ b/bin/cli/tray/autostart.mjs @@ -167,6 +167,10 @@ export function getAutostartStatus() { linger: tryReadLingerEnabled(), }; } + if (process.platform === "win32") { + const winMechanism = isAutostartEnabled() ? "vbs-startup" : null; + return { enabled: isAutostartEnabled(), mechanism: winMechanism }; + } return { enabled: isAutostartEnabled(), mechanism: null }; } diff --git a/bin/cli/tray/index.mjs b/bin/cli/tray/index.mjs index 5745062e66..dfa621b422 100644 --- a/bin/cli/tray/index.mjs +++ b/bin/cli/tray/index.mjs @@ -1,5 +1,4 @@ import { isTraySupported, initSystrayUnix, killSystrayUnix } from "./traySystray.mjs"; -import { initWinTray, killWinTray } from "./trayWindows.mjs"; let active = null; @@ -10,15 +9,17 @@ export async function initTray({ port, onQuit, onOpenDashboard, onShowLogs }) { const ctx = { port, onQuit, onOpenDashboard, onShowLogs }; // initSystrayUnix is async: it lazily installs/loads systray2 from the runtime // dir (trayRuntime.ts) rather than from node_modules. (#4605) - active = process.platform === "win32" ? initWinTray(ctx) : await initSystrayUnix(ctx); + // Use systray2 on all platforms including Windows — the tarball ships + // tray_windows_release.exe, avoiding the Norton/AVG IDP.HELU.PSE85 heuristic + // that fires on temp-dir PowerShell scripts. (#8609) + active = await initSystrayUnix(ctx); return active; } export function killTray() { if (!active) return; try { - if (process.platform === "win32") killWinTray(active); - else killSystrayUnix(active); + killSystrayUnix(active); } catch {} active = null; } diff --git a/bin/cli/utils/pid.mjs b/bin/cli/utils/pid.mjs index 1149c67251..ddbbc211a8 100644 --- a/bin/cli/utils/pid.mjs +++ b/bin/cli/utils/pid.mjs @@ -2,7 +2,9 @@ import { existsSync, mkdirSync, readFileSync, unlinkSync, writeFileSync } from " import { join } from "node:path"; import { resolveDataDir } from "../data-dir.mjs"; -const SERVICES = ["server", "mitm", "tunnel/cloudflared", "tunnel/tailscale"]; +// #9455: "supervisor" must be tracked so killAllSubprocesses() can stop the +// supervisor process, not just the child server it spawned (and respawns). +const SERVICES = ["server", "supervisor", "mitm", "tunnel/cloudflared", "tunnel/tailscale"]; function getServicePidPath(service) { return join(resolveDataDir(), service, ".pid"); diff --git a/bin/mcp-server.mjs b/bin/mcp-server.mjs index 2a79f151d6..39590d379c 100644 --- a/bin/mcp-server.mjs +++ b/bin/mcp-server.mjs @@ -3,7 +3,7 @@ import { spawn } from "node:child_process"; import { existsSync } from "node:fs"; import { dirname, join } from "node:path"; -import { fileURLToPath } from "node:url"; +import { fileURLToPath, pathToFileURL } from "node:url"; const __filename = fileURLToPath(import.meta.url); const __dirname = dirname(__filename); @@ -43,7 +43,15 @@ export async function startMcpCli(rootDir = ROOT) { } // `tsx` loader is only required for local `.ts` fallback; JS entry works without it. - const loaderArgs = mcpEntry.endsWith(".ts") ? ["--import", "tsx"] : []; + const tsxLoaderArgs = mcpEntry.endsWith(".ts") ? ["--import", "tsx"] : []; + // Preload the stdout/stderr console guard before mcpEntry's own module graph evaluates — + // DB init (a side effect of createMcpServer()'s tool registration) logs via plain + // console.log, and by the time any code inside mcpEntry itself could redirect it, that + // module's own (hoisted) imports have already run. Loading the guard first, in a separate + // module, is the only point early enough to guarantee it never leaks into the JSON-RPC + // stream on stdout. + const consoleGuard = pathToFileURL(join(__dirname, "mcpStdioConsoleGuard.mjs")).href; + const loaderArgs = ["--import", consoleGuard, ...tsxLoaderArgs]; await new Promise((resolve, reject) => { const child = spawn(process.execPath, [...loaderArgs, mcpEntry], { diff --git a/bin/mcpStdioConsoleGuard.mjs b/bin/mcpStdioConsoleGuard.mjs new file mode 100644 index 0000000000..074dd1e416 --- /dev/null +++ b/bin/mcpStdioConsoleGuard.mjs @@ -0,0 +1,16 @@ +// Preloaded (via `node --import`) before open-sse/mcp-server/server.ts and its entire +// import graph evaluate. The stdio MCP transport uses stdout exclusively for JSON-RPC +// messages, but DB init (getDbInstance(), triggered as a side effect of evaluating the +// server's module graph — e.g. tool registration reading compression settings) logs via +// plain console.log. A redirect placed *inside* server.ts (even at the top of its first +// executed function) is too late: static imports are hoisted and fully evaluated before +// any of that function's own code runs, so earlier console.log calls during import-time +// side effects already escaped to the real stdout by then. Redirecting here, in a module +// that loads before server.ts is even requested, is the only point early enough to +// guarantee no startup output leaks into the JSON-RPC stream and corrupts it client-side +// (e.g. Claude Desktop: "Unexpected token 'D', \"[DB] Changi\"... is not valid JSON"). +import { Console } from "node:console"; + +const stderrConsole = new Console({ stdout: process.stderr, stderr: process.stderr }); +console.log = stderrConsole.log.bind(stderrConsole); +console.warn = stderrConsole.warn.bind(stderrConsole); diff --git a/bin/omniroute.mjs b/bin/omniroute.mjs index fa216bb3ff..c5b280ba64 100755 --- a/bin/omniroute.mjs +++ b/bin/omniroute.mjs @@ -43,6 +43,19 @@ if (isVersionFastPath(process.argv)) { process.exit(0); } +// MCP stdio transport uses stdout exclusively for JSON-RPC messages. Redirect +// console.log/warn to stderr before anything else runs — including the tsx/esm and +// polyfill imports below, since those (and their transitive module graphs, e.g. DB +// init) can themselves log during evaluation. Redirecting after those imports let +// early output leak straight into the JSON-RPC stream and corrupt it client-side +// (e.g. Claude Desktop: "Unexpected token 'D', \"[DB] Changi\"... is not valid JSON"). +if (process.argv.includes("--mcp")) { + const { Console } = await import("node:console"); + const stderrConsole = new Console({ stdout: process.stderr, stderr: process.stderr }); + console.log = stderrConsole.log.bind(stderrConsole); + console.warn = stderrConsole.warn.bind(stderrConsole); +} + // Register tsx so dynamic imports of .ts source files (referenced as .js per // TypeScript conventions) resolve correctly. The build never emits .js for // src/lib/cli-helper/, so tsx handles the .ts → .js resolution at runtime. @@ -58,16 +71,6 @@ await import("../open-sse/utils/setupPolyfill.ts"); const { registerAliasResolver } = await import("./aliasResolver.mjs"); await registerAliasResolver(ROOT); -// MCP stdio transport uses stdout exclusively for JSON-RPC messages. -// Redirect console.log/warn to stderr early (before loadEnvFile and DB init) -// so no startup output corrupts the protocol. -if (process.argv.includes("--mcp")) { - const { Console } = await import("node:console"); - const stderrConsole = new Console({ stdout: process.stderr, stderr: process.stderr }); - console.log = stderrConsole.log.bind(stderrConsole); - console.warn = stderrConsole.warn.bind(stderrConsole); -} - // Electron persists secrets (JWT_SECRET, API_KEY_SECRET, STORAGE_ENCRYPTION_KEY) to // `/server.env` (electron/main.js), never `.env`. Migrating an existing // install (storage.sqlite + server.env) to the CLI left those secrets undiscoverable — diff --git a/bin/restore-policies.sh b/bin/restore-policies.sh index de1c2608aa..4472fb601f 100755 --- a/bin/restore-policies.sh +++ b/bin/restore-policies.sh @@ -39,7 +39,8 @@ snap="$(ops_find_snapshot "$ID")" # Policy definition tables present in BOTH the snapshot and the live DB. GLOB # keeps `_` literal; we drop usage counters / logs so accounting isn't rewound. -readarray -t tables < <( +tables=() +while IFS= read -r t; do tables+=("$t"); done < <( sqlite3 "$snap/storage.sqlite" \ "SELECT name FROM sqlite_master WHERE type='table' AND name GLOB 'api_key*' \ AND name NOT GLOB '*counter*' AND name NOT GLOB '*_log*' ORDER BY name;" diff --git a/changelog.d/features/6736-response-content-encoding.md b/changelog.d/features/6736-response-content-encoding.md new file mode 100644 index 0000000000..14ed572868 --- /dev/null +++ b/changelog.d/features/6736-response-content-encoding.md @@ -0,0 +1 @@ +- **feat(api):** add response content encoding verification — confirms Next.js compress:true and documents stripStaleForwardingHeaders behavior ([#6736](https://github.com/diegosouzapw/OmniRoute/issues/6736)) diff --git a/changelog.d/features/6752-plugins-marketplace-install-api.md b/changelog.d/features/6752-plugins-marketplace-install-api.md new file mode 100644 index 0000000000..4b53508688 --- /dev/null +++ b/changelog.d/features/6752-plugins-marketplace-install-api.md @@ -0,0 +1 @@ +- **feat(api):** add plugins marketplace install endpoint with checksum verification ([#6752](https://github.com/diegosouzapw/OmniRoute/issues/6752)) diff --git a/changelog.d/features/7679-chatgpt-web-thinking-tool-emulation.md b/changelog.d/features/7679-chatgpt-web-thinking-tool-emulation.md new file mode 100644 index 0000000000..fcd0ec4a14 --- /dev/null +++ b/changelog.d/features/7679-chatgpt-web-thinking-tool-emulation.md @@ -0,0 +1 @@ +- **feat(chatgpt-web):** harden prompt-emulated tool contract for thinking models (#7679 — thanks @horacecar) diff --git a/changelog.d/features/8237-reduce-idle-memory-small-vps.md b/changelog.d/features/8237-reduce-idle-memory-small-vps.md new file mode 100644 index 0000000000..4127a21a70 --- /dev/null +++ b/changelog.d/features/8237-reduce-idle-memory-small-vps.md @@ -0,0 +1 @@ +- **docs:** add low-memory/small VPS optimization guide ([#8237](https://github.com/diegosouzapw/OmniRoute/issues/8237)) diff --git a/changelog.d/features/8369-connection-level-upstream-headers.md b/changelog.d/features/8369-connection-level-upstream-headers.md new file mode 100644 index 0000000000..250c797819 --- /dev/null +++ b/changelog.d/features/8369-connection-level-upstream-headers.md @@ -0,0 +1 @@ +- **feat(providers):** add connection-level custom upstream headers via `provider_specific_data.customHeaders` — applied to every request through that connection, with model-level headers overriding on the same case-insensitive name. (thanks @Benson-mk) \ No newline at end of file diff --git a/changelog.d/features/8461-runomniroutecli-approval-gate.md b/changelog.d/features/8461-runomniroutecli-approval-gate.md new file mode 100644 index 0000000000..bf08a096dc --- /dev/null +++ b/changelog.d/features/8461-runomniroutecli-approval-gate.md @@ -0,0 +1 @@ +- feat(copilot): add approval gate for runOmniRouteCli commands (#8461) diff --git a/changelog.d/features/8799-electron-remote-server-mode.md b/changelog.d/features/8799-electron-remote-server-mode.md new file mode 100644 index 0000000000..f7c4016b3c --- /dev/null +++ b/changelog.d/features/8799-electron-remote-server-mode.md @@ -0,0 +1 @@ +- **feat(electron):** Desktop app can now attach to an already-running OmniRoute server (e.g. a Docker/OrbStack container) instead of always spawning its own bundled server — configurable via the tray's "Remote Server → Connect to Remote Server…" or the `OMNIROUTE_REMOTE_URL` env var ([#8799](https://github.com/diegosouzapw/OmniRoute/pull/8799)) — thanks @soulhakr diff --git a/changelog.d/features/8862-novita-model-catalog.md b/changelog.d/features/8862-novita-model-catalog.md new file mode 100644 index 0000000000..e510b079de --- /dev/null +++ b/changelog.d/features/8862-novita-model-catalog.md @@ -0,0 +1 @@ +- **Providers**: expands the Novita AI catalog from a single Llama 3.1 8B entry to 19 curated serving models (DeepSeek V4, Kimi K3, GLM 5.2, MiniMax M3, Qwen3.7 Max, Qwen3 Coder 480B, MiMo V2.5 Pro, gpt-oss-120b, Gemma 4 31B and more), each carrying its real context window, output cap and reasoning flag from the live `/openai/v1/models` listing, and each vision flag confirmed by an actual image request rather than the listing's self-reported modalities diff --git a/changelog.d/features/8870-node-sqlite-adapter-parity.md b/changelog.d/features/8870-node-sqlite-adapter-parity.md new file mode 100644 index 0000000000..b912939d2e --- /dev/null +++ b/changelog.d/features/8870-node-sqlite-adapter-parity.md @@ -0,0 +1 @@ +- **Database**: The `node:sqlite` fallback now uses SQLite's native backup API and real immediate write transactions, improving backup consistency and concurrent-write behavior when `better-sqlite3` is unavailable diff --git a/changelog.d/features/8908-model-token-limit-overrides.md b/changelog.d/features/8908-model-token-limit-overrides.md new file mode 100644 index 0000000000..8d32a9e1f0 --- /dev/null +++ b/changelog.d/features/8908-model-token-limit-overrides.md @@ -0,0 +1 @@ +- **feat(models):** add exact per-model `context_length`, `max_input_tokens`, and `max_output_tokens` overrides across model discovery and runtime enforcement, with automatic migration from the retired output-only `max_token` key ([#8908](https://github.com/diegosouzapw/OmniRoute/pull/8908)) — thanks @xz-dev diff --git a/changelog.d/features/8964-xai-agent-tools-passthrough.md b/changelog.d/features/8964-xai-agent-tools-passthrough.md new file mode 100644 index 0000000000..62536adb43 --- /dev/null +++ b/changelog.d/features/8964-xai-agent-tools-passthrough.md @@ -0,0 +1 @@ +- **feat(providers):** native xAI Agent Tools passthrough on `/v1/responses` for `xai` / `xai-oauth` (`xao`) — forward `web_search` + `x_search` to `api.x.ai` instead of rewriting or rejecting them ([#8964](https://github.com/diegosouzapw/OmniRoute/issues/8964)) diff --git a/changelog.d/features/8978-unorouter.md b/changelog.d/features/8978-unorouter.md new file mode 100644 index 0000000000..5a4e34839f --- /dev/null +++ b/changelog.d/features/8978-unorouter.md @@ -0,0 +1 @@ +- **feat(providers): add UnoRouter provider** — UnoRouter is an OpenAI-compatible routing gateway supporting hundreds of models. It is now registered as an API-key provider. ([#8978](https://github.com/diegosouzapw/OmniRoute/issues/8978)) diff --git a/changelog.d/features/9031-regolo-ai-provider.md b/changelog.d/features/9031-regolo-ai-provider.md new file mode 100644 index 0000000000..0af978fafe --- /dev/null +++ b/changelog.d/features/9031-regolo-ai-provider.md @@ -0,0 +1 @@ +- **feat(providers):** add Regolo AI OpenAI-compatible provider ([#9031](https://github.com/diegosouzapw/OmniRoute/issues/9031)) diff --git a/changelog.d/features/9068-editable-discovered-provider-slugs.md b/changelog.d/features/9068-editable-discovered-provider-slugs.md new file mode 100644 index 0000000000..cc5bcee236 --- /dev/null +++ b/changelog.d/features/9068-editable-discovered-provider-slugs.md @@ -0,0 +1 @@ +- **feat(db):** add provider-scoped model aliases that survive rediscovery ([#9068](https://github.com/diegosouzapw/OmniRoute/issues/9068)) diff --git a/changelog.d/features/9208-codex-parenthesized-reasoning.md b/changelog.d/features/9208-codex-parenthesized-reasoning.md new file mode 100644 index 0000000000..3eb2d97e26 --- /dev/null +++ b/changelog.d/features/9208-codex-parenthesized-reasoning.md @@ -0,0 +1 @@ +- **feat(codex):** accept parenthesized GPT-5.6 reasoning overrides. (thanks @seakleangnhak) diff --git a/changelog.d/features/9214-claude-thinking-token-counts.md b/changelog.d/features/9214-claude-thinking-token-counts.md new file mode 100644 index 0000000000..6787c2bd45 --- /dev/null +++ b/changelog.d/features/9214-claude-thinking-token-counts.md @@ -0,0 +1 @@ +- **feat(usage):** surface Claude thinking token counts to clients. (thanks @luoyide) diff --git a/changelog.d/features/9225-ollama-local-embeddings.md b/changelog.d/features/9225-ollama-local-embeddings.md new file mode 100644 index 0000000000..02b606281b --- /dev/null +++ b/changelog.d/features/9225-ollama-local-embeddings.md @@ -0,0 +1 @@ +- **feat(ollama):** add Ollama Local embedding support via /v1/embeddings. (thanks @HaoNgo232) diff --git a/changelog.d/features/9243-forwarded-header-budget-env.md b/changelog.d/features/9243-forwarded-header-budget-env.md new file mode 100644 index 0000000000..830ce41612 --- /dev/null +++ b/changelog.d/features/9243-forwarded-header-budget-env.md @@ -0,0 +1 @@ +- feat: make forwarded upstream response-header budget configurable via env var (#9243) diff --git a/changelog.d/features/9248-video-url-passthrough.md b/changelog.d/features/9248-video-url-passthrough.md new file mode 100644 index 0000000000..de1c81b6f0 --- /dev/null +++ b/changelog.d/features/9248-video-url-passthrough.md @@ -0,0 +1 @@ +- **feat(providers):** make video_url passthrough configurable per provider/model via compat override ([#9248](https://github.com/diegosouzapw/OmniRoute/issues/9248)) — thanks @HellFiveOsborn diff --git a/changelog.d/features/9270-provider-api-key-links.md b/changelog.d/features/9270-provider-api-key-links.md new file mode 100644 index 0000000000..f6e884cea5 --- /dev/null +++ b/changelog.d/features/9270-provider-api-key-links.md @@ -0,0 +1 @@ +- **feat(dashboard):** render a conditional "Get API key" link on the provider detail page, surfaced from the existing `notice.apiKeyUrl` / `notice.signupUrl` catalog metadata (e.g. `pioneer`, `jina`, `together`). The link opens in a new tab and is hidden when neither URL is present, so existing providers are unaffected. Tracks the notice field in `ProviderCatalogMetadata` ([#9270](https://github.com/diegosouzapw/OmniRoute/pull/9270)) diff --git a/changelog.d/features/9284-json-cookie-input.md b/changelog.d/features/9284-json-cookie-input.md new file mode 100644 index 0000000000..100842dcc0 --- /dev/null +++ b/changelog.d/features/9284-json-cookie-input.md @@ -0,0 +1 @@ +- **feat(providers):** accept JSON cookie objects in normalizeSessionCookieHeader (#9284 — thanks @AIB1TAL0S) diff --git a/changelog.d/features/9318-opencode-zen-reasoning-effort.md b/changelog.d/features/9318-opencode-zen-reasoning-effort.md new file mode 100644 index 0000000000..49f8e78a84 --- /dev/null +++ b/changelog.d/features/9318-opencode-zen-reasoning-effort.md @@ -0,0 +1 @@ +- **feat(providers):** support max reasoning effort for opencode-zen DeepSeek models (#9318) diff --git a/changelog.d/features/9415-newapi-sub2api-aggregator-balance.md b/changelog.d/features/9415-newapi-sub2api-aggregator-balance.md new file mode 100644 index 0000000000..91357cf987 --- /dev/null +++ b/changelog.d/features/9415-newapi-sub2api-aggregator-balance.md @@ -0,0 +1 @@ +- **sse:** New-API / One-API / Sub2API aggregator balance detection for compatible nodes — with the "Aggregator Gateway" toggle on, OmniRoute queries the aggregator's `/api/user/self` to read the account balance, shows it as a dashboard badge and lets quota-preflight routing skip exhausted accounts. Gated by the `NEWAPI_AGGREGATOR_BALANCE` feature flag (default off), with a `quotaPerUnit` override for aggregators that do not use the default 500000 units/$1 rate ([#9415](https://github.com/diegosouzapw/OmniRoute/issues/9415)) diff --git a/changelog.d/features/9418-disable-auto-no-think-combos.md b/changelog.d/features/9418-disable-auto-no-think-combos.md new file mode 100644 index 0000000000..0f02309f3f --- /dev/null +++ b/changelog.d/features/9418-disable-auto-no-think-combos.md @@ -0,0 +1 @@ +- **feat(catalog):** added opt-in settings `hideAutoCombos` and `hideNoThinkVariants` (default off) to filter built-in `auto/*` virtual combos and `no-think/*` gateway variants from the `/v1/models` catalog — user-defined combos and original provider models stay listed; routing is unaffected ([#9418](https://github.com/diegosouzapw/OmniRoute/issues/9418)) diff --git a/changelog.d/features/9473-opencode-plugin-model-allowlist.md b/changelog.d/features/9473-opencode-plugin-model-allowlist.md new file mode 100644 index 0000000000..2f0a937812 --- /dev/null +++ b/changelog.d/features/9473-opencode-plugin-model-allowlist.md @@ -0,0 +1 @@ +- **feat(opencode-plugin):** added `features.visibleModels` (allowlist) and `features.hiddenModels` (blocklist) to `@omniroute/opencode-plugin` — curate the OpenCode TUI/CLI model picker from 600+ catalog entries down to an operator-defined ID list that persists in `opencode.json` across config resets ([#9473](https://github.com/diegosouzapw/OmniRoute/issues/9473)) diff --git a/changelog.d/features/9511-quota-exhausted-transient-test-all.md b/changelog.d/features/9511-quota-exhausted-transient-test-all.md new file mode 100644 index 0000000000..d9b3e54270 --- /dev/null +++ b/changelog.d/features/9511-quota-exhausted-transient-test-all.md @@ -0,0 +1 @@ +- **feat(models):** Test All's "Auto-hide failed models" no longer hides quota errors — daily-quota-exhausted and credits-exhausted responses are now classified via the routing path's existing quota detectors, so an evening Test All on a free-tier provider no longer silently wipes the catalog. Quota results stay visible with a distinct amber badge ([#9511](https://github.com/diegosouzapw/OmniRoute/issues/9511)) diff --git a/changelog.d/features/9570-plugin-context-headers.md b/changelog.d/features/9570-plugin-context-headers.md new file mode 100644 index 0000000000..07fc8687c4 --- /dev/null +++ b/changelog.d/features/9570-plugin-context-headers.md @@ -0,0 +1 @@ +- feat(plugins): expose client request headers in plugin onRequest/onResponse context (#9570) diff --git a/changelog.d/features/9579-soniox-audio-provider.md b/changelog.d/features/9579-soniox-audio-provider.md new file mode 100644 index 0000000000..9213793594 --- /dev/null +++ b/changelog.d/features/9579-soniox-audio-provider.md @@ -0,0 +1 @@ +- **feat(audio):** Soniox STT + TTS provider (`sx`) — async speech-to-text (`stt-async-v5`, `stt-async-v4`) and real-time text-to-speech (`tts-rt-v1`) ([#9579](https://github.com/diegosouzapw/OmniRoute/pull/9579)) diff --git a/changelog.d/fixes/8072-catalog-provider-grouped-ordering.md b/changelog.d/fixes/8072-catalog-provider-grouped-ordering.md new file mode 100644 index 0000000000..f1b919cd40 --- /dev/null +++ b/changelog.d/fixes/8072-catalog-provider-grouped-ordering.md @@ -0,0 +1 @@ +- **fix(models):** `/v1/models` now publishes one contiguous provider-grouped block per provider instead of interleaved fragments. The catalog is assembled by many independent push loops (auto-combos, named combos, static registry, codex-native, synced, OpenRouter, specialty, custom, alias-backed, connection-fallback), so one provider's models previously landed in several separated blocks. A single stable, provider-grouped sort is applied at serialization, keyed by `owned_by` (canonical owner identity) rather than the model-id prefix — so a single routable public prefix that differs from its owner (e.g. no-auth OpenCode publishing `oc/` while keeping `owned_by: "opencode"`) stays contiguous. Combos are pinned first (preserving #4164); then providers in registry precedence (OAuth → NoAuth → API-key); then unknown providers in locale-independent code-unit order. The sort is stable and pure (reorders rows only, no mutation, no DB/IO), preserving combo `sort_order`, connection priority, custom append-order, and equal-id audio twins. diff --git a/changelog.d/fixes/8542-fix.plan.md b/changelog.d/fixes/8542-fix.plan.md new file mode 100644 index 0000000000..f44dd909c6 --- /dev/null +++ b/changelog.d/fixes/8542-fix.plan.md @@ -0,0 +1 @@ +- fix(ci): aggregate all fast-gates into non-fail-fast loop so one red gate no longer masks later gates (#8542) diff --git a/changelog.d/fixes/8577-fix.plan.md b/changelog.d/fixes/8577-fix.plan.md new file mode 100644 index 0000000000..2b7b175101 --- /dev/null +++ b/changelog.d/fixes/8577-fix.plan.md @@ -0,0 +1,2 @@ +- fix(tests): make machineId tests macOS-compatible by stubbing ioreg in test helper (#8577) +- fix(scripts): replace bash 4+ readarray with compatible while-read loop in restore-policies.sh (#8577) diff --git a/changelog.d/fixes/8609-fix.plan.md b/changelog.d/fixes/8609-fix.plan.md new file mode 100644 index 0000000000..0f8cb8e868 --- /dev/null +++ b/changelog.d/fixes/8609-fix.plan.md @@ -0,0 +1 @@ +- fix(cli): enable systray2 on Windows for Norton-friendly tray (#8609) \ No newline at end of file diff --git a/changelog.d/fixes/8681-fix.plan.md b/changelog.d/fixes/8681-fix.plan.md new file mode 100644 index 0000000000..9abd3a9e87 --- /dev/null +++ b/changelog.d/fixes/8681-fix.plan.md @@ -0,0 +1 @@ +- fix(providers): gate premium opencode-zen/opencode-go models behind an API key (#8681) diff --git a/changelog.d/fixes/8739-yuanbao-sse-parser.md b/changelog.d/fixes/8739-yuanbao-sse-parser.md new file mode 100644 index 0000000000..5893d17799 --- /dev/null +++ b/changelog.d/fixes/8739-yuanbao-sse-parser.md @@ -0,0 +1 @@ +- fix(yuanbao-web): accept `content` field in SSE text events (upstream format change) (#8739) diff --git a/changelog.d/fixes/8781-fix.plan.md b/changelog.d/fixes/8781-fix.plan.md new file mode 100644 index 0000000000..ce761c1555 --- /dev/null +++ b/changelog.d/fixes/8781-fix.plan.md @@ -0,0 +1 @@ +- fix(build): remove misleading open-sse/package.json facade and add workspace typecheck gate (#8781) diff --git a/changelog.d/fixes/8813-chatgpt-sentinel.md b/changelog.d/fixes/8813-chatgpt-sentinel.md new file mode 100644 index 0000000000..0cd1091c5e --- /dev/null +++ b/changelog.d/fixes/8813-chatgpt-sentinel.md @@ -0,0 +1 @@ +- fix(errorClassifier): classify ChatGPT Web SENTINEL_BLOCKED 403 as terminal FORBIDDEN, enabling proper combo fallback (#8813) diff --git a/changelog.d/fixes/8826-fix.plan.md b/changelog.d/fixes/8826-fix.plan.md new file mode 100644 index 0000000000..9549452e3c --- /dev/null +++ b/changelog.d/fixes/8826-fix.plan.md @@ -0,0 +1 @@ +- fix(cli): fall back to node:sqlite when better-sqlite3 constructor throws at runtime (#8826) \ No newline at end of file diff --git a/changelog.d/fixes/8830-fix.plan.md b/changelog.d/fixes/8830-fix.plan.md new file mode 100644 index 0000000000..5cb0cf3c28 --- /dev/null +++ b/changelog.d/fixes/8830-fix.plan.md @@ -0,0 +1 @@ +- fix(opencode): prefix provider id with "opencode-" for auth login command (#8830) \ No newline at end of file diff --git a/changelog.d/fixes/8841-fix.plan.md b/changelog.d/fixes/8841-fix.plan.md new file mode 100644 index 0000000000..6eca00c5b6 --- /dev/null +++ b/changelog.d/fixes/8841-fix.plan.md @@ -0,0 +1 @@ +- fix(opencode-zen): add current free-tier models to registry to enable combo context pre-filtering (#8841) diff --git a/changelog.d/fixes/8858-win32-cmd-shim-einval.md b/changelog.d/fixes/8858-win32-cmd-shim-einval.md new file mode 100644 index 0000000000..86ca5d1099 --- /dev/null +++ b/changelog.d/fixes/8858-win32-cmd-shim-einval.md @@ -0,0 +1 @@ +- **fix(build):** `prepublish` no longer spawns the Windows `.cmd` shims for npm/npx, which Node >= 20 refuses to launch without a shell (`EINVAL`). On Node 24 that silently skipped the MITM utilities, the MCP server bundle, the LLMLingua ONNX worker and `@omniroute/opencode-plugin` while `build:cli` still exited 0 and reported success. Build tools are now resolved to their own JS entry point and run with the current Node binary — no shim, no shell, no unescaped arguments. (thanks @maisdesign) diff --git a/changelog.d/fixes/8869-opencode-complete-model-limits.md b/changelog.d/fixes/8869-opencode-complete-model-limits.md new file mode 100644 index 0000000000..9647ab8d39 --- /dev/null +++ b/changelog.d/fixes/8869-opencode-complete-model-limits.md @@ -0,0 +1 @@ +- **fix(opencode):** generate schema-complete model limits so OpenCode accepts catalog entries without an explicit output cap ([#8869](https://github.com/diegosouzapw/OmniRoute/pull/8869)) — thanks @xiaoyaner0201 diff --git a/changelog.d/fixes/8876-codex-responses-wire-default.md b/changelog.d/fixes/8876-codex-responses-wire-default.md new file mode 100644 index 0000000000..cca93603ff --- /dev/null +++ b/changelog.d/fixes/8876-codex-responses-wire-default.md @@ -0,0 +1 @@ +- **fix(cli):** default omitted Codex CLI wire API settings to Responses and clear stale Chat state after reset ([#8876](https://github.com/diegosouzapw/OmniRoute/pull/8876)) — thanks @xiaoyaner0201 diff --git a/changelog.d/fixes/8883-proxy-credential-autofill.md b/changelog.d/fixes/8883-proxy-credential-autofill.md new file mode 100644 index 0000000000..71d03dbe78 --- /dev/null +++ b/changelog.d/fixes/8883-proxy-credential-autofill.md @@ -0,0 +1 @@ +- **fix(proxy):** isolate new proxy credential fields from browser and password-manager autofill after form reset ([#8883](https://github.com/diegosouzapw/OmniRoute/pull/8883)) — thanks @xiaoyaner0201 diff --git a/changelog.d/fixes/8901-nightly-compat-stale-fixtures-and-goldens.md b/changelog.d/fixes/8901-nightly-compat-stale-fixtures-and-goldens.md new file mode 100644 index 0000000000..dcf494fd33 --- /dev/null +++ b/changelog.d/fixes/8901-nightly-compat-stale-fixtures-and-goldens.md @@ -0,0 +1 @@ +- fix(tests): update stale nightly compat fixtures and goldens to match current source constants (#8901) diff --git a/changelog.d/fixes/8921-codebuddy-cn-dual-auth-actions.md b/changelog.d/fixes/8921-codebuddy-cn-dual-auth-actions.md new file mode 100644 index 0000000000..5e2ce88591 --- /dev/null +++ b/changelog.d/fixes/8921-codebuddy-cn-dual-auth-actions.md @@ -0,0 +1 @@ +- **fix(providers):** expose both OAuth Connect and manual API-key actions for dual-auth providers such as CodeBuddy CN ([#8921](https://github.com/diegosouzapw/OmniRoute/pull/8921)) — thanks @Llliao1113 diff --git a/changelog.d/fixes/8946-no-tool-output.md b/changelog.d/fixes/8946-no-tool-output.md new file mode 100644 index 0000000000..9dd6ed3369 --- /dev/null +++ b/changelog.d/fixes/8946-no-tool-output.md @@ -0,0 +1 @@ +- fix(compression): drop orphan custom_tool_call/local_shell_call/apply_patch_call on compaction restore (#8946) diff --git a/changelog.d/fixes/8951-fix.plan.md b/changelog.d/fixes/8951-fix.plan.md new file mode 100644 index 0000000000..9b3d32029b --- /dev/null +++ b/changelog.d/fixes/8951-fix.plan.md @@ -0,0 +1 @@ +- fix(github): add targetFormat to GPT-5.6 Sol/Terra/Luna models (#8951) diff --git a/changelog.d/fixes/8960-fix.plan.md b/changelog.d/fixes/8960-fix.plan.md new file mode 100644 index 0000000000..2dca8c7069 --- /dev/null +++ b/changelog.d/fixes/8960-fix.plan.md @@ -0,0 +1 @@ +- fix(opencode): propagate vision capability from live catalog into opencode.json (#8960) diff --git a/changelog.d/fixes/8965-fix.plan.md b/changelog.d/fixes/8965-fix.plan.md new file mode 100644 index 0000000000..d557cd7027 --- /dev/null +++ b/changelog.d/fixes/8965-fix.plan.md @@ -0,0 +1 @@ +- fix(providers): switch Antigravity quota RPCs to iterate ANTIGRAVITY_RUNTIME_BASE_URLS (#8965) \ No newline at end of file diff --git a/changelog.d/fixes/8990-preserve-tools-response-completed.md b/changelog.d/fixes/8990-preserve-tools-response-completed.md new file mode 100644 index 0000000000..50ce426422 --- /dev/null +++ b/changelog.d/fixes/8990-preserve-tools-response-completed.md @@ -0,0 +1 @@ +- **fix(sse):** `stripResponsesLifecycleEcho` no longer strips `tools` from the `response.completed` snapshot — that terminal event is what Codex CLI rebuilds its tool list from, so stripping it left the client with zero tools. `tools` is still stripped from `response.created`/`response.in_progress`, and `instructions` (the >100KB size lever) is still stripped from all three ([#8990](https://github.com/diegosouzapw/OmniRoute/pull/8990)) diff --git a/changelog.d/fixes/8994-vertex-partner-claude.md b/changelog.d/fixes/8994-vertex-partner-claude.md new file mode 100644 index 0000000000..4e673ffc4b --- /dev/null +++ b/changelog.d/fixes/8994-vertex-partner-claude.md @@ -0,0 +1 @@ +- fix(vertex): route Claude models to native rawPredict endpoint and respect custom targetFormat overrides (#8994) diff --git a/changelog.d/fixes/8995-fix.plan.md b/changelog.d/fixes/8995-fix.plan.md new file mode 100644 index 0000000000..5ce1ddc6a2 --- /dev/null +++ b/changelog.d/fixes/8995-fix.plan.md @@ -0,0 +1 @@ +- fix(proxies): resolveProxyForConnection now returns the proxy name, so the dashboard badge shows the name instead of the hostname (#8995) diff --git a/changelog.d/fixes/8997-gpt56-max-reasoning.plan.md b/changelog.d/fixes/8997-gpt56-max-reasoning.plan.md new file mode 100644 index 0000000000..233441d5d8 --- /dev/null +++ b/changelog.d/fixes/8997-gpt56-max-reasoning.plan.md @@ -0,0 +1 @@ +- **fix(translator):** the Responses-to-Chat promotion path called `normalizeResponsesReasoningEffort` without the model argument, so GPT-5.6 Sol/Terra/Luna requests with `reasoning.effort: "max""` were downgraded to `"xhigh"`. The model is now threaded through, preserving `max` for GPT-5.6 while keeping the legacy downgrade for older models ([#8997](https://github.com/diegosouzapw/OmniRoute/pull/8997)) \ No newline at end of file diff --git a/changelog.d/fixes/9029-cursor-narration.md b/changelog.d/fixes/9029-cursor-narration.md new file mode 100644 index 0000000000..852f75f192 --- /dev/null +++ b/changelog.d/fixes/9029-cursor-narration.md @@ -0,0 +1 @@ +- fix(cursor): preserve tool context across multi-turn conversations when client lacks conversation_id (#9029) diff --git a/changelog.d/fixes/9030-antigravity-system-429s.md b/changelog.d/fixes/9030-antigravity-system-429s.md new file mode 100644 index 0000000000..da2ebecece --- /dev/null +++ b/changelog.d/fixes/9030-antigravity-system-429s.md @@ -0,0 +1 @@ +- fix(sse): move Antigravity client system content to first user message to avoid upstream 429 RESOURCE_EXHAUSTED on oversized systemInstruction (#9030) diff --git a/changelog.d/fixes/9034-fix.plan.md b/changelog.d/fixes/9034-fix.plan.md new file mode 100644 index 0000000000..49fa4b744d --- /dev/null +++ b/changelog.d/fixes/9034-fix.plan.md @@ -0,0 +1 @@ +- fix(api): use configured prefix instead of raw node UUID for alias-backed model id in /v1/models (#9034) diff --git a/changelog.d/fixes/9045-fix.plan.md b/changelog.d/fixes/9045-fix.plan.md new file mode 100644 index 0000000000..6065f9a181 --- /dev/null +++ b/changelog.d/fixes/9045-fix.plan.md @@ -0,0 +1 @@ +- fix(db): stream DB backup export instead of buffering entire file into memory (#9045) \ No newline at end of file diff --git a/changelog.d/fixes/9046-fix.md b/changelog.d/fixes/9046-fix.md new file mode 100644 index 0000000000..e80cc7b528 --- /dev/null +++ b/changelog.d/fixes/9046-fix.md @@ -0,0 +1 @@ +- fix(ui): normalize Free Pool API response payload to read from data.proxies (#9046) \ No newline at end of file diff --git a/changelog.d/fixes/9054-fix.plan.md b/changelog.d/fixes/9054-fix.plan.md new file mode 100644 index 0000000000..2efd3cf8f4 --- /dev/null +++ b/changelog.d/fixes/9054-fix.plan.md @@ -0,0 +1 @@ +- fix(api/analytics): stop charging :free models at arbitrary fallback price (#9054) diff --git a/changelog.d/fixes/9057-fix.plan.md b/changelog.d/fixes/9057-fix.plan.md new file mode 100644 index 0000000000..e20f273385 --- /dev/null +++ b/changelog.d/fixes/9057-fix.plan.md @@ -0,0 +1 @@ +- fix(api): auto/* routing aliases bypass API-key allowedConnections/disableNonPublicModels (#9057) diff --git a/changelog.d/fixes/9073-batches-list-limit-validation.md b/changelog.d/fixes/9073-batches-list-limit-validation.md new file mode 100644 index 0000000000..18f5538f82 --- /dev/null +++ b/changelog.d/fixes/9073-batches-list-limit-validation.md @@ -0,0 +1 @@ +- **fix(batches):** `GET /v1/batches` now validates the `limit` query param instead of passing `Number.parseInt(limit)` straight to the SQLite `LIMIT` bind. Previously `?limit=abc` threw an unhandled `datatype mismatch` (→ HTTP 500), `?limit=-1`/`0` returned an incoherent `has_more:true` empty page with `last_id:null`, and a large `?limit` read the entire `batches` table into memory. It now returns a `400` for any non-integer or out-of-range value (1–100, default 20), matching the `POST` handler's Zod validation and the OpenAI Batches contract ([#9073](https://github.com/diegosouzapw/OmniRoute/pull/9073)) diff --git a/changelog.d/fixes/9083-a2a-auth-timing-safe.md b/changelog.d/fixes/9083-a2a-auth-timing-safe.md new file mode 100644 index 0000000000..c5a64776c1 --- /dev/null +++ b/changelog.d/fixes/9083-a2a-auth-timing-safe.md @@ -0,0 +1 @@ +- **fix(a2a):** the A2A JSON-RPC router now compares the bearer token against `OMNIROUTE_API_KEY` in constant time (`crypto.timingSafeEqual`) instead of `===`, closing a token-length timing side-channel, and no longer logs the request URL to server logs on every call ([#9083](https://github.com/diegosouzapw/OmniRoute/pull/9083)) diff --git a/changelog.d/fixes/9088-skills-routes-error-sanitization.md b/changelog.d/fixes/9088-skills-routes-error-sanitization.md new file mode 100644 index 0000000000..7962220e6c --- /dev/null +++ b/changelog.d/fixes/9088-skills-routes-error-sanitization.md @@ -0,0 +1 @@ +- **fix(api/skills):** the `/api/skills/**` routes now run caught error messages through `sanitizeErrorMessage` before returning them, so a filesystem failure no longer leaks an absolute path (e.g. `/home//.omniroute/skills/...`) to the client; the `{ error: string }` response shape is preserved for the dashboard ([#9088](https://github.com/diegosouzapw/OmniRoute/pull/9088)) diff --git a/changelog.d/fixes/9096-fix-audio-speech-transcriptions-translations-provider-nodes.plan.md b/changelog.d/fixes/9096-fix-audio-speech-transcriptions-translations-provider-nodes.plan.md new file mode 100644 index 0000000000..10f7268184 --- /dev/null +++ b/changelog.d/fixes/9096-fix-audio-speech-transcriptions-translations-provider-nodes.plan.md @@ -0,0 +1 @@ +- fix(providers): admit audio-speech/audio-transcriptions apiType in audio route provider-node filters (#9096) \ No newline at end of file diff --git a/changelog.d/fixes/9102-fix.plan.md b/changelog.d/fixes/9102-fix.plan.md new file mode 100644 index 0000000000..bfbfed5c22 --- /dev/null +++ b/changelog.d/fixes/9102-fix.plan.md @@ -0,0 +1 @@ +- fix(providers): modal.com validation returns clear error when Base URL is missing, instead of leaking "Invalid outbound URL" (#9102) \ No newline at end of file diff --git a/changelog.d/fixes/9103-remove-retired-copilot-gemini-models.md b/changelog.d/fixes/9103-remove-retired-copilot-gemini-models.md new file mode 100644 index 0000000000..73087690c4 --- /dev/null +++ b/changelog.d/fixes/9103-remove-retired-copilot-gemini-models.md @@ -0,0 +1 @@ +- **fix(providers):** GitHub Copilot no longer re-imports or routes cached Gemini 2.5 Pro and Gemini 3 Flash model IDs after their retirement ([#9103](https://github.com/diegosouzapw/OmniRoute/pull/9103)) diff --git a/changelog.d/fixes/9134-fix.plan.md b/changelog.d/fixes/9134-fix.plan.md new file mode 100644 index 0000000000..acf04acb1c --- /dev/null +++ b/changelog.d/fixes/9134-fix.plan.md @@ -0,0 +1 @@ +- fix(providers): resolve combo names in audio transcriptions route so /v1/models stays honest (#9134) diff --git a/changelog.d/fixes/9140-fix.plan.md b/changelog.d/fixes/9140-fix.plan.md new file mode 100644 index 0000000000..5ab7425cf6 --- /dev/null +++ b/changelog.d/fixes/9140-fix.plan.md @@ -0,0 +1 @@ +- fix(vscode): allow built-in auto-routing models in VS Code model filter (#9140) \ No newline at end of file diff --git a/changelog.d/fixes/9159-fix.plan.md b/changelog.d/fixes/9159-fix.plan.md new file mode 100644 index 0000000000..22d84fba2a --- /dev/null +++ b/changelog.d/fixes/9159-fix.plan.md @@ -0,0 +1 @@ +- fix(management): authorize mcp:connect-only keys on loopback/LAN when requireLogin is enabled (#9159) \ No newline at end of file diff --git a/changelog.d/fixes/9187-enable-request-logs.md b/changelog.d/fixes/9187-enable-request-logs.md new file mode 100644 index 0000000000..9ba8a3ca87 --- /dev/null +++ b/changelog.d/fixes/9187-enable-request-logs.md @@ -0,0 +1 @@ +- **fix(db):** honor the `ENABLE_REQUEST_LOGS` environment override for detailed request persistence. (thanks @RobertsXML) diff --git a/changelog.d/fixes/9193-context-window-suffix.md b/changelog.d/fixes/9193-context-window-suffix.md new file mode 100644 index 0000000000..3cd229937d --- /dev/null +++ b/changelog.d/fixes/9193-context-window-suffix.md @@ -0,0 +1 @@ +- **fix(model):** normalize client context-window suffixes for combo routing. (thanks @b1nhm1nh) diff --git a/changelog.d/fixes/9195-fix.plan.md b/changelog.d/fixes/9195-fix.plan.md new file mode 100644 index 0000000000..966b51cad7 --- /dev/null +++ b/changelog.d/fixes/9195-fix.plan.md @@ -0,0 +1,2 @@ +- fix(catalog): repair dead guard and synced-first ordering for custom model Vision capable override (#9195) +- fix(routing): consult customModels supportsVision flag in Combo vision filter (#9195) diff --git a/changelog.d/fixes/9200-compression-off-reactive-compaction.md b/changelog.d/fixes/9200-compression-off-reactive-compaction.md new file mode 100644 index 0000000000..e4fefaf0f4 --- /dev/null +++ b/changelog.d/fixes/9200-compression-off-reactive-compaction.md @@ -0,0 +1 @@ +- **fix(compression):** honor the global compression-off setting for proactive and last-resort context compaction, preventing disabled compression from rewriting tool-call histories ([#9200](https://github.com/diegosouzapw/OmniRoute/pull/9200)) — thanks @joachimBrindeau diff --git a/changelog.d/fixes/9201-web-search-proxy-bind.plan.md b/changelog.d/fixes/9201-web-search-proxy-bind.plan.md new file mode 100644 index 0000000000..67a72dd64f --- /dev/null +++ b/changelog.d/fixes/9201-web-search-proxy-bind.plan.md @@ -0,0 +1 @@ +- fix(web-search): bind each search provider attempt to its connection proxy (#9201) \ No newline at end of file diff --git a/changelog.d/fixes/9204-fix.plan.md b/changelog.d/fixes/9204-fix.plan.md new file mode 100644 index 0000000000..21981ed128 --- /dev/null +++ b/changelog.d/fixes/9204-fix.plan.md @@ -0,0 +1 @@ +- fix(auth): make antigravity and agy equivalent in credential selection (#9204) diff --git a/changelog.d/fixes/9209-cli-ipv4-first-dns.md b/changelog.d/fixes/9209-cli-ipv4-first-dns.md new file mode 100644 index 0000000000..b0e602eed6 --- /dev/null +++ b/changelog.d/fixes/9209-cli-ipv4-first-dns.md @@ -0,0 +1 @@ +- **fix(cli):** prefer IPv4 DNS for spawned Node servers. (thanks @dsitmilis) diff --git a/changelog.d/fixes/9212-reasoning-cost-double-billing.md b/changelog.d/fixes/9212-reasoning-cost-double-billing.md new file mode 100644 index 0000000000..3c16a3ae8b --- /dev/null +++ b/changelog.d/fixes/9212-reasoning-cost-double-billing.md @@ -0,0 +1 @@ +- **fix(pricing):** stop billing reasoning tokens twice. (thanks @yidecode) diff --git a/changelog.d/fixes/9218-combo-picker-hidden-models.md b/changelog.d/fixes/9218-combo-picker-hidden-models.md new file mode 100644 index 0000000000..aa8270fd40 --- /dev/null +++ b/changelog.d/fixes/9218-combo-picker-hidden-models.md @@ -0,0 +1 @@ +- **fix(combo):** the Combo "Add model" picker now respects hidden-model visibility for every model source — system catalog, fallback, passthrough/node aliases, custom rows and auto-fetched models — instead of drowning the list in 500+ unavailable entries ([#9218](https://github.com/diegosouzapw/OmniRoute/pull/9218)) — thanks @szzhoujiarui diff --git a/changelog.d/fixes/9219-codex-additional-tools-normalization.md b/changelog.d/fixes/9219-codex-additional-tools-normalization.md new file mode 100644 index 0000000000..02ee481136 --- /dev/null +++ b/changelog.d/fixes/9219-codex-additional-tools-normalization.md @@ -0,0 +1 @@ +- **fix(codex):** normalize additional_tools passthrough items. (thanks @SalyyS1) diff --git a/changelog.d/fixes/9222-codex-quota-window-duration.md b/changelog.d/fixes/9222-codex-quota-window-duration.md new file mode 100644 index 0000000000..2f2e7dd2b7 --- /dev/null +++ b/changelog.d/fixes/9222-codex-quota-window-duration.md @@ -0,0 +1 @@ +- **fix(codex):** preserve quota window duration in usage shape. (thanks @HectorBernstorff) diff --git a/changelog.d/fixes/9223-azure-gpt5-chat-parameters.md b/changelog.d/fixes/9223-azure-gpt5-chat-parameters.md new file mode 100644 index 0000000000..6f4bb43afb --- /dev/null +++ b/changelog.d/fixes/9223-azure-gpt5-chat-parameters.md @@ -0,0 +1 @@ +- **fix(azure):** normalize GPT-5 chat completion parameters. (thanks @royanrosyad85) diff --git a/changelog.d/fixes/9228-codex-orphaned-tool-outputs.md b/changelog.d/fixes/9228-codex-orphaned-tool-outputs.md new file mode 100644 index 0000000000..46897c0a4f --- /dev/null +++ b/changelog.d/fixes/9228-codex-orphaned-tool-outputs.md @@ -0,0 +1 @@ +- **fix(codex):** strip orphaned tool outputs from compacted conversations. (thanks @raflyazf) diff --git a/changelog.d/fixes/9235-french-ui-catalog.md b/changelog.d/fixes/9235-french-ui-catalog.md new file mode 100644 index 0000000000..77731166ac --- /dev/null +++ b/changelog.d/fixes/9235-french-ui-catalog.md @@ -0,0 +1 @@ +- **fix(i18n):** completed the French UI catalog by adding all missing keys and replacing every placeholder translation ([#9235](https://github.com/diegosouzapw/OmniRoute/pull/9235)) — thanks @alex-jordan547 diff --git a/changelog.d/fixes/9236-nvidia-tool-compatibility.md b/changelog.d/fixes/9236-nvidia-tool-compatibility.md new file mode 100644 index 0000000000..b97bd98faf --- /dev/null +++ b/changelog.d/fixes/9236-nvidia-tool-compatibility.md @@ -0,0 +1 @@ +- **fix(nvidia):** normalize tool names and call ids for NVIDIA compatibility. (thanks @minhnhat166) diff --git a/changelog.d/fixes/9237-fix.plan.md b/changelog.d/fixes/9237-fix.plan.md new file mode 100644 index 0000000000..fde574eb17 --- /dev/null +++ b/changelog.d/fixes/9237-fix.plan.md @@ -0,0 +1 @@ +- fix(lmarena): emit Uint8Array SSE chunks instead of strings to satisfy shared pipeline contract (#9237) \ No newline at end of file diff --git a/changelog.d/fixes/9241-registered-keys-window-reset.md b/changelog.d/fixes/9241-registered-keys-window-reset.md new file mode 100644 index 0000000000..deeb1e4baa --- /dev/null +++ b/changelog.d/fixes/9241-registered-keys-window-reset.md @@ -0,0 +1 @@ +- **fix(db):** `validateRegisteredKey` no longer rejects the first request of a fresh budget window when the previous window's usage already met the daily/hourly budget — the reset `UPDATE` zeroed the counters in the DB but the budget check still read the stale pre-reset snapshot, so the reset is now mirrored into the row before checking ([#9241](https://github.com/diegosouzapw/OmniRoute/pull/9241)) diff --git a/changelog.d/fixes/9246-purge-orphan-proxy-assignments.md b/changelog.d/fixes/9246-purge-orphan-proxy-assignments.md new file mode 100644 index 0000000000..ee460f8ca4 --- /dev/null +++ b/changelog.d/fixes/9246-purge-orphan-proxy-assignments.md @@ -0,0 +1 @@ +- **fix(db):** deleting a provider connection (single, batch, or provider-scoped) now purges its account-scoped `proxy_assignments` rows inside an atomic transaction — no more orphan assignments pointing at deleted connections ([#9246](https://github.com/diegosouzapw/OmniRoute/pull/9246)) — thanks @maxmad64bis diff --git a/changelog.d/fixes/9256-minimax-thinking-signature.md b/changelog.d/fixes/9256-minimax-thinking-signature.md new file mode 100644 index 0000000000..d25edee6f0 --- /dev/null +++ b/changelog.d/fixes/9256-minimax-thinking-signature.md @@ -0,0 +1 @@ +- **fix(minimax):** add the required empty signature placeholder to unsigned thinking block starts. (thanks @rixzkiye) diff --git a/changelog.d/fixes/9259-rolling-rpm-leases.md b/changelog.d/fixes/9259-rolling-rpm-leases.md new file mode 100644 index 0000000000..a20f6c4367 --- /dev/null +++ b/changelog.d/fixes/9259-rolling-rpm-leases.md @@ -0,0 +1 @@ +- **fix(resilience):** Enforce RPM limits with rolling leases and atomic global/provider/account admission ([#9259](https://github.com/diegosouzapw/OmniRoute/pull/9259)). The configured global RPM budget is shared across all enabled provider connections within one process; provider/account overrides add narrower scopes. diff --git a/changelog.d/fixes/9269-fix.plan.md b/changelog.d/fixes/9269-fix.plan.md new file mode 100644 index 0000000000..147c32be70 --- /dev/null +++ b/changelog.d/fixes/9269-fix.plan.md @@ -0,0 +1 @@ +- **fix(classify429):** add missing `have exhausted their quota` pattern so the synthetic 429 from auth.ts is recognized as quota exhaustion, preventing the combo loop from burning retries against the same provider instead of falling back to a healthy one ([#9269](https://github.com/diegosouzapw/OmniRoute/issues/9269)) diff --git a/changelog.d/fixes/9277-fix.plan.md b/changelog.d/fixes/9277-fix.plan.md new file mode 100644 index 0000000000..b161675e43 --- /dev/null +++ b/changelog.d/fixes/9277-fix.plan.md @@ -0,0 +1 @@ +- fix(qoder): include actionable CLI_QODER_BIN hint in connection test when qodercli is not found (#9277) \ No newline at end of file diff --git a/changelog.d/fixes/9279-fix.plan.md b/changelog.d/fixes/9279-fix.plan.md new file mode 100644 index 0000000000..5dbc10c5f4 --- /dev/null +++ b/changelog.d/fixes/9279-fix.plan.md @@ -0,0 +1 @@ +- **fix(providers):** the web search fallback detector in `webSearchFallback.ts` used an exact `Set` (`web_search`, `web_search_preview`) that missed Anthropic's date-suffixed server-tool variant `web_search_20250305` (sent by Claude Code 2.1.220+). Changed to prefix regex `/^web_search/`, matching the two other detectors in the codebase, so the fallback intercepts versioned web search tools for OpenAI-compatible upstreams ([#9279](https://github.com/diegosouzapw/OmniRoute/pull/9279)) diff --git a/changelog.d/fixes/9286-redis-loopback-bind.md b/changelog.d/fixes/9286-redis-loopback-bind.md new file mode 100644 index 0000000000..dbd6448bf5 --- /dev/null +++ b/changelog.d/fixes/9286-redis-loopback-bind.md @@ -0,0 +1 @@ +- **fix(docker):** the bundled Redis sidecar no longer publishes on `0.0.0.0`. `docker-compose.yml`, `omniroute redis up` and the dashboard's 1-click launcher all built an unqualified `-p :6379` spec, which the container runtime expands to every interface — and none of them sets `requirepass`, so any host on the LAN could reach the rate-limiter/cache store. All three now default to `127.0.0.1`, with exposure opt-in via `REDIS_BIND_HOST` (compose), `--bind` (CLI) and `OMNIROUTE_REDIS_BIND_HOST` (launcher); the CLI warns when a non-loopback bind is requested without `--password` ([#9286](https://github.com/diegosouzapw/OmniRoute/pull/9286)) diff --git a/changelog.d/fixes/9289-fix.plan.md b/changelog.d/fixes/9289-fix.plan.md new file mode 100644 index 0000000000..284df06aec --- /dev/null +++ b/changelog.d/fixes/9289-fix.plan.md @@ -0,0 +1 @@ +- fix(credential-health): scheduler never retries failed connections due to static interval comparison (#9289) diff --git a/changelog.d/fixes/9293-fix.plan.md b/changelog.d/fixes/9293-fix.plan.md new file mode 100644 index 0000000000..96e6f6727a --- /dev/null +++ b/changelog.d/fixes/9293-fix.plan.md @@ -0,0 +1 @@ +- fix(api): specialty model catalog ignores hidden OpenRouter model flags (#9293) \ No newline at end of file diff --git a/changelog.d/fixes/9300-fix.plan.md b/changelog.d/fixes/9300-fix.plan.md new file mode 100644 index 0000000000..c83558b707 --- /dev/null +++ b/changelog.d/fixes/9300-fix.plan.md @@ -0,0 +1 @@ +- fix(catalog): cache getModelsDevPricing() to prevent OOM at startup (#9300) \ No newline at end of file diff --git a/changelog.d/fixes/9304-fix.plan.md b/changelog.d/fixes/9304-fix.plan.md new file mode 100644 index 0000000000..ad7e0b0ecb --- /dev/null +++ b/changelog.d/fixes/9304-fix.plan.md @@ -0,0 +1 @@ +- fix(providers): bump qwen-web SPA version header from 0.2.66 to 0.2.81 (#9304) diff --git a/changelog.d/fixes/9305-fix.plan.md b/changelog.d/fixes/9305-fix.plan.md new file mode 100644 index 0000000000..1db4b82b32 --- /dev/null +++ b/changelog.d/fixes/9305-fix.plan.md @@ -0,0 +1 @@ +- fix(sse): broaden OMNIROUTE_SSE_COMMENTS to accept 'false','0','no' and gate metadata comment emission (#9305) diff --git a/changelog.d/fixes/9306-fix.plan.md b/changelog.d/fixes/9306-fix.plan.md new file mode 100644 index 0000000000..3e76a384b0 --- /dev/null +++ b/changelog.d/fixes/9306-fix.plan.md @@ -0,0 +1 @@ +- fix(lmarena): encode SSE stream chunks as Uint8Array to prevent TextDecoder TypeError (#9306) diff --git a/changelog.d/fixes/9308-claude-tool-result-pairing.md b/changelog.d/fixes/9308-claude-tool-result-pairing.md new file mode 100644 index 0000000000..9e6bee8aa9 --- /dev/null +++ b/changelog.d/fixes/9308-claude-tool-result-pairing.md @@ -0,0 +1 @@ +- **fix(claude):** reconcile compacted tool results against the preceding tool use. (thanks @ryanngit) diff --git a/changelog.d/fixes/9314-kiro-nested-tool-call-validation.md b/changelog.d/fixes/9314-kiro-nested-tool-call-validation.md new file mode 100644 index 0000000000..22c6ef5665 --- /dev/null +++ b/changelog.d/fixes/9314-kiro-nested-tool-call-validation.md @@ -0,0 +1 @@ +- **fix(kiro):** validate completed nested tool-call payloads before forwarding them. (thanks @SemonCat) diff --git a/changelog.d/fixes/9315-fix.plan.md b/changelog.d/fixes/9315-fix.plan.md new file mode 100644 index 0000000000..31fcc09f78 --- /dev/null +++ b/changelog.d/fixes/9315-fix.plan.md @@ -0,0 +1 @@ +- fix(backend): use accumulated responseBody for provider payload in dashboard log viewer to avoid stale data from truncated SSE events (#9315) \ No newline at end of file diff --git a/changelog.d/fixes/9319-fix.plan.md b/changelog.d/fixes/9319-fix.plan.md new file mode 100644 index 0000000000..dc5f04e762 --- /dev/null +++ b/changelog.d/fixes/9319-fix.plan.md @@ -0,0 +1 @@ +- fix(qoder): surface qodercli stderr in error message instead of generic 502 (#9319) diff --git a/changelog.d/fixes/9332-port-2649-claude-server-tool-models.md b/changelog.d/fixes/9332-port-2649-claude-server-tool-models.md new file mode 100644 index 0000000000..a1d0d8bd59 --- /dev/null +++ b/changelog.d/fixes/9332-port-2649-claude-server-tool-models.md @@ -0,0 +1 @@ +- **fix(claude):** normalize nested Claude server tool model ids (`cc/` and `claude/` prefixes) on native passthrough, covering non-versioned server tools (Task/subagent). (thanks @AlanSyue) diff --git a/changelog.d/fixes/9364-models-pricing-gap.md b/changelog.d/fixes/9364-models-pricing-gap.md new file mode 100644 index 0000000000..182fc0061f --- /dev/null +++ b/changelog.d/fixes/9364-models-pricing-gap.md @@ -0,0 +1 @@ +- fix(api): consult LiteLLM pricing_synced layer in resolveCatalogPricing so deployed models absent from models.dev and defaults get pricing in /v1/models (#9364) diff --git a/changelog.d/fixes/9431-codex-gpt56-context.md b/changelog.d/fixes/9431-codex-gpt56-context.md new file mode 100644 index 0000000000..da11703298 --- /dev/null +++ b/changelog.d/fixes/9431-codex-gpt56-context.md @@ -0,0 +1 @@ +- **fix(providers):** Codex GPT-5.6 model metadata reports the 1M context window and 922K input limit ([#9431](https://github.com/diegosouzapw/OmniRoute/issues/9431)). diff --git a/changelog.d/fixes/9435-kiro-import-overwrite.md b/changelog.d/fixes/9435-kiro-import-overwrite.md new file mode 100644 index 0000000000..9081e7537b --- /dev/null +++ b/changelog.d/fixes/9435-kiro-import-overwrite.md @@ -0,0 +1 @@ +- fix(oauth): Kiro import token endpoint no longer overwrites existing connection when using shared cached OIDC clientId (#9435) diff --git a/changelog.d/fixes/9442-mitm-ca-umask.md b/changelog.d/fixes/9442-mitm-ca-umask.md new file mode 100644 index 0000000000..e0a27abab3 --- /dev/null +++ b/changelog.d/fixes/9442-mitm-ca-umask.md @@ -0,0 +1 @@ +- fix(backend): force system MITM CA cert to 0644 on Linux regardless of umask and repair on re-install (#9442) diff --git a/changelog.d/fixes/9451-selfsigned-docker-dep.md b/changelog.d/fixes/9451-selfsigned-docker-dep.md new file mode 100644 index 0000000000..a2f525665d --- /dev/null +++ b/changelog.d/fixes/9451-selfsigned-docker-dep.md @@ -0,0 +1 @@ +- fix(docker): ship MITM `_internal/` shims and `selfsigned` package in standalone bundle (#9451) diff --git a/changelog.d/fixes/9454-launch-claude-exe-windows.md b/changelog.d/fixes/9454-launch-claude-exe-windows.md new file mode 100644 index 0000000000..c4abdf25ab --- /dev/null +++ b/changelog.d/fixes/9454-launch-claude-exe-windows.md @@ -0,0 +1 @@ +- fix(cli): probe PATH for claude.exe/codex.exe on Windows before falling back to the .cmd shim (#9454) diff --git a/changelog.d/fixes/9455-stop-supervisor-respawn.md b/changelog.d/fixes/9455-stop-supervisor-respawn.md new file mode 100644 index 0000000000..b4571ce88f --- /dev/null +++ b/changelog.d/fixes/9455-stop-supervisor-respawn.md @@ -0,0 +1 @@ +- fix(cli): stop the supervisor before the child so omniroute stop no longer reports success while the supervisor respawns the server (#9455) diff --git a/changelog.d/fixes/9474-claude-code-oauth-mismap.md b/changelog.d/fixes/9474-claude-code-oauth-mismap.md new file mode 100644 index 0000000000..4a7df44a69 --- /dev/null +++ b/changelog.d/fixes/9474-claude-code-oauth-mismap.md @@ -0,0 +1 @@ +- fix(cli): route claude-code OAuth to the Anthropic `claude` browser-PKCE flow instead of the unrelated command-code provider (#9474) diff --git a/changelog.d/fixes/9475-update-lies-shadowing.md b/changelog.d/fixes/9475-update-lies-shadowing.md new file mode 100644 index 0000000000..969d9b4aee --- /dev/null +++ b/changelog.d/fixes/9475-update-lies-shadowing.md @@ -0,0 +1 @@ +- fix(cli): re-verify running binary version after `omniroute update` install and warn instead of lying about success when a local install shadows the global one (#9475) diff --git a/changelog.d/fixes/9491-port-3005-auth-redirect-login.md b/changelog.d/fixes/9491-port-3005-auth-redirect-login.md new file mode 100644 index 0000000000..8c82bc1b43 --- /dev/null +++ b/changelog.d/fixes/9491-port-3005-auth-redirect-login.md @@ -0,0 +1 @@ +- **fix(auth):** redirect active sessions from /login by checking the session cookie before showing the login form. (thanks @DaDecky) diff --git a/changelog.d/fixes/9494-chat-history-cap-opt-in.md b/changelog.d/fixes/9494-chat-history-cap-opt-in.md new file mode 100644 index 0000000000..30e0be1e03 --- /dev/null +++ b/changelog.d/fixes/9494-chat-history-cap-opt-in.md @@ -0,0 +1 @@ +- fix(api): make the 800-message chat history cap opt-in so long conversations reach compression instead of a terminal 413 (#9494) diff --git a/changelog.d/fixes/9500-reasoning-summary-separator.md b/changelog.d/fixes/9500-reasoning-summary-separator.md new file mode 100644 index 0000000000..95f5565a72 --- /dev/null +++ b/changelog.d/fixes/9500-reasoning-summary-separator.md @@ -0,0 +1 @@ +- fix(translator): join reasoning summary segments with newline separators (#9500) diff --git a/changelog.d/fixes/9502-muse-ecto1-auth-token.md b/changelog.d/fixes/9502-muse-ecto1-auth-token.md new file mode 100644 index 0000000000..5962deb307 --- /dev/null +++ b/changelog.d/fixes/9502-muse-ecto1-auth-token.md @@ -0,0 +1 @@ +- fix(muse-spark-web): document the ecto1: WS auth token requirement in the credential hint, spec, and error message (#9502) diff --git a/changelog.d/fixes/9505-atu-effort-beta-allowlist.md b/changelog.d/fixes/9505-atu-effort-beta-allowlist.md new file mode 100644 index 0000000000..e580e1cb6b --- /dev/null +++ b/changelog.d/fixes/9505-atu-effort-beta-allowlist.md @@ -0,0 +1 @@ +- fix(sse): stop force-injecting advanced-tool-use beta via the effort-2025-11-24 gate; forward client-negotiated effort through the allowlist (#9505) diff --git a/changelog.d/fixes/9507-maxtokens-upward-rewrite.md b/changelog.d/fixes/9507-maxtokens-upward-rewrite.md new file mode 100644 index 0000000000..ef43480699 --- /dev/null +++ b/changelog.d/fixes/9507-maxtokens-upward-rewrite.md @@ -0,0 +1 @@ +- fix(sse): stop the reasoning-token buffer from enlarging a client's explicit max_tokens upward (x1.5) (#9507) diff --git a/changelog.d/fixes/9531-ci-combo-matrix.md b/changelog.d/fixes/9531-ci-combo-matrix.md new file mode 100644 index 0000000000..c5ff766166 --- /dev/null +++ b/changelog.d/fixes/9531-ci-combo-matrix.md @@ -0,0 +1 @@ +- fix(ci): include combo-matrix tests in test-integration job (#9531) diff --git a/changelog.d/fixes/9534-modelsdevsync-timers.md b/changelog.d/fixes/9534-modelsdevsync-timers.md new file mode 100644 index 0000000000..a12b4448c4 --- /dev/null +++ b/changelog.d/fixes/9534-modelsdevsync-timers.md @@ -0,0 +1 @@ +- fix(test): prevent flaky modelsDevSync timer assertions by serializing test execution within the file (#9534) diff --git a/changelog.d/fixes/9536-usage-misreporting.md b/changelog.d/fixes/9536-usage-misreporting.md new file mode 100644 index 0000000000..ad6daa28ee --- /dev/null +++ b/changelog.d/fixes/9536-usage-misreporting.md @@ -0,0 +1 @@ +- fix(backend): map cache tokens in OpenAI-to-Claude non-streaming usage translation (#9536) diff --git a/changelog.d/fixes/9541-fastpath-db-corruption.md b/changelog.d/fixes/9541-fastpath-db-corruption.md new file mode 100644 index 0000000000..b15f04fa65 --- /dev/null +++ b/changelog.d/fixes/9541-fastpath-db-corruption.md @@ -0,0 +1 @@ +- fix(db): add transient-error retry to corruption probe to prevent data loss under concurrent load (#9541) diff --git a/changelog.d/fixes/9543-searxng-auto-select.md b/changelog.d/fixes/9543-searxng-auto-select.md new file mode 100644 index 0000000000..2798fab967 --- /dev/null +++ b/changelog.d/fixes/9543-searxng-auto-select.md @@ -0,0 +1 @@ +- fix(search): mark searxng-search as fallbackOnly to prevent auto-select without instance (#9543) diff --git a/changelog.d/fixes/9545-gpt56-effort-tools.md b/changelog.d/fixes/9545-gpt56-effort-tools.md new file mode 100644 index 0000000000..7cc1a77bb3 --- /dev/null +++ b/changelog.d/fixes/9545-gpt56-effort-tools.md @@ -0,0 +1 @@ +- fix(providers): strip provider prefix in getModelTargetFormat to route GPT-5.6 models to /v1/responses (#9545) diff --git a/changelog.d/fixes/9550-amazon-q-alias.md b/changelog.d/fixes/9550-amazon-q-alias.md new file mode 100644 index 0000000000..b984b8bfc0 --- /dev/null +++ b/changelog.d/fixes/9550-amazon-q-alias.md @@ -0,0 +1 @@ +- fix(model): add "aq" alias for amazon-q provider so parseModel resolves it instead of falling back to OpenAI (#9550) diff --git a/changelog.d/fixes/9551-proxyfetch-context-bypass.md b/changelog.d/fixes/9551-proxyfetch-context-bypass.md new file mode 100644 index 0000000000..eeefa9d7e6 --- /dev/null +++ b/changelog.d/fixes/9551-proxyfetch-context-bypass.md @@ -0,0 +1 @@ +- fix(proxy): NO_PROXY now bypasses context-level proxy in resolveProxyForRequest (#9551) diff --git a/changelog.d/fixes/9553-prepublish-npm-entry-posix.md b/changelog.d/fixes/9553-prepublish-npm-entry-posix.md new file mode 100644 index 0000000000..af1b199ee3 --- /dev/null +++ b/changelog.d/fixes/9553-prepublish-npm-entry-posix.md @@ -0,0 +1 @@ +- **fix(build):** `npm run build:cli` (prepublish) no longer fails on POSIX with "npm-cli.js not found next to the running Node binary". The #8858 shim-free npm resolver only knew the Windows layout (`\node_modules\npm`); on GitHub hosted runners, nvm and system installs npm lives at `/lib/node_modules/npm` while node is `/bin/node`, so every fresh CI checkout died installing `@omniroute/opencode-plugin` deps (Fast Production Build + dast-smoke red on all PRs). The resolver, extracted to `scripts/build/resolveNpmEntry.ts`, now tries `npm_execpath` (exported by `npm run` itself) first, then the Windows layout, then the POSIX layout — covered by `tests/unit/build/resolve-npm-entry.test.ts` including a live POSIX regression guard. diff --git a/changelog.d/fixes/9554-file-size-inherited-drift-reconcile.md b/changelog.d/fixes/9554-file-size-inherited-drift-reconcile.md new file mode 100644 index 0000000000..095d7609d2 --- /dev/null +++ b/changelog.d/fixes/9554-file-size-inherited-drift-reconcile.md @@ -0,0 +1 @@ +- **fix(quality):** reconcile the accumulated file-size drift on `release/v3.8.50` — 13 files sat above their frozen LOC on the clean tip (measured by the gate itself), turning the absolute-mode check (nightly / local) permanently red while the PR-mode base-relative check (#8522) let every innocent PR pass. The per-PR rebaselines were lost across successive conflict resolutions of this hot file during the 08-05/06 merge batch. Frozen values updated to the measured tip for the 11 grown files (each annotated with its owning merged PR: #9024 #9324 #9329 #9193 #9332 #9228 #9260 #8934 #9196 #9163) and `open-sse/executors/default.ts` / `kiro.ts` (above the 1000 cap with no entry) added to the frozen set. diff --git a/changelog.d/fixes/9559-mcp-audit-vitest-seam.md b/changelog.d/fixes/9559-mcp-audit-vitest-seam.md new file mode 100644 index 0000000000..2117839f0b --- /dev/null +++ b/changelog.d/fixes/9559-mcp-audit-vitest-seam.md @@ -0,0 +1 @@ +- **fix(mcp):** the 3 `audit.test.ts` shutdown/fallback tests fail deterministically since #8959 switched the audit DB loader to `createRequire("better-sqlite3")` — `vi.doMock` only patches Vitest's ESM module graph, so the old better-sqlite3 mock never engaged and the tests hit a real empty sqlite file ("no such table: mcp_tool_audit"), redding the `Vitest (fast-path)` job on every PR (long misdiagnosed as a flake). Shutdown tests now inject the mock through the audit connection cache (`globalThis.__omnirouteMcpAuditDb`), and the node:sqlite fallback test drives a new test-only loader seam (`__setBetterSqliteLoaderForTests`) — the production `createRequire` path is unchanged. 3/3 red → 3/3 green; full `open-sse/mcp-server` vitest suite 88/88. diff --git a/changelog.d/fixes/9560-turbopack-nft-guard.md b/changelog.d/fixes/9560-turbopack-nft-guard.md new file mode 100644 index 0000000000..f6ec73d296 --- /dev/null +++ b/changelog.d/fixes/9560-turbopack-nft-guard.md @@ -0,0 +1 @@ +- fix(build): lazy-resolve module-level fs paths to avoid Turbopack NFT whole-source trace (#9560) diff --git a/changelog.d/fixes/9567-chatcore-sse-flaky.md b/changelog.d/fixes/9567-chatcore-sse-flaky.md new file mode 100644 index 0000000000..4dfefc22a0 --- /dev/null +++ b/changelog.d/fixes/9567-chatcore-sse-flaky.md @@ -0,0 +1 @@ +- fix(sse): replace timer-based waits with polling to fix flaky chatCore/SSE tests under CI load (#9567) diff --git a/changelog.d/fixes/9568-gemini-tool-casing.md b/changelog.d/fixes/9568-gemini-tool-casing.md new file mode 100644 index 0000000000..0629e40538 --- /dev/null +++ b/changelog.d/fixes/9568-gemini-tool-casing.md @@ -0,0 +1 @@ +- **fix(translator):** restore original tool name casing in Gemini/Antigravity response translators ([#9568](https://github.com/diegosouzapw/OmniRoute/issues/9568)) diff --git a/changelog.d/fixes/9575-tool-call-case.md b/changelog.d/fixes/9575-tool-call-case.md new file mode 100644 index 0000000000..dd3e888151 --- /dev/null +++ b/changelog.d/fixes/9575-tool-call-case.md @@ -0,0 +1 @@ +- fix(translator): add case-insensitive fallback for upstream tool call name lookups (#9575) diff --git a/changelog.d/fixes/9580-standalone-ws-multipart-uploads.md b/changelog.d/fixes/9580-standalone-ws-multipart-uploads.md new file mode 100644 index 0000000000..b22b6f7fc2 --- /dev/null +++ b/changelog.d/fixes/9580-standalone-ws-multipart-uploads.md @@ -0,0 +1 @@ +- **fix(standalone):** multipart uploads (`POST /v1/audio/transcriptions`) no longer hang — the WebDAV wrapper hands non-WebDAV requests to Next synchronously instead of losing the start of a streaming body ([#9580](https://github.com/diegosouzapw/OmniRoute/pull/9580)) diff --git a/changelog.d/fixes/9615-docker-colocate-partial-trace.md b/changelog.d/fixes/9615-docker-colocate-partial-trace.md new file mode 100644 index 0000000000..700a0e023e --- /dev/null +++ b/changelog.d/fixes/9615-docker-colocate-partial-trace.md @@ -0,0 +1 @@ +- **fix(docker):** standalone co-location now completes packages Next's file tracing materialized partially (package.json without its `main` payload) — unblocks the Docker Hub publish that failed on every v3.8.50 push with `Cannot find module '@atjsh/llmlingua-2/dist/index.js'` ([#9615](https://github.com/diegosouzapw/OmniRoute/pull/9615)) diff --git a/changelog.d/fixes/9630-combo-false-503.md b/changelog.d/fixes/9630-combo-false-503.md new file mode 100644 index 0000000000..5558818649 --- /dev/null +++ b/changelog.d/fixes/9630-combo-false-503.md @@ -0,0 +1 @@ +- fix(combo): distinguish pre-dispatch skips from genuine failures to prevent false 503 ALL_ACCOUNTS_INACTIVE (#9630) diff --git a/changelog.d/fixes/9737-memory-id-route-backend.md b/changelog.d/fixes/9737-memory-id-route-backend.md new file mode 100644 index 0000000000..93c6e6f836 --- /dev/null +++ b/changelog.d/fixes/9737-memory-id-route-backend.md @@ -0,0 +1 @@ +- Fixed `GET`/`PUT`/`DELETE /api/memory/[id]` always failing with a 500 (`Primary backend "sqlite" not registered`) when the route was reached before any other memory endpoint in the same process. diff --git a/changelog.d/fixes/9737-route-body-validation.md b/changelog.d/fixes/9737-route-body-validation.md new file mode 100644 index 0000000000..3c9f16a39c --- /dev/null +++ b/changelog.d/fixes/9737-route-body-validation.md @@ -0,0 +1 @@ +- Replaced hand-rolled body type checks with Zod validation in the plugins marketplace install route and the three Dario admin routes, restoring the `t06:route-validation` gate (Hard Rule #7). diff --git a/changelog.d/fixes/ghe-copilot-oauth-lifecycle.md b/changelog.d/fixes/ghe-copilot-oauth-lifecycle.md new file mode 100644 index 0000000000..48101d76c6 --- /dev/null +++ b/changelog.d/fixes/ghe-copilot-oauth-lifecycle.md @@ -0,0 +1,2 @@ +- **fix(oauth):** GHE Copilot OAuth lifecycle — connecting an account and refreshing its token both failed. Adding a connection died with `gheUrl is required for GHE Copilot OAuth` because the poll handler's `ghe-copilot` branch was unreachable dead code: the provider is listed in `NO_PKCE_DEVICE_CODE_PROVIDERS`, and that set-based check ran first, calling `pollForToken()` without the `extraData` carrying `gheUrl`. Separately, every manual `Refresh` click surfaced `Token refresh failed — provider returned no new token`, and the proactive pre-request refresh never fired for GHE connections — the manual route, the health-check sweep and `checkAndRefreshToken()` all still special-cased plain `github`, while GHE Copilot's device-code flow never yields a `refresh_token` (only a GitHub access token plus a short-lived Copilot sub-token). `refreshCopilotToken()` now takes an optional `baseUrl` so it can target a GHE host's `/api/v3` Copilot token endpoint, and `ghe-copilot` is wired in alongside `github` at all four sites. +- **fix(health-check):** the access-token-only branch of the token health-check sweep no longer logs an unconditional `has no refresh token but has a GitHub access token` line on every tick. That path runs once per 60 s sweep for every `github` / `ghe-copilot` connection, so it emitted ~1440 identical entries per day per connection reporting that nothing had changed. It now logs only when the sweep actually attempted a Copilot sub-token refresh, and says whether that refresh succeeded or failed — so a genuine failure still surfaces instead of being buried in steady-state noise. diff --git a/changelog.d/fixes/prepublish-native-esbuild.md b/changelog.d/fixes/prepublish-native-esbuild.md new file mode 100644 index 0000000000..60c7b76d94 --- /dev/null +++ b/changelog.d/fixes/prepublish-native-esbuild.md @@ -0,0 +1 @@ +- fix(build): exec native esbuild binary directly in prepublish — esbuild ≥0.25 ships an ELF at bin/esbuild and running it through node crashed every build:cli (dast-smoke red on all PRs) diff --git a/changelog.d/maintenance/8484-client-usage-format-contract.md b/changelog.d/maintenance/8484-client-usage-format-contract.md new file mode 100644 index 0000000000..c459a8eda8 --- /dev/null +++ b/changelog.d/maintenance/8484-client-usage-format-contract.md @@ -0,0 +1 @@ +- **fix(types):** preserve the client response format contract while estimating usage for non-streaming responses diff --git a/changelog.d/maintenance/8484-responses-transform-options-type.md b/changelog.d/maintenance/8484-responses-transform-options-type.md new file mode 100644 index 0000000000..7c27623665 --- /dev/null +++ b/changelog.d/maintenance/8484-responses-transform-options-type.md @@ -0,0 +1 @@ +- Preserve the Responses API transform options contract under TypeScript 7. diff --git a/changelog.d/maintenance/8484-thinking-signature-recovery-types.md b/changelog.d/maintenance/8484-thinking-signature-recovery-types.md new file mode 100644 index 0000000000..94c32a5b6e --- /dev/null +++ b/changelog.d/maintenance/8484-thinking-signature-recovery-types.md @@ -0,0 +1 @@ +- **fix(types):** preserved the known first-failure record while reading Anthropic thinking-signature recovery details so TypeScript 7 keeps the retry result union narrow ([#8484](https://github.com/diegosouzapw/OmniRoute/issues/8484)) diff --git a/changelog.d/maintenance/8484-validation-failure-narrowing.md b/changelog.d/maintenance/8484-validation-failure-narrowing.md new file mode 100644 index 0000000000..d5a5c7a5c2 --- /dev/null +++ b/changelog.d/maintenance/8484-validation-failure-narrowing.md @@ -0,0 +1 @@ +- **fix(types):** reuse the validation failure predicate when building malformed-body responses so the existing error envelope remains type-safe and unchanged. diff --git a/changelog.d/maintenance/8484-vision-capability-literal.md b/changelog.d/maintenance/8484-vision-capability-literal.md new file mode 100644 index 0000000000..b155ef82e6 --- /dev/null +++ b/changelog.d/maintenance/8484-vision-capability-literal.md @@ -0,0 +1 @@ +- **fix(types):** preserve the literal `capabilities.vision: true` contract for catalog vision fields so custom-model capability composition remains type-safe under TypeScript 7 ([#9121](https://github.com/diegosouzapw/OmniRoute/pull/9121)) diff --git a/changelog.d/maintenance/9063-cover-specificity-rules.md b/changelog.d/maintenance/9063-cover-specificity-rules.md new file mode 100644 index 0000000000..f4e0ef5ce6 --- /dev/null +++ b/changelog.d/maintenance/9063-cover-specificity-rules.md @@ -0,0 +1,7 @@ +- **test(sse):** added the first test suite for `open-sse/services/specificityRules.ts` — the + module was hotspot #7 in the coverage plan at 11.28% lines with no dedicated test; the 14 pure + detectors are now pinned edge-to-edge (token ladders, per-domain max-not-sum scoring, and the + min/max clamps), taking the file to ~100% line coverage. The suite also documents two quirks + left unchanged: `detectReasoningDepth` scores above 0 on marker-free input via its + always-applied message-depth bonus, and `detectErrorContext` returns non-integer scores because + it never rounds ([#9063](https://github.com/diegosouzapw/OmniRoute/pull/9063)) diff --git a/changelog.d/maintenance/9104-veoaifree-polling-delay-type.md b/changelog.d/maintenance/9104-veoaifree-polling-delay-type.md new file mode 100644 index 0000000000..5da0e8337c --- /dev/null +++ b/changelog.d/maintenance/9104-veoaifree-polling-delay-type.md @@ -0,0 +1 @@ +- **fix(types):** preserved the Veo polling delay promise result as `void` for TypeScript 7 compatibility without changing runtime polling behavior ([#9104](https://github.com/diegosouzapw/OmniRoute/pull/9104)) diff --git a/changelog.d/maintenance/9105-compression-stats-type-import.md b/changelog.d/maintenance/9105-compression-stats-type-import.md new file mode 100644 index 0000000000..714536d96b --- /dev/null +++ b/changelog.d/maintenance/9105-compression-stats-type-import.md @@ -0,0 +1 @@ +- **fix(types):** imported compression analytics statistics from their defining module so TypeScript 7 resolves the existing interface correctly ([#9105](https://github.com/diegosouzapw/OmniRoute/pull/9105)) diff --git a/changelog.d/maintenance/9117-ts7-semantic-cache-signature-inputs.md b/changelog.d/maintenance/9117-ts7-semantic-cache-signature-inputs.md new file mode 100644 index 0000000000..c49c326950 --- /dev/null +++ b/changelog.d/maintenance/9117-ts7-semantic-cache-signature-inputs.md @@ -0,0 +1 @@ +- **chore(types):** align semantic cache signature inputs with the numeric request contract so both cache-write paths remain runtime-equivalent while TypeScript 7 checks them safely ([#9117](https://github.com/diegosouzapw/OmniRoute/pull/9117)) diff --git a/changelog.d/maintenance/9118-ts7-response-meta-header-inputs.md b/changelog.d/maintenance/9118-ts7-response-meta-header-inputs.md new file mode 100644 index 0000000000..983269b392 --- /dev/null +++ b/changelog.d/maintenance/9118-ts7-response-meta-header-inputs.md @@ -0,0 +1 @@ +- **fix(types):** narrowed non-streaming chat response metadata inputs to the shared header contract without changing emitted metadata headers ([#9118](https://github.com/diegosouzapw/OmniRoute/pull/9118)) diff --git a/changelog.d/maintenance/9229-zoo-code-branding.md b/changelog.d/maintenance/9229-zoo-code-branding.md new file mode 100644 index 0000000000..7bb2c48803 --- /dev/null +++ b/changelog.d/maintenance/9229-zoo-code-branding.md @@ -0,0 +1 @@ +- **docs(readme):** replace Roo Code branding with Zoo Code. (thanks @taltas) diff --git a/changelog.d/maintenance/9614-opencode-plugin-bare-key-suite.md b/changelog.d/maintenance/9614-opencode-plugin-bare-key-suite.md new file mode 100644 index 0000000000..c47643b915 --- /dev/null +++ b/changelog.d/maintenance/9614-opencode-plugin-bare-key-suite.md @@ -0,0 +1 @@ +- **test(cli):** OpenCode plugin suite realigned to the bare-key static-catalog contract from #9178/#9175 (21 tests were red on every opencode-plugin CI run; 287/287 after) ([#9614](https://github.com/diegosouzapw/OmniRoute/pull/9614)) diff --git a/changelog.d/maintenance/9738-deadcode-radar-referrals.md b/changelog.d/maintenance/9738-deadcode-radar-referrals.md new file mode 100644 index 0000000000..0d89158f49 --- /dev/null +++ b/changelog.d/maintenance/9738-deadcode-radar-referrals.md @@ -0,0 +1 @@ +- Removed the unused `RadarReferrals` type export left by the radar referral-links feature (#9697), returning the dead-code ratchet to its 227 baseline. diff --git a/changelog.d/maintenance/rtl-physical-class-ratchet.md b/changelog.d/maintenance/rtl-physical-class-ratchet.md new file mode 100644 index 0000000000..16432ea051 --- /dev/null +++ b/changelog.d/maintenance/rtl-physical-class-ratchet.md @@ -0,0 +1 @@ +- chore(quality): add an RTL layout ratchet — counts physical directional Tailwind classes (ml/mr/pl/pr/left/right/text-left/border-l/rounded-l) that do not mirror under `dir=rtl`, seeded at 1011 so the backlog behind `tests/unit/ui/rtl-logical-classes.test.tsx` ("#3541, partial, core layout") cannot grow while it is worked through diff --git a/config/quality/complexity-baseline.json b/config/quality/complexity-baseline.json index 51d34cd861..f121ddbb24 100644 --- a/config/quality/complexity-baseline.json +++ b/config/quality/complexity-baseline.json @@ -1,5 +1,8 @@ { "_comment": "Catraca de complexidade (check-complexity.mjs, ESLint core rules complexity>=15 e max-lines-per-function>80 sobre src+open-sse+electron+bin via eslint.complexity.config.mjs). Conta total de violacoes; so pode cair. --update ratcheta.", + "_rebaseline_2026_07_25_dario_upstream_proxy_selector": "2130->2175. PR #8523 (Dario embedded service, upstream-proxy mode selector): check:complexity does not run on PR->release fast-gates, so cycle drift accrues unratcheted until a PR trips the gate (same pattern as every _rebaseline_ entry above). Measured base upstream/release/v3.8.49 tip locally at 2169 (with this PR\u0027s own commits removed); this branch measures 2173 local, 2175 on the CI runner (same local-vs-CI off-by-few convention documented in _rebaseline_2026_07_02_v3844_ci_observed). This PR\u0027s own genuine contribution is small (+4 to +6): the new mode + conditional fallback-backend +
+
+ + +
+ + + + diff --git a/electron/lib/remoteServerPreferences.js b/electron/lib/remoteServerPreferences.js new file mode 100644 index 0000000000..21b683290f --- /dev/null +++ b/electron/lib/remoteServerPreferences.js @@ -0,0 +1,75 @@ +"use strict"; + +const fs = require("fs"); +const path = require("path"); + +/** + * remoteServerPreferences.js — pure read/write helpers for the small JSON + * preferences file that persists the operator-configured remote server URL + * across app restarts (see resolveRemoteServerUrl.js for how it's consumed). + * + * Deliberately a plain flat JSON file rather than the app's SQLite database: + * this preference must be readable before deciding whether to spawn (or even + * reach) the local server, so it cannot depend on any server-owned storage. + * + * Extracted as pure, dependency-injectable helpers so they can be unit-tested + * without importing the full Electron main process. + * + * @param {string} prefsPath - absolute path to electron-preferences.json + * @param {(p: string) => boolean} [existsSync] + * @param {(p: string, enc: string) => string} [readFileSync] + * @returns {{remoteServerUrl: string|null}} + */ +function readPreferences(prefsPath, existsSync = fs.existsSync, readFileSync = fs.readFileSync) { + if (!existsSync(prefsPath)) return { remoteServerUrl: null }; + try { + const parsed = JSON.parse(readFileSync(prefsPath, "utf8")); + const remoteServerUrl = + typeof parsed.remoteServerUrl === "string" && parsed.remoteServerUrl.trim() + ? parsed.remoteServerUrl.trim() + : null; + return { remoteServerUrl }; + } catch { + return { remoteServerUrl: null }; + } +} + +/** + * Persist the remote server URL preference. Pass `null` to clear it (reverts + * to spawning the local embedded server on next restart). + * + * @param {string} prefsPath + * @param {string|null} remoteServerUrl + * @param {(p: string) => boolean} [existsSync] + * @param {(p: string, enc: string) => string} [readFileSync] + * @param {(p: string, data: string, enc: string) => void} [writeFileSync] + * @param {(p: string, opts: object) => void} [mkdirSync] + */ +function writeRemoteServerUrl( + prefsPath, + remoteServerUrl, + { + existsSync = fs.existsSync, + readFileSync = fs.readFileSync, + writeFileSync = fs.writeFileSync, + mkdirSync = fs.mkdirSync, + } = {} +) { + try { + const dir = path.dirname(prefsPath); + if (!existsSync(dir)) { + mkdirSync(dir, { recursive: true }); + } + + const current = readPreferences(prefsPath, existsSync, readFileSync); + const next = { ...current, remoteServerUrl: remoteServerUrl || null }; + writeFileSync(prefsPath, JSON.stringify(next, null, 2) + "\n", "utf8"); + } catch (err) { + console.error( + `[remoteServerPreferences] Failed to write preferences to ${prefsPath}:`, + err instanceof Error ? err.message : String(err) + ); + } +} + +module.exports = { readPreferences, writeRemoteServerUrl }; diff --git a/electron/lib/resolveRemoteServerUrl.js b/electron/lib/resolveRemoteServerUrl.js new file mode 100644 index 0000000000..97703b6308 --- /dev/null +++ b/electron/lib/resolveRemoteServerUrl.js @@ -0,0 +1,79 @@ +"use strict"; + +const fs = require("fs"); + +/** + * resolveRemoteServerUrl.js — pure helper for resolving an operator-configured + * remote OmniRoute server URL, so the Electron shell can attach to an + * already-running instance (e.g. a Docker/OrbStack container, or a server on + * another machine on the LAN) instead of spawning its own bundled Next.js + * server. + * + * Some environments make the bundled local server impractical — for example, + * a host that injects provider API keys via a secrets manager in a way the + * packaged app's env-file loading doesn't expect. Running the real server in + * an isolated container and pointing the desktop shell at it sidesteps that + * entirely. + * + * Precedence: + * 1. OMNIROUTE_REMOTE_URL env var (explicit, session-scoped override) + * 2. `remoteServerUrl` key in /electron-preferences.json (persisted + * via the tray menu's "Connect to Remote Server…" prompt) + * 3. null — caller falls back to spawning the local embedded server + * + * Extracted as a pure helper (env + fs injectable) so it can be unit-tested + * without importing the full Electron main process (which requires the + * Electron binary). + * + * @param {object} opts + * @param {NodeJS.ProcessEnv} opts.env - injectable process.env (for tests) + * @param {string} opts.prefsPath - absolute path to electron-preferences.json + * @param {(p: string) => boolean} [opts.existsSync] - injectable fs.existsSync + * @param {(p: string, enc: string) => string} [opts.readFileSync] - injectable fs.readFileSync + * @returns {string|null} the validated http(s) remote URL (no trailing slash), or null if none configured + */ +function resolveRemoteServerUrl({ + env, + prefsPath, + existsSync = fs.existsSync, + readFileSync = fs.readFileSync, +}) { + const candidate = readCandidate({ env, prefsPath, existsSync, readFileSync }); + if (!candidate) return null; + return isValidHttpUrl(candidate) ? stripTrailingSlash(candidate) : null; +} + +function readCandidate({ env, prefsPath, existsSync, readFileSync }) { + const fromEnv = (env.OMNIROUTE_REMOTE_URL || "").trim(); + if (fromEnv) return fromEnv; + + if (!prefsPath || !existsSync(prefsPath)) return null; + try { + const prefs = JSON.parse(readFileSync(prefsPath, "utf8")); + const fromPrefs = typeof prefs.remoteServerUrl === "string" ? prefs.remoteServerUrl.trim() : ""; + return fromPrefs || null; + } catch { + // Corrupt/partial prefs file — fall back to spawning the local server + // rather than crashing the app on startup. + return null; + } +} + +/** + * @param {string} candidate + * @returns {boolean} + */ +function isValidHttpUrl(candidate) { + try { + const parsed = new URL(candidate); + return parsed.protocol === "http:" || parsed.protocol === "https:"; + } catch { + return false; + } +} + +function stripTrailingSlash(url) { + return url.replace(/\/+$/, ""); +} + +module.exports = { resolveRemoteServerUrl, isValidHttpUrl }; diff --git a/electron/main.js b/electron/main.js index a949bef103..b98692b295 100644 --- a/electron/main.js +++ b/electron/main.js @@ -37,6 +37,8 @@ const { loginManager } = require("./loginManager"); const { killProcessTree } = require("./processTree"); const { resolveServerEntry } = require("./lib/resolveServerEntry"); const { resolveDarwinHelperExecutable } = require("./lib/resolveNodeHelper"); +const { resolveRemoteServerUrl, isValidHttpUrl } = require("./lib/resolveRemoteServerUrl"); +const { writeRemoteServerUrl } = require("./lib/remoteServerPreferences"); // ── Single Instance Lock ─────────────────────────────────── const gotTheLock = app.requestSingleInstanceLock(); @@ -67,8 +69,23 @@ let tray = null; let nextServer = null; let serverPort = 20128; let isServerStopped = false; +let remoteServerPromptWindow = null; -const getServerUrl = () => `http://localhost:${serverPort}`; +// ── Remote Server Mode ────────────────────────────────────── +// Lets the desktop shell attach to an already-running OmniRoute server (e.g. a +// Docker/OrbStack container, or another machine) instead of spawning its own +// bundled Next.js server. See lib/resolveRemoteServerUrl.js for precedence +// (OMNIROUTE_REMOTE_URL env var, then the persisted prefs file below). +const REMOTE_SERVER_PREFS_PATH = path.join( + resolveDataDir(null, process.env), + "electron-preferences.json" +); +let remoteServerUrl = resolveRemoteServerUrl({ + env: process.env, + prefsPath: REMOTE_SERVER_PREFS_PATH, +}); + +const getServerUrl = () => remoteServerUrl || `http://localhost:${serverPort}`; function resolveNodeExecutable(env = process.env) { // #1081: Ensure Next.js standalone runs using Electron's Node runtime @@ -456,6 +473,23 @@ function createTray() { { label: "3000", click: () => changePort(3000) }, { label: "8080", click: () => changePort(8080) }, ], + enabled: !remoteServerUrl, + }, + { + label: "Remote Server", + submenu: [ + { + label: remoteServerUrl ? `Connected: ${remoteServerUrl}` : "Using local embedded server", + enabled: false, + }, + { type: "separator" }, + { label: "Connect to Remote Server…", click: () => showRemoteServerPrompt() }, + { + label: "Disconnect (use Local Server)", + enabled: Boolean(remoteServerUrl), + click: () => setRemoteServerUrl(null), + }, + ], }, { type: "separator" }, { @@ -512,8 +546,97 @@ async function changePort(newPort) { console.log(`[Electron] Port changed: ${oldPort} → ${serverPort}`); } +// ── Remote Server Mode: prompt window ────────────────────── +function showRemoteServerPrompt() { + if (remoteServerPromptWindow && !remoteServerPromptWindow.isDestroyed()) { + remoteServerPromptWindow.show(); + remoteServerPromptWindow.focus(); + return; + } + + remoteServerPromptWindow = new BrowserWindow({ + width: 480, + height: 210, + resizable: false, + minimizable: false, + maximizable: false, + fullscreenable: false, + title: "Connect to Remote Server", + parent: mainWindow || undefined, + modal: Boolean(mainWindow), + webPreferences: { + preload: path.join(__dirname, "remoteServerPromptPreload.js"), + contextIsolation: true, + nodeIntegration: false, + sandbox: true, + }, + }); + + remoteServerPromptWindow.setMenuBarVisibility(false); + remoteServerPromptWindow.loadFile(path.join(__dirname, "assets", "remoteServerPrompt.html")); + + remoteServerPromptWindow.on("closed", () => { + remoteServerPromptWindow = null; + }); +} + +// ── Remote Server Mode: apply a new URL (or clear it) ────── +async function setRemoteServerUrl(nextUrl) { + const normalized = (nextUrl || "").trim() || null; + if (normalized === remoteServerUrl) return; + + // Reject invalid URLs — only http:// and https:// are accepted. + if (normalized !== null && !isValidHttpUrl(normalized)) { + console.warn("[Electron] Rejected invalid remote server URL:", normalized); + return; + } + + sendToRenderer("server-status", { status: "restarting", port: serverPort }); + + // Stop any locally-spawned server before switching modes in either direction. + const serverToStop = nextServer; + stopNextServer(); + await waitForServerExit(serverToStop); + + remoteServerUrl = normalized; + writeRemoteServerUrl(REMOTE_SERVER_PREFS_PATH, remoteServerUrl); + + startNextServer(); + try { + await waitForServer(`${getServerUrl()}/api/monitoring/health`); + } catch (err) { + console.warn("[Electron] Server did not become ready after remote-server change:", err.message); + } + + if (mainWindow && !mainWindow.isDestroyed()) { + mainWindow.loadURL(getServerUrl()); + } + createTray(); + + sendToRenderer("server-status", { + status: "running", + port: serverPort, + remoteUrl: remoteServerUrl, + }); + console.log( + remoteServerUrl + ? `[Electron] Now connected to remote server: ${remoteServerUrl}` + : "[Electron] Disconnected from remote server — spawning local server again" + ); +} + // ── Server Lifecycle (#1, #5, #10) ───────────────────────── function startNextServer() { + if (remoteServerUrl) { + console.log("[Electron] Remote server mode — connecting to", remoteServerUrl); + sendToRenderer("server-status", { + status: "running", + port: serverPort, + remoteUrl: remoteServerUrl, + }); + return; + } + if (isDev) { console.log("[Electron] Dev mode — connect to existing Next.js server"); sendToRenderer("server-status", { status: "running", port: serverPort }); @@ -777,8 +900,22 @@ function setupIpcHandlers() { platform: process.platform, isDev, port: serverPort, + remoteServerUrl, })); + // ── Remote Server Mode: prompt window IPC (main-process-only trust + // boundary — this window never loads remote/untrusted content) ── + ipcMain.handle("remote-server-prompt:get-initial-url", () => remoteServerUrl || ""); + + ipcMain.on("remote-server-prompt:submit", (_event, url) => { + remoteServerPromptWindow?.close(); + void setRemoteServerUrl(url); + }); + + ipcMain.on("remote-server-prompt:cancel", () => { + remoteServerPromptWindow?.close(); + }); + ipcMain.handle("open-external", (_event, url) => { try { const parsedUrl = new URL(url); diff --git a/electron/package-lock.json b/electron/package-lock.json index fc70141ce1..7909fcd7ec 100644 --- a/electron/package-lock.json +++ b/electron/package-lock.json @@ -1,12 +1,12 @@ { "name": "omniroute-desktop", - "version": "3.8.49", + "version": "3.8.50", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "omniroute-desktop", - "version": "3.8.49", + "version": "3.8.50", "license": "MIT", "dependencies": { "electron-updater": "^6.8.9" @@ -297,45 +297,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@electron/windows-sign": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@electron/windows-sign/-/windows-sign-1.2.2.tgz", - "integrity": "sha512-dfZeox66AvdPtb2lD8OsIIQh12Tp0GNCRUDfBHIKGpbmopZto2/A8nSpYYLoedPIHpqkeblZ/k8OV0Gy7PYuyQ==", - "dev": true, - "license": "BSD-2-Clause", - "optional": true, - "peer": true, - "dependencies": { - "cross-dirname": "^0.1.0", - "debug": "^4.3.4", - "fs-extra": "^11.1.1", - "minimist": "^1.2.8", - "postject": "^1.0.0-alpha.6" - }, - "bin": { - "electron-windows-sign": "bin/electron-windows-sign.js" - }, - "engines": { - "node": ">=14.14" - } - }, - "node_modules/@electron/windows-sign/node_modules/fs-extra": { - "version": "11.3.6", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.6.tgz", - "integrity": "sha512-w8ZNZr2mKIc7qeNaQ9AVPT1+iFaI+Avd4xudVOvdDJ8VytREi1Ft5Ih7hd9jjehod8vAM5GMsfQ/TpPf4EyoEA==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=14.14" - } - }, "node_modules/@isaacs/fs-minipass": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz", @@ -1130,15 +1091,6 @@ "dev": true, "license": "MIT" }, - "node_modules/cross-dirname": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/cross-dirname/-/cross-dirname-0.1.0.tgz", - "integrity": "sha512-+R08/oI0nl3vfPcqftZRpytksBXDzOUveBq/NBVx0sUp1axwzPQrKinNx5yd5sxPu8j1wIy8AfnVQ+5eFdha6Q==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true - }, "node_modules/cross-spawn": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", @@ -1459,19 +1411,6 @@ "node": ">=14.0.0" } }, - "node_modules/electron-builder-squirrel-windows": { - "version": "26.15.3", - "resolved": "https://registry.npmjs.org/electron-builder-squirrel-windows/-/electron-builder-squirrel-windows-26.15.3.tgz", - "integrity": "sha512-Jc19XPV9y9+2bAdZPkXuVNGNIEFBq9poHC61l8Kv6FdK7DRG3+Ic0rerC0DXOaeHNz8yW0fg/JnF8GQROOF5MA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "app-builder-lib": "26.15.3", - "builder-util": "26.15.3", - "electron-winstaller": "5.4.0" - } - }, "node_modules/electron-publish": { "version": "26.15.3", "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-26.15.3.tgz", @@ -1506,66 +1445,6 @@ "tiny-typed-emitter": "^2.1.0" } }, - "node_modules/electron-winstaller": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/electron-winstaller/-/electron-winstaller-5.4.0.tgz", - "integrity": "sha512-bO3y10YikuUwUuDUQRM4KfwNkKhnpVO7IPdbsrejwN9/AABJzzTQ4GeHwyzNSrVO+tEH3/Np255a3sVZpZDjvg==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@electron/asar": "^3.2.1", - "debug": "^4.1.1", - "fs-extra": "^7.0.1", - "lodash": "^4.17.21", - "temp": "^0.9.0" - }, - "engines": { - "node": ">=8.0.0" - }, - "optionalDependencies": { - "@electron/windows-sign": "^1.1.2" - } - }, - "node_modules/electron-winstaller/node_modules/fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" - } - }, - "node_modules/electron-winstaller/node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "dev": true, - "license": "MIT", - "peer": true, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/electron-winstaller/node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">= 4.0.0" - } - }, "node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", @@ -1696,9 +1575,9 @@ "license": "MIT" }, "node_modules/fast-uri": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.4.tgz", - "integrity": "sha512-8JnbkQ4juDyvYs4mgFGQqg4yCYtFDtUtmp2QIQq11ZZe5CFQ5wcqm1rqDgAh/QdMySuBnPzMUiJUNZG5N/AiQw==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.5.tgz", + "integrity": "sha512-gHwA1O9LDIcKunMKhObS/HimwtehO1nPUECKAu5TpKgaO19fcWEl4bliWe1jWxVFvIXztJjjQ4L8XQ1EU9f7Jw==", "dev": true, "funding": [ { @@ -2480,20 +2359,6 @@ "node": ">= 18" } }, - "node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -2757,36 +2622,6 @@ "node": ">=18" } }, - "node_modules/postject": { - "version": "1.0.0-alpha.6", - "resolved": "https://registry.npmjs.org/postject/-/postject-1.0.0-alpha.6.tgz", - "integrity": "sha512-b9Eb8h2eVqNE8edvKdwqkrY6O7kAwmI8kcnBv1NScolYJbo59XUF0noFq+lxbC1yN20bmC0WBEbDC5H/7ASb0A==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "commander": "^9.4.0" - }, - "bin": { - "postject": "dist/cli.js" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/postject/node_modules/commander": { - "version": "9.5.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", - "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": "^12.20.0 || >=14" - } - }, "node_modules/proc-log": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-6.1.0.tgz", @@ -2981,21 +2816,6 @@ "node": ">= 4" } }, - "node_modules/rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", - "dev": true, - "license": "ISC", - "peer": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, "node_modules/roarr": { "version": "2.15.4", "resolved": "https://registry.npmjs.org/roarr/-/roarr-2.15.4.tgz", @@ -3251,21 +3071,6 @@ "node": ">=18" } }, - "node_modules/temp": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/temp/-/temp-0.9.4.tgz", - "integrity": "sha512-yYrrsWnrXMcdsnu/7YMYAofM1ktpL5By7vZhf15CrXijWWrEYZks5AXBudalfSWJLlnen/QUJUB5aoB0kqZUGA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "mkdirp": "^0.5.1", - "rimraf": "~2.6.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, "node_modules/temp-file": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/temp-file/-/temp-file-3.4.0.tgz", @@ -3372,9 +3177,9 @@ } }, "node_modules/undici": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-7.28.0.tgz", - "integrity": "sha512-cRZYrTDwWznlnRiPjggAGxZXanty6M8RV1ff8Wm4LWXBp7/IG8v5DnOm74DtUBp9OONpK75YlPnIjQqX0dBDtA==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-7.29.0.tgz", + "integrity": "sha512-IDxfleLmmbSskfWSUATiN1nfn2rDuvnMOqb5CWR92iIfojA0Ud+ulOAAEQ57LPr9rWmsreUyf5lwyao+7GNNVw==", "dev": true, "license": "MIT", "engines": { diff --git a/electron/package.json b/electron/package.json index 60a0ada9bf..73fb51ec40 100644 --- a/electron/package.json +++ b/electron/package.json @@ -37,13 +37,14 @@ "plist": "^4.0.0", "form-data": "^4.0.6", "js-yaml": "^4.2.0", - "undici": "^7.28.0" + "undici": "^7.29.0" }, "build": { "appId": "online.omniroute.desktop", "productName": "OmniRoute", "copyright": "Copyright © 2025 OmniRoute", - "buildDependenciesFromSource": true, + "buildDependenciesFromSource": false, + "npmRebuild": false, "directories": { "output": "dist-electron", "buildResources": "assets" @@ -59,8 +60,13 @@ "loginManager.js", "processTree.js", "sqlite-inspection.js", + "remoteServerPromptPreload.js", + "remoteServerPromptRenderer.js", "lib/resolveServerEntry.js", "lib/resolveNodeHelper.js", + "lib/resolveRemoteServerUrl.js", + "lib/remoteServerPreferences.js", + "assets/remoteServerPrompt.html", "package.json", "node_modules/**/*" ], diff --git a/electron/preload.js b/electron/preload.js index 0eabaa2748..21a40b178e 100644 --- a/electron/preload.js +++ b/electron/preload.js @@ -106,8 +106,15 @@ const VALID_CHANNELS = { "login:start", "login:cancel", "login:status", + "remote-server-prompt:get-initial-url", + ], + send: [ + "window-minimize", + "window-maximize", + "window-close", + "remote-server-prompt:submit", + "remote-server-prompt:cancel", ], - send: ["window-minimize", "window-maximize", "window-close"], receive: ["server-status", "port-changed", "update-status", "login:status"], }; @@ -160,6 +167,9 @@ contextBridge.exposeInMainWorld("electronAPI", { // ── Receive (event listeners) ──────────────────────────── // Fix #6: Returns a disposer function for precise cleanup + // "server-status" payloads include remoteUrl when running in Remote Server + // Mode (see electron/main.js setRemoteServerUrl) — surfaced here read-only; + // the actual URL is configured via the tray menu, not the renderer. onServerStatus: (callback) => safeOn("server-status", callback), onPortChanged: (callback) => safeOn("port-changed", callback), onUpdateStatus: (callback) => safeOn("update-status", callback), diff --git a/electron/remoteServerPromptPreload.js b/electron/remoteServerPromptPreload.js new file mode 100644 index 0000000000..af05f55b9c --- /dev/null +++ b/electron/remoteServerPromptPreload.js @@ -0,0 +1,15 @@ +/** + * Preload for the small "Connect to Remote Server" prompt window. + * + * Kept separate from the main preload.js — this window only ever loads our + * own bundled remoteServerPrompt.html (never remote/untrusted content), but we + * still keep contextIsolation on and expose the minimum surface needed. + */ + +const { contextBridge, ipcRenderer } = require("electron"); + +contextBridge.exposeInMainWorld("remoteServerPrompt", { + getInitialUrl: () => ipcRenderer.invoke("remote-server-prompt:get-initial-url"), + submit: (url) => ipcRenderer.send("remote-server-prompt:submit", url), + cancel: () => ipcRenderer.send("remote-server-prompt:cancel"), +}); diff --git a/electron/remoteServerPromptRenderer.js b/electron/remoteServerPromptRenderer.js new file mode 100644 index 0000000000..f1689920ec --- /dev/null +++ b/electron/remoteServerPromptRenderer.js @@ -0,0 +1,40 @@ +(function () { + const input = document.getElementById("url-input"); + const errorEl = document.getElementById("error"); + const saveBtn = document.getElementById("save-btn"); + const cancelBtn = document.getElementById("cancel-btn"); + + function isValidOrEmpty(value) { + const trimmed = value.trim(); + if (!trimmed) return true; // empty = disconnect, handled by main process + try { + const parsed = new URL(trimmed); + return parsed.protocol === "http:" || parsed.protocol === "https:"; + } catch { + return false; + } + } + + window.remoteServerPrompt.getInitialUrl().then((url) => { + input.value = url || ""; + input.focus(); + }); + + saveBtn.addEventListener("click", () => { + const value = input.value.trim(); + if (!isValidOrEmpty(value)) { + errorEl.textContent = "Enter a valid http:// or https:// URL, or leave blank to disconnect."; + return; + } + window.remoteServerPrompt.submit(value); + }); + + cancelBtn.addEventListener("click", () => { + window.remoteServerPrompt.cancel(); + }); + + input.addEventListener("keydown", (event) => { + if (event.key === "Enter") saveBtn.click(); + if (event.key === "Escape") cancelBtn.click(); + }); +})(); diff --git a/electron/types.d.ts b/electron/types.d.ts index c93a04fc77..c78fbaf2b1 100644 --- a/electron/types.d.ts +++ b/electron/types.d.ts @@ -14,11 +14,15 @@ export interface AppInfo { platform: "win32" | "darwin" | "linux"; isDev: boolean; port: number; + /** Set when Remote Server Mode is active (tray → Remote Server → Connect…). */ + remoteServerUrl: string | null; } export interface ServerStatus { status: "starting" | "running" | "stopped" | "restarting" | "error"; port: number; + /** Present only while connected to a remote server instead of the embedded one. */ + remoteUrl?: string; } export interface ElectronAPI { diff --git a/next.config.mjs b/next.config.mjs index 8eccf141e3..e1c2e7cc1a 100644 --- a/next.config.mjs +++ b/next.config.mjs @@ -173,6 +173,10 @@ const nextConfig = { serverActions: { bodySizeLimit: process.env.OMNIROUTE_SERVER_ACTIONS_BODY_LIMIT || "50mb", }, + // Reduce peak heap during production builds (Next.js 15+). + webpackMemoryOptimizations: true, + // Run webpack in a separate Node worker, lowering main-process memory. + webpackBuildWorker: true, // Next.js proxy (middleware) has a default 10MB body clone limit. File // uploads (OpenAI-compatible /v1/files) routinely exceed this. Match the // 512 MB server-side cap; tune via env if needed. diff --git a/open-sse/config/anthropicHeaders.ts b/open-sse/config/anthropicHeaders.ts index 2edc489d1e..cf6710c4fe 100644 --- a/open-sse/config/anthropicHeaders.ts +++ b/open-sse/config/anthropicHeaders.ts @@ -57,6 +57,11 @@ export const FORWARDABLE_CLIENT_BETAS = Object.freeze([ "context-1m-2025-08-07", "code-execution-2025-08-25", "skills-2025-10-02", + // effort-2025-11-24 is a client-negotiated beta (Claude Code sends it on every + // request). selectBetaFlags no longer force-adds it as a side-effect of the ATU + // gate (#9505), so a client that sent it must keep it through the merge — + // otherwise its effort negotiation is silently dropped. + "effort-2025-11-24", ]); /** diff --git a/open-sse/config/antigravityModelAliases.ts b/open-sse/config/antigravityModelAliases.ts index d1fd5eb8aa..61aac462a8 100644 --- a/open-sse/config/antigravityModelAliases.ts +++ b/open-sse/config/antigravityModelAliases.ts @@ -144,6 +144,9 @@ export const ANTIGRAVITY_PUBLIC_MODELS = Object.freeze([ export const ANTIGRAVITY_MODEL_ALIASES = Object.freeze({ // gemini-3.1-pro-low is not aliased: the upstream accepts it verbatim. + // gemini-3.1-pro-high: the discovery slot returns HTTP 400 on v1internal; + // the live upstream id is gemini-pro-agent (see ANTIGRAVITY_PUBLIC_MODELS). + "gemini-3.1-pro-high": "gemini-pro-agent", "gemini-3-pro-image-preview": "gemini-3-pro-image", // Legacy Claude display ids → current upstream ids. NOTE: an earlier comment here // assumed Claude was removed from Antigravity 2.0 and would 404; discussion #3184 diff --git a/open-sse/config/antigravityUpstream.ts b/open-sse/config/antigravityUpstream.ts index 1ed328d7f3..aa015ef3ae 100644 --- a/open-sse/config/antigravityUpstream.ts +++ b/open-sse/config/antigravityUpstream.ts @@ -12,6 +12,12 @@ export const ANTIGRAVITY_BOOTSTRAP_BASE_URLS = Object.freeze([ "https://cloudcode-pa.googleapis.com", ]); +export const ANTIGRAVITY_ONBOARD_PATH = "/v1internal:onboardUser"; + +export function getAntigravityOnboardUrls(): string[] { + return ANTIGRAVITY_BOOTSTRAP_BASE_URLS.map((base) => `${base}${ANTIGRAVITY_ONBOARD_PATH}`); +} + const ANTIGRAVITY_MODELS_PATH = "/v1internal:models"; const ANTIGRAVITY_FETCH_AVAILABLE_MODELS_PATH = "/v1internal:fetchAvailableModels"; diff --git a/open-sse/config/audioRegistry.ts b/open-sse/config/audioRegistry.ts index 0419622f36..8877ca0257 100644 --- a/open-sse/config/audioRegistry.ts +++ b/open-sse/config/audioRegistry.ts @@ -14,6 +14,14 @@ interface AudioModel { export interface AudioProvider { id: string; + /** + * Provider key to look credentials up under. Dynamic provider nodes are exposed + * to callers under their `prefix` (that is what appears in `provider/model`), + * but their connections are stored under the node **id** — without this the + * credential lookup silently misses. Absent for hardcoded providers, where the + * id already is the credential key. + */ + credentialProviderId?: string; baseUrl: string; authType: string; authHeader: string; @@ -137,6 +145,19 @@ export const AUDIO_TRANSCRIPTION_PROVIDERS: Record = { ], }, + soniox: { + id: "soniox", + baseUrl: "https://api.soniox.com/v1/transcriptions", + authType: "apikey", + authHeader: "bearer", + async: true, + format: "soniox", + models: [ + { id: "stt-async-v5", name: "Soniox STT Async v5" }, + { id: "stt-async-v4", name: "Soniox STT Async v4" }, + ], + }, + nvidia: { id: "nvidia", baseUrl: "https://integrate.api.nvidia.com/v1/audio/transcriptions", @@ -312,6 +333,15 @@ export const AUDIO_SPEECH_PROVIDERS: Record = { ], }, + soniox: { + id: "soniox", + baseUrl: "https://tts-rt.soniox.com/tts", + authType: "apikey", + authHeader: "bearer", + format: "soniox-tts", + models: [{ id: "tts-rt-v1", name: "Soniox TTS RT v1" }], + }, + elevenlabs: { id: "elevenlabs", baseUrl: "https://api.elevenlabs.io/v1/text-to-speech", @@ -564,27 +594,49 @@ export function getSpeechProvider(providerId: string): AudioProvider | null { } export interface ProviderNodeRow { + /** provider_node row id — the key its connections (and credentials) are stored under. */ + id?: string; prefix: string; name: string; baseUrl: string; apiType?: string; } +/** Hosts reachable only from the operator's machine/Docker network. */ +export function isLoopbackNodeHost(baseUrl: string): boolean { + try { + const hostname = new URL(baseUrl).hostname; + return ( + hostname === "localhost" || + hostname === "127.0.0.1" || + /^172\.(1[6-9]|2[0-9]|3[0-1])\.\d{1,3}\.\d{1,3}$/.test(hostname) + ); + } catch { + return false; + } +} + /** * Build a dynamic AudioProvider from a provider_node DB entry. - * Only used for local providers (localhost/127.0.0.1) — remote nodes are - * excluded by the caller to prevent auth bypass and SSRF. + * + * Loopback nodes keep `authType: "none"` — a local Ollama/LM Studio has no key and + * must not be blocked on a missing credential. A remote node is the opposite: it is + * only reachable when the operator opted in, and it must present the credential + * stored on its connection, so it is built as an api-key provider keyed by the node + * id (`credentialProviderId`) rather than by the caller-facing prefix. */ export function buildDynamicAudioProvider(node: ProviderNodeRow, audioPath: string): AudioProvider { if (!node.prefix || !node.baseUrl) { throw new Error(`Invalid provider_node: missing prefix or baseUrl`); } const baseUrl = node.baseUrl.replace(/\/+$/, ""); + const isLocal = isLoopbackNodeHost(node.baseUrl); return { id: node.prefix, + ...(node.id ? { credentialProviderId: node.id } : {}), baseUrl: `${baseUrl}${audioPath}`, - authType: "none", - authHeader: "none", + authType: isLocal ? "none" : "apikey", + authHeader: isLocal ? "none" : "bearer", models: [], }; } diff --git a/open-sse/config/cliFingerprints.ts b/open-sse/config/cliFingerprints.ts index da65fce35b..b219cd1363 100644 --- a/open-sse/config/cliFingerprints.ts +++ b/open-sse/config/cliFingerprints.ts @@ -271,6 +271,7 @@ function stripInternalBodyFields(body: unknown): unknown { const record = body as Record; delete record._claudeCodeRequiresLowercaseToolNames; delete record._nativeCodexPassthrough; + delete record._nativeXaiResponsesPassthrough; delete record._omnirouteResponsesStore; return body; } diff --git a/open-sse/config/embeddingRegistry.ts b/open-sse/config/embeddingRegistry.ts index 4882b5373a..f8de0e18e9 100644 --- a/open-sse/config/embeddingRegistry.ts +++ b/open-sse/config/embeddingRegistry.ts @@ -372,6 +372,21 @@ export const EMBEDDING_PROVIDERS: Record = { models: [], }, + // Ollama Local — OpenAI-compatible embeddings endpoint. Ollama exposes its + // own model catalog, but these common embedding models are useful defaults + // for model selection and validation. + "ollama-local": { + id: "ollama-local", + baseUrl: "http://localhost:11434/v1/embeddings", + authType: "none", + authHeader: "none", + models: [ + { id: "embeddinggemma", name: "EmbeddingGemma" }, + { id: "nomic-embed-text", name: "Nomic Embed Text" }, + { id: "bge-m3", name: "BGE M3" }, + ], + }, + // Issue #6660: Mixedbread AI — OpenAI-compatible /v1/embeddings, free tier // available (API key via signup, no card required). Model ids are the // upstream-qualified "mixedbread-ai/" form, mirroring how `together`/ diff --git a/open-sse/config/freeModelCatalog.data.ts b/open-sse/config/freeModelCatalog.data.ts index 9893a08fd4..42ec705f8c 100644 --- a/open-sse/config/freeModelCatalog.data.ts +++ b/open-sse/config/freeModelCatalog.data.ts @@ -115,10 +115,7 @@ export const FREE_MODEL_BUDGETS: FreeModelBudget[] = [ { provider: "cerebras", modelId: "zai-glm-4.7", displayName: "GLM 4.7", monthlyTokens: 30000000, creditTokens: 0, freeType: "recurring-daily", poolKey: "cerebras", tos: "caution" }, { provider: "cerebras", modelId: "gpt-oss-120b", displayName: "GPT OSS 120B", monthlyTokens: 30000000, creditTokens: 0, freeType: "recurring-daily", poolKey: "cerebras", tos: "caution" }, { provider: "cloudflare-ai", modelId: "@cf/meta/llama-3.3-70b-instruct", displayName: "Llama 3.3 70B (🆓 ~150 resp/day)", monthlyTokens: 30000000, creditTokens: 0, freeType: "recurring-daily", poolKey: "cloudflare-ai", tos: "caution" }, - { provider: "cloudflare-ai", modelId: "@cf/meta/llama-3.1-8b-instruct", displayName: "Llama 3.1 8B (🆓)", monthlyTokens: 0, creditTokens: 0, freeType: "recurring-daily", poolKey: "cloudflare-ai", tos: "caution" }, { provider: "cloudflare-ai", modelId: "@cf/google/gemma-3-12b-it", displayName: "Gemma 3 12B (🆓)", monthlyTokens: 0, creditTokens: 0, freeType: "recurring-daily", poolKey: "cloudflare-ai", tos: "caution" }, - { provider: "cloudflare-ai", modelId: "@cf/mistral/mistral-7b-instruct-v0.2-lora", displayName: "Mistral 7B (🆓)", monthlyTokens: 0, creditTokens: 0, freeType: "recurring-daily", poolKey: "cloudflare-ai", tos: "caution" }, - { provider: "cloudflare-ai", modelId: "@cf/qwen/qwen2.5-coder-15b-instruct", displayName: "Qwen 2.5 Coder 15B (🆓)", monthlyTokens: 0, creditTokens: 0, freeType: "recurring-daily", poolKey: "cloudflare-ai", tos: "caution" }, { provider: "cloudflare-ai", modelId: "@cf/qwen/qwen2.5-coder-32b-instruct", displayName: "Qwen 2.5 Coder 32B (🆓)", monthlyTokens: 0, creditTokens: 0, freeType: "recurring-daily", poolKey: "cloudflare-ai", tos: "caution" }, { provider: "cloudflare-ai", modelId: "@cf/deepseek-ai/deepseek-r1-distill-qwen-32b", displayName: "DeepSeek R1 Distill 32B (🆓)", monthlyTokens: 0, creditTokens: 0, freeType: "recurring-daily", poolKey: "cloudflare-ai", tos: "caution" }, { provider: "cloudflare-ai", modelId: "@cf/meta/llama-3.3-70b-instruct-fp8-fast", displayName: "Llama 3.3 70B (FP8 Fast 🆓)", monthlyTokens: 0, creditTokens: 0, freeType: "recurring-daily", poolKey: "cloudflare-ai", tos: "caution" }, diff --git a/open-sse/config/imageRegistry.ts b/open-sse/config/imageRegistry.ts index becb18e008..386dbf1485 100644 --- a/open-sse/config/imageRegistry.ts +++ b/open-sse/config/imageRegistry.ts @@ -711,6 +711,20 @@ export const IMAGE_PROVIDERS: Record = { name: "Firefly Runway Gen-4 Image", inputModalities: ["text", "image"], }, + // Topaz Labs upscalers (inputMediaUseCase: ["upscaling"]). + // Served by firefly-3p /v2/3p-images/upsample — see config/upscaleRegistry.ts. + { + id: "topaz-standard", + name: "Firefly Topaz Upscale (Standard)", + inputModalities: ["image"], + imageRequired: true, + }, + { + id: "topaz-bloom", + name: "Firefly Topaz Bloom (Creative Upscale)", + inputModalities: ["image"], + imageRequired: true, + }, ], supportedSizes: ["1:1", "16:9", "9:16", "4:3", "3:4", "1024x1024", "1792x1024", "1024x1792"], }, @@ -943,7 +957,6 @@ export function getImageModelAliases() { export function isRegisteredImageModel(providerId, modelId) { return Boolean(findImageModelConfig(providerId, modelId)); } - export function getImageModelEntry(modelStr) { if (!modelStr) return null; diff --git a/open-sse/config/providerModels.ts b/open-sse/config/providerModels.ts index 4051e00e93..75099bad83 100644 --- a/open-sse/config/providerModels.ts +++ b/open-sse/config/providerModels.ts @@ -12,27 +12,27 @@ export const PROVIDER_MODELS: Record = new Proxy( {} as Record, { get(_, prop) { - if (typeof prop === 'symbol') return undefined; + if (typeof prop === "symbol") return undefined; return Reflect.get(initModels(), prop, _models); }, has(_, prop) { - if (typeof prop === 'symbol') return false; + if (typeof prop === "symbol") return false; return Reflect.has(initModels(), prop); }, ownKeys() { return Reflect.ownKeys(initModels()); }, getOwnPropertyDescriptor(_, prop) { - if (typeof prop === 'symbol') return undefined; + if (typeof prop === "symbol") return undefined; return Object.getOwnPropertyDescriptor(initModels(), prop); }, set(_, prop, value) { - if (typeof prop === 'symbol') return false; + if (typeof prop === "symbol") return false; (initModels() as Record)[prop] = value; return true; }, deleteProperty(_, prop) { - if (typeof prop === 'symbol') return false; + if (typeof prop === "symbol") return false; return Reflect.deleteProperty(initModels(), prop); }, } @@ -41,27 +41,27 @@ export const PROVIDER_ID_TO_ALIAS: Record = new Proxy( {} as Record, { get(_, prop) { - if (typeof prop === 'symbol') return undefined; + if (typeof prop === "symbol") return undefined; return Reflect.get(initAliases(), prop, _aliases); }, has(_, prop) { - if (typeof prop === 'symbol') return false; + if (typeof prop === "symbol") return false; return Reflect.has(initAliases(), prop); }, ownKeys() { return Reflect.ownKeys(initAliases()); }, getOwnPropertyDescriptor(_, prop) { - if (typeof prop === 'symbol') return undefined; + if (typeof prop === "symbol") return undefined; return Object.getOwnPropertyDescriptor(initAliases(), prop); }, set(_, prop, value) { - if (typeof prop === 'symbol') return false; + if (typeof prop === "symbol") return false; (initAliases() as Record)[prop] = value; return true; }, deleteProperty(_, prop) { - if (typeof prop === 'symbol') return false; + if (typeof prop === "symbol") return false; return Reflect.deleteProperty(initAliases(), prop); }, } @@ -116,7 +116,13 @@ export function findModelName(aliasOrId: string, modelId: string): string { export function getModelTargetFormat(aliasOrId: string, modelId: string): string | null { const models = PROVIDER_MODELS[aliasOrId]; - const found = models?.find((m) => m.id === modelId); + // Strip provider prefix if present: "openai/gpt-5.6-luna" → "gpt-5.6-luna" + const prefix = aliasOrId + "/"; + const bareModelId = + typeof modelId === "string" && modelId.startsWith(prefix) + ? modelId.slice(prefix.length) + : modelId; + const found = models?.find((m) => m.id === bareModelId); if (found?.targetFormat) return found.targetFormat; // #5842: OpenAI "*-pro" reasoning models (o1-pro, gpt-5.x-pro) are only served by // the native /v1/responses endpoint — /v1/chat/completions 404s ("only supported @@ -124,7 +130,7 @@ export function getModelTargetFormat(aliasOrId: string, modelId: string): string // covers dynamically-synced ids that post-date the catalog (same spirit as the gh // executor's /codex/i routing, 9router#102). Scoped to the openai alias so other // providers shipping *-pro ids keep their own endpoint semantics. - if (aliasOrId === "openai" && /-pro$/i.test(modelId)) return "openai-responses"; + if (aliasOrId === "openai" && /-pro$/i.test(bareModelId)) return "openai-responses"; return null; } diff --git a/open-sse/config/providerRegistry.ts b/open-sse/config/providerRegistry.ts index 70f6ce831c..bb3b6e0f9f 100644 --- a/open-sse/config/providerRegistry.ts +++ b/open-sse/config/providerRegistry.ts @@ -180,6 +180,24 @@ export function getRegistryEntry(provider: string): RegistryEntry | null { return REGISTRY[provider] || _byAlias.get(provider) || null; } +/** + * Decide whether a non-empty live catalog may exclude omitted static models + * during request routing and wildcard expansion. + * + * Live discovery is authoritative by default, including for dynamic providers. + * Providers with intentionally partial discovery must explicitly opt out in + * their registry entry. + */ +export function providerUsesAuthoritativeLiveCatalog(provider: string): boolean { + const entry = getRegistryEntry(provider); + + if (entry && typeof entry.liveCatalogAuthoritative === "boolean") { + return entry.liveCatalogAuthoritative; + } + + return true; +} + /** Get all registered provider IDs */ export function getRegisteredProviders(): string[] { return Object.keys(REGISTRY); diff --git a/open-sse/config/providers/index.ts b/open-sse/config/providers/index.ts index e586b42301..47a5896784 100644 --- a/open-sse/config/providers/index.ts +++ b/open-sse/config/providers/index.ts @@ -1,4 +1,5 @@ import type { RegistryEntry } from "./shared.ts"; +import { unorouterProvider } from "./registry/unorouter/index.ts"; import { aimlapiProvider } from "./registry/aimlapi/index.ts"; import { byteplusProvider } from "./registry/byteplus/index.ts"; @@ -21,6 +22,7 @@ import { glmProvider } from "./registry/glm/index.ts"; import { glmtProvider } from "./registry/glm/t/index.ts"; import { glm_cnProvider } from "./registry/glm/cn/index.ts"; import { traeProvider } from "./registry/trae/index.ts"; +import { raycastProvider } from "./registry/raycast/index.ts"; import { muse_spark_webProvider } from "./registry/muse-spark-web/index.ts"; import { lmarenaProvider } from "./registry/lmarena/index.ts"; import { kilocodeProvider } from "./registry/kilocode/index.ts"; @@ -146,6 +148,7 @@ import { siliconflowProvider } from "./registry/siliconflow/index.ts"; import { gitlab_duoProvider } from "./registry/gitlab-duo/index.ts"; import { command_codeProvider } from "./registry/command-code/index.ts"; import { novitaProvider } from "./registry/novita/index.ts"; +import { regoloProvider } from "./registry/regolo/index.ts"; import { windsurfProvider } from "./registry/windsurf/index.ts"; import { zed_hostedProvider } from "./registry/zed-hosted/index.ts"; import { nanogptProvider } from "./registry/nanogpt/index.ts"; @@ -168,6 +171,7 @@ import { kilo_gatewayProvider } from "./registry/kilo-gateway/index.ts"; import { bailian_coding_planProvider } from "./registry/bailian-coding-plan/index.ts"; import { gigachatProvider } from "./registry/gigachat/index.ts"; import { devin_cliProvider } from "./registry/devin-cli/index.ts"; +import { devin_cli_agenticProvider } from "./registry/devin-cli-agentic/index.ts"; import { auggieProvider } from "./registry/auggie/index.ts"; import { chutesProvider } from "./registry/chutes/index.ts"; import { chenzkProvider } from "./registry/chenzk/index.ts"; @@ -242,6 +246,7 @@ export const REGISTRY: Record = { glmt: glmtProvider, "glm-cn": glm_cnProvider, trae: traeProvider, + raycast: raycastProvider, "muse-spark-web": muse_spark_webProvider, lmarena: lmarenaProvider, kilocode: kilocodeProvider, @@ -367,6 +372,7 @@ export const REGISTRY: Record = { "gitlab-duo": gitlab_duoProvider, "command-code": command_codeProvider, novita: novitaProvider, + regolo: regoloProvider, windsurf: windsurfProvider, "zed-hosted": zed_hostedProvider, nanogpt: nanogptProvider, @@ -388,6 +394,7 @@ export const REGISTRY: Record = { "bailian-coding-plan": bailian_coding_planProvider, gigachat: gigachatProvider, "devin-cli": devin_cliProvider, + "devin-cli-agentic": devin_cli_agenticProvider, auggie: auggieProvider, chutes: chutesProvider, chenzk: chenzkProvider, @@ -444,4 +451,5 @@ export const REGISTRY: Record = { hcnsec: hcnsecProvider, promptql: promptqlProvider, hyperagent: hyperagentProvider, + unorouter: unorouterProvider, }; diff --git a/open-sse/config/providers/registry/anyapi/index.ts b/open-sse/config/providers/registry/anyapi/index.ts new file mode 100644 index 0000000000..fcb118a771 --- /dev/null +++ b/open-sse/config/providers/registry/anyapi/index.ts @@ -0,0 +1,11 @@ +import type { RegistryEntry } from "../../shared.ts"; +import { buildOpenAiCompatibleRegistryEntry } from "../../shared.ts"; + +export const anyapiProvider: RegistryEntry = buildOpenAiCompatibleRegistryEntry({ + id: "anyapi", + alias: "anyapi", + baseUrl: "https://api.anyapi.ai/v1/chat/completions", + modelsUrl: "https://api.anyapi.ai/v1/models", + models: [], + passthroughModels: true, +}); diff --git a/open-sse/config/providers/registry/cloudflare-ai/index.ts b/open-sse/config/providers/registry/cloudflare-ai/index.ts index f90d67137a..907138aa48 100644 --- a/open-sse/config/providers/registry/cloudflare-ai/index.ts +++ b/open-sse/config/providers/registry/cloudflare-ai/index.ts @@ -12,10 +12,7 @@ export const cloudflare_aiProvider: RegistryEntry = { // 10K Neurons/day free: ~150 LLM responses or 500s Whisper audio — global edge models: [ { id: "@cf/meta/llama-3.3-70b-instruct", name: "Llama 3.3 70B (🆓 ~150 resp/day)" }, - { id: "@cf/meta/llama-3.1-8b-instruct", name: "Llama 3.1 8B (🆓)" }, { id: "@cf/google/gemma-3-12b-it", name: "Gemma 3 12B (🆓)" }, - { id: "@cf/mistral/mistral-7b-instruct-v0.2-lora", name: "Mistral 7B (🆓)" }, - { id: "@cf/qwen/qwen2.5-coder-15b-instruct", name: "Qwen 2.5 Coder 15B (🆓)" }, { id: "@cf/qwen/qwen2.5-coder-32b-instruct", name: "Qwen 2.5 Coder 32B (🆓)" }, { id: "@cf/deepseek-ai/deepseek-r1-distill-qwen-32b", name: "DeepSeek R1 Distill 32B (🆓)" }, // Sweep 2026-06-19: + current Workers AI catalog ids (developers.cloudflare.com/workers-ai/models). diff --git a/open-sse/config/providers/registry/command-code/index.ts b/open-sse/config/providers/registry/command-code/index.ts index 6bc96c2372..23a73efe46 100644 --- a/open-sse/config/providers/registry/command-code/index.ts +++ b/open-sse/config/providers/registry/command-code/index.ts @@ -8,6 +8,9 @@ export const command_codeProvider: RegistryEntry = { baseUrl: "https://api.commandcode.ai", chatPath: "/alpha/generate", modelsUrl: "https://api.commandcode.ai/provider/v1/models", + // The discovery response is a partial routing catalog; static registry + // entries omitted from it can still be accepted by the gateway. + liveCatalogAuthoritative: false, authType: "apikey", authHeader: "Authorization", authPrefix: "Bearer ", @@ -17,6 +20,7 @@ export const command_codeProvider: RegistryEntry = { id: "claude-opus-4-7", name: "Claude Opus 4.7 (CC)", supportsReasoning: true, + supportsVision: true, contextLength: 200000, maxOutputTokens: 32000, }, @@ -24,6 +28,7 @@ export const command_codeProvider: RegistryEntry = { id: "claude-opus-4-6", name: "Claude Opus 4.6 (CC)", supportsReasoning: true, + supportsVision: true, contextLength: 200000, maxOutputTokens: 32000, }, @@ -31,6 +36,7 @@ export const command_codeProvider: RegistryEntry = { id: "claude-sonnet-4-6", name: "Claude Sonnet 4.6 (CC)", supportsReasoning: true, + supportsVision: true, contextLength: 200000, maxOutputTokens: 16384, }, @@ -38,6 +44,7 @@ export const command_codeProvider: RegistryEntry = { id: "claude-haiku-4-5-20251001", name: "Claude Haiku 4.5 (CC)", supportsReasoning: true, + supportsVision: true, contextLength: 200000, maxOutputTokens: 8192, }, @@ -45,6 +52,7 @@ export const command_codeProvider: RegistryEntry = { id: "gpt-5.5", name: "GPT-5.5 (CC)", supportsReasoning: true, + supportsVision: true, contextLength: 256000, maxOutputTokens: 128000, }, @@ -52,6 +60,7 @@ export const command_codeProvider: RegistryEntry = { id: "gpt-5.4", name: "GPT-5.4 (CC)", supportsReasoning: true, + supportsVision: true, contextLength: 256000, maxOutputTokens: 128000, }, @@ -59,6 +68,7 @@ export const command_codeProvider: RegistryEntry = { id: "gpt-5.3-codex", name: "GPT-5.3 Codex (CC)", supportsReasoning: true, + supportsVision: true, contextLength: 256000, maxOutputTokens: 128000, }, @@ -66,6 +76,7 @@ export const command_codeProvider: RegistryEntry = { id: "gpt-5.4-mini", name: "GPT-5.4 Mini (CC)", supportsReasoning: false, + supportsVision: true, contextLength: 256000, maxOutputTokens: 128000, }, @@ -87,6 +98,7 @@ export const command_codeProvider: RegistryEntry = { id: "moonshotai/Kimi-K2.6", name: "Kimi K2.6 (CC)", supportsReasoning: true, + supportsVision: true, contextLength: 262144, maxOutputTokens: 65536, }, @@ -94,6 +106,7 @@ export const command_codeProvider: RegistryEntry = { id: "moonshotai/Kimi-K2.5", name: "Kimi K2.5 (CC)", supportsReasoning: true, + supportsVision: true, contextLength: 262144, maxOutputTokens: 65536, }, @@ -136,6 +149,7 @@ export const command_codeProvider: RegistryEntry = { id: "Qwen/Qwen3.6-Plus", name: "Qwen 3.6 Plus (CC)", supportsReasoning: true, + supportsVision: true, contextLength: 1000000, maxOutputTokens: 32768, }, diff --git a/open-sse/config/providers/registry/deepseek/web/index.ts b/open-sse/config/providers/registry/deepseek/web/index.ts index ba20e12e0d..08fc142564 100644 --- a/open-sse/config/providers/registry/deepseek/web/index.ts +++ b/open-sse/config/providers/registry/deepseek/web/index.ts @@ -9,27 +9,49 @@ export const deepseek_webProvider: RegistryEntry = { authType: "apikey", authHeader: "bearer", models: [ - { id: "deepseek-v4-pro", name: "DeepSeek V4 Pro", toolCalling: false }, - { id: "deepseek-v4-pro-think", name: "DeepSeek V4 Pro Think", supportsReasoning: true }, - { id: "deepseek-v4-pro-search", name: "DeepSeek V4 Pro Search", toolCalling: false }, + { id: "deepseek-v4-pro", name: "DeepSeek V4 Pro", toolCalling: true }, + { + id: "deepseek-v4-pro-think", + name: "DeepSeek V4 Pro Think", + toolCalling: true, + supportsReasoning: true, + }, + { id: "deepseek-v4-pro-search", name: "DeepSeek V4 Pro Search", toolCalling: true }, { id: "deepseek-v4-pro-think-search", name: "DeepSeek V4 Pro Think+Search", + toolCalling: true, supportsReasoning: true, }, - { id: "deepseek-v4-flash", name: "DeepSeek V4 Flash", toolCalling: false }, - { id: "deepseek-v4-flash-think", name: "DeepSeek V4 Flash Think", supportsReasoning: true }, - { id: "deepseek-v4-flash-search", name: "DeepSeek V4 Flash Search", toolCalling: false }, + { id: "deepseek-v4-flash", name: "DeepSeek V4 Flash", toolCalling: true }, + { + id: "deepseek-v4-flash-think", + name: "DeepSeek V4 Flash Think", + toolCalling: true, + supportsReasoning: true, + }, + { id: "deepseek-v4-flash-search", name: "DeepSeek V4 Flash Search", toolCalling: true }, { id: "deepseek-v4-flash-think-search", name: "DeepSeek V4 Flash Think+Search", + toolCalling: true, supportsReasoning: true, }, - { id: "deepseek-chat", name: "DeepSeek Chat", toolCalling: false }, - { id: "deepseek-reasoner", name: "DeepSeek Reasoner", supportsReasoning: true }, - { id: "DeepSeek-R1", name: "DeepSeek R1", supportsReasoning: true }, - { id: "DeepSeek-R1-Search", name: "DeepSeek R1 Search", supportsReasoning: true }, - { id: "DeepSeek-V3.2", name: "DeepSeek V3.2", toolCalling: false }, - { id: "DeepSeek-Search", name: "DeepSeek Search", toolCalling: false }, + { id: "deepseek-chat", name: "DeepSeek Chat", toolCalling: true }, + { + id: "deepseek-reasoner", + name: "DeepSeek Reasoner", + toolCalling: true, + supportsReasoning: true, + }, + { id: "DeepSeek-R1", name: "DeepSeek R1", toolCalling: true, supportsReasoning: true }, + { + id: "DeepSeek-R1-Search", + name: "DeepSeek R1 Search", + toolCalling: true, + supportsReasoning: true, + }, + { id: "DeepSeek-V3.2", name: "DeepSeek V3.2", toolCalling: true }, + { id: "DeepSeek-Search", name: "DeepSeek Search", toolCalling: true }, ], }; diff --git a/open-sse/config/providers/registry/devin-cli-agentic/index.ts b/open-sse/config/providers/registry/devin-cli-agentic/index.ts new file mode 100644 index 0000000000..3001936e25 --- /dev/null +++ b/open-sse/config/providers/registry/devin-cli-agentic/index.ts @@ -0,0 +1,21 @@ +import type { RegistryEntry } from "../../shared.ts"; +import { DEVIN_MODEL_CATALOG } from "../devin/catalog.ts"; + +export const devin_cli_agenticProvider: RegistryEntry = { + id: "devin-cli-agentic", + alias: "dva", + format: "claude", + executor: "devin-cli-agentic", + baseUrl: "devin://acp/stdio", + // Authentication is owned exclusively by the official Devin CLI inside its + // isolated volume. OmniRoute must not import or persist a host credential. + authType: "none", + authHeader: "none", + defaultContextLength: 200000, + models: DEVIN_MODEL_CATALOG.map((model) => ({ + ...model, + toolCalling: true, + supportsReasoning: false, + supportsVision: false, + })), +}; diff --git a/open-sse/config/providers/registry/electronhub/index.ts b/open-sse/config/providers/registry/electronhub/index.ts new file mode 100644 index 0000000000..b1b0cce56f --- /dev/null +++ b/open-sse/config/providers/registry/electronhub/index.ts @@ -0,0 +1,11 @@ +import type { RegistryEntry } from "../../shared.ts"; +import { buildOpenAiCompatibleRegistryEntry } from "../../shared.ts"; + +export const electronhubProvider: RegistryEntry = buildOpenAiCompatibleRegistryEntry({ + id: "electronhub", + alias: "electronhub", + baseUrl: "https://api.electronhub.ai/v1/chat/completions", + modelsUrl: "https://api.electronhub.ai/v1/models", + models: [], + passthroughModels: true, +}); diff --git a/open-sse/config/providers/registry/fastrouter/index.ts b/open-sse/config/providers/registry/fastrouter/index.ts new file mode 100644 index 0000000000..622c612065 --- /dev/null +++ b/open-sse/config/providers/registry/fastrouter/index.ts @@ -0,0 +1,11 @@ +import type { RegistryEntry } from "../../shared.ts"; +import { buildOpenAiCompatibleRegistryEntry } from "../../shared.ts"; + +export const fastrouterProvider: RegistryEntry = buildOpenAiCompatibleRegistryEntry({ + id: "fastrouter", + alias: "fastrouter", + baseUrl: "https://api.fastrouter.ai/api/v1/chat/completions", + modelsUrl: "https://api.fastrouter.ai/api/v1/models", + models: [], + passthroughModels: true, +}); diff --git a/open-sse/config/providers/registry/github/index.ts b/open-sse/config/providers/registry/github/index.ts index 9513afdc1e..3adda64763 100644 --- a/open-sse/config/providers/registry/github/index.ts +++ b/open-sse/config/providers/registry/github/index.ts @@ -122,9 +122,24 @@ export const githubProvider: RegistryEntry = { contextLength: 1000000, maxOutputTokens: 64000, }, - { id: "gpt-5.6-sol", name: "GPT-5.6 Sol", maxOutputTokens: 128000 }, - { id: "gpt-5.6-terra", name: "GPT-5.6 Terra", maxOutputTokens: 128000 }, - { id: "gpt-5.6-luna", name: "GPT-5.6 Luna", maxOutputTokens: 128000 }, + { + id: "gpt-5.6-sol", + name: "GPT-5.6 Sol", + targetFormat: "openai-responses", + maxOutputTokens: 128000, + }, + { + id: "gpt-5.6-terra", + name: "GPT-5.6 Terra", + targetFormat: "openai-responses", + maxOutputTokens: 128000, + }, + { + id: "gpt-5.6-luna", + name: "GPT-5.6 Luna", + targetFormat: "openai-responses", + maxOutputTokens: 128000, + }, { id: "gpt-5.5", name: "GPT-5.5", ...GPT_5_5_CODEX_CAPABILITIES, maxOutputTokens: 128000 }, { id: "gpt-5.4", diff --git a/open-sse/config/providers/registry/github/retiredModels.ts b/open-sse/config/providers/registry/github/retiredModels.ts new file mode 100644 index 0000000000..cc412401f9 --- /dev/null +++ b/open-sse/config/providers/registry/github/retiredModels.ts @@ -0,0 +1,12 @@ +const RETIRED_GITHUB_COPILOT_MODEL_IDS = new Set([ + "gemini-2.5-pro", + "gemini-3-flash", + "gemini-3-flash-preview", +]); + +export function isRetiredGitHubCopilotModelId(providerId: unknown, modelId: unknown): boolean { + const provider = typeof providerId === "string" ? providerId.trim().toLowerCase() : ""; + if (provider !== "github" && provider !== "gh") return false; + if (typeof modelId !== "string") return false; + return RETIRED_GITHUB_COPILOT_MODEL_IDS.has(modelId.trim().toLowerCase()); +} diff --git a/open-sse/config/providers/registry/llm-kiwi/index.ts b/open-sse/config/providers/registry/llm-kiwi/index.ts new file mode 100644 index 0000000000..d929afec29 --- /dev/null +++ b/open-sse/config/providers/registry/llm-kiwi/index.ts @@ -0,0 +1,14 @@ +import type { RegistryEntry } from "../../shared.ts"; +import { buildOpenAiCompatibleRegistryEntry } from "../../shared.ts"; + +export const llmKiwiProvider: RegistryEntry = buildOpenAiCompatibleRegistryEntry({ + id: "llm-kiwi", + alias: "llmkiwi", + baseUrl: "https://api.llm.kiwi/v1/chat/completions", + modelsUrl: "https://api.llm.kiwi/v1/models", + models: [ + { id: "auto", name: "Auto" }, + { id: "hrLLM", name: "hrLLM" }, + ], + passthroughModels: true, +}); diff --git a/open-sse/config/providers/registry/llmgateway/index.ts b/open-sse/config/providers/registry/llmgateway/index.ts new file mode 100644 index 0000000000..972a3a8930 --- /dev/null +++ b/open-sse/config/providers/registry/llmgateway/index.ts @@ -0,0 +1,11 @@ +import type { RegistryEntry } from "../../shared.ts"; +import { buildOpenAiCompatibleRegistryEntry } from "../../shared.ts"; + +export const llmgatewayProvider: RegistryEntry = buildOpenAiCompatibleRegistryEntry({ + id: "llmgateway", + alias: "llmgateway", + baseUrl: "https://api.llmgateway.io/v1/chat/completions", + modelsUrl: "https://api.llmgateway.io/v1/models", + models: [], + passthroughModels: true, +}); diff --git a/open-sse/config/providers/registry/minimax/cn/index.ts b/open-sse/config/providers/registry/minimax/cn/index.ts index 2274b01c39..8046b9e9d6 100644 --- a/open-sse/config/providers/registry/minimax/cn/index.ts +++ b/open-sse/config/providers/registry/minimax/cn/index.ts @@ -12,6 +12,7 @@ export const minimax_cnProvider: RegistryEntry = { authType: "apikey", authHeader: "bearer", headers: getAnthropicCompatHeaders(), + ensureThinkingSignature: true, models: [ // Keep parity with minimax to ensure model discovery works for minimax-cn connections. // #3110: MiniMax M3 — frontier coding model with 1M context diff --git a/open-sse/config/providers/registry/minimax/index.ts b/open-sse/config/providers/registry/minimax/index.ts index 3033fccb46..6f1f80f51f 100644 --- a/open-sse/config/providers/registry/minimax/index.ts +++ b/open-sse/config/providers/registry/minimax/index.ts @@ -12,6 +12,7 @@ export const minimaxProvider: RegistryEntry = { authType: "apikey", authHeader: "bearer", headers: getAnthropicCompatHeaders(), + ensureThinkingSignature: true, models: [ // T12/T28: MiniMax default upgraded from M2.5 to M2.7 // #3110: MiniMax M3 — frontier coding model with 1M context diff --git a/open-sse/config/providers/registry/nanogpt/index.ts b/open-sse/config/providers/registry/nanogpt/index.ts index 9bd165deee..9947938ffb 100644 --- a/open-sse/config/providers/registry/nanogpt/index.ts +++ b/open-sse/config/providers/registry/nanogpt/index.ts @@ -7,6 +7,7 @@ export const nanogptProvider: RegistryEntry = { format: "openai", executor: "default", baseUrl: "https://nano-gpt.com/api/v1/chat/completions", + modelsUrl: "https://nano-gpt.com/api/v1/models", authType: "apikey", authHeader: "bearer", models: CHAT_OPENAI_COMPAT_MODELS.nanogpt, diff --git a/open-sse/config/providers/registry/novita/index.ts b/open-sse/config/providers/registry/novita/index.ts index cd57d24523..48227c6a14 100644 --- a/open-sse/config/providers/registry/novita/index.ts +++ b/open-sse/config/providers/registry/novita/index.ts @@ -11,5 +11,175 @@ export const novitaProvider: RegistryEntry = { modelsUrl: "https://api.novita.ai/openai/v1/models", authType: "apikey", authHeader: "bearer", - models: [{ id: "meta-llama/llama-3.1-8b-instruct", name: "Llama 3.1 8B Instruct" }], + // Catalog seeded from a live GET https://api.novita.ai/openai/v1/models, the listing + // `modelsUrl` already points at. Every id below reports `status: 1` (serving) there, and + // `contextLength` / `maxOutputTokens` / `supportsReasoning` mirror that response's + // `context_size`, `max_output_tokens` and `features` fields. + // + // `supportsVision` is the exception: it is set from an actual image request per id, not + // from the listing's `input_modalities`. Those two disagree — `openai/gpt-oss-120b` + // advertises `input_modalities: ["text","image"]`, accepts an image part with HTTP 200, + // and then answers that it cannot see the image, so it is listed here without the flag. + // Models that genuinely lack vision instead fail closed with + // `400 "model features vision not support"`, so a 200 alone does not confirm the + // capability — the reply has to be checked. Each flag below was verified by sending a + // two-colour test image and requiring both colours back. + // + // Curated rather than exhaustive: the listing carries 143 entries unauthenticated and 304 + // with an API key (the former is a subset of the latter), including retired + // generations (`status: 4`, e.g. `meta-llama/llama-3-8b-instruct`) and unnamespaced staging + // ids (`bunny`, `ai_infer_test_2`, `dev/glm46`) that no caller should be offered. This keeps + // one entry per serving family/generation, matching the granularity of the other + // multi-vendor OpenAI-compatible hosts (fireworks, groq, nvidia). `modelsUrl` still drives + // dashboard discovery for anything not listed here. + models: [ + // DeepSeek + { + id: "deepseek/deepseek-v4-pro", + name: "DeepSeek V4 Pro", + supportsReasoning: true, + contextLength: 1048576, + maxOutputTokens: 393216, + }, + { + id: "deepseek/deepseek-v4-flash", + name: "DeepSeek V4 Flash", + supportsReasoning: true, + contextLength: 1048576, + maxOutputTokens: 393216, + }, + { + id: "deepseek/deepseek-v3.2", + name: "DeepSeek V3.2", + supportsReasoning: true, + contextLength: 163840, + maxOutputTokens: 65536, + }, + // Moonshot Kimi + { + id: "moonshotai/kimi-k3", + name: "Kimi K3", + supportsReasoning: true, + supportsVision: true, + contextLength: 1048576, + maxOutputTokens: 1048576, + }, + { + id: "moonshotai/kimi-k2.7-code", + name: "Kimi K2.7 Code", + supportsReasoning: true, + supportsVision: true, + contextLength: 262144, + maxOutputTokens: 262144, + }, + { + id: "moonshotai/kimi-k2.6", + name: "Kimi K2.6", + supportsReasoning: true, + supportsVision: true, + contextLength: 262144, + maxOutputTokens: 262144, + }, + // Z.ai GLM + { + id: "zai-org/glm-5.2", + name: "GLM 5.2", + supportsReasoning: true, + contextLength: 1048576, + maxOutputTokens: 131072, + }, + { + id: "zai-org/glm-5.1", + name: "GLM 5.1", + supportsReasoning: true, + contextLength: 204800, + maxOutputTokens: 131072, + }, + { + id: "zai-org/glm-4.7", + name: "GLM 4.7", + supportsReasoning: true, + contextLength: 204800, + maxOutputTokens: 131072, + }, + // MiniMax + { + id: "minimax/minimax-m3", + name: "MiniMax M3", + supportsReasoning: true, + supportsVision: true, + contextLength: 1000000, + maxOutputTokens: 131072, + }, + { + id: "minimax/minimax-m2.7", + name: "MiniMax M2.7", + supportsReasoning: true, + contextLength: 204800, + maxOutputTokens: 131072, + }, + // Qwen + { + id: "qwen/qwen3.7-max", + name: "Qwen3.7 Max", + supportsReasoning: true, + contextLength: 1000000, + maxOutputTokens: 65536, + }, + { + id: "qwen/qwen3.6-plus", + name: "Qwen3.6 Plus", + supportsReasoning: true, + supportsVision: true, + contextLength: 1000000, + maxOutputTokens: 65536, + }, + { + id: "qwen/qwen3.5-397b-a17b", + name: "Qwen3.5 397B A17B", + supportsReasoning: true, + supportsVision: true, + contextLength: 262144, + maxOutputTokens: 65536, + }, + { + id: "qwen/qwen3-coder-480b-a35b-instruct", + name: "Qwen3 Coder 480B", + contextLength: 262144, + maxOutputTokens: 65536, + }, + // Xiaomi MiMo / OpenAI gpt-oss / Google Gemma + { + id: "xiaomimimo/mimo-v2.5-pro", + name: "MiMo V2.5 Pro", + supportsReasoning: true, + contextLength: 1048576, + maxOutputTokens: 131072, + }, + { + // No `supportsVision`: the listing claims `image` input, but a live image request + // returns 200 and "I cannot see the image" (retried 4x, data-URI and remote URL). + // Matches how groq / fireworks / nvidia / siliconflow / cerebras list this id here. + id: "openai/gpt-oss-120b", + name: "OpenAI gpt-oss-120b", + supportsReasoning: true, + contextLength: 131072, + maxOutputTokens: 32768, + }, + { + id: "google/gemma-4-31b-it", + name: "Gemma 4 31B", + supportsReasoning: true, + supportsVision: true, + contextLength: 262144, + maxOutputTokens: 131072, + }, + // Pre-existing entry — the id verified live in #5455; kept as the endpoint guard's anchor. + { + id: "meta-llama/llama-3.1-8b-instruct", + name: "Llama 3.1 8B Instruct", + contextLength: 16384, + maxOutputTokens: 16384, + }, + ], }; diff --git a/open-sse/config/providers/registry/nvidia/index.ts b/open-sse/config/providers/registry/nvidia/index.ts index fb36561e07..c6e349fce1 100644 --- a/open-sse/config/providers/registry/nvidia/index.ts +++ b/open-sse/config/providers/registry/nvidia/index.ts @@ -8,6 +8,7 @@ export const nvidiaProvider: RegistryEntry = { baseUrl: "https://integrate.api.nvidia.com/v1/chat/completions", authType: "apikey", authHeader: "bearer", + toolNameMaxLength: 64, // #6773: nvidia multiplexes 17 models from 9 different upstream vendors // (z-ai/, minimaxai/, deepseek-ai/, qwen/, mistralai/, stepfun-ai/, // moonshotai/, openai/, nvidia/) behind ONE connection — mark it passthrough diff --git a/open-sse/config/providers/registry/opencode/zen/index.ts b/open-sse/config/providers/registry/opencode/zen/index.ts index db06fe8042..a241b043ce 100644 --- a/open-sse/config/providers/registry/opencode/zen/index.ts +++ b/open-sse/config/providers/registry/opencode/zen/index.ts @@ -85,14 +85,13 @@ export const opencode_zenProvider: RegistryEntry = { { id: "qwen3.6-plus", name: "Qwen3.6 Plus", targetFormat: "claude", supportsVision: false }, // ── Free Tier ────────────────────────────────────────────── + // #6998 (2026-07-14): upstream free tier rotated — minimax-m2.5-free, + // nemotron-3-super-free and qwen3.6-plus-free were delisted (401). Replaced + // by the 4 entries below with upstream-verified limits. { id: "deepseek-v4-flash-free", name: "DeepSeek V4 Flash Free", supportsReasoning: true }, - { id: "minimax-m2.5-free", name: "MiniMax M2.5 Free", contextLength: 204800 }, - { id: "nemotron-3-super-free", name: "Nemotron 3 Super Free", contextLength: 1000000 }, - { - id: "qwen3.6-plus-free", - name: "Qwen3.6 Plus Free", - targetFormat: "claude", - contextLength: 200000, - }, + { id: "mimo-v2.5-free", name: "MiMo V2.5 Free", contextLength: 200000 }, + { id: "hy3-free", name: "HY3 Free", contextLength: 200000 }, + { id: "nemotron-3-ultra-free", name: "Nemotron 3 Ultra Free", contextLength: 1000000 }, + { id: "north-mini-code-free", name: "North Mini Code Free", contextLength: 200000 }, ], }; diff --git a/open-sse/config/providers/registry/openrouter/index.ts b/open-sse/config/providers/registry/openrouter/index.ts index a770a5e5e7..1116badd4d 100644 --- a/open-sse/config/providers/registry/openrouter/index.ts +++ b/open-sse/config/providers/registry/openrouter/index.ts @@ -13,5 +13,12 @@ export const openrouterProvider: RegistryEntry = { "HTTP-Referer": "https://endpoint-proxy.local", "X-Title": "Endpoint Proxy", }, + // OpenRouter multiplexes hundreds of independent upstream models behind one + // connection/API key — without this flag, hasPerModelQuota() (accountFallback.ts) + // falls through to connection-wide cooldown on any model-specific failure (e.g. a + // 404 "No endpoints found" for one dead/renamed model), poisoning every OTHER + // OpenRouter model on the same connection for the cooldown window and surfacing + // that first model's stale error message on their unrelated requests. + passthroughModels: true, models: [{ id: "auto", name: "Auto (Best Available)" }], }; diff --git a/open-sse/config/providers/registry/poe/index.ts b/open-sse/config/providers/registry/poe/index.ts index b80d612fa5..85a84d66dc 100644 --- a/open-sse/config/providers/registry/poe/index.ts +++ b/open-sse/config/providers/registry/poe/index.ts @@ -1,4 +1,5 @@ import type { RegistryEntry } from "../../shared.ts"; +import { normalizeBaseUrl } from "../../../../utils/urlSanitize.ts"; // Poe (creator.poe.com) — OpenAI-compatible chat/responses gateway. #8082: the // built-in `poe` provider (NAMED_OPENAI_STYLE_PROVIDERS, passthroughModels:true) @@ -7,19 +8,86 @@ import type { RegistryEntry } from "../../shared.ts"; // for provider" even though credentials/inference worked fine. This base URL is // the single source of truth other Poe code paths should read from (see // src/lib/providers/validation/audioMiscProviders.ts::validatePoeProvider). +// +// #8969: canonical `poe` is the API-key provider (DefaultExecutor → api.poe.com). +// The web-cookie GraphQL transport lives only on `poe-web` / PoeWebExecutor — +// never alias `poe` to that executor (it posts to /api/gql_POST and returns 405). export const POE_DEFAULT_BASE_URL = "https://api.poe.com/v1"; +export const POE_CHAT_COMPLETIONS_URL = `${POE_DEFAULT_BASE_URL}/chat/completions`; +export const POE_RESPONSES_URL = `${POE_DEFAULT_BASE_URL}/responses`; +export const POE_MESSAGES_URL = `${POE_DEFAULT_BASE_URL}/messages`; + +/** Official Claude model ids are the only ones Poe accepts on /v1/messages. */ +export function isPoeMessagesEligibleModel(model: string | null | undefined): boolean { + if (typeof model !== "string" || !model) return false; + return /(?:^|[\/._-])claude(?:[\/._-]|$)/i.test(model); +} + +export type PoeUpstreamProtocol = "chat" | "responses" | "messages"; + +/** + * Normalize an operator-supplied or registry Poe base URL onto one of the three + * documented API surfaces. Accepts bare host, `/v1`, full chat/completions URL, + * and trailing-slash variants. + */ +export function resolvePoeUpstreamUrl(opts: { + protocol: PoeUpstreamProtocol; + configuredBaseUrl?: string | null; + responsesBaseUrl?: string | null; + messagesUrl?: string | null; + defaultChatUrl?: string | null; +}): string { + const defaultChat = opts.defaultChatUrl || POE_CHAT_COMPLETIONS_URL; + const defaultResponses = opts.responsesBaseUrl || POE_RESPONSES_URL; + const defaultMessages = opts.messagesUrl || POE_MESSAGES_URL; + + if (opts.protocol === "responses" && !opts.configuredBaseUrl) { + return defaultResponses; + } + if (opts.protocol === "messages" && !opts.configuredBaseUrl) { + return defaultMessages; + } + if (opts.protocol === "chat" && !opts.configuredBaseUrl) { + return defaultChat; + } + + const raw = normalizeBaseUrl(opts.configuredBaseUrl || defaultChat); + // Strip any known protocol suffix so we can re-append the requested one. + const root = raw + .replace(/\/chat\/completions\/?$/i, "") + .replace(/\/responses\/?$/i, "") + .replace(/\/messages\/?$/i, "") + .replace(/\/$/, ""); + + const withV1 = /\/v1$/i.test(root) ? root : `${root}/v1`; + + if (opts.protocol === "responses") return `${withV1}/responses`; + if (opts.protocol === "messages") return `${withV1}/messages`; + return `${withV1}/chat/completions`; +} + export const poeProvider: RegistryEntry = { id: "poe", alias: "poe", format: "openai", executor: "default", - baseUrl: `${POE_DEFAULT_BASE_URL}/chat/completions`, + baseUrl: POE_CHAT_COMPLETIONS_URL, + responsesBaseUrl: POE_RESPONSES_URL, + // Anthropic-compatible Messages API — official Claude models only + // (https://creator.poe.com/docs/external-applications/anthropic-compatible-api). + // Routed via each claude-* model's targetFormat: "claude" below; GPT/Gemini + // stay on Chat Completions / Responses. + messagesUrl: POE_MESSAGES_URL, authType: "apikey", authHeader: "bearer", models: [ { id: "gpt-5.2", name: "GPT-5.2" }, - { id: "claude-opus-4.8", name: "Claude Opus 4.8" }, + { + id: "claude-opus-4.8", + name: "Claude Opus 4.8", + targetFormat: "claude", + }, { id: "gemini-3.0-pro", name: "Gemini 3.0 Pro" }, ], }; diff --git a/open-sse/config/providers/registry/raycast/index.ts b/open-sse/config/providers/registry/raycast/index.ts new file mode 100644 index 0000000000..cd55a343ff --- /dev/null +++ b/open-sse/config/providers/registry/raycast/index.ts @@ -0,0 +1,33 @@ +/** + * @file index.ts + * @description Raycast Pro AI provider registry entry (reverse-engineered, unofficial API). + * + * @changes + * - [2026-07-28] [Composer] - Initial Raycast provider registry module + */ + +import type { RegistryEntry } from "../../shared.ts"; + +/** Seed catalog — full list synced from Raycast /api/v1/ai/models on connect/import. */ +export const raycastProvider: RegistryEntry = { + id: "raycast", + alias: "rc", + format: "openai", + executor: "raycast", + baseUrl: "https://backend.raycast.com/api/v1/ai", + authType: "oauth", + authHeader: "bearer", + defaultContextLength: 128000, + models: [ + { id: "openai-gpt-5-mini", name: "GPT-5 Mini" }, + { id: "openai-gpt-4o-mini", name: "GPT-4o Mini" }, + { id: "anthropic-claude-sonnet-4-6", name: "Claude Sonnet 4.6" }, + { id: "google-gemini-2.5-flash", name: "Gemini 2.5 Flash" }, + { id: "raycast-ray1", name: "Ray1" }, + { id: "raycast-ray1-mini", name: "Ray1 Mini" }, + { id: "perplexity-sonar", name: "Sonar" }, + { id: "perplexity-sonar-pro", name: "Sonar Pro" }, + { id: "mistral-open-mistral-nemo", name: "Mistral Nemo" }, + { id: "xai-grok-3-mini", name: "Grok 3 Mini" }, + ], +}; diff --git a/open-sse/config/providers/registry/regolo/index.ts b/open-sse/config/providers/registry/regolo/index.ts new file mode 100644 index 0000000000..323d4dfdfd --- /dev/null +++ b/open-sse/config/providers/registry/regolo/index.ts @@ -0,0 +1,16 @@ +import type { RegistryEntry } from "../../shared.ts"; + +export const regoloProvider: RegistryEntry = { + id: "regolo", + alias: "regolo", + format: "openai", + executor: "default", + baseUrl: "https://api.regolo.ai", + authType: "apikey", + authHeader: "bearer", + models: [ + { id: "regolo-chat", name: "Regolo Chat" }, + { id: "regolo-fast", name: "Regolo Fast" }, + ], + passthroughModels: true, +}; diff --git a/open-sse/config/providers/registry/unorouter/index.ts b/open-sse/config/providers/registry/unorouter/index.ts new file mode 100644 index 0000000000..771bde6a7c --- /dev/null +++ b/open-sse/config/providers/registry/unorouter/index.ts @@ -0,0 +1,14 @@ +import type { RegistryEntry } from "../../shared.ts"; + +export const unorouterProvider: RegistryEntry = { + id: "unorouter", + alias: "unorouter", + format: "openai", + executor: "default", + baseUrl: "https://api.unorouter.ai/v1/chat/completions", + authType: "apikey", + authHeader: "bearer", + defaultContextLength: 128000, + models: [{ id: "auto", name: "Auto (Best Available)" }], + passthroughModels: true, +}; diff --git a/open-sse/config/providers/shared.ts b/open-sse/config/providers/shared.ts index b41d24256e..44cea91c05 100644 --- a/open-sse/config/providers/shared.ts +++ b/open-sse/config/providers/shared.ts @@ -139,8 +139,19 @@ export interface RegistryEntry { clientVersion?: string; timeoutMs?: number; passthroughModels?: boolean; + /** + * Whether a non-empty synchronized live model list is exhaustive enough + * to reject static registry IDs that it omits. + * + * Defaults to true. Set this explicitly to false for providers whose + * discovery endpoint is known to return only a partial subset of the models + * that the provider can route. + */ + liveCatalogAuthoritative?: boolean; /** Default context window for all models in this provider (can be overridden per-model) */ defaultContextLength?: number; + /** Maximum OpenAI-compatible function name length accepted by this provider. */ + toolNameMaxLength?: number; /** Optional session pool config for rate limit management */ poolConfig?: Record; /** @@ -177,6 +188,12 @@ export interface RegistryEntry { * standard OpenAI array-shaped content untouched (see openai-responses.ts). */ requiresPlainStringContent?: boolean; + /** + * Anthropic-compatible providers that omit the required `signature` field + * from streamed thinking block starts. The passthrough stream adds only an + * empty placeholder; later provider `signature_delta` events remain intact. + */ + ensureThinkingSignature?: boolean; /** * Protocolos alternativos que este provedor aceita (ex.: um endpoint * Anthropic-compatible alem do OpenAI-compatible padrao). A conexao escolhe @@ -254,16 +271,14 @@ export const GPT_5_6_API_CAPABILITIES = { maxOutputTokens: 128000, } as const; -// Codex's live catalog reports a 272K input context window for GPT-5.6. -// Keep the input and output limits explicit for catalog consumers that expose them separately. export const GPT_5_6_CODEX_CAPABILITIES = { targetFormat: "openai-responses", toolCalling: true, supportsReasoning: true, supportsVision: true, supportsXHighEffort: true, - contextLength: 272000, - maxInputTokens: 272000, + contextLength: 1050000, + maxInputTokens: 922000, maxOutputTokens: 128000, } as const; diff --git a/open-sse/config/searchRegistry.ts b/open-sse/config/searchRegistry.ts index 2b366547d3..b742ad4914 100644 --- a/open-sse/config/searchRegistry.ts +++ b/open-sse/config/searchRegistry.ts @@ -207,6 +207,7 @@ export const SEARCH_PROVIDERS: Record = { maxMaxResults: 50, timeoutMs: 10_000, cacheTTLMs: 3 * 60 * 1000, + fallbackOnly: true, }, "ollama-search": { diff --git a/open-sse/config/upscaleRegistry.ts b/open-sse/config/upscaleRegistry.ts new file mode 100644 index 0000000000..fd383e5252 --- /dev/null +++ b/open-sse/config/upscaleRegistry.ts @@ -0,0 +1,228 @@ +/** + * Image Upscale Provider Registry + * + * Providers that serve `POST /v1/images/upscale` — image→image super-resolution. + * Upscaling is a distinct capability from generation: there is no text-to-image + * path, an input image is always mandatory, and the meaningful controls are the + * scale factor and (for generative upscalers) a creativity level. + * + * Only providers whose upscale API is already implemented here are listed: + * - adobe-firefly → Topaz models on firefly-3p `/v2/3p-images/upsample` + * - stability-ai → `/v2beta/stable-image/upscale/{fast,conservative,creative}` + * - topaz → Topaz Labs `/image/v1/enhance` (native API key) + * + * Credentials/proxy resolution reuses each provider's existing connection, so a + * configured Adobe Firefly / Stability AI / Topaz Labs account works with no + * extra setup. + */ + +import { parseModelFromRegistry, getAllModelsFromRegistry } from "./registryUtils.ts"; + +/** Scale factors offered by default when a model does not restrict them. */ +export const DEFAULT_UPSCALE_FACTORS: readonly number[] = Object.freeze([2, 4]); + +export interface UpscaleModelEntry { + id: string; + name: string; + /** Discrete scale factors the upstream accepts (in x). */ + factors: number[]; + /** Model exposes a creativity / re-imagine control (0-100 % on the wire-agnostic API). */ + supportsCreativity?: boolean; + /** Model accepts an optional guidance prompt. */ + supportsPrompt?: boolean; + /** Upstream rejects the request without a prompt. */ + promptRequired?: boolean; + description?: string; +} + +export interface UpscaleProviderConfig { + id: string; + alias?: string; + baseUrl: string; + authType: "apikey" | "none"; + authHeader: string; + format: "adobe-firefly-upscale" | "stability-upscale" | "topaz-upscale"; + models: UpscaleModelEntry[]; +} + +export const UPSCALE_PROVIDERS: Record = { + // Adobe Firefly (unofficial) — Topaz Labs models exposed through the Firefly 3P + // async upsample job API. Live capture: web_providers/upsample.txt. + // Discovery (web_providers/upscale.txt) lists modelId "topaz" with the image + // modelVersions default/standard/reimagine carrying inputMediaUseCase ["upscaling"]; + // starlight-*/astra-2 are video upscalers and intentionally excluded here. + "adobe-firefly": { + id: "adobe-firefly", + alias: "firefly", + baseUrl: "https://firefly-3p.ff.adobe.io/v2/3p-images/upsample", + authType: "apikey", + authHeader: "bearer", + format: "adobe-firefly-upscale", + models: [ + { + id: "topaz", + name: "Firefly Topaz Upscale", + factors: [2, 4], + description: "Topaz Labs detail-preserving upscale (standard).", + }, + { + id: "topaz-standard", + name: "Firefly Topaz Upscale (Standard)", + factors: [2, 4], + description: "Topaz Labs detail-preserving upscale — no invented detail.", + }, + { + id: "topaz-bloom", + name: "Firefly Topaz Bloom (Creative)", + factors: [2, 4], + supportsCreativity: true, + description: "Topaz Bloom generative upscale — creativity adds synthesized detail.", + }, + ], + }, + + // Stability AI stable-image upscale family. `fast` is a 4x deterministic pass; + // `conservative` and `creative` are prompt-guided (creative is an async job). + "stability-ai": { + id: "stability-ai", + baseUrl: "https://api.stability.ai", + authType: "apikey", + authHeader: "bearer", + format: "stability-upscale", + models: [ + { + id: "fast", + name: "Stability Fast Upscale (4x)", + factors: [4], + description: "Lightweight 4x upscale, no prompt.", + }, + { + id: "conservative", + name: "Stability Conservative Upscale", + factors: [4], + supportsPrompt: true, + promptRequired: true, + description: "Up to ~4 MP while preserving every detail. Prompt required upstream.", + }, + { + id: "creative", + name: "Stability Creative Upscale", + factors: [4], + supportsCreativity: true, + supportsPrompt: true, + promptRequired: true, + description: "Heavily reimagines low-quality inputs (async job). Prompt required upstream.", + }, + ], + }, + + // Topaz Labs native Image API (own api key, synchronous). + topaz: { + id: "topaz", + baseUrl: "https://api.topazlabs.com", + authType: "apikey", + authHeader: "x-api-key", + format: "topaz-upscale", + models: [ + { + id: "topaz-enhance", + name: "Topaz Labs Enhance", + factors: [2, 4], + description: "Topaz Labs Image Enhance (auto model selection).", + }, + ], + }, +}; + +export function getUpscaleProvider(providerId: string | null | undefined): UpscaleProviderConfig | null { + if (!providerId) return null; + return UPSCALE_PROVIDERS[providerId] || null; +} + +/** Parse `provider/model` (or a bare, unambiguous model id) against the upscale registry. */ +export function parseUpscaleModel(modelStr: string | null) { + return parseModelFromRegistry(modelStr, UPSCALE_PROVIDERS); +} + +/** Flat catalog for `GET /v1/images/upscale`. */ +export function getAllUpscaleModels() { + return getAllModelsFromRegistry(UPSCALE_PROVIDERS, (_providerId, config) => ({ + format: config.format, + })); +} + +/** Registry row for a `provider/model` string, or null when unknown. */ +export function getUpscaleModelEntry( + modelStr: string | null +): { provider: string; providerConfig: UpscaleProviderConfig; entry: UpscaleModelEntry } | null { + const { provider, model } = parseUpscaleModel(modelStr); + if (!provider || !model) return null; + const providerConfig = UPSCALE_PROVIDERS[provider]; + if (!providerConfig) return null; + const entry = providerConfig.models.find((m) => m.id === model); + if (!entry) return null; + return { provider, providerConfig, entry }; +} + +/** True when `provider/model` (or bare id) names a registered upscale model. */ +export function isRegisteredUpscaleModel(modelStr: string | null): boolean { + return getUpscaleModelEntry(modelStr) !== null; +} + +/** + * Normalize a requested scale factor to one the model actually supports. + * + * Accepts numbers and the loose strings clients send (`"2"`, `"2x"`, `"x4"`, `"4X"`). + * Unparseable/out-of-range values snap to the nearest allowed factor rather than + * failing the request — a 3x ask on a {2,4} model is better served at 4x than 400ed. + */ +export function normalizeUpscaleFactor( + value: unknown, + allowed: readonly number[] = DEFAULT_UPSCALE_FACTORS +): number { + const factors = allowed.length > 0 ? [...allowed] : [...DEFAULT_UPSCALE_FACTORS]; + const fallback = factors.includes(2) ? 2 : factors[0]!; + + let n: number = NaN; + if (typeof value === "number") { + n = value; + } else if (typeof value === "string") { + const match = /(\d+(?:\.\d+)?)/.exec(value.trim()); + if (match) n = Number(match[1]); + } + if (!Number.isFinite(n) || n <= 0) return fallback; + + let best = factors[0]!; + let bestDelta = Math.abs(factors[0]! - n); + for (const f of factors) { + const delta = Math.abs(f - n); + if (delta < bestDelta) { + best = f; + bestDelta = delta; + } + } + return best; +} + +/** + * Normalize a creativity input to a 0-100 percentage. + * + * The public API is percentage-based so every provider gets the same control + * regardless of its native scale (Firefly uses an integer level, Stability a + * 0.1-0.5 float). A fractional value strictly between 0 and 1 is read as a + * fraction (0.35 → 35 %); everything else is read as a percentage, so an + * integer `1` stays 1 % instead of silently becoming 100 %. + */ +export function normalizeCreativityPercent(value: unknown, fallback = 0): number { + let n: number = NaN; + if (typeof value === "number") n = value; + else if (typeof value === "string" && value.trim()) n = Number(value.trim().replace("%", "")); + if (!Number.isFinite(n)) return clampPercent(fallback); + if (n > 0 && n < 1) return clampPercent(n * 100); + return clampPercent(n); +} + +function clampPercent(n: number): number { + if (!Number.isFinite(n)) return 0; + return Math.max(0, Math.min(100, Math.round(n))); +} diff --git a/open-sse/executors/antigravity.ts b/open-sse/executors/antigravity.ts index 1188b1116d..85ca290ba7 100644 --- a/open-sse/executors/antigravity.ts +++ b/open-sse/executors/antigravity.ts @@ -13,6 +13,7 @@ import { getAntigravityOAuthUserAgent, } from "../services/antigravityHeaders.ts"; import { classify429, decide429, type Decision } from "../services/antigravity429Engine.ts"; +import { lockExactModel } from "../services/accountFallback.ts"; import { shouldRetryWithCredits, shouldUseCreditsFirst, @@ -22,6 +23,11 @@ import { import { persistCreditBalance, getAllPersistedCreditBalances } from "@/lib/db/creditBalance"; import { setConnectionRateLimitUntil } from "@/lib/db/providers"; import { getMitmAlias } from "@/lib/db/models"; +import { + MAX_ANTIGRAVITY_OUTPUT_TOKENS, + resolveAntigravityOutputCap, +} from "./antigravityOutputCap.ts"; +export { MAX_ANTIGRAVITY_OUTPUT_TOKENS } from "./antigravityOutputCap.ts"; import { ensureAntigravityProjectAssigned } from "../services/antigravityProjectBootstrap.ts"; import { persistDiscoveredAntigravityProjectId } from "../services/antigravityProjectPersist.ts"; import { @@ -278,18 +284,10 @@ async function cleanModelName(model: string, modelIdOverride?: string): Promise< return clean; } -/** - * Hard ceiling on `generationConfig.maxOutputTokens` for Antigravity Cloud Code. - * - * Ports decolua/9router#779 (lukmanfauzie): VS Code GitHub Copilot Chat in - * Agent mode regularly requests 32K–65K output tokens, which the Antigravity - * backend rejects with HTTP 400 "Invalid Argument". 16384 matches the - * upstream-accepted ceiling confirmed via successful 200 OK runs with - * claude-sonnet-4-6 and gemini-pro-agent across both Ask and Agent modes. - */ -export const MAX_ANTIGRAVITY_OUTPUT_TOKENS = 16384; - -function applyAntigravityGenerationDefaults(request: Record): void { +function applyAntigravityGenerationDefaults( + request: Record, + modelId?: string | null +): void { const generationConfig = request.generationConfig && typeof request.generationConfig === "object" ? (request.generationConfig as Record) @@ -321,9 +319,10 @@ function applyAntigravityGenerationDefaults(request: Record): v // (32K–65K) that trigger upstream 400 "Invalid Argument". Clamp silently // — the cap is provider-driven, not client-driven, and only matters when // the request would otherwise be rejected outright. + const cap = resolveAntigravityOutputCap(modelId); const finalMax = Number(generationConfig.maxOutputTokens); - if (Number.isFinite(finalMax) && finalMax > MAX_ANTIGRAVITY_OUTPUT_TOKENS) { - generationConfig.maxOutputTokens = MAX_ANTIGRAVITY_OUTPUT_TOKENS; + if (Number.isFinite(finalMax) && finalMax > cap) { + generationConfig.maxOutputTokens = cap; } request.generationConfig = generationConfig; @@ -665,7 +664,7 @@ export class AntigravityExecutor extends BaseExecutor { ) : rawTransformedRequest; - applyAntigravityGenerationDefaults(transformedRequest); + applyAntigravityGenerationDefaults(transformedRequest, upstreamModel); const { project: _project, @@ -1424,6 +1423,7 @@ export class AntigravityExecutor extends BaseExecutor { const { response, url, + model, headers, transformedBody, credentials, @@ -1443,10 +1443,9 @@ export class AntigravityExecutor extends BaseExecutor { // 1. Try to parse explicit retry time from message const parsedRetryMs = this.parseRetryFromErrorMessage(errorMessage); - // 2. Classify 429, then decide the final retry time BEFORE the credits - // retry so that full_quota_exhausted can skip the credits attempt - // entirely (avoids ~41s hold on an already-exhausted account) and - // persist the cooldown to DB for post-restart routing. + // 2. Classify 429, then decide the final retry time BEFORE the credits retry so + // full_quota_exhausted can skip the credits attempt entirely (avoids ~41s hold + // on an already-exhausted account) and locks only this exact model. const category = classify429(errorMessage); const decision: Decision = decide429(category, parsedRetryMs); const retryMs = decision.retryAfterMs; @@ -1460,10 +1459,9 @@ export class AntigravityExecutor extends BaseExecutor { !creditsRetryState.attempted && shouldRetryWithCredits(credentials?.accessToken || "", creditsMode); - // Retry mode gets one credits attempt before the account cooldown is persisted. - // All other full-quota paths fail closed immediately. + // Retry mode gets one credits attempt before the exact-model lock is persisted. if (decision.kind === "full_quota_exhausted" && retryMs && !creditsRetryEligible) { - markConnectionQuotaExhausted(accountId, retryMs); + lockExactModel(this.provider, accountId, model, "quota_exhausted", retryMs); } if (category === "quota_exhausted" && creditsAlreadyInjected) { diff --git a/open-sse/executors/antigravityOutputCap.ts b/open-sse/executors/antigravityOutputCap.ts new file mode 100644 index 0000000000..c3d173cd92 --- /dev/null +++ b/open-sse/executors/antigravityOutputCap.ts @@ -0,0 +1,52 @@ +import { getExplicitModelOutputCap } from "@/lib/modelCapabilities"; + +/** + * Fallback ceiling on `generationConfig.maxOutputTokens` for Antigravity + * Cloud Code, used when the model is unknown to the catalogue. + * + * Ports decolua/9router#779 (lukmanfauzie): VS Code GitHub Copilot Chat in + * Agent mode regularly requests 32K–65K output tokens, which the Antigravity + * backend rejects with HTTP 400 "Invalid Argument". 16384 was the ceiling + * confirmed safe at the time, via successful 200 OK runs with + * claude-sonnet-4-6 and gemini-pro-agent across both Ask and Agent modes. + * + * Both of those models are catalogue-known today, so neither one reaches this + * constant anymore: they get their own declared limit via + * `resolveAntigravityOutputCap` (65536 and 65535, respectively). The higher + * limit holds against the live upstream. A gemini-3.6-flash-high request came + * back with completion_tokens 16754 and finish_reason "stop", which exceeds + * 16384 on its own and so cannot be an artifact of thinking-token accounting. + * + * Note also that #779 was reported against Copilot Chat in Agent mode, a path + * that does not reach this executor, so 16384 arrived with that port rather + * than from a limit measured here. Beware of re-deriving it from a running + * instance: the clamp below rewrites maxOutputTokens before the request + * leaves, so a build still carrying a low constant measures its own clamp and + * reports it as an upstream ceiling. + */ +export const MAX_ANTIGRAVITY_OUTPUT_TOKENS = 16384; + +/** + * The output ceiling this specific model accepts, or the conservative + * fallback above when the id is not in the catalogue. + * + * The declared limits are not uniform: most Antigravity models publish + * 65535 or 65536, but gpt-oss-120b-medium publishes 32768. A single global + * ceiling either starves the first group or lets an oversized request + * through to the second, so the number has to come from the model. + */ +export function resolveAntigravityOutputCap(modelId: string | null | undefined): number { + const id = typeof modelId === "string" ? modelId.trim() : ""; + if (!id) return MAX_ANTIGRAVITY_OUTPUT_TOKENS; + try { + const declared = getExplicitModelOutputCap({ provider: "antigravity", model: id }); + return typeof declared === "number" && Number.isFinite(declared) && declared > 0 + ? declared + : MAX_ANTIGRAVITY_OUTPUT_TOKENS; + } catch { + // DB not available (build phase, transient error) -- fall through to the + // conservative fallback, the same guard cleanModelName uses above for + // its own MITM alias lookup. + return MAX_ANTIGRAVITY_OUTPUT_TOKENS; + } +} diff --git a/open-sse/executors/azure-openai.ts b/open-sse/executors/azure-openai.ts index 01c68cf088..9b910d5c95 100644 --- a/open-sse/executors/azure-openai.ts +++ b/open-sse/executors/azure-openai.ts @@ -3,6 +3,7 @@ import type { ProviderCredentials } from "./base.ts"; import { stripTrailingSlashes } from "../utils/urlSanitize.ts"; const DEFAULT_API_VERSION = "2024-12-01-preview"; +const GPT5_OR_REASONING_DEPLOYMENT = /(?:^|[/_-])(?:gpt-5|o(?:1|3|4))(?:[._-]|$)/i; function normalizeAzureBaseUrl(rawBaseUrl?: string | null): string { const normalized = stripTrailingSlashes((rawBaseUrl || "").trim()); @@ -27,7 +28,11 @@ export class AzureOpenAIExecutor extends DefaultExecutor { void urlIndex; const providerSpecificData = credentials?.providerSpecificData || {}; - const baseUrl = normalizeAzureBaseUrl(providerSpecificData.baseUrl || this.config.baseUrl); + const baseUrl = normalizeAzureBaseUrl( + typeof providerSpecificData.baseUrl === "string" + ? providerSpecificData.baseUrl + : this.config.baseUrl + ); const apiVersion = typeof providerSpecificData.apiVersion === "string" && providerSpecificData.apiVersion.trim() ? providerSpecificData.apiVersion.trim() @@ -45,4 +50,44 @@ export class AzureOpenAIExecutor extends DefaultExecutor { headers.Accept = stream ? "text/event-stream" : "application/json"; return headers; } + + override transformRequest( + model: string, + body: unknown, + stream: boolean, + credentials: ProviderCredentials + ): unknown { + const transformed = super.transformRequest(model, body, stream, credentials); + if (!GPT5_OR_REASONING_DEPLOYMENT.test(model)) return transformed; + if (!transformed || typeof transformed !== "object" || Array.isArray(transformed)) { + return transformed; + } + + const original = + body && typeof body === "object" && !Array.isArray(body) + ? (body as Record) + : null; + const normalized = { ...(transformed as Record) }; + + if (original?.max_completion_tokens !== undefined) { + normalized.max_completion_tokens = original.max_completion_tokens; + } else if ( + normalized.max_completion_tokens === undefined && + original?.max_tokens !== undefined + ) { + normalized.max_completion_tokens = original.max_tokens; + } + delete normalized.max_tokens; + + if (normalized.temperature !== undefined && normalized.temperature !== 1) { + delete normalized.temperature; + } + + const hasTools = Array.isArray(normalized.tools) && normalized.tools.length > 0; + if (hasTools || normalized.reasoning_effort === "none") { + delete normalized.reasoning_effort; + } + + return normalized; + } } diff --git a/open-sse/executors/base.ts b/open-sse/executors/base.ts index d6883bc451..c3391278bf 100644 --- a/open-sse/executors/base.ts +++ b/open-sse/executors/base.ts @@ -234,89 +234,45 @@ export function mergeAbortSignals(primary: AbortSignal, secondary: AbortSignal): return controller.signal; } -function hasActiveClaudeThinking(body: Record): boolean { - const thinking = body.thinking as Record | undefined; - return thinking?.type === "enabled" || thinking?.type === "adaptive"; -} +import { + hasActiveClaudeThinking, + readNestedThinkingBudget, + clampNestedThinkingBudget, +} from "../utils/thinkingBudget.ts"; /** - * Collect every `thinkingConfig` object in a transformed request body that holds - * a thinking budget, wherever the provider's envelope nests it: - * - body.generationConfig.thinkingConfig (native Gemini / openai→gemini) - * - body.request.generationConfig.thinkingConfig (Antigravity Cloud Code envelope) - * Returns only objects that actually carry a `thinkingBudget`/`thinking_budget` - * field — a request without thinking config is never mutated. + * Strip the OmniRoute provider prefix from tool model fields (e.g. + * `cc/claude-opus-4-8` → `claude-opus-4-8`). Versioned built-in tool types carry + * an 8-digit date suffix (`advisor_20260301`, `bash_20250124`); non-versioned + * server tools (Task/subagent, web_search) carry the same prefixed model. The + * real Claude CLI sends a bare model id there, never a prefixed one, so a leaked + * OmniRoute prefix makes Anthropic reject the request. + * + * Two mechanisms, applied to any tool with a string `model`: + * 1. Versioned built-in types (`type` matches `_\d{8}$`): strip the last path + * segment (`model.split("/").pop()`), matching legacy behavior for kiro/ etc. + * 2. Any tool whose model starts with a 9router Claude provider prefix + * (`cc/`, `claude/`): strip exactly that prefix (`slice`), preserving foreign + * providers such as `openrouter/anthropic/...` — mirrors upstream + * normalizeClaudeServerToolModels (9router#2649). + * Mutates in place. */ -function collectThinkingConfigs(body: unknown): Array> { - if (!body || typeof body !== "object") return []; - const root = body as Record; - const configs: Array> = []; - const envelopes: unknown[] = [ - root.generationConfig, - (root.request as Record | undefined)?.generationConfig, - ]; - for (const env of envelopes) { - if (!env || typeof env !== "object") continue; - const tc = (env as Record).thinkingConfig; - if (tc && typeof tc === "object") { - const tcr = tc as Record; - if ("thinkingBudget" in tcr || "thinking_budget" in tcr) configs.push(tcr); - } - } - return configs; -} +const CLAUDE_TOOL_MODEL_PREFIXES = ["cc/", "claude/"] as const; -/** - * Read the first thinking budget found in the body (any supported nest / naming). - * Returns null when the body carries no readable numeric budget. - */ -function readNestedThinkingBudget(body: unknown): number | null { - for (const tc of collectThinkingConfigs(body)) { - const raw = tc.thinkingBudget ?? tc.thinking_budget; - const n = Number(raw); - if (Number.isFinite(n)) return n; - } - return null; -} - -/** - * Clamp every thinking budget in the body down to `max` (only lowers; never - * raises a budget already below max). Mutates in place. Returns true when at - * least one budget was actually lowered (i.e. a retry would send a different - * body) — false means the 400 was not caused by an over-max budget we hold, so - * retrying would resend an identical body and loop. - */ -function clampNestedThinkingBudget(body: unknown, max: number): boolean { - let changed = false; - for (const tc of collectThinkingConfigs(body)) { - for (const key of ["thinkingBudget", "thinking_budget"] as const) { - const n = Number(tc[key]); - if (Number.isFinite(n) && n > max) { - tc[key] = max; - changed = true; - } - } - } - return changed; -} - -/** - * Strip the OmniRoute provider prefix from versioned built-in tool model - * fields (e.g. `cc/claude-opus-4-8` → `claude-opus-4-8`). Versioned built-in - * tool types carry an 8-digit date suffix (`advisor_20260301`, `bash_20250124`); - * the real Claude CLI sends a bare model id there, never a prefixed one, so a - * leaked OmniRoute prefix makes Anthropic reject the request. Mutates in place. - */ export function stripVersionedToolModelPrefix(tools: unknown): void { if (!Array.isArray(tools)) return; for (const t of tools as Array>) { + if (typeof t.model !== "string") continue; + const model = t.model; if ( typeof t.type === "string" && /^[a-z][a-z0-9_]*_\d{8}$/.test(t.type) && - typeof t.model === "string" && - t.model.includes("/") + model.includes("/") ) { - t.model = t.model.split("/").pop(); + t.model = model.split("/").pop(); + } else { + const prefix = CLAUDE_TOOL_MODEL_PREFIXES.find((candidate) => model.startsWith(candidate)); + if (prefix) t.model = model.slice(prefix.length); } } } @@ -1559,7 +1515,8 @@ export class BaseExecutor { if (/content[_-]blocked/i.test(wafErrText)) { retryAttemptsByUrl[urlIndex] = (retryAttemptsByUrl[urlIndex] ?? 0) + 1; const wafAttempt = retryAttemptsByUrl[urlIndex]; - const wafBackoff = BaseExecutor.WAF_RETRY_CONFIG.delayMs * + const wafBackoff = + BaseExecutor.WAF_RETRY_CONFIG.delayMs * Math.pow(BaseExecutor.WAF_RETRY_CONFIG.backoffMultiplier, wafAttempt - 1); log?.debug?.( "WAF_RETRY", diff --git a/open-sse/executors/base/reasoningEffort.ts b/open-sse/executors/base/reasoningEffort.ts index 6c87a25ce7..6e1528caff 100644 --- a/open-sse/executors/base/reasoningEffort.ts +++ b/open-sse/executors/base/reasoningEffort.ts @@ -151,7 +151,8 @@ export function supportsMaxEffortForProvider(provider: string, model: string): b // Ollama Cloud also accepts literal max (for example GLM 5.2 supports // low|medium|high|max|none) and rejects xhigh. const isOpencodeGoDeepSeek = - provider === "opencode-go" && model.toLowerCase().includes("deepseek"); + (provider === "opencode-go" || provider === "opencode-zen") && + model.toLowerCase().includes("deepseek"); const isOllamaCloud = provider === "ollama-cloud"; const isMoonshotK3 = (provider === "moonshot" || provider === "kimi") && /^kimi-k3(?:$|-)/i.test(model); @@ -252,6 +253,16 @@ export function sanitizeReasoningEffortForProvider( const effortStr = typeof c.effort === "string" ? c.effort.toLowerCase() : ""; const modelStr = model || ""; + // Oh My Pi exposes `minimal`, while Codex's Responses API starts at `low`. + // Normalize every carrier before the Codex executor sends the upstream request. + if (provider === "codex" && effortStr === "minimal") { + log?.info?.( + "REASONING_SANITIZE", + `${provider}/${modelStr}: normalized reasoning_effort minimal → low` + ); + return writeEffortValue(b, "low", c); + } + const githubOptIn = provider === "github" && GITHUB_REASONING_EFFORT_OPT_IN_PATTERN.test(modelStr); const rejecting = diff --git a/open-sse/executors/chatgpt-web.ts b/open-sse/executors/chatgpt-web.ts index eee1dace6e..c96db39586 100644 --- a/open-sse/executors/chatgpt-web.ts +++ b/open-sse/executors/chatgpt-web.ts @@ -44,7 +44,6 @@ const SENTINEL_PREPARE_URL = `${CHATGPT_BASE}/backend-api/sentinel/chat-requirem const SENTINEL_CR_URL = `${CHATGPT_BASE}/backend-api/sentinel/chat-requirements`; const CONV_URL = `${CHATGPT_BASE}/backend-api/f/conversation`; const USER_LAST_USED_MODEL_CONFIG_URL = `${CHATGPT_BASE}/backend-api/settings/user_last_used_model_config`; - const DEFAULT_PRO_POLL_TIMEOUT_MS = 20 * 60_000; const DEFAULT_PRO_POLL_INTERVAL_MS = 4_000; @@ -2263,7 +2262,7 @@ interface ResolverContext { deviceId: string; cookie: string; signal?: AbortSignal | null; - log?: { debug?: (tag: string, msg: string) => void; warn?: (tag: string, msg: string) => void }; + log?: Partial void>>; /** * Absolute base URL that downstream clients should use to fetch cached * images served by /v1/chatgpt-web/image/. Derived from the inbound @@ -2697,9 +2696,10 @@ async function pollForAsyncImage( const message = node?.message; const parts = message?.content?.parts; if (!Array.isArray(parts)) continue; - const pointers = extractImagePointers(parts).map( - (pointer) => ({ pointer, messageId: message?.id }) - ); + const pointers = extractImagePointers(parts).map((pointer) => ({ + pointer, + messageId: message?.id, + })); if (pointers.length === 0) continue; const at = message?.create_time ?? 0; if (!newest || at >= newest.at) newest = { pointers, at }; @@ -2816,11 +2816,14 @@ export class ChatGptWebExecutor extends BaseExecutor { }; } - // Tool-call emulation (#5240): inject a `` contract when `tools` are - // present; parsed back on the response side. Mirrors qwen-web/perplexity-web. + // Tool-call emulation (#5240, #7679): inject a `` contract when tools + // are present; parsed back on the response side. Hardened for thinking models. + const resolvedModel = resolveChatGptModel(model, body, credentials.providerSpecificData); + const modelSlug = resolvedModel.slug; const { hasTools, requestedTools, effectiveMessages } = prepareToolMessages( (body || {}) as Record, - messages as Array<{ role: string; content: unknown }> + messages as Array<{ role: string; content: unknown }>, + { hardened: isThinkingCapableModel(model, modelSlug) } ); if (!credentials.apiKey) { @@ -2918,12 +2921,9 @@ export class ChatGptWebExecutor extends BaseExecutor { log ); - // 2a''. Resolve model + effort and apply thinking-effort preference for - // thinking-capable models. Dedicated thinking models mirror the browser's - // user-config PATCH; GPT-5.5 Pro sends the effort with the conversation - // body because the Pro standard/extended budget is part of that turn. - const resolvedModel = resolveChatGptModel(model, body, credentials.providerSpecificData); - const modelSlug = resolvedModel.slug; + // 2a''. Apply thinking-effort preference for thinking models. + // Dedicated thinking models mirror the browser's user-config PATCH; + // GPT-5.5 Pro effort is sent with the conversation body. const requestedEffort = resolvedModel.effort; if (requestedEffort && isThinkingCapableModel(model, modelSlug)) { await setUserThinkingEffort( diff --git a/open-sse/executors/claude-web/stream.ts b/open-sse/executors/claude-web/stream.ts index 82281bb02b..264f8218e8 100644 --- a/open-sse/executors/claude-web/stream.ts +++ b/open-sse/executors/claude-web/stream.ts @@ -148,7 +148,8 @@ async function* decodeSseData( } function safeMetadataValue(value: unknown): string | number | boolean | null | undefined { - if (value === null || typeof value === "boolean") return value; + if (value === null) return null; + if (typeof value === "boolean") return value; if (typeof value === "number" && Number.isFinite(value)) return value; if (typeof value === "string" && value.length <= 128 && /^[A-Za-z0-9._:+/@-]+$/.test(value)) { return value; @@ -715,7 +716,7 @@ async function pullStreamingChunk( while (!state.terminal) { const next = await state.iterator.next(); if (state.control.cancelled) return; - if (next.done) { + if (next.done === true) { throw new ClaudeWebProtocolError("Claude Web stream ended without a terminal event"); } await queueSemanticEvent(state, next.value, options); diff --git a/open-sse/executors/claudeIdentity.ts b/open-sse/executors/claudeIdentity.ts index c9544c6743..78ee1c8b0f 100644 --- a/open-sse/executors/claudeIdentity.ts +++ b/open-sse/executors/claudeIdentity.ts @@ -323,6 +323,23 @@ function isContext1mModel(model: unknown): boolean { ); } +export function shouldUseMidConversationSystem( + body: Record | null | undefined, + model?: string | null +): boolean { + const payload = body || {}; + const hasSystem = + !!payload.system && + (typeof payload.system === "string" || + (Array.isArray(payload.system) && payload.system.length > 0)); + const hasTools = Array.isArray(payload.tools) && payload.tools.length > 0; + const effectiveModel = model ?? (typeof payload.model === "string" ? payload.model : ""); + + return ( + hasSystem && hasTools && matchesModelPrefix(effectiveModel, CONTEXT_1M_BETA_MODEL_PREFIXES) + ); +} + /** * Pick the anthropic-beta flag set that matches the request shape. Real CLI * uses three patterns: minimal probe, structured-output, and full agent. @@ -357,10 +374,11 @@ export function selectBetaFlags( // betas it actually asked for. Opaque clients (clientBetaSet === null) keep them all. const allowThinking = clientBetaSet === null || clientBetaSet.has("interleaved-thinking-2025-05-14"); - const allowHeavy = - clientBetaSet === null || - clientBetaSet.has("advanced-tool-use-2025-11-20") || - clientBetaSet.has("effort-2025-11-24"); + // effort-2025-11-24 must NOT imply advanced-tool-use-2025-11-20 (#9505): Claude + // Code sends effort on every request and never sends ATU, so treating effort as + // a proxy for ATU force-injects the heavy-agent pair the client never negotiated — + // the same class of mutation #3415 closed. Opaque clients keep the full set. + const allowHeavy = clientBetaSet === null || clientBetaSet.has("advanced-tool-use-2025-11-20"); const hasSystem = !!b.system && (typeof b.system === "string" || (Array.isArray(b.system) && b.system.length > 0)); @@ -373,8 +391,7 @@ export function selectBetaFlags( const isFullAgent = hasTools && hasSystem; const effectiveModel = model ?? (typeof b.model === "string" ? b.model : ""); const isHeavyAgent = isFullAgent && isHeavyAgentModel(effectiveModel); - const isOpusAgent = - isFullAgent && matchesModelPrefix(effectiveModel, CONTEXT_1M_BETA_MODEL_PREFIXES); + const isOpusAgent = shouldUseMidConversationSystem(b, effectiveModel); const isContext1m = isFullAgent && isContext1mModel(effectiveModel); const flags: string[] = []; diff --git a/open-sse/executors/codex.ts b/open-sse/executors/codex.ts index 463a815ca0..f595b7f1b8 100644 --- a/open-sse/executors/codex.ts +++ b/open-sse/executors/codex.ts @@ -48,6 +48,12 @@ export { getCodexDualWindowCooldownMs, } from "./codex/quota.ts"; import { isCodexFreePlan, normalizeCodexTools } from "./codex/tools.ts"; +import { + CODEX_EFFORT_ORDER as EFFORT_ORDER, + GPT_5_6_ULTRA_ALIAS_MODELS, + splitCodexReasoningSuffix, + type CodexEffortLevel as EffortLevel, +} from "./codex/reasoningSuffix.ts"; // Re-exported for external importers (tests + provider services). export { isCodexFreePlan, normalizeCodexTools } from "./codex/tools.ts"; @@ -117,12 +123,6 @@ function codexWebSocketUnavailableResponse(): Response { // Ref: sub2api PR #1129 (feat(openai): split codex spark rate limiting from codex) export { getCodexModelScope, getCodexRateLimitKey, type CodexQuotaScope }; -// Ordered list of effort levels from lowest to highest -const EFFORT_ORDER = ["none", "low", "medium", "high", "xhigh", "max", "ultra"] as const; -type EffortLevel = (typeof EFFORT_ORDER)[number]; -const STANDARD_EFFORT_SUFFIXES = ["none", "low", "medium", "high", "xhigh"] as const; -const GPT_5_6_MAX_ALIAS_MODELS = new Set(["gpt-5.6-sol", "gpt-5.6-terra", "gpt-5.6-luna"]); -const GPT_5_6_ULTRA_ALIAS_MODELS = new Set(["gpt-5.6-sol", "gpt-5.6-terra"]); const CODEX_FAST_WIRE_VALUE = "priority"; const CODEX_RESPONSES_WS_URL = "wss://chatgpt.com/backend-api/codex/responses"; const CODEX_RESPONSES_LITE_HEADER = "x-openai-internal-codex-responses-lite"; @@ -185,32 +185,6 @@ function enforceCodexResponsesLiteParallelToolCalls( return { ...body, parallel_tool_calls: false }; } -function splitCodexReasoningSuffix(model: unknown): { - baseModel: string; - effort: EffortLevel | null; -} { - const modelId = typeof model === "string" ? model : ""; - const gpt56AliasMatch = /^(gpt-5\.6-(?:sol|terra|luna))-(max|ultra)$/.exec(modelId); - if (gpt56AliasMatch) { - const [, baseModel, alias] = gpt56AliasMatch; - const supportedModels = - alias === "ultra" ? GPT_5_6_ULTRA_ALIAS_MODELS : GPT_5_6_MAX_ALIAS_MODELS; - if (supportedModels.has(baseModel)) { - return { baseModel, effort: alias as EffortLevel }; - } - } - - for (const level of STANDARD_EFFORT_SUFFIXES) { - if (modelId.endsWith(`-${level}`)) { - return { - baseModel: modelId.slice(0, -`-${level}`.length), - effort: level, - }; - } - } - return { baseModel: modelId, effort: null }; -} - export function getCodexUpstreamModel(model: unknown): string { return splitCodexReasoningSuffix(model).baseModel; } @@ -333,6 +307,59 @@ export function stripStoredItemReferences(body: Record): void { } } +function stripOrphanedCodexFunctionCallOutputs(body: Record): void { + if (!Array.isArray(body.input)) return; + const input = body.input; + // A previous_response_id delegates history resolution to the upstream + // Responses service, so a matching function_call may legitimately live in + // that remote response rather than in the local input array. + if (typeof body.previous_response_id === "string" && body.previous_response_id.trim()) return; + + const callIds = new Set(); + let outputCount = 0; + + for (const item of input) { + if (!item || typeof item !== "object" || Array.isArray(item)) continue; + const record = item as Record; + + if (record.type === "function_call" && typeof record.call_id === "string") { + callIds.add(record.call_id); + } + + if (Array.isArray(record.tool_calls)) { + for (const toolCall of record.tool_calls) { + if (!toolCall || typeof toolCall !== "object" || Array.isArray(toolCall)) continue; + const toolCallId = (toolCall as Record).id; + if (typeof toolCallId === "string") { + callIds.add(toolCallId); + } + } + } + + if (record.type === "function_call_output") { + outputCount++; + } + } + + if (outputCount === 0) return; + const filteredInput = input.filter((item) => { + if (!item || typeof item !== "object" || Array.isArray(item)) return true; + const record = item as Record; + if (record.type === "function_call_output" && typeof record.call_id === "string") { + return callIds.has(record.call_id); + } + return true; + }); + + const removedCount = input.length - filteredInput.length; + body.input = filteredInput; + if (removedCount > 0) { + console.debug( + `[Codex] stripOrphanedCodexFunctionCallOutputs: removed ${removedCount} orphaned function_call_output item(s)` + ); + } +} + function repairMissingCodexFunctionCallOutputs(body: Record): void { if (!Array.isArray(body.input)) return; @@ -1319,6 +1346,7 @@ export class CodexExecutor extends BaseExecutor { dropInternalAssistantMessages: !nativeCodexPassthrough, }); } + stripOrphanedCodexFunctionCallOutputs(body); repairMissingCodexFunctionCallOutputs(body); // ── Cache-aware system prompt handling (both paths) ── diff --git a/open-sse/executors/codex/reasoningSuffix.ts b/open-sse/executors/codex/reasoningSuffix.ts new file mode 100644 index 0000000000..37cf237f6d --- /dev/null +++ b/open-sse/executors/codex/reasoningSuffix.ts @@ -0,0 +1,41 @@ +export const CODEX_EFFORT_ORDER = [ + "none", + "low", + "medium", + "high", + "xhigh", + "max", + "ultra", +] as const; +export type CodexEffortLevel = (typeof CODEX_EFFORT_ORDER)[number]; +export const GPT_5_6_MAX_ALIAS_MODELS = new Set(["gpt-5.6-sol", "gpt-5.6-terra", "gpt-5.6-luna"]); +export const GPT_5_6_ULTRA_ALIAS_MODELS = new Set(["gpt-5.6-sol", "gpt-5.6-terra"]); + +export function splitCodexReasoningSuffix(model: unknown): { + baseModel: string; + effort: CodexEffortLevel | null; +} { + const modelId = typeof model === "string" ? model : ""; + const gpt56Match = /^(gpt-5\.6-(?:sol|terra|luna))(?:-(max|ultra)|\((max|ultra)\))$/.exec( + modelId + ); + if (gpt56Match) { + const [, baseModel, hyphenEffort, parenthesizedEffort] = gpt56Match; + const effort = hyphenEffort ?? parenthesizedEffort; + const supportedModels = parenthesizedEffort + ? GPT_5_6_MAX_ALIAS_MODELS + : effort === "ultra" + ? GPT_5_6_ULTRA_ALIAS_MODELS + : GPT_5_6_MAX_ALIAS_MODELS; + if (supportedModels.has(baseModel)) { + return { baseModel, effort: effort as CodexEffortLevel }; + } + } + + for (const effort of ["none", "low", "medium", "high", "xhigh"] as const) { + if (modelId.endsWith(`-${effort}`)) { + return { baseModel: modelId.slice(0, -`-${effort}`.length), effort }; + } + } + return { baseModel: modelId, effort: null }; +} diff --git a/open-sse/executors/commandCode.ts b/open-sse/executors/commandCode.ts index bebe6ebd21..cc2642de5c 100644 --- a/open-sse/executors/commandCode.ts +++ b/open-sse/executors/commandCode.ts @@ -73,7 +73,12 @@ const CC_VISION_MODEL_PATTERNS: readonly RegExp[] = [ // Anthropic /claude-fable/i, // claude-fable-5 (not covered by claude-opus/sonnet/haiku-4) // OpenAI - /gpt-5/i, // gpt-5.6, gpt-5.5, gpt-5.3-codex + /gpt-5/i, // gpt-5.6, gpt-5.5, gpt-5.4, gpt-5.4-mini, gpt-5.3-codex + // NOTE: gpt-5.4-mini and gpt-5.3-codex deliberately stay inside the `/gpt-5/` + // family — both accept image input on the OpenAI API, and there is no + // verified Command Code backend data marking them text-only. Excluding them + // without evidence would re-create #4071 (image stripped from a model that + // can see it). Revisit only with per-model CC registry capability data. // Sakana /fugu/i, // sakana/fugu-ultra ]; @@ -105,9 +110,36 @@ function isCommandCodeVisionModel(model?: string | null): boolean { * * OpenAI-compatible: { type: "image_url", image_url: { url: "..." } } * Command Code CLI: { type: "image", image: "..." } + * AI SDK image: { type: "image", image: "data:...;base64,..." } (#1330) + * Anthropic image: { type: "image", source: { type: "base64", media_type, data } } + * or { type: "image", source: { type: "url", url } } + * + * The Anthropic-shaped block is common for Claude-Code-compatible clients + * (e.g. Zoo Code) that send Messages-style content arrays to the + * OpenAI `/v1/chat/completions` surface. Without this branch the image was + * silently dropped before reaching the upstream vision model. */ function extractImageUrl(part: JsonRecord): string | undefined { - if (part.type === "image") return stringValue(part.image); + if (part.type === "image") { + const direct = stringValue(part.image); + if (direct) return direct; + + // Anthropic source block: { source: { type: "base64", media_type, data } } or + // { source: { type: "url", url } }. + const source = isRecord(part.source) ? part.source : null; + if (source) { + if (source.type === "base64") { + const mediaType = stringValue(source.media_type) || "image/png"; + const data = stringValue(source.data); + if (data) return `data:${mediaType};base64,${data}`; + } + if (source.type === "url") { + const url = stringValue(source.url); + if (url) return url; + } + } + return undefined; + } if (part.type === "image_url") { if (isRecord(part.image_url)) return stringValue(part.image_url.url); return stringValue(part.image_url); @@ -429,14 +461,31 @@ function applyEventToAggregateOrThrow(event: JsonRecord, state: AggregateState): function usageFromCommandCode(usage: JsonRecord | null) { if (!usage) return undefined; const details = isRecord(usage.inputTokenDetails) ? usage.inputTokenDetails : {}; - const prompt = - (numberValue(usage.inputTokens) || 0) + (numberValue(details.cacheReadTokens) || 0); + const cacheRead = numberValue(details.cacheReadTokens) || 0; + const noCache = numberValue(details.noCacheTokens) || 0; + // Command Code's totalUsage.inputTokens is the FULL prompt total and already + // includes the cached portion (noCacheTokens + cacheReadTokens = inputTokens), + // so we must NOT add cacheRead back — that would double-count. There is no + // cache-write field in the upstream payload, so cache creation stays unset. + const inputTokens = numberValue(usage.inputTokens) || 0; + const prompt = inputTokens; const completion = numberValue(usage.outputTokens) || 0; - return { + const result: JsonRecord = { prompt_tokens: prompt, completion_tokens: completion, total_tokens: prompt + completion, }; + // Surface the cache breakdown as informational fields so logUsage prints + // `| cache_read=X | no_cache=Y` and appendRequestLog persists them. These are + // NOT added to prompt_tokens (already included) — metering stays accurate. + if (cacheRead > 0) result.cache_read_input_tokens = cacheRead; + if (noCache > 0) result.no_cache_tokens = noCache; + // Keep reasoning_token_details (reasoningTokens) when present so stream.ts's + // extractUsage can surface it as reasoning_tokens. + const reasoningDetails = isRecord(usage.reasoningTokenDetails) ? usage.reasoningTokenDetails : {}; + const reasoning = numberValue(reasoningDetails.reasoningTokens); + if (reasoning !== undefined && reasoning > 0) result.reasoning_tokens = reasoning; + return result; } function createStreamResponse( @@ -517,6 +566,22 @@ function createStreamResponse( state.finishReason = mapFinishReason(event.finishReason); state.usage = isRecord(event.totalUsage) ? event.totalUsage : null; controller.enqueue(sse(chatCompletionChunk(id, model, {}, state.finishReason))); + // Emit a standards-compliant usage-only chunk (choices: []) before + // [DONE] when upstream reported usage. stream.ts's extractUsage + // recognizes this shape (see stream.ts:1661) and logs the ACTUAL + // token counts (in/out/cache_read/no_cache) instead of estimates. + const usagePayload = usageFromCommandCode(state.usage); + if (usagePayload) { + controller.enqueue( + sse({ + id, + object: "chat.completion.chunk", + model, + usage: usagePayload, + choices: [], + }) + ); + } controller.enqueue(encoder.encode("data: [DONE]\n\n")); closed = true; controller.close(); diff --git a/open-sse/executors/cursor.ts b/open-sse/executors/cursor.ts index 3941cdb3e7..61250dfe4c 100644 --- a/open-sse/executors/cursor.ts +++ b/open-sse/executors/cursor.ts @@ -1219,6 +1219,9 @@ export class CursorExecutor extends BaseExecutor { if (isToolFollowUp) { session = cursorSessionManager.acquire(conversationId); + // #9029: content-based session match when client lacks conversation_id. + if (!session && !body.conversation_id) session = cursorSessionManager.findByToolCallIds( + messages.filter(m => m.role === "tool" && m.tool_call_id).map(m => m.tool_call_id!)); } if (session) { diff --git a/open-sse/executors/dario.ts b/open-sse/executors/dario.ts new file mode 100644 index 0000000000..be834102b5 --- /dev/null +++ b/open-sse/executors/dario.ts @@ -0,0 +1,290 @@ +/** + * Dario Executor — routes requests to a local Dario (@askalf/dario) instance. + * + * Dario is a local OpenAI- and Anthropic-compatible proxy that authenticates + * with the operator's own Claude Pro/Max subscription (Claude Code OAuth) and + * rebuilds every request into Claude Code's exact wire shape. It plays the same + * role for the `claude` provider that CLIProxyAPI's "claude-native" deep mode + * does — an alternative/failover backend for Claude-Code-shaped proxying. + * + * Unlike CliproxyapiExecutor this is a deliberately MINIMAL passthrough: + * - shape detection (Anthropic Messages vs OpenAI Chat Completions) + endpoint + * routing only — the same dual-shape convention CLIProxyAPI uses; + * - NO MCP tool-name rewriting, NO Anthropic-extras stripping. + * Dario is a different, actively-maintained project explicitly built to track + * Anthropic's wire-shape drift itself (live capture off an installed `claude` + * binary), so the extras-billing-gate workarounds CliproxyapiExecutor carries + * are Dario's own responsibility, not ours. Add such request-mangling here only + * if live testing proves Dario needs it too — start clean. + * + * Activation (parallel to, and independent of, CLIProxyAPI): + * 1. Per-connection darioMode === "claude-native" in providerSpecificData (UI) + * 2. Per-provider upstream_proxy_config (mode="dario", or mode="fallback" with + * fallbackBackend="dario"). See handlers/chatCore/executorProxy.ts. + */ + +import { + BaseExecutor, + mergeUpstreamExtraHeaders, + mergeAbortSignals, + type ProviderCredentials, + type ExecutorLog, +} from "./base.ts"; +import { HTTP_STATUS, FETCH_TIMEOUT_MS } from "../config/constants.ts"; +import { getProviderPluginManifestHeader } from "../config/providerPluginManifestUrl.ts"; + +const DEFAULT_PORT = 3456; +const DEFAULT_HOST = "127.0.0.1"; +const HEALTH_CHECK_TIMEOUT_MS = 5000; + +// Cached URL from settings (loaded once, invalidated via clearDarioUrlCache). +let _cachedSettingsUrl: { url: string; ts: number } | null = null; +const URL_CACHE_TTL_MS = 60_000; + +export function clearDarioUrlCache() { + _cachedSettingsUrl = null; +} + +// Pre-load settings URL at module init so the sync path has a cache hit. +// Runs once when the executor module is first imported (mirrors cliproxyapi.ts). +(async () => { + try { + const { getSettings } = await import("@/lib/db/settings"); + const settings = await getSettings(); + if (typeof settings.dario_url === "string" && settings.dario_url.trim()) { + _cachedSettingsUrl = { url: settings.dario_url.trim(), ts: Date.now() }; + } + } catch { + /* env vars will be used as fallback */ + } +})(); + +/** + * Resolve Dario base URL. Priority: + * 1. Settings table `dario_url` (set via UI) + * 2. Environment variables DARIO_HOST / DARIO_PORT + * 3. Defaults (127.0.0.1:3456) + */ +async function resolveDarioBaseUrl(): Promise { + if (_cachedSettingsUrl && Date.now() - _cachedSettingsUrl.ts < URL_CACHE_TTL_MS) { + return _cachedSettingsUrl.url; + } + + try { + const { getSettings } = await import("@/lib/db/settings"); + const settings = await getSettings(); + if (typeof settings.dario_url === "string" && settings.dario_url.trim()) { + const url = settings.dario_url.trim(); + _cachedSettingsUrl = { url, ts: Date.now() }; + return url; + } + } catch { + /* fall through to env vars */ + } + + const host = process.env.DARIO_HOST || DEFAULT_HOST; + const port = parseInt(process.env.DARIO_PORT || String(DEFAULT_PORT), 10); + const url = `http://${host}:${port}`; + _cachedSettingsUrl = { url, ts: Date.now() }; + return url; +} + +// Sync wrapper for backward compatibility (constructor default, health checks, tests). +function resolveDarioBaseUrlSync(): string { + if (_cachedSettingsUrl && Date.now() - _cachedSettingsUrl.ts < URL_CACHE_TTL_MS) { + return _cachedSettingsUrl.url; + } + const host = process.env.DARIO_HOST || DEFAULT_HOST; + const port = parseInt(process.env.DARIO_PORT || String(DEFAULT_PORT), 10); + return `http://${host}:${port}`; +} + +export { resolveDarioBaseUrl }; + +/** + * Check if a connection has Dario deep mode enabled via UI toggle. + * Mirrors isCliproxyapiDeepModeEnabled but keys off a SEPARATE field + * (`darioMode`) so a connection can opt into Dario or CLIProxyAPI independently. + * Used by chatCore's resolveExecutorWithProxy to decide routing. + */ +export function isDarioDeepModeEnabled( + providerSpecificData?: Record | null +): boolean { + return providerSpecificData?.darioMode === "claude-native"; +} + +export class DarioExecutor extends BaseExecutor { + private readonly upstreamBaseUrl: string; + + constructor(baseUrl?: string) { + const effectiveBase = baseUrl ?? resolveDarioBaseUrlSync(); + super("dario", { + id: "dario", + baseUrl: effectiveBase + "/v1/chat/completions", + headers: { "Content-Type": "application/json" }, + }); + this.upstreamBaseUrl = effectiveBase; + } + + buildUrl( + _model: string, + _stream: boolean, + _urlIndex = 0, + _credentials: ProviderCredentials | null = null + ): string { + // Default endpoint when called without body context (kept for back-compat). + // execute() picks the right endpoint from the body shape; see selectEndpoint(). + return `${this.upstreamBaseUrl}/v1/chat/completions`; + } + + /** + * Returns true when the body matches the Anthropic Messages wire shape. + * Same detection heuristics as CliproxyapiExecutor.isAnthropicShape: an + * Anthropic-source client (`/v1/messages`, anthropic-version header, claude/* + * model) is not openai-translated by chatCore, so the executor sees the + * original Anthropic body. Dario exposes both `/v1/messages` (Anthropic SSE) + * and `/v1/chat/completions` (OpenAI SSE) on the same port with the shape + * auto-detected — route to the matching one so Anthropic-SDK clients get + * proper `event: message_start` / `content_block_delta` frames. + */ + private isAnthropicShape(body: unknown): boolean { + if (!body || typeof body !== "object") return false; + const b = body as Record; + // Top-level `system` is unique to the Anthropic Messages API. + if (b.system !== undefined) return true; + // Top-level `thinking` is Anthropic-only (OpenAI uses reasoning*). + if (b.thinking !== undefined) return true; + // metadata.user_id is the CC wire-image identifier; OpenAI bodies lack it. + if ( + b.metadata && + typeof b.metadata === "object" && + (b.metadata as Record).user_id !== undefined + ) + return true; + // messages[0].content as an array of Anthropic content blocks. + const msgs = b.messages; + if (Array.isArray(msgs) && msgs.length > 0) { + const first = msgs[0] as Record; + if (Array.isArray(first?.content)) return true; + } + return false; + } + + private selectEndpoint(body: unknown): string { + return this.isAnthropicShape(body) ? "/v1/messages" : "/v1/chat/completions"; + } + + buildHeaders(credentials: ProviderCredentials | null, stream = true): Record { + // On loopback-only LLM routes Dario does not require a real bearer token + // (its proxy-key auth is mandatory only when binding non-loopback). We still + // forward whatever key is on the credentials if present — harmless — and + // default to the documented "dario" placeholder so an Authorization header + // is always present. + const key = credentials?.apiKey || credentials?.accessToken || "dario"; + + const headers: Record = { + "Content-Type": "application/json", + ...getProviderPluginManifestHeader(), + }; + + headers["Authorization"] = `Bearer ${key}`; + if (stream) { + headers["Accept"] = "text/event-stream"; + } + + return headers; + } + + transformRequest( + model: string, + body: unknown, + _stream: boolean, + _credentials: ProviderCredentials | null + ): unknown { + // Minimal passthrough: only ensure the model field matches the routed model. + // Dario handles Claude-Code wire-shape reconstruction itself. + if (!body || typeof body !== "object") return body; + const transformed = { ...(body as Record) }; + if (transformed.model !== model) { + transformed.model = model; + } + return transformed; + } + + async execute(input: { + model: string; + body: unknown; + stream: boolean; + credentials: ProviderCredentials; + signal?: AbortSignal | null; + log?: ExecutorLog | null; + upstreamExtraHeaders?: Record | null; + }) { + // Resolve URL dynamically so settings table dario_url is respected. + // Uses 60s cache to avoid DB reads on every request. + const baseUrl = await resolveDarioBaseUrl(); + const endpoint = this.selectEndpoint(input.body); + const url = `${baseUrl}${endpoint}`; + const shape = endpoint === "/v1/messages" ? "anthropic" : "openai"; + const headers = this.buildHeaders(input.credentials, input.stream); + const transformedBody = this.transformRequest( + input.model, + input.body, + input.stream, + input.credentials + ); + mergeUpstreamExtraHeaders(headers, input.upstreamExtraHeaders); + + const timeoutSignal = AbortSignal.timeout(FETCH_TIMEOUT_MS); + const combinedSignal = input.signal + ? mergeAbortSignals(input.signal, timeoutSignal) + : timeoutSignal; + + input.log?.info?.("DARIO", `Dario → ${url} (model: ${input.model}, shape: ${shape})`); + + const response = await fetch(url, { + method: "POST", + headers, + body: JSON.stringify(transformedBody), + signal: combinedSignal, + }); + + if (response.status === HTTP_STATUS.RATE_LIMITED) { + input.log?.warn?.("DARIO", `Dario rate limited: ${response.status}`); + } + + return { response, url, headers, transformedBody }; + } + + /** + * Health check — verifies Dario is reachable. + * + * Dario's `/health` returns 200 {status:"ok"} once ≥1 healthy account exists + * and 503 {status:"degraded"} while zero accounts are configured (or all are + * in auth-cooldown). We treat this as a plain `res.ok` check: 503-while-empty + * is semantically correct ("reachable but not yet useful"), so the dashboard + * shows running+degraded until the operator completes the Claude OAuth login. + */ + async healthCheck(): Promise<{ ok: boolean; latencyMs: number; error?: string }> { + const start = Date.now(); + try { + const baseUrl = await resolveDarioBaseUrl(); + const res = await fetch(`${baseUrl}/health`, { + signal: AbortSignal.timeout(HEALTH_CHECK_TIMEOUT_MS), + }); + return { + ok: res.ok, + latencyMs: Date.now() - start, + ...(!res.ok ? { error: `HTTP ${res.status}` } : {}), + }; + } catch (err) { + return { + ok: false, + latencyMs: Date.now() - start, + error: err instanceof Error ? err.message : String(err), + }; + } + } +} + +export default DarioExecutor; diff --git a/open-sse/executors/default.ts b/open-sse/executors/default.ts index 1820e48a01..8836b79dfb 100644 --- a/open-sse/executors/default.ts +++ b/open-sse/executors/default.ts @@ -1,3 +1,5 @@ +import { createHash } from "node:crypto"; + import { BaseExecutor, type ExecuteInput } from "./base.ts"; import { mapNvidiaGlm52ReasoningParams } from "./base/reasoningEffort.ts"; import { PROVIDERS, OAUTH_ENDPOINTS } from "../config/constants.ts"; @@ -18,6 +20,7 @@ import { import { isOfficialAnthropicBaseUrl } from "../utils/anthropicHost.ts"; import { applyProviderRequestDefaults } from "../services/providerRequestDefaults.ts"; import { stripUnsupportedParams } from "../translator/paramSupport.ts"; +import { normalizeOpenAIToolNames } from "../translator/helpers/toolCallHelper.ts"; import { injectReasoningContentForThinkingModel, shouldInjectReasoningContentPlaceholder, @@ -28,6 +31,7 @@ import { getTargetFormat, isClaudeCodeCompatible, } from "../services/provider.ts"; +import { ensureToolMessageNames } from "./kimiToolNames.ts"; import { getSapResourceGroup } from "../config/sap.ts"; import { normalizeBailianMessagesUrl, @@ -40,6 +44,10 @@ import { normalizeOpenAIChatUrl, getOpenRouterConnectionPreset, } from "./default/urlNormalizers.ts"; +import { + isPoeMessagesEligibleModel, + resolvePoeUpstreamUrl, +} from "../config/providers/registry/poe/index.ts"; import { buildMaritalkChatUrl } from "../config/maritalk.ts"; import { LOCAL_PROVIDERS } from "@/shared/constants/providers"; import { isForbiddenCustomHeaderName } from "@/shared/constants/upstreamHeaders"; @@ -59,6 +67,38 @@ import { usesCcWireImage } from "../services/ccWireImageBuiltins.ts"; import type { PoolConfig } from "../services/sessionPool/types.ts"; +const NVIDIA_TOOL_CALL_ID_PATTERN = /^[A-Za-z0-9]{9}$/; + +function normalizeNvidiaToolCallId(id: unknown): unknown { + if (id === null || id === undefined) return id; + const value = String(id); + if (NVIDIA_TOOL_CALL_ID_PATTERN.test(value)) return value; + return createHash("sha256").update(value).digest("hex").slice(0, 9); +} + +function normalizeNvidiaToolCallIds(body: unknown): void { + if (!body || typeof body !== "object" || Array.isArray(body)) return; + const messages = (body as Record).messages; + if (!Array.isArray(messages)) return; + + for (const message of messages) { + if (!message || typeof message !== "object" || Array.isArray(message)) continue; + const record = message as Record; + if (Array.isArray(record.tool_calls)) { + for (const toolCall of record.tool_calls) { + if (!toolCall || typeof toolCall !== "object" || Array.isArray(toolCall)) continue; + const call = toolCall as Record; + if (call.id !== null && call.id !== undefined) { + call.id = normalizeNvidiaToolCallId(call.id); + } + } + } + if (record.tool_call_id !== null && record.tool_call_id !== undefined) { + record.tool_call_id = normalizeNvidiaToolCallId(record.tool_call_id); + } + } +} + /** * Apply operator-configured per-provider custom headers onto an outgoing header * map. Defense-in-depth on top of the Zod `customHeadersSchema`: @@ -285,6 +325,36 @@ export class DefaultExecutor extends BaseExecutor { case "glm-coding-apikey": // #7364: format override extracted to zaiFormatOverride.ts (file-size ratchet). return resolveZaiUrl(credentials, (fallback) => this.resolveBaseUrl(credentials, fallback)); + case "poe": { + // #8969: Poe API-key surfaces — Chat Completions, Responses, and + // Claude-only Messages. Prefer the responses marker from + // resolveExecutionCredentials (incoming /v1/responses), then the + // registry Claude targetFormat → messagesUrl, else chat/completions. + // GPT models must never hit /v1/messages (Poe rejects non-Claude there). + const psd = credentials?.providerSpecificData; + const manualBaseUrl = + typeof psd?.baseUrl === "string" && psd.baseUrl.trim() ? psd.baseUrl.trim() : null; + const forceResponses = psd?._omnirouteForceResponsesUpstream === true; + const modelTarget = getModelTargetFormat("poe", model); + const connectionTarget = + typeof psd?.targetFormat === "string" ? (psd.targetFormat as string) : null; + const effectiveTarget = modelTarget || connectionTarget; + + let protocol: "chat" | "responses" | "messages" = "chat"; + if (forceResponses || effectiveTarget === "openai-responses") { + protocol = "responses"; + } else if (effectiveTarget === "claude" && isPoeMessagesEligibleModel(model)) { + protocol = "messages"; + } + + return resolvePoeUpstreamUrl({ + protocol, + configuredBaseUrl: manualBaseUrl, + responsesBaseUrl: this.config.responsesBaseUrl, + messagesUrl: this.config.messagesUrl, + defaultChatUrl: this.config.baseUrl, + }); + } case "claude": case "glm": case "glmt": @@ -601,9 +671,27 @@ export class DefaultExecutor extends BaseExecutor { transformRequest(model, body, stream, credentials) { const cleanedBody = super.transformRequest(model, body, stream, credentials); let withDefaults = applyProviderRequestDefaults(cleanedBody, this.config.requestDefaults); + + // ponytail: backfill missing tool message names for strict OpenAI-compatible providers. + // Kimi K3 and some BYOK endpoints reject tool messages whose `name` field was stripped + // during combo routing or format translation. Build a tool_call_id → function.name + // lookup from assistant messages and restore missing names before forwarding. + if ( + withDefaults && + typeof withDefaults === "object" && + !Array.isArray(withDefaults) && + Array.isArray((withDefaults as Record).messages) + ) { + withDefaults = ensureToolMessageNames(withDefaults as Record); + } + withDefaults = this.applyJsonSchemaFallback(withDefaults); withDefaults = this.defaultResponsesTextFormat(withDefaults); + if (this.provider === "nvidia") { + normalizeNvidiaToolCallIds(withDefaults); + } + // Port of decolua/9router commit d652300e: // Cerebras returns 400 (wrong_api_format), Mistral returns 422 // (extra_forbidden), and NVIDIA's OpenAI-compatible wrapper returns 400 @@ -789,6 +877,34 @@ export class DefaultExecutor extends BaseExecutor { } } + const toolNameMaxLength = getRegistryEntry(this.provider)?.toolNameMaxLength; + if ( + toolNameMaxLength && + withDefaults && + typeof withDefaults === "object" && + !Array.isArray(withDefaults) + ) { + const toolNameMap = normalizeOpenAIToolNames(withDefaults, toolNameMaxLength); + if (toolNameMap.size > 0) { + const existingToolNameMap = + (withDefaults as Record)._toolNameMap instanceof Map + ? ((withDefaults as Record)._toolNameMap as Map) + : null; + const responseToolNameMap = existingToolNameMap + ? new Map(existingToolNameMap) + : new Map(); + for (const [alias, original] of toolNameMap) { + responseToolNameMap.set(alias, original); + } + Object.defineProperty(withDefaults, "_toolNameMap", { + value: responseToolNameMap, + enumerable: false, + configurable: true, + writable: true, + }); + } + } + return withDefaults; } diff --git a/open-sse/executors/devin-agentic/anthropicResponse.ts b/open-sse/executors/devin-agentic/anthropicResponse.ts new file mode 100644 index 0000000000..d637ab1612 --- /dev/null +++ b/open-sse/executors/devin-agentic/anthropicResponse.ts @@ -0,0 +1,104 @@ +import { + estimateTokens, + type ClaudeResponseArgs, + type ClaudeToolUseArgs, + type JsonRecord, +} from "./types.ts"; + +function usage(inputTokens: number, outputTokens: number) { + return { + input_tokens: inputTokens, + output_tokens: outputTokens, + }; +} + +export function buildClaudeTextResponse(args: ClaudeResponseArgs): JsonRecord { + return { + id: args.id, + type: "message", + role: "assistant", + model: args.model, + content: [{ type: "text", text: args.text }], + stop_reason: "end_turn", + stop_sequence: null, + usage: usage(args.inputTokens, args.outputTokens || estimateTokens(args.text)), + }; +} + +export function buildClaudeToolUseResponse(args: ClaudeToolUseArgs): JsonRecord { + return { + id: args.id, + type: "message", + role: "assistant", + model: args.model, + content: [ + { + type: "tool_use", + id: args.tool.id, + name: args.tool.name, + input: args.tool.input, + }, + ], + stop_reason: "tool_use", + stop_sequence: null, + usage: usage(args.inputTokens, args.outputTokens), + }; +} + +function frame(event: string, data: JsonRecord): string { + return `event: ${event}\ndata: ${JSON.stringify(data)}\n\n`; +} + +export function buildClaudeSseFrames(message: JsonRecord): string { + const content = Array.isArray(message.content) ? message.content : []; + const startMessage = { ...message, content: [], stop_reason: null, stop_sequence: null }; + let out = frame("message_start", { type: "message_start", message: startMessage }); + + content.forEach((block, index) => { + const blockRecord = block as JsonRecord; + if (blockRecord.type === "text") { + out += frame("content_block_start", { + type: "content_block_start", + index, + content_block: { type: "text", text: "" }, + }); + out += frame("content_block_delta", { + type: "content_block_delta", + index, + delta: { type: "text_delta", text: String(blockRecord.text || "") }, + }); + out += frame("content_block_stop", { type: "content_block_stop", index }); + return; + } + + if (blockRecord.type === "tool_use") { + out += frame("content_block_start", { + type: "content_block_start", + index, + content_block: { + type: "tool_use", + id: blockRecord.id, + name: blockRecord.name, + input: {}, + }, + }); + out += frame("content_block_delta", { + type: "content_block_delta", + index, + delta: { + type: "input_json_delta", + partial_json: JSON.stringify(blockRecord.input || {}), + }, + }); + out += frame("content_block_stop", { type: "content_block_stop", index }); + } + }); + + out += frame("message_delta", { + type: "message_delta", + delta: { stop_reason: message.stop_reason, stop_sequence: null }, + usage: { output_tokens: (message.usage as JsonRecord | undefined)?.output_tokens || 0 }, + }); + out += frame("message_stop", { type: "message_stop" }); + return out; +} diff --git a/open-sse/executors/devin-agentic/serializer.ts b/open-sse/executors/devin-agentic/serializer.ts new file mode 100644 index 0000000000..8593eea2cd --- /dev/null +++ b/open-sse/executors/devin-agentic/serializer.ts @@ -0,0 +1,218 @@ +import { + asRecord, + DevinAgenticBridgeError, + estimateTokens, + type AnthropicTool, + type DevinPrompt, +} from "./types.ts"; +import { createHash } from "node:crypto"; + +export const MAX_TOOL_RESULT_CHARS = 65536; + +function stringifyContentValue(value: unknown): string { + if (typeof value === "string") return value; + if (value == null) return ""; + return JSON.stringify(value); +} + +function boundedToolResult(value: unknown): string { + const text = stringifyContentValue(value); + if (text.length <= MAX_TOOL_RESULT_CHARS) return text; + const removed = text.length - MAX_TOOL_RESULT_CHARS; + return `${text.slice(0, MAX_TOOL_RESULT_CHARS)}\n[TRUNCATED ${removed} CHARACTERS BY OMNIROUTE]`; +} + +function serializeSystem(system: unknown): string[] { + if (typeof system === "string" && system.trim()) return [`[System]\n${system}`]; + if (!Array.isArray(system)) return []; + + const parts: string[] = []; + for (const block of system) { + const record = asRecord(block); + if (record.type === "text") { + parts.push(String(record.text || "")); + } else if (Object.keys(record).length > 0) { + throw new DevinAgenticBridgeError( + `Unsupported Anthropic system block type: ${String(record.type || "unknown")}`, + "unsupported_system_block" + ); + } + } + return parts.length > 0 ? [`[System]\n${parts.join("\n")}`] : []; +} + +function serializeBlock( + block: unknown, + knownToolUses: Set, + tools: AnthropicTool[] +): string { + const record = asRecord(block); + const type = String(record.type || ""); + + if (type === "text") return String(record.text || ""); + if (type === "thinking") return `[Thinking]\n${String(record.thinking || "")}`; + if (type === "redacted_thinking") return "[Redacted Thinking]"; + if (type === "tool_use") { + const id = String(record.id || "").trim(); + const name = String(record.name || "").trim(); + if (!id || knownToolUses.has(id)) { + throw new DevinAgenticBridgeError( + id ? `Duplicate Anthropic tool_use id: ${id}` : "Anthropic tool_use is missing id", + id ? "duplicate_tool_use_id" : "missing_tool_use_id" + ); + } + const declared = tools.find((tool) => tool.name === name); + if (!declared) { + throw new DevinAgenticBridgeError( + `Historical tool_use references undeclared tool: ${name || "unknown"}`, + "undeclared_historical_tool" + ); + } + knownToolUses.add(id); + return [ + "[Assistant Tool Use]", + `id: ${id}`, + `name: ${name}`, + "arguments:", + JSON.stringify(record.input || {}, null, 2), + ].join("\n"); + } + if (type === "tool_result") { + const toolUseId = String(record.tool_use_id || "").trim(); + if (!toolUseId || !knownToolUses.has(toolUseId)) { + throw new DevinAgenticBridgeError( + `Anthropic tool_result references unknown tool_use id: ${toolUseId || "missing"}`, + "orphan_tool_result" + ); + } + return [ + "[Tool Result]", + `tool_use_id: ${toolUseId}`, + `is_error: ${record.is_error === true ? "true" : "false"}`, + "content:", + boundedToolResult(record.content), + ].join("\n"); + } + if (type === "image") { + throw new DevinAgenticBridgeError( + "Anthropic image blocks are not supported by devin-cli-agentic", + "unsupported_image_block" + ); + } + + throw new DevinAgenticBridgeError( + `Unsupported Anthropic content block type: ${type || "unknown"}`, + "unsupported_content_block" + ); +} + +function serializeMessage( + message: unknown, + knownToolUses: Set, + tools: AnthropicTool[] +): string { + const record = asRecord(message); + const role = String(record.role || "user"); + if (role !== "user" && role !== "assistant") { + throw new DevinAgenticBridgeError( + `Unsupported Anthropic message role: ${role}`, + "unsupported_role" + ); + } + // role was just narrowed to "user" | "assistant" by the guard above ("system" throws). + const label = role === "assistant" ? "Assistant" : "User"; + const content = record.content; + + if (typeof content === "string") return `[${label}]\n${content}`; + if (!Array.isArray(content)) return `[${label}]\n${stringifyContentValue(content)}`; + + return `[${label}]\n${content + .map((block) => serializeBlock(block, knownToolUses, tools)) + .join("\n\n")}`; +} + +function normalizeTools(tools: unknown): AnthropicTool[] { + if (tools == null) return []; + if (!Array.isArray(tools)) { + throw new DevinAgenticBridgeError("Anthropic tools must be an array", "invalid_tools"); + } + + return tools.map((tool) => { + const record = asRecord(tool); + const name = typeof record.name === "string" ? record.name.trim() : ""; + if (!name) { + throw new DevinAgenticBridgeError("Anthropic tool is missing name", "invalid_tool_name"); + } + return { + name, + description: typeof record.description === "string" ? record.description : undefined, + input_schema: asRecord(record.input_schema), + }; + }); +} + +function serializeToolCatalog(tools: AnthropicTool[]): string[] { + if (tools.length === 0) return []; + return [ + [ + "[Available Tools]", + "When a tool is required, respond with exactly one XML-wrapped JSON object:", + '{"name":"ToolName","arguments":{}}', + "Use only the tools listed below. Do not claim that a tool was executed.", + "Do not execute tools inside Devin or emit ACP tool-call events; request them only with the XML envelope.", + "Never describe a future tool action in plain text; emit the tool envelope instead.", + ].join("\n"), + ...tools.map((tool) => + [ + `[Tool] ${tool.name}`, + tool.description ? `description: ${tool.description}` : "description:", + "input_schema:", + JSON.stringify(tool.input_schema || { type: "object", properties: {} }, null, 2), + ].join("\n") + ), + ]; +} + +function serializeToolChoice(value: unknown, tools: AnthropicTool[]): string[] { + if (value == null) return []; + const choice = asRecord(value); + const type = String(choice.type || ""); + if (type === "auto") return ["[Tool Choice]\nauto"]; + if (type === "any") return ["[Tool Choice]\nA tool call is required."]; + if (type === "none") return ["[Tool Choice]\nDo not call a tool."]; + if (type === "tool") { + const name = String(choice.name || "").trim(); + if (!tools.some((tool) => tool.name === name)) { + throw new DevinAgenticBridgeError( + `tool_choice references unknown tool: ${name}`, + "invalid_tool_choice" + ); + } + return [`[Tool Choice]\nCall exactly this tool: ${name}`]; + } + throw new DevinAgenticBridgeError( + `Unsupported Anthropic tool_choice type: ${type || "missing"}`, + "invalid_tool_choice" + ); +} + +export function serializeAnthropicForDevin(body: unknown): DevinPrompt { + const record = asRecord(body); + const messages = Array.isArray(record.messages) ? record.messages : []; + const tools = normalizeTools(record.tools); + const knownToolUses = new Set(); + const sections: string[] = [ + ...serializeSystem(record.system), + ...serializeToolCatalog(tools), + ...serializeToolChoice(record.tool_choice, tools), + ...messages.map((message) => serializeMessage(message, knownToolUses, tools)), + ].filter((section) => section.trim().length > 0); + + if (sections.length === 0) { + throw new DevinAgenticBridgeError("Anthropic request contains no messages", "empty_messages"); + } + + const text = sections.join("\n\n---\n\n"); + const idSeed = createHash("sha256").update(text).digest("hex").slice(0, 24); + return { text, tools, inputTokensEstimate: estimateTokens(text), idSeed }; +} diff --git a/open-sse/executors/devin-agentic/toolParser.ts b/open-sse/executors/devin-agentic/toolParser.ts new file mode 100644 index 0000000000..fcebe8a1a8 --- /dev/null +++ b/open-sse/executors/devin-agentic/toolParser.ts @@ -0,0 +1,117 @@ +import { createHash } from "node:crypto"; +import { asRecord, DevinAgenticBridgeError, type AnthropicTool, type JsonRecord } from "./types.ts"; + +function stableJson(value: unknown): string { + if (Array.isArray(value)) return `[${value.map((item) => stableJson(item)).join(",")}]`; + if (value && typeof value === "object") { + return `{${Object.entries(value as JsonRecord) + .sort(([a], [b]) => a.localeCompare(b)) + .map(([key, val]) => `${JSON.stringify(key)}:${stableJson(val)}`) + .join(",")}}`; + } + return JSON.stringify(value); +} + +function typeOf(value: unknown): string { + if (Array.isArray(value)) return "array"; + if (value === null) return "null"; + return typeof value; +} + +function validateSchema(value: unknown, schema: JsonRecord, path: string): string[] { + const errors: string[] = []; + const expectedType = schema.type; + if (typeof expectedType === "string") { + const actual = typeOf(value); + if (expectedType === "integer") { + if (!Number.isInteger(value)) errors.push(`${path} must be integer`); + } else if (actual !== expectedType) { + errors.push(`${path} must be ${expectedType}, got ${actual}`); + } + } + + if (Array.isArray(schema.enum) && !schema.enum.some((item) => item === value)) { + errors.push( + `${path} must be one of ${schema.enum.map((item) => JSON.stringify(item)).join(", ")}` + ); + } + + if (schema.type === "object" || (value && typeof value === "object" && !Array.isArray(value))) { + const record = asRecord(value); + const required = Array.isArray(schema.required) ? schema.required.map(String) : []; + for (const key of required) { + if (!(key in record)) errors.push(`${path}.${key} is required`); + } + + const properties = asRecord(schema.properties); + for (const [key, propSchema] of Object.entries(properties)) { + if (key in record) + errors.push(...validateSchema(record[key], asRecord(propSchema), `${path}.${key}`)); + } + + if (schema.additionalProperties === false) { + for (const key of Object.keys(record)) { + if (!(key in properties)) errors.push(`${path}.${key} is not allowed`); + } + } + } + + if (Array.isArray(value) && schema.items) { + const itemSchema = asRecord(schema.items); + value.forEach((item, index) => + errors.push(...validateSchema(item, itemSchema, `${path}[${index}]`)) + ); + } + + return errors; +} + +export function parseDevinToolRequest(text: string, tools: AnthropicTool[], idSeed = "") { + const matches = [...text.matchAll(/\s*([\s\S]*?)\s*<\/tool>/g)]; + if (matches.length === 0) return null; + if (matches.length > 1) { + throw new DevinAgenticBridgeError( + "Devin response contained more than one tool request; parallel tool use is not supported", + "multiple_tool_requests" + ); + } + + if (text.trim() !== matches[0][0].trim()) { + throw new DevinAgenticBridgeError( + "Devin tool request must be a standalone tool envelope without narrative text", + "mixed_tool_narrative" + ); + } + + let payload: JsonRecord; + try { + payload = asRecord(JSON.parse(matches[0][1] || "{}")); + } catch { + throw new DevinAgenticBridgeError("Devin tool request was not valid JSON", "invalid_tool_json"); + } + + const name = typeof payload.name === "string" ? payload.name.trim() : ""; + if (!name) + throw new DevinAgenticBridgeError("Devin tool request is missing name", "missing_tool_name"); + + const tool = tools.find((candidate) => candidate.name === name); + if (!tool) { + throw new DevinAgenticBridgeError(`Devin requested unknown tool: ${name}`, "unknown_tool"); + } + + const input = asRecord(payload.arguments); + const schema = tool.input_schema || { type: "object", properties: {} }; + const errors = validateSchema(input, schema, "arguments"); + if (errors.length > 0) { + throw new DevinAgenticBridgeError( + `Devin tool arguments failed schema validation: ${errors.join("; ")}`, + "invalid_tool_arguments" + ); + } + + const digest = createHash("sha256") + .update(`${idSeed}:${name}:${stableJson(input)}`) + .digest("hex") + .slice(0, 16); + return { id: `tool_devin_${digest}`, name, input }; +} diff --git a/open-sse/executors/devin-agentic/types.ts b/open-sse/executors/devin-agentic/types.ts new file mode 100644 index 0000000000..8cde997407 --- /dev/null +++ b/open-sse/executors/devin-agentic/types.ts @@ -0,0 +1,56 @@ +export type JsonRecord = Record; + +export type AnthropicTool = { + name: string; + description?: string; + input_schema?: JsonRecord; +}; + +export type DevinPrompt = { + text: string; + tools: AnthropicTool[]; + inputTokensEstimate: number; + idSeed: string; +}; + +export type ParsedToolRequest = { + id: string; + name: string; + input: JsonRecord; +}; + +export type ClaudeResponseArgs = { + id: string; + model: string; + text: string; + inputTokens: number; + outputTokens: number; +}; + +export type ClaudeToolUseArgs = { + id: string; + model: string; + tool: ParsedToolRequest; + inputTokens: number; + outputTokens: number; +}; + +export class DevinAgenticBridgeError extends Error { + status: number; + code: string; + + constructor(message: string, code = "devin_agentic_error", status = 400) { + super(message); + this.name = "DevinAgenticBridgeError"; + this.code = code; + this.status = status; + } +} + +export function asRecord(value: unknown): JsonRecord { + return value && typeof value === "object" && !Array.isArray(value) ? (value as JsonRecord) : {}; +} + +export function estimateTokens(text: string): number { + return Math.max(1, Math.ceil(text.length / 4)); +} diff --git a/open-sse/executors/devin-cli-agentic.ts b/open-sse/executors/devin-cli-agentic.ts new file mode 100644 index 0000000000..9180a02c61 --- /dev/null +++ b/open-sse/executors/devin-cli-agentic.ts @@ -0,0 +1,571 @@ +import { spawn } from "node:child_process"; +import path from "node:path"; +import os from "node:os"; +import fs from "node:fs"; +import { randomUUID } from "node:crypto"; +import { BaseExecutor, type ExecuteInput } from "./base.ts"; +import { DEVIN_MODEL_CATALOG } from "../config/providers/registry/devin/catalog.ts"; +import { buildErrorBody, sanitizeErrorMessage } from "../utils/error.ts"; +import { + buildClaudeSseFrames, + buildClaudeTextResponse, + buildClaudeToolUseResponse, +} from "./devin-agentic/anthropicResponse.ts"; +import { serializeAnthropicForDevin } from "./devin-agentic/serializer.ts"; +import { parseDevinToolRequest } from "./devin-agentic/toolParser.ts"; +import { asRecord, DevinAgenticBridgeError, estimateTokens } from "./devin-agentic/types.ts"; + +type AcpMessage = { + jsonrpc: "2.0"; + id?: number | null; + method?: string; + params?: unknown; + result?: unknown; + error?: { code: number; message: string }; +}; + +const ACP_PROTOCOL_VERSION = 1; +const MAX_ACP_OUTPUT_CHARS = 1024 * 1024; +const TRUSTED_DEVIN_BRIDGE_PROXY_URL = "http://network-guard:8080"; +const REPAIRABLE_TOOL_ERRORS = new Set([ + "invalid_tool_json", + "missing_tool_name", + "unknown_tool", + "invalid_tool_arguments", + "multiple_tool_requests", + "mixed_tool_narrative", + "unexecuted_tool_intent", +]); + +function describesUnexecutedToolIntent(text: string): boolean { + const action = "(?:read|inspect|examine|edit|fix|run|check|test|start)"; + const futureAction = new RegExp( + `\\b(?:(?:next(?: immediate)?|immediate next)\\s+(?:task|step)|planned actions?)\\b[\\s\\S]{0,320}\\b${action}\\b`, + "i" + ); + return ( + futureAction.test(text) || + new RegExp(`\\b(?:i(?:'ll| will)|let me)\\b[^\\n.!?]{0,160}\\b${action}\\b`, "i").test(text) || + new RegExp(`\\bnext steps?\\s*:\\s*${action}\\b`, "i").test(text) || + new RegExp(`\\bnext immediate (?:task|step)\\s*:\\s*${action}\\b`, "i").test(text) || + new RegExp(`\\bplanned actions?\\s*:\\s*${action}\\b`, "i").test(text) || + new RegExp(`\\b(?:still|now)\\s+(?:need|needs|required)\\s+to\\s+${action}\\b`, "i").test( + text + ) || + /\btests?\s+(?:have|has|were|was)?\s*not\s+(?:yet\s+)?(?:been\s+)?run\b/i.test(text) + ); +} + +function framePromptForNoToolsSummarizer(promptText: string): string { + return [ + "[Devin Summarizer Bridge]", + "Treat the content below as an execution trace whose next assistant output must be determined.", + "If another client-owned action is required, return exactly one JSON envelope using the catalog in the trace and no prose.", + "The client will execute that tool; never execute or claim to execute a tool inside Devin.", + "The client workspace is /workspace; /home/bridge is only the isolated Devin process home.", + "If the task is complete, return only a concise final answer.", + "Do not wrap the response in Markdown fences or a element.", + "", + "[Execution Trace]", + promptText, + ].join("\n"); +} + +const CLAUDE_ENV_BLOCKLIST = [ + "ANTHROPIC_API_KEY", + "CLAUDE_CODE_OAUTH_TOKEN", + "ANTHROPIC_BEDROCK_BASE_URL", + "ANTHROPIC_VERTEX_BASE_URL", + "CLAUDE_CODE_USE_BEDROCK", + "CLAUDE_CODE_USE_VERTEX", + "CLAUDE_CODE_USE_FOUNDRY", +]; + +function resolveDevinBin(): string { + const envBin = process.env.CLI_DEVIN_AGENTIC_BIN?.trim() || process.env.CLI_DEVIN_BIN?.trim(); + if (envBin) return envBin; + + if (process.platform === "win32") { + const localAppData = process.env.LOCALAPPDATA || path.join(os.homedir(), "AppData", "Local"); + const winPath = path.join(localAppData, "devin", "cli", "bin", "devin.exe"); + if (fs.existsSync(winPath)) return winPath; + return "devin.exe"; + } + + for (const candidate of [ + path.join(os.homedir(), ".local", "share", "devin", "bin", "devin"), + path.join(os.homedir(), ".devin", "bin", "devin"), + ]) { + if (fs.existsSync(candidate)) return candidate; + } + return "devin"; +} + +function rpc(method: string, params: unknown, id: number): string { + return JSON.stringify({ jsonrpc: "2.0", id, method, params }) + "\n"; +} + +export function assertLocalAcpUrl(url: string): void { + if (url !== "devin://acp/stdio") { + throw new DevinAgenticBridgeError( + "devin-cli-agentic accepts only the local Devin ACP stdio upstream", + "invalid_acp_upstream", + 500 + ); + } +} + +function isIsolatedHome(value: string): boolean { + return value === "/home/bridge" || value.includes("/.sandbox/"); +} + +export function buildDevinChildEnv( + _credentials: ExecuteInput["credentials"], + source: NodeJS.ProcessEnv = process.env +): NodeJS.ProcessEnv { + const home = source.DEVIN_AGENTIC_HOME?.trim() || ""; + if (!home || !path.isAbsolute(home) || !isIsolatedHome(home)) { + throw new DevinAgenticBridgeError( + "DEVIN_AGENTIC_HOME must be an absolute path inside the bridge sandbox", + "unsafe_devin_home", + 500 + ); + } + + const env: NodeJS.ProcessEnv = { + HOME: home, + XDG_CONFIG_HOME: path.join(home, ".config"), + XDG_DATA_HOME: path.join(home, ".local", "share"), + XDG_CACHE_HOME: path.join(home, ".cache"), + PATH: source.PATH || "/usr/local/bin:/usr/bin:/bin", + LANG: source.LANG || "C.UTF-8", + CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC: "1", + DISABLE_TELEMETRY: "1", + DISABLE_ERROR_REPORTING: "1", + DISABLE_AUTOUPDATER: "1", + }; + if (source.LC_ALL) env.LC_ALL = source.LC_ALL; + if (source.TERM) env.TERM = source.TERM; + if (source.DEVIN_BRIDGE_MOCK_LOG === "/evidence/mock-acp.jsonl") { + env.DEVIN_BRIDGE_MOCK_LOG = source.DEVIN_BRIDGE_MOCK_LOG; + } + if (source.DEVIN_BRIDGE_PROXY_URL === TRUSTED_DEVIN_BRIDGE_PROXY_URL) { + env.HTTP_PROXY = TRUSTED_DEVIN_BRIDGE_PROXY_URL; + env.HTTPS_PROXY = TRUSTED_DEVIN_BRIDGE_PROXY_URL; + } + + for (const key of CLAUDE_ENV_BLOCKLIST) delete env[key]; + return env; +} + +function errorBody(error: unknown) { + const bridge = error instanceof DevinAgenticBridgeError ? error : null; + const status = bridge?.status || 500; + const message = bridge?.message || (error instanceof Error ? error.message : String(error)); + return buildErrorBody(status, sanitizeErrorMessage(message), undefined, { + type: "devin_agentic_error", + code: bridge?.code || "devin_agentic_error", + }); +} + +export async function runAcpTurn(args: { + devinBin: string; + env: NodeJS.ProcessEnv; + model: string; + promptText: string; + signal?: AbortSignal | null; + log?: ExecuteInput["log"]; +}) { + const timeoutMs = Number(process.env.DEVIN_AGENTIC_ACP_TIMEOUT_MS || 120000); + const child = spawn(args.devinBin, ["acp", "--agent-type", "summarizer"], { + env: args.env, + cwd: args.env.HOME, + stdio: ["pipe", "pipe", "pipe"], + shell: false, + }); + + let nextId = 1; + let buffer = ""; + let text = ""; + let phase: "initialize" | "session" | "prompt" = "initialize"; + let sessionId = ""; + let initializeRequestId = 0; + let sessionRequestId = 0; + let promptRequestId = 0; + let settled = false; + + return await new Promise((resolve, reject) => { + const abortHandler = () => { + finish(new DevinAgenticBridgeError("Devin ACP request was cancelled", "acp_cancelled", 499)); + }; + + const finish = (err: Error | null, value = "") => { + if (settled) return; + settled = true; + clearTimeout(timer); + args.signal?.removeEventListener("abort", abortHandler); + try { + child.stdin.end(); + } catch {} + if (!child.killed) child.kill("SIGTERM"); + if (err) reject(err); + else resolve(value); + }; + + const timer = setTimeout(() => { + finish( + new DevinAgenticBridgeError(`Devin ACP timed out after ${timeoutMs}ms`, "acp_timeout", 504) + ); + }, timeoutMs); + timer.unref?.(); + + const send = (method: string, params: unknown) => { + const id = nextId++; + child.stdin.write(rpc(method, params, id)); + return id; + }; + + if (args.signal?.aborted) return abortHandler(); + args.signal?.addEventListener("abort", abortHandler, { once: true }); + + child.on("error", (err) => { + const message = + err.message.includes("ENOENT") || err.message.includes("not found") + ? `Devin CLI not found: ${args.devinBin}. Install the official Devin CLI or set CLI_DEVIN_AGENTIC_BIN.` + : `Devin CLI spawn error: ${err.message}`; + finish(new DevinAgenticBridgeError(message, "spawn_failed", 502)); + }); + + child.stderr.on("data", (chunk: Buffer) => { + args.log?.debug?.("DEVIN_AGENTIC", `stderr: ${chunk.toString("utf8").slice(0, 200)}`); + }); + + child.stdout.on("data", (chunk: Buffer) => { + buffer += chunk.toString("utf8"); + if (buffer.length + text.length > MAX_ACP_OUTPUT_CHARS) { + finish( + new DevinAgenticBridgeError( + "Devin ACP output exceeded the bridge limit", + "acp_output_too_large", + 502 + ) + ); + return; + } + let nl: number; + while ((nl = buffer.indexOf("\n")) !== -1) { + const line = buffer.slice(0, nl).trim(); + buffer = buffer.slice(nl + 1); + if (!line) continue; + + let msg: AcpMessage; + try { + msg = JSON.parse(line); + } catch { + finish( + new DevinAgenticBridgeError( + "Devin ACP emitted invalid JSON on stdout", + "invalid_acp_frame", + 502 + ) + ); + return; + } + + if (msg.error) { + finish( + new DevinAgenticBridgeError( + `Devin ACP error ${msg.error.code}: ${msg.error.message}`, + "acp_error", + 502 + ) + ); + return; + } + + if (phase === "initialize" && msg.id === initializeRequestId && msg.result !== undefined) { + const protocolVersion = Number(asRecord(msg.result).protocolVersion); + if (protocolVersion !== ACP_PROTOCOL_VERSION) { + finish( + new DevinAgenticBridgeError( + `Devin ACP negotiated unsupported protocol version: ${String(protocolVersion)}`, + "unsupported_acp_version", + 502 + ) + ); + return; + } + phase = "session"; + sessionRequestId = send("session/new", { + cwd: args.env.HOME, + mcpServers: [], + model: args.model || undefined, + }); + continue; + } + + if (phase === "session" && msg.id === sessionRequestId && msg.result !== undefined) { + const sessionResult = asRecord(msg.result); + sessionId = String(sessionResult.sessionId || ""); + if (!sessionId) { + finish( + new DevinAgenticBridgeError( + "Devin ACP session/new returned no sessionId", + "missing_session_id", + 502 + ) + ); + return; + } + + phase = "prompt"; + promptRequestId = send("session/prompt", { + sessionId, + prompt: [{ type: "text", text: framePromptForNoToolsSummarizer(args.promptText) }], + }); + continue; + } + + if (msg.method === "session/update" || msg.method === "$/update") { + const params = asRecord(msg.params); + const updateSessionId = String(params.sessionId || ""); + if (updateSessionId && sessionId && updateSessionId !== sessionId) { + finish( + new DevinAgenticBridgeError( + "Devin ACP update referenced a different session", + "acp_session_mismatch", + 502 + ) + ); + return; + } + const update = asRecord(params.update); + const kind = String(update.sessionUpdate || params.type || ""); + if (kind === "tool_call" || kind === "tool_call_update") { + finish( + new DevinAgenticBridgeError( + "Devin attempted to execute a tool internally; Claude Code must own all tool execution", + "devin_internal_tool_execution", + 502 + ) + ); + return; + } + if (kind === "agent_message_chunk") { + text += extractText(update.content); + } else if ( + kind === "message_delta" || + kind === "text_delta" || + kind === "content_delta" + ) { + text += String(params.content || params.delta || params.text || ""); + } + continue; + } + + if (phase === "prompt" && msg.id === promptRequestId && msg.result !== undefined) { + const stopReason = String(asRecord(msg.result).stopReason || ""); + if (stopReason === "cancelled") { + finish( + new DevinAgenticBridgeError("Devin ACP cancelled the turn", "acp_cancelled", 502) + ); + return; + } + const resultText = + extractText(asRecord(msg.result).content) || extractText(asRecord(msg.result).message); + const finalText = text || resultText; + if (!finalText) { + finish( + new DevinAgenticBridgeError( + `Devin ACP completed without model output (stopReason=${stopReason || "missing"})`, + "empty_acp_output", + 502 + ) + ); + return; + } + finish(null, finalText); + continue; + } + + if (msg.id !== undefined && msg.id !== null && !msg.method) { + finish( + new DevinAgenticBridgeError( + `Devin ACP returned an unexpected response id: ${String(msg.id)}`, + "unexpected_acp_response", + 502 + ) + ); + return; + } + } + }); + + child.on("close", (code) => { + if (settled) return; + if (code === 0 && text) finish(null, text); + else + finish( + new DevinAgenticBridgeError( + `Devin CLI exited before completing the turn with code ${code}`, + "acp_early_exit", + 502 + ) + ); + }); + + initializeRequestId = send("initialize", { + protocolVersion: ACP_PROTOCOL_VERSION, + clientInfo: { name: "omniroute-devin-cli-agentic", version: "1.0" }, + clientCapabilities: {}, + }); + }); +} + +function assertKnownDevinModel(model: string): void { + if (!DEVIN_MODEL_CATALOG.some((entry) => entry.id === model)) { + throw new DevinAgenticBridgeError( + `Model is not present in the current Devin catalog: ${model}`, + "unknown_devin_model", + 400 + ); + } +} + +async function generateAgenticOutput( + args: Omit[0], "promptText">, + promptText: string +) { + const first = await runAcpTurn({ ...args, promptText }); + return first; +} + +function extractText(value: unknown): string { + if (typeof value === "string") return value; + if (Array.isArray(value)) return value.map((item) => extractText(item)).join(""); + const record = asRecord(value); + if (typeof record.text === "string") return record.text; + if (typeof record.content === "string") return record.content; + return ""; +} + +export class DevinCliAgenticExecutor extends BaseExecutor { + constructor() { + super("devin-cli-agentic", { id: "devin-cli-agentic", baseUrl: "devin://acp/stdio" }); + } + + buildUrl(): string { + const url = "devin://acp/stdio"; + assertLocalAcpUrl(url); + return url; + } + + buildHeaders(): Record { + return {}; + } + + transformRequest(): unknown { + return null; + } + + async execute({ model, body, stream, credentials, signal, log }: ExecuteInput) { + try { + assertKnownDevinModel(model); + const prompt = serializeAnthropicForDevin(body); + const devinBin = resolveDevinBin(); + log?.info?.("DEVIN_AGENTIC", `devin acp → model=${model}, bin=${devinBin}`); + + const turnArgs = { + devinBin, + env: buildDevinChildEnv(credentials), + model, + signal, + log, + }; + + let text = await generateAgenticOutput(turnArgs, prompt.text); + let tool; + try { + if (prompt.tools.length > 0 && describesUnexecutedToolIntent(text)) { + throw new DevinAgenticBridgeError( + "The response described a future action without performing it; call exactly one tool now", + "unexecuted_tool_intent" + ); + } + tool = parseDevinToolRequest(text, prompt.tools, prompt.idSeed); + } catch (error) { + if ( + !(error instanceof DevinAgenticBridgeError) || + !REPAIRABLE_TOOL_ERRORS.has(error.code) + ) { + throw error; + } + const requiresToolOnRepair = error.code === "unexecuted_tool_intent"; + const repairPrompt = [ + prompt.text, + "", + "---", + "", + "[Single Repair Attempt]", + `The previous output was rejected: ${sanitizeErrorMessage(error.message)}`, + requiresToolOnRepair + ? "Plain text is not accepted for this repair. Return exactly one standalone JSON envelope now." + : "Return either plain final text or exactly one standalone JSON envelope.", + "Do not narrate a tool action.", + ].join("\n"); + text = await generateAgenticOutput(turnArgs, repairPrompt); + tool = parseDevinToolRequest(text, prompt.tools, prompt.idSeed); + if (requiresToolOnRepair && !tool) { + throw new DevinAgenticBridgeError( + "Devin repeated a narrated tool action instead of requesting a tool", + "unexecuted_tool_intent", + 502 + ); + } + } + + const id = `msg_devin_${randomUUID().replaceAll("-", "")}`; + const outputTokens = estimateTokens(text); + const message = tool + ? buildClaudeToolUseResponse({ + id, + model, + tool, + inputTokens: prompt.inputTokensEstimate, + outputTokens, + }) + : buildClaudeTextResponse({ + id, + model, + text, + inputTokens: prompt.inputTokensEstimate, + outputTokens, + }); + + const responseBody = stream ? buildClaudeSseFrames(message) : JSON.stringify(message); + return { + response: new Response(responseBody, { + status: 200, + headers: { + "Content-Type": stream ? "text/event-stream" : "application/json", + "Cache-Control": "no-cache", + }, + }), + url: "devin://acp/stdio", + headers: {}, + transformedBody: { model, promptLength: prompt.text.length }, + }; + } catch (error) { + const bridge = error instanceof DevinAgenticBridgeError ? error : null; + return { + response: new Response(JSON.stringify(errorBody(error)), { + status: bridge?.status || 500, + headers: { "Content-Type": "application/json" }, + }), + url: "devin://acp/stdio", + headers: {}, + transformedBody: { model }, + }; + } + } +} diff --git a/open-sse/executors/duckduckgo-web.ts b/open-sse/executors/duckduckgo-web.ts index f028dee7cd..72abad4f84 100644 --- a/open-sse/executors/duckduckgo-web.ts +++ b/open-sse/executors/duckduckgo-web.ts @@ -1,3 +1,4 @@ +import { Buffer } from "node:buffer"; import { generateKeyPairSync, randomUUID } from "node:crypto"; import vm from "node:vm"; import { solveDuckDuckGoChallenge, makeDuckDuckGoFeSignals } from "./duckduckgo-web/challenge.ts"; @@ -136,11 +137,6 @@ interface DuckDuckGoModelCapabilities { reasoningEffort: string | null; } -type DuckDuckGoChallengeResult = { - client_hashes?: unknown; - [key: string]: unknown; -}; - let durablePublicKey: JsonWebKey | null = null; function extractDuckDuckGoContent(data: unknown): string { @@ -499,7 +495,7 @@ export class DuckDuckGoWebExecutor extends BaseExecutor { // Wrap the captured body as a Response so processResponse // (already a streaming/non-streaming transformer) can be // reused unchanged. - const upstreamResp = new Response(result.body, { + const upstreamResp = new Response(Buffer.from(result.body), { status: result.status, headers: { "Content-Type": result.contentType || "text/event-stream", diff --git a/open-sse/executors/duckduckgo-web/challenge.ts b/open-sse/executors/duckduckgo-web/challenge.ts index 4c3f3a6132..3c0159ba3a 100644 --- a/open-sse/executors/duckduckgo-web/challenge.ts +++ b/open-sse/executors/duckduckgo-web/challenge.ts @@ -102,6 +102,11 @@ export function sha256Base64(value: string): string { return createHash("sha256").update(value, "utf8").digest("base64"); } +type DuckDuckGoChallengeResult = { + client_hashes?: unknown; + [key: string]: unknown; +}; + export async function solveDuckDuckGoChallenge( challenge: string, userAgent: string diff --git a/open-sse/executors/edgeTts.ts b/open-sse/executors/edgeTts.ts index 74a9c7f333..18a9f144e9 100644 --- a/open-sse/executors/edgeTts.ts +++ b/open-sse/executors/edgeTts.ts @@ -58,7 +58,7 @@ export interface EdgeTtsSynthInput { } export interface EdgeTtsSynthResult { - audio: Buffer; + audio: Buffer; contentType: string; } @@ -189,9 +189,7 @@ export function isTurnEndMessage(message: string): boolean { * ASCII headers, then the remaining bytes are audio data. Returns `null` * for a frame too short to contain a valid header-length prefix. */ -export function demuxAudioChunk( - frame: Buffer -): { headers: string; audio: Buffer } | null { +export function demuxAudioChunk(frame: Buffer): { headers: string; audio: Buffer } | null { if (!Buffer.isBuffer(frame) || frame.length < 2) return null; const headerLength = frame.readUInt16BE(0); if (2 + headerLength > frame.length) return null; diff --git a/open-sse/executors/firecrawl-fetch.ts b/open-sse/executors/firecrawl-fetch.ts index 00c6c3cbea..aa54ee89c4 100644 --- a/open-sse/executors/firecrawl-fetch.ts +++ b/open-sse/executors/firecrawl-fetch.ts @@ -20,9 +20,15 @@ const FIRECRAWL_DEFAULT_BASE_URL = "https://api.firecrawl.dev"; const FIRECRAWL_DEFAULT_TIMEOUT_MS = 30_000; /** Resolve the configured Firecrawl base URL, falling back to the public cloud API. */ -function getFirecrawlBaseUrl(): string { +function getFirecrawlBaseUrl(credentials?: WebFetchCredentials): string { const envBase = process.env.FIRECRAWL_BASE_URL?.trim(); - return envBase ? envBase.replace(/\/+$/, "") : FIRECRAWL_DEFAULT_BASE_URL; + if (envBase) return envBase.replace(/\/+$/, ""); + const providerData = credentials?.providerSpecificData; + const credBase = typeof credentials?.baseUrl === "string" ? credentials.baseUrl : providerData?.baseUrl; + if (typeof credBase === "string" && credBase.trim()) { + return credBase.trim().replace(/\/+$/, ""); + } + return FIRECRAWL_DEFAULT_BASE_URL; } /** Whether the given base URL is the default Firecrawl cloud endpoint. */ @@ -67,7 +73,7 @@ interface FirecrawlScrapeOptions { export async function firecrawlFetch(opts: FirecrawlScrapeOptions): Promise { const { url, format, depth, waitForSelector, includeMetadata, credentials } = opts; - const baseUrl = getFirecrawlBaseUrl(); + const baseUrl = getFirecrawlBaseUrl(credentials); const isDefaultBaseUrl = isDefaultFirecrawlBaseUrl(baseUrl); // The API key is mandatory for the public Firecrawl cloud API, but optional diff --git a/open-sse/executors/index.ts b/open-sse/executors/index.ts index 49fe28ee6c..b25f4d9555 100644 --- a/open-sse/executors/index.ts +++ b/open-sse/executors/index.ts @@ -15,6 +15,7 @@ import { OpencodeExecutor } from "./opencode.ts"; import { PuterExecutor } from "./puter.ts"; import { VertexExecutor } from "./vertex.ts"; import { CliproxyapiExecutor } from "./cliproxyapi.ts"; +import { DarioExecutor } from "./dario.ts"; import { NineRouterExecutor } from "./ninerouter.ts"; import { PerplexityWebExecutor } from "./perplexity-web.ts"; import { GrokWebExecutor } from "./grok-web.ts"; @@ -30,6 +31,7 @@ import { NlpCloudExecutor } from "./nlpcloud.ts"; import { WindsurfExecutor } from "./windsurf.ts"; import { ZedHostedExecutor } from "./zed-hosted.ts"; import { DevinCliExecutor } from "./devin-cli.ts"; +import { DevinCliAgenticExecutor } from "./devin-cli-agentic.ts"; import { AuggieExecutor } from "./auggie.ts"; import { DeepSeekWebExecutor } from "./deepseek-web.ts"; import { DeepSeekWebWithAutoRefreshExecutor } from "./deepseek-web-with-auto-refresh.ts"; @@ -54,6 +56,7 @@ import { CheaperInferenceExecutor } from "./cheaperinference.ts"; import { KimiWebExecutor } from "./kimi-web.ts"; import { DoubaoWebExecutor } from "./doubao-web.ts"; import { QwenWebExecutor } from "./qwen-web.ts"; +import { RaycastExecutor } from "./raycast.ts"; import { HailuoWebExecutor } from "./hailuo-web.ts"; import { ZaiWebExecutor } from "./zai-web.ts"; import { KimiExecutor } from "./kimi.ts"; @@ -104,6 +107,8 @@ const executors = { "vertex-partner": new VertexExecutor(), cliproxyapi: new CliproxyapiExecutor(), cpa: new CliproxyapiExecutor(), // Alias + dario: new DarioExecutor(), + dr: new DarioExecutor(), // Alias "9router": new NineRouterExecutor(), nr: new NineRouterExecutor(), // Alias "perplexity-web": new PerplexityWebExecutor(), @@ -125,6 +130,7 @@ const executors = { ws: new WindsurfExecutor(), // Alias "zed-hosted": new ZedHostedExecutor(), "devin-cli": new DevinCliExecutor(), + "devin-cli-agentic": new DevinCliAgenticExecutor(), devin: new DevinCliExecutor(), // Alias "deepseek-web": new DeepSeekWebWithAutoRefreshExecutor(), "ds-web": new DeepSeekWebWithAutoRefreshExecutor(), // Alias @@ -152,7 +158,9 @@ const executors = { "yuanbao-web": new YuanbaoWebExecutor(), ybw: new YuanbaoWebExecutor(), // Alias "poe-web": new PoeWebExecutor(), - poe: new PoeWebExecutor(), // Alias + // #8969: do NOT alias canonical `poe` (API-key / api.poe.com) to PoeWebExecutor. + // Registry declares executor:"default"; the hard-coded map previously won and + // routed API-key traffic to GraphQL /api/gql_POST → HTTP 405. "venice-web": new VeniceWebExecutor(), ven: new VeniceWebExecutor(), // Alias "notion-web": new NotionWebExecutor(), @@ -171,6 +179,8 @@ const executors = { "doubao-web": new DoubaoWebExecutor(), db: new DoubaoWebExecutor(), // Alias "qwen-web": new QwenWebExecutor(), + raycast: new RaycastExecutor(), + rc: new RaycastExecutor(), // Alias "hailuo-web": new HailuoWebExecutor(), "zai-web": new ZaiWebExecutor(), zw: new ZaiWebExecutor(), // Alias @@ -242,6 +252,7 @@ export { CloudflareAIExecutor } from "./cloudflare-ai.ts"; export { OpencodeExecutor } from "./opencode.ts"; export { PuterExecutor } from "./puter.ts"; export { CliproxyapiExecutor } from "./cliproxyapi.ts"; +export { DarioExecutor } from "./dario.ts"; export { NineRouterExecutor } from "./ninerouter.ts"; export { VertexExecutor } from "./vertex.ts"; export { PerplexityWebExecutor } from "./perplexity-web.ts"; @@ -258,6 +269,7 @@ export { NlpCloudExecutor } from "./nlpcloud.ts"; export { WindsurfExecutor } from "./windsurf.ts"; export { ZedHostedExecutor } from "./zed-hosted.ts"; export { DevinCliExecutor } from "./devin-cli.ts"; +export { DevinCliAgenticExecutor } from "./devin-cli-agentic.ts"; export { AuggieExecutor } from "./auggie.ts"; export { CopilotWebExecutor } from "./copilot-web.ts"; export { CopilotM365WebExecutor } from "./copilot-m365-web.ts"; diff --git a/open-sse/executors/inner-ai.ts b/open-sse/executors/inner-ai.ts index 27a535daef..261a75468e 100644 --- a/open-sse/executors/inner-ai.ts +++ b/open-sse/executors/inner-ai.ts @@ -23,6 +23,7 @@ interface InnerAiModel { unavailable_api?: boolean; pro_only?: boolean; ultra_only?: boolean; + ai_model_categories?: Array>; } interface CredentialCache { @@ -283,9 +284,7 @@ async function resolveModels( if (m.enable === false || m.unavailable_api) return false; if (m.ultra_only && !isUltra) return false; if (m.pro_only && !isPro) return false; - const cats = Array.isArray((m as Record).ai_model_categories) - ? ((m as Record).ai_model_categories as Array>) - : null; + const cats = Array.isArray(m.ai_model_categories) ? m.ai_model_categories : null; if (cats && cats.length > 0) { return cats.some((c) => String(c.unique_identifier ?? c.name ?? "").toLowerCase() === "text"); } diff --git a/open-sse/executors/kimi.ts b/open-sse/executors/kimi.ts index 8364f0909f..1a3ec3463f 100644 --- a/open-sse/executors/kimi.ts +++ b/open-sse/executors/kimi.ts @@ -7,6 +7,7 @@ import { import { FORMATS } from "../translator/formats.ts"; import { DefaultExecutor } from "./default.ts"; import type { ProviderCredentials } from "./base.ts"; +import { ensureToolMessageNames } from "./kimiToolNames.ts"; type JsonRecord = Record; type KimiProtocol = "openai" | "claude"; @@ -410,11 +411,17 @@ export class KimiExecutor extends DefaultExecutor { const cleanedBody = super.transformRequest(model, body, stream, credentials); const record = asRecord(cleanedBody); if (!record) return cleanedBody; + + // ponytail: backfill missing tool message names before protocol normalization. + // Kimi K3 rejects tool messages whose `name` field was stripped during + // combo routing or format translation. + const withNames = ensureToolMessageNames(record); + const policy = getThinkingPolicy(credentials); const normalized = - resolveKimiProtocol(credentials, record) === "claude" - ? normalizeAnthropicRequest(record, policy) - : normalizeOpenAIRequest(record, stream, policy); + resolveKimiProtocol(credentials, withNames) === "claude" + ? normalizeAnthropicRequest(withNames, policy) + : normalizeOpenAIRequest(withNames, stream, policy); return stream ? { ...normalized, stream: true } : normalized; } } diff --git a/open-sse/executors/kimiToolNames.ts b/open-sse/executors/kimiToolNames.ts new file mode 100644 index 0000000000..664f85c9ff --- /dev/null +++ b/open-sse/executors/kimiToolNames.ts @@ -0,0 +1,42 @@ +type JsonRecord = Record; + +function asRecord(value: unknown): JsonRecord | null { + return value && typeof value === "object" && !Array.isArray(value) ? (value as JsonRecord) : null; +} + +// ponytail: Kimi K3 (Moonshot) enforces a stricter tool-message contract than most +// OpenAI-compatible APIs: every role:"tool" message must carry a `name` field matching +// the function that issued the tool_call_id. When requests arrive through combo routing +// or format translation, the `name` field is frequently stripped, causing a 400. +// This builds a tool_call_id -> function.name lookup from assistant tool_calls and +// backfills missing names. Shared by KimiExecutor and DefaultExecutor (for BYOK providers). +// Upgrade path: if Moonshot relaxes this requirement, this function becomes a no-op. +export function ensureToolMessageNames(record: JsonRecord): JsonRecord { + if (!Array.isArray(record.messages)) return record; + + const callIdToName = new Map(); + for (const msg of record.messages) { + const m = asRecord(msg); + if (!m || m.role !== "assistant" || !Array.isArray(m.tool_calls)) continue; + for (const tc of m.tool_calls as { id?: string; function?: { name?: string } }[]) { + if (tc?.id && typeof tc.function?.name === "string") { + callIdToName.set(String(tc.id), tc.function.name); + } + } + } + + if (callIdToName.size === 0) return record; + + let modified = false; + const messages = record.messages.map((msg: unknown) => { + const m = asRecord(msg); + if (!m || m.role !== "tool" || typeof m.name === "string") return msg; + const callId = String(m.tool_call_id ?? ""); + const resolvedName = callIdToName.get(callId); + if (!resolvedName) return msg; + modified = true; + return { ...m, name: resolvedName }; + }); + + return modified ? { ...record, messages } : record; +} diff --git a/open-sse/executors/kiro.ts b/open-sse/executors/kiro.ts index 3dab64c395..815d3a6348 100644 --- a/open-sse/executors/kiro.ts +++ b/open-sse/executors/kiro.ts @@ -6,6 +6,7 @@ import { type ProviderCredentials, } from "./base.ts"; import { PROVIDERS } from "../config/constants.ts"; +import { getRegistryEntry } from "../config/providerRegistry.ts"; import { v4 as uuidv4 } from "uuid"; import { refreshKiroToken } from "../services/tokenRefresh.ts"; import { @@ -20,6 +21,18 @@ import { } from "./kiroThinking.ts"; import { ByteQueue, TEXT_ENCODER, parseEventFrame } from "./kiro/eventstream.ts"; import { kiroRuntimeHost, resolveKiroRuntimeRegion } from "../services/kiroRegion.ts"; +import { + KIRO_TOOL_CALL_WRAPPER, + appendBufferedKiroToolInput, + encodeSse, + getBufferedKiroToolInput, + validateKiroToolCallWrapperInput, + validateKiroToolName, + validateKiroToolUse, + type PendingKiroWrapperToolCall, +} from "./kiroToolCallValidation.ts"; + +export { validateKiroToolUse } from "./kiroToolCallValidation.ts"; type JsonRecord = Record; @@ -41,11 +54,14 @@ type KiroStreamState = { seenToolIds: Map; toolArgsEmitted: Map; toolArgsBuffered: Map; + generatedToolIdCounter: number; + pendingWrapperToolCalls: Map; + invalidToolCall?: boolean; totalContentLength?: number; contextUsagePercentage?: number; hasContextUsage?: boolean; hasMeteringEvent?: boolean; - usage?: UsageSummary; + usage?: Partial; hasReasoningContent?: boolean; reasoningChunkCount?: number; // Inline-thinking splitter state (populated only when thinkingExpected=true). @@ -130,25 +146,76 @@ function buildKiroFinishChunk( return finishChunk; } -function ensureKiroUsage(state: KiroStreamState) { - if (state.usage) return; +/** + * Kiro's fallback input-token budget when the model is absent from the registry. + * Mirrors the registry's own `defaultContextLength` and kiro-gateway's + * DEFAULT_MAX_INPUT_TOKENS. + */ +const KIRO_DEFAULT_MAX_INPUT_TOKENS = 200000; +/** + * Input-token budget for a Kiro model, used to turn `contextUsagePercentage` + * into an absolute token count. + * + * Kiro reports only a percentage, so the budget it is a percentage OF decides the + * result. A fixed 200000 undercounts every model with a larger window by the + * ratio of the two windows — claude-sonnet-5 (1M) by 5x, gpt-5.6-* (272k) by + * ~26% — and those numbers land in usage_history and the API-key token-limit + * counters. + */ +function resolveKiroMaxInputTokens(model: string): number { + const entry = getRegistryEntry("kiro"); + const modelEntry = entry?.models?.find((m) => m.id === model); + return modelEntry?.contextLength || entry?.defaultContextLength || KIRO_DEFAULT_MAX_INPUT_TOKENS; +} + +/** + * Synthesize a usage block when Kiro sent no token counts of its own. + * + * Live `generateAssistantResponse` traffic carries no token counts at all — only + * `contextUsageEvent.contextUsagePercentage` and a `meteringEvent` credit figure + * (verified against the live API: frames are assistantResponseEvent / + * metadataEvent / contextUsageEvent / meteringEvent). So these numbers are + * ESTIMATES, derived the same way kiro-gateway derives them: the percentage + * yields the total, the response text yields the completion, and the prompt is + * the remainder. + * + * Subtracting matters: the percentage already covers the whole context, so + * adding a separately-estimated completion on top would double-count it and + * inflate `total_tokens`. + */ +function ensureKiroUsage(state: KiroStreamState, model: string) { + if (state.usage?.total_tokens !== undefined) return; const estimatedOutputTokens = state.totalContentLength && state.totalContentLength > 0 ? Math.max(1, Math.floor(state.totalContentLength / 4)) : 0; - const estimatedInputTokens = + const estimatedTotalTokens = state.contextUsagePercentage && state.contextUsagePercentage > 0 - ? Math.floor((state.contextUsagePercentage * 200000) / 100) + ? Math.floor((state.contextUsagePercentage * resolveKiroMaxInputTokens(model)) / 100) : 0; - if (estimatedInputTokens <= 0 && estimatedOutputTokens <= 0) return; + if (estimatedTotalTokens <= 0 && estimatedOutputTokens <= 0) return; + // Without a percentage there is no total to split, so the output estimate is + // all that is known and stands on its own. + if (estimatedTotalTokens <= 0) { + state.usage = { + ...state.usage, + prompt_tokens: 0, + completion_tokens: estimatedOutputTokens, + total_tokens: estimatedOutputTokens, + }; + return; + } + + const promptTokens = Math.max(0, estimatedTotalTokens - estimatedOutputTokens); state.usage = { - prompt_tokens: estimatedInputTokens, + ...state.usage, + prompt_tokens: promptTokens, completion_tokens: estimatedOutputTokens, - total_tokens: estimatedInputTokens + estimatedOutputTokens, + total_tokens: promptTokens + estimatedOutputTokens, }; } @@ -344,11 +411,116 @@ export class KiroExecutor extends BaseExecutor { seenToolIds: new Map(), toolArgsEmitted: new Map(), toolArgsBuffered: new Map(), + generatedToolIdCounter: 0, + pendingWrapperToolCalls: new Map(), hasReasoningContent: false, reasoningChunkCount: 0, thinking: thinkingExpected ? { thinkingMode: false, pendingTag: "" } : undefined, }; + const getToolCallId = (toolUse: JsonRecord): string => { + if (typeof toolUse.toolUseId === "string" && toolUse.toolUseId) { + return toolUse.toolUseId; + } + state.generatedToolIdCounter += 1; + return `call_${created}_${state.generatedToolIdCounter}`; + }; + + const emitToolCallStart = ( + controller: TransformStreamDefaultController, + toolCallId: string, + toolName: string, + toolIndex: number + ) => { + const startChunk: JsonRecord = { + id: responseId, + object: "chat.completion.chunk", + created, + model, + choices: [ + { + index: 0, + delta: { + ...(chunkIndex === 0 ? { role: "assistant" } : {}), + tool_calls: [ + { + index: toolIndex, + id: toolCallId, + type: "function", + function: { name: toolName, arguments: "" }, + }, + ], + }, + finish_reason: null, + }, + ], + }; + chunkIndex += 1; + controller.enqueue(encodeSse(`data: ${JSON.stringify(startChunk)}\n\n`)); + }; + + const emitToolCallArguments = ( + controller: TransformStreamDefaultController, + toolIndex: number, + argumentsStr: string + ) => { + const argsChunk: JsonRecord = { + id: responseId, + object: "chat.completion.chunk", + created, + model, + choices: [ + { + index: 0, + delta: { + tool_calls: [{ index: toolIndex, function: { arguments: argumentsStr } }], + }, + finish_reason: null, + }, + ], + }; + chunkIndex += 1; + controller.enqueue(encodeSse(`data: ${JSON.stringify(argsChunk)}\n\n`)); + }; + + const failInvalidToolCall = (controller: TransformStreamDefaultController, message: string) => { + const error = { + error: { + message, + type: "invalid_request_error", + code: "invalid_kiro_tool_call", + }, + }; + state.invalidToolCall = true; + state.finishEmitted = true; + controller.enqueue(encodeSse(`data: ${JSON.stringify(error)}\n\n`)); + controller.enqueue(encodeSse("data: [DONE]\n\n")); + controller.terminate(); + }; + + const flushPendingWrapperToolCalls = ( + controller: TransformStreamDefaultController + ): boolean => { + for (const toolCall of state.pendingWrapperToolCalls.values()) { + const toolInput = getBufferedKiroToolInput(toolCall); + try { + validateKiroToolCallWrapperInput(toolInput); + } catch (error) { + failInvalidToolCall(controller, error instanceof Error ? error.message : String(error)); + return false; + } + + const toolIndex = state.toolCallIndex++; + state.seenToolIds.set(toolCall.toolCallId, toolIndex); + emitToolCallStart(controller, toolCall.toolCallId, toolCall.toolName, toolIndex); + const argumentsStr = + typeof toolInput === "string" ? toolInput : JSON.stringify(toolInput ?? {}); + if (argumentsStr) emitToolCallArguments(controller, toolIndex, argumentsStr); + } + state.pendingWrapperToolCalls.clear(); + return true; + }; + const transformStream = new TransformStream( { async transform(chunk, controller) { @@ -566,50 +738,64 @@ export class KiroExecutor extends BaseExecutor { const toolUse = event.payload; const toolUses = Array.isArray(toolUse) ? toolUse : [toolUse]; - for (const singleToolUse of toolUses) { - const toolCallId = singleToolUse.toolUseId || `call_${Date.now()}`; - const toolName = singleToolUse.name || ""; + for (const rawToolUse of toolUses) { + const singleToolUse = rawToolUse as JsonRecord; + let toolName: string; + try { + toolName = validateKiroToolName(singleToolUse); + } catch (error) { + failInvalidToolCall( + controller, + error instanceof Error ? error.message : String(error) + ); + return; + } + + const toolCallId = getToolCallId(singleToolUse); const toolInput = singleToolUse.input; + if (toolName === KIRO_TOOL_CALL_WRAPPER) { + let pending = state.pendingWrapperToolCalls.get(toolCallId); + if (!pending) { + if (state.seenToolIds.has(toolCallId)) { + failInvalidToolCall( + controller, + "Invalid Kiro tool_call payload: duplicate toolUseId reused by wrapper" + ); + return; + } + pending = { toolCallId, toolName }; + state.pendingWrapperToolCalls.set(toolCallId, pending); + } + try { + appendBufferedKiroToolInput(pending, toolInput); + } catch (error) { + failInvalidToolCall( + controller, + error instanceof Error ? error.message : String(error) + ); + return; + } + continue; + } + + if (state.pendingWrapperToolCalls.has(toolCallId)) { + failInvalidToolCall( + controller, + "Invalid Kiro tool_call payload: mixed wrapper and direct tool fragments" + ); + return; + } + let toolIndex; const isNewTool = !state.seenToolIds.has(toolCallId); if (isNewTool) { toolIndex = state.toolCallIndex++; state.seenToolIds.set(toolCallId, toolIndex); - - const startChunk = { - id: responseId, - object: "chat.completion.chunk", - created, - model, - choices: [ - { - index: 0, - delta: { - ...(chunkIndex === 0 ? { role: "assistant" } : {}), - tool_calls: [ - { - index: toolIndex, - id: toolCallId, - type: "function", - function: { - name: toolName, - arguments: "", - }, - }, - ], - }, - finish_reason: null, - }, - ], - }; - chunkIndex++; - controller.enqueue( - TEXT_ENCODER.encode(`data: ${JSON.stringify(startChunk)}\n\n`) - ); + emitToolCallStart(controller, toolCallId, toolName, toolIndex); } else { - toolIndex = state.seenToolIds.get(toolCallId); + toolIndex = state.seenToolIds.get(toolCallId) as number; } if (toolInput !== undefined) { @@ -662,6 +848,7 @@ export class KiroExecutor extends BaseExecutor { // Handle messageStopEvent if (eventType === "messageStopEvent") { + if (!flushPendingWrapperToolCalls(controller)) return; flushBufferedToolArgs(state, controller, { responseId, created, model }); state.stopSeen = true; } @@ -685,37 +872,74 @@ export class KiroExecutor extends BaseExecutor { state.hasMeteringEvent = true; } - // Handle metricsEvent for token usage - if (eventType === "metricsEvent") { - // Extract usage data from metricsEvent payload - const metrics = event.payload?.metricsEvent || event.payload; + // Handle token usage. Kiro reports it under more than one frame: the + // `metricsEvent` shape covered by unit tests, and a `metadataEvent` + // carrying a nested `usage` object — the shape observed on live + // API-key traffic (see tests/unit/executor-kiro.test.ts, the + // "live API-key event shape" case, whose frames are + // assistantResponseEvent / metadataEvent / contextUsageEvent / + // meteringEvent with no metricsEvent at all). Reading only + // `metricsEvent` meant cache tokens were never picked up in + // production even after their field names were corrected, because + // the branch holding that code never ran. + if (eventType === "metricsEvent" || eventType === "metadataEvent") { + const metrics = + event.payload?.metricsEvent || + event.payload?.usage || + (event.payload?.metadataEvent as JsonRecord)?.usage || + event.payload; if (metrics && typeof metrics === "object") { + const readNumber = (...candidates: unknown[]) => + candidates.find((value) => typeof value === "number") as number | undefined; + + // Bedrock-style (`inputTokens`) and OpenAI-style + // (`prompt_tokens`) spellings both appear across Kiro frames. const inputTokens = - typeof (metrics as JsonRecord).inputTokens === "number" - ? ((metrics as JsonRecord).inputTokens as number) - : 0; + readNumber( + (metrics as JsonRecord).inputTokens, + (metrics as JsonRecord).prompt_tokens + ) || 0; const outputTokens = - typeof (metrics as JsonRecord).outputTokens === "number" - ? ((metrics as JsonRecord).outputTokens as number) - : 0; + readNumber( + (metrics as JsonRecord).outputTokens, + (metrics as JsonRecord).completion_tokens + ) || 0; - const cacheReadTokens = - typeof (metrics as JsonRecord).cacheReadTokens === "number" - ? ((metrics as JsonRecord).cacheReadTokens as number) - : 0; + const cacheReadTokens = readNumber( + (metrics as JsonRecord).cacheReadInputTokens, + (metrics as JsonRecord).cacheReadTokens, + (metrics as JsonRecord).cache_read_input_tokens + ); - const cacheCreationTokens = - typeof (metrics as JsonRecord).cacheCreationTokens === "number" - ? ((metrics as JsonRecord).cacheCreationTokens as number) - : 0; + const cacheCreationTokens = readNumber( + (metrics as JsonRecord).cacheWriteInputTokens, + (metrics as JsonRecord).cacheCreationTokens, + (metrics as JsonRecord).cache_creation_input_tokens + ); if (inputTokens > 0 || outputTokens > 0) { state.usage = { prompt_tokens: inputTokens, completion_tokens: outputTokens, total_tokens: inputTokens + outputTokens, - ...(cacheReadTokens > 0 && { cache_read_input_tokens: cacheReadTokens }), - ...(cacheCreationTokens > 0 && { + ...((cacheReadTokens || 0) > 0 && { + cache_read_input_tokens: cacheReadTokens, + }), + ...((cacheCreationTokens || 0) > 0 && { + cache_creation_input_tokens: cacheCreationTokens, + }), + }; + } else if ((cacheReadTokens || 0) > 0 || (cacheCreationTokens || 0) > 0) { + // Cache counts can arrive on a frame that carries no + // input/output totals. Preserve them instead of dropping the + // whole frame, and let ensureKiroUsage() fill the totals from + // contextUsagePercentage. + state.usage = { + ...(state.usage || {}), + ...((cacheReadTokens || 0) > 0 && { + cache_read_input_tokens: cacheReadTokens, + }), + ...((cacheCreationTokens || 0) > 0 && { cache_creation_input_tokens: cacheCreationTokens, }), }; @@ -730,6 +954,8 @@ export class KiroExecutor extends BaseExecutor { }, flush(controller) { + if (!flushPendingWrapperToolCalls(controller)) return; + if (state.invalidToolCall) return; // Flush any buffered tool arguments (partial-object payloads) before finishing — // idempotent against toolArgsEmitted if messageStopEvent already flushed them. flushBufferedToolArgs(state, controller, { responseId, created, model }); @@ -772,7 +998,7 @@ export class KiroExecutor extends BaseExecutor { // Emit finish chunk if not already sent if (!state.finishEmitted) { state.finishEmitted = true; - ensureKiroUsage(state); + ensureKiroUsage(state, model); const finishChunk = buildKiroFinishChunk(state, responseId, created, model, true); controller.enqueue(TEXT_ENCODER.encode(`data: ${JSON.stringify(finishChunk)}\n\n`)); } diff --git a/open-sse/executors/kiroToolCallValidation.ts b/open-sse/executors/kiroToolCallValidation.ts new file mode 100644 index 0000000000..d447a427f0 --- /dev/null +++ b/open-sse/executors/kiroToolCallValidation.ts @@ -0,0 +1,94 @@ +import { TEXT_ENCODER } from "./kiro/eventstream.ts"; + +/** + * Validation + buffering helpers for Kiro's nested `tool_call` wrapper payloads. + * + * Extracted from kiro.ts (file-size gate, #9314) — pure functions, no dependency on + * KiroExecutor instance state. + */ + +export type JsonRecord = Record; + +export const KIRO_TOOL_CALL_WRAPPER = "tool_call"; + +export type PendingKiroWrapperToolCall = { + toolCallId: string; + toolName: string; + inputKind?: "string" | "object"; + inputText?: string; + inputObject?: Record; +}; + +export function parseKiroToolInput(toolInput: unknown): unknown { + if (typeof toolInput !== "string") return toolInput; + try { + return JSON.parse(toolInput); + } catch (error) { + const message = error instanceof Error ? error.message : String(error); + throw new Error(`Invalid Kiro tool_call payload: input must be valid JSON (${message})`); + } +} + +export function validateKiroToolName(toolUse: JsonRecord): string { + const toolName = typeof toolUse.name === "string" ? toolUse.name.trim() : ""; + if (!toolName) throw new Error("Invalid Kiro toolUseEvent: missing tool name"); + return toolName; +} + +export function validateKiroToolCallWrapperInput(toolInput: unknown): void { + if (toolInput === undefined) { + throw new Error("Invalid Kiro tool_call payload: missing input"); + } + const input = parseKiroToolInput(toolInput); + if (!input || typeof input !== "object" || Array.isArray(input)) { + throw new Error( + "Invalid Kiro tool_call payload: input must be an object with name and arguments" + ); + } + const record = input as JsonRecord; + if (typeof record.name !== "string" || !record.name.trim()) { + throw new Error("Invalid Kiro tool_call payload: missing nested MCP tool name at input.name"); + } + if (!Object.prototype.hasOwnProperty.call(record, "arguments")) { + throw new Error( + "Invalid Kiro tool_call payload: missing nested MCP tool arguments at input.arguments" + ); + } +} + +export function validateKiroToolUse(toolUse: JsonRecord): void { + const toolName = validateKiroToolName(toolUse); + if (toolName === KIRO_TOOL_CALL_WRAPPER) { + validateKiroToolCallWrapperInput(toolUse.input); + } +} + +export function appendBufferedKiroToolInput( + toolCall: PendingKiroWrapperToolCall, + toolInput: unknown +): void { + if (toolInput === undefined) return; + if (typeof toolInput === "string") { + if (toolCall.inputKind && toolCall.inputKind !== "string") { + throw new Error("Invalid Kiro tool_call payload: mixed input fragment types"); + } + toolCall.inputKind = "string"; + toolCall.inputText = `${toolCall.inputText || ""}${toolInput}`; + return; + } + if (toolInput && typeof toolInput === "object" && !Array.isArray(toolInput)) { + if (toolCall.inputKind && toolCall.inputKind !== "object") { + throw new Error("Invalid Kiro tool_call payload: mixed input fragment types"); + } + toolCall.inputKind = "object"; + toolCall.inputObject = toolInput as Record; + } +} + +export function getBufferedKiroToolInput(toolCall: PendingKiroWrapperToolCall): unknown { + return toolCall.inputKind === "string" ? toolCall.inputText || "" : toolCall.inputObject; +} + +export function encodeSse(value: string): Uint8Array { + return TEXT_ENCODER.encode(value); +} diff --git a/open-sse/executors/lmarena/response.ts b/open-sse/executors/lmarena/response.ts index 64aef907c9..acc86f915a 100644 --- a/open-sse/executors/lmarena/response.ts +++ b/open-sse/executors/lmarena/response.ts @@ -7,6 +7,8 @@ import { isCloudflareChallenge } from "../../services/lmarenaTlsClient.ts"; import { markLMArenaCatalogModelDead } from "./models.ts"; import { parseArenaSSE } from "./stream.ts"; +const encoder = new TextEncoder(); + export function errorResponse( status: number, message: string, @@ -165,7 +167,7 @@ function baseChunk(model: string) { } function enqueueSse(controller: ReadableStreamDefaultController, chunk: Record) { - controller.enqueue(`data: ${JSON.stringify(chunk)}\n\n`); + controller.enqueue(encoder.encode(`data: ${JSON.stringify(chunk)}\n\n`)); } function emitStopAndDone(controller: ReadableStreamDefaultController, model: string) { @@ -173,7 +175,8 @@ function emitStopAndDone(controller: ReadableStreamDefaultController, model: str ...baseChunk(model), choices: [{ index: 0, delta: {}, finish_reason: "stop" }], }); - controller.enqueue("data: [DONE]\n\n"); + + controller.enqueue(encoder.encode("data: [DONE]\n\n")); controller.close(); } @@ -213,7 +216,7 @@ export function createOpenAIArenaStream(opts: { model: string; signal?: AbortSignal; log?: { error?: (scope: string, msg: string) => void }; -}): ReadableStream { +}): ReadableStream { const { reader, model, signal, log } = opts; const decoder = new TextDecoder(); let buffer = ""; diff --git a/open-sse/executors/muse-spark-web.ts b/open-sse/executors/muse-spark-web.ts index 66a2e819ef..f93191c312 100644 --- a/open-sse/executors/muse-spark-web.ts +++ b/open-sse/executors/muse-spark-web.ts @@ -1287,7 +1287,7 @@ export class MuseSparkWebExecutor extends BaseExecutor { if (!authorization) { return errorResult( 400, - "Missing Authorization for Meta AI WebSocket — your cookie must include an ecto1:... auth token.", + "Missing Authorization for Meta AI WebSocket — paste the ecto1:... WS auth token from meta.ai DevTools (Network → WS → clippy request Authorization param), alongside your ecto_1_sess cookie.", "missing_authorization", {}, body diff --git a/open-sse/executors/opencode.ts b/open-sse/executors/opencode.ts index 8b66d6e421..12dccb1b02 100644 --- a/open-sse/executors/opencode.ts +++ b/open-sse/executors/opencode.ts @@ -40,6 +40,31 @@ const OPENCODE_COOLDOWN_MAX_MS = 60_000; const EFFORT_LEVELS = ["low", "medium", "high", "max"] as const; +/** + * Models that work WITHOUT any API key on the free/noauth opencode tier. + * + * The upstream free tier rotates frequently — when a `-free` suffix model is + * delisted upstream, the upstream returns "Model X is not supported" (a separate + * issue from this gate). The set is defined by two data sources: + * + * 1. **Known free models** — models explicitly listed in the noauth + * `opencode` provider registry (`open-sse/config/providers/registry/opencode/index.ts`). + * These are the canonical free models. `deepseek-v4-flash-free` appears in both + * the noauth AND the zen registry (it is free on both tiers). + * 2. **`-free` suffix** — any model whose id ends in `-free`. This automatically + * covers upstream free-tier additions without a code deploy. + * + * For `opencode-go`, there is no free tier — ALL models require an API key. + */ +const OPENCODE_FREE_MODELS = new Set([ + "big-pickle", + "deepseek-v4-flash-free", + "mimo-v2.5-free", + "hy3-free", + "nemotron-3-ultra-free", + "north-mini-code-free", +]); + /** * Models on opencode-go that support effort-tier aliases. Each entry maps the * canonical base id to the set of effort suffixes the upstream supports. @@ -86,7 +111,31 @@ export function parseEffortLevel(model: string): { baseModel: string; effort: st return null; } +/** + * Determine whether a model requires an API key on the given opencode provider. + * + * - `opencode-go`: ALL models require a key (no free tier). + * - `opencode` / `opencode-zen`: premium = any model NOT in the free set (known + * free models OR ending in `-free`). + * - Unknown models are assumed premium (fail-safe). + */ +export function isPremiumOpencodeModel(model: string, provider: string): boolean { + // opencode-go has no free tier — every model requires a key. + if (provider === "opencode-go") return true; + + // Models ending in `-free` are always free on the noauth/zen tier. + if (model.endsWith("-free")) return false; + + // Check the known free model catalog. + return !OPENCODE_FREE_MODELS.has(model); +} + export class OpencodeExecutor extends BaseExecutor { + /** Delegates to `isPremiumOpencodeModel`. Exported for testability. */ + static isPremiumModel(model: string, provider: string): boolean { + return isPremiumOpencodeModel(model, provider); + } + _requestFormat: string | null = null; /** @@ -181,6 +230,34 @@ export class OpencodeExecutor extends BaseExecutor { async execute(input: ExecuteInput) { this._requestFormat = getModelTargetFormat(this.provider, input.model) || "openai"; + + // #8681: Gate premium opencode models behind a usable API key. + // When the connection is keyless (no apiKey, no accessToken) and the model + // is a premium model (not on the free tier), return a clear 402 error + // instead of proxying the raw upstream 401 "Missing API key" response. + const creds = input.credentials; + const isKeyless = + !creds?.apiKey && !creds?.accessToken && !creds?.providerSpecificData?.extraApiKeys; + if (isKeyless && isPremiumOpencodeModel(input.model, this.provider)) { + const bodyJson = JSON.stringify({ + error: { + message: + "This model requires an opencode API key — add one in Settings → Providers.", + type: "invalid_request_error", + code: "premium_model_requires_key", + }, + }); + return { + response: new Response(bodyJson, { + status: 402, + headers: { "Content-Type": "application/json" }, + }), + url: "", + headers: {} as Record, + transformedBody: null, + }; + } + try { this.syncAccountsFromCredentials(input.credentials); diff --git a/open-sse/executors/qoder.ts b/open-sse/executors/qoder.ts index 7dfa139462..1b19289a1a 100644 --- a/open-sse/executors/qoder.ts +++ b/open-sse/executors/qoder.ts @@ -372,8 +372,16 @@ export class QoderExecutor extends BaseExecutor { const { text, isError, errorMessage } = parseQoderCliResult(run.stdout); if (isError) { + // When qodercli exits 0 but returns is_error=true with an empty result, + // the real upstream error is almost always on stderr. Surface it instead + // of the generic "qodercli returned an error" fallback (#9319). + let effectiveError = errorMessage; + if (errorMessage === "qodercli returned an error" && run.stderr.trim()) { + const stderrTrimmed = run.stderr.trim().slice(0, 300); + effectiveError = `qodercli returned an error: ${stderrTrimmed}`; + } return { - response: createQoderErrorResponse(parseQoderCliFailure(errorMessage)), + response: createQoderErrorResponse(parseQoderCliFailure(effectiveError)), url, headers: {}, transformedBody: body, diff --git a/open-sse/executors/qwen-web.ts b/open-sse/executors/qwen-web.ts index 6c0a710862..57036a3cbb 100644 --- a/open-sse/executors/qwen-web.ts +++ b/open-sse/executors/qwen-web.ts @@ -47,8 +47,8 @@ const BX_UMIDTOKEN_FALLBACK = "T2gA0000000000000000000000000000000000000000"; // header the upstream returns HTTP 200 with `{"success":false,"data":{"code":"Bad_Request"}}` // for every completion request, even with a valid session. The version string is // the SPA build identifier shipped in the React client's `version` request header. -// Pinned from a live capture (2026-07); bump if Qwen ships a breaking change. -const QWEN_SPA_VERSION = "0.2.66"; +// Pinned from a live capture (2026-08); bump if Qwen ships a breaking change. +const QWEN_SPA_VERSION = "0.2.81"; const MODEL_ALIASES: Record = { // Legacy OmniRoute ids → current upstream catalog (GET /api/models). diff --git a/open-sse/executors/raycast.ts b/open-sse/executors/raycast.ts new file mode 100644 index 0000000000..bfa8d28028 --- /dev/null +++ b/open-sse/executors/raycast.ts @@ -0,0 +1,235 @@ +/** + * @file raycast.ts + * @description Executor for Raycast Pro AI (reverse-engineered backend.raycast.com API). + * + * @changes + * - [2026-07-27] [Composer] - Initial Raycast Pro local-dev executor + */ + +import { BaseExecutor, mergeUpstreamExtraHeaders, type ProviderCredentials } from "./base.ts"; +import { PROVIDERS } from "../config/constants.ts"; +import { sanitizeErrorMessage } from "../utils/error.ts"; +import { + RAYCAST_CHAT_URL, + buildRaycastChatBody, + buildRaycastHeaders, + parseRaycastSseText, +} from "../services/raycast.ts"; + +type JsonRecord = Record; +type ChatMessage = { role?: string; content?: unknown }; + +export class RaycastExecutor extends BaseExecutor { + constructor() { + super("raycast", PROVIDERS.raycast); + } + + buildUrl(): string { + return RAYCAST_CHAT_URL; + } + + // Not a BaseExecutor.buildHeaders override: Raycast signs headers over the exact + // request payload (2nd param is the body string, not the base's `stream` boolean), + // and execute() below is fully custom — keep it as a distinct helper so a + // polymorphic buildHeaders(credentials, true) call can never land here. + private buildRaycastRequestHeaders( + credentials: ProviderCredentials, + payload?: string + ): Record { + const body = payload || "{}"; + return buildRaycastHeaders(body, credentials as JsonRecord); + } + + async execute({ model, body, stream, credentials, signal, upstreamExtraHeaders }) { + const reqBody = body as { messages?: ChatMessage[]; temperature?: number }; + let payload: string; + + try { + payload = buildRaycastChatBody(model as string, reqBody.messages || [], reqBody.temperature); + } catch (err) { + const message = err instanceof Error ? err.message : String(err); + return { + response: new Response( + JSON.stringify({ + error: { + message: sanitizeErrorMessage(message), + type: "invalid_request_error", + code: "", + }, + }), + { status: 400, headers: { "Content-Type": "application/json" } } + ), + url: RAYCAST_CHAT_URL, + headers: {}, + transformedBody: body, + }; + } + + const headers = this.buildRaycastRequestHeaders(credentials as ProviderCredentials, payload); + mergeUpstreamExtraHeaders(headers, upstreamExtraHeaders as Record | null); + + let raycastResponse: Response; + try { + raycastResponse = await fetch(RAYCAST_CHAT_URL, { + method: "POST", + headers, + body: payload, + signal: signal || undefined, + }); + } catch (err) { + const message = err instanceof Error ? err.message : String(err); + return { + response: new Response( + JSON.stringify({ + error: { message: sanitizeErrorMessage(message), type: "api_error", code: "" }, + }), + { status: 502, headers: { "Content-Type": "application/json" } } + ), + url: RAYCAST_CHAT_URL, + headers, + transformedBody: payload, + }; + } + + if (!raycastResponse.ok) { + const errorText = await raycastResponse.text(); + return { + response: new Response( + JSON.stringify({ + error: { + message: sanitizeErrorMessage(`Raycast API error (${raycastResponse.status})`), + type: "api_error", + code: String(raycastResponse.status), + }, + }), + { status: raycastResponse.status, headers: { "Content-Type": "application/json" } } + ), + url: RAYCAST_CHAT_URL, + headers, + transformedBody: payload, + }; + } + + const responseId = `chatcmpl-raycast-${Date.now()}`; + const created = Math.floor(Date.now() / 1000); + const modelId = model as string; + + if (stream !== false) { + const raycastBody = raycastResponse.body; + if (!raycastBody) { + return { + response: new Response( + JSON.stringify({ + error: { message: "Raycast returned empty stream body", type: "api_error", code: "" }, + }), + { status: 502, headers: { "Content-Type": "application/json" } } + ), + url: RAYCAST_CHAT_URL, + headers, + transformedBody: payload, + }; + } + + const sseStream = new ReadableStream({ + async start(controller) { + const encoder = new TextEncoder(); + const reader = raycastBody.getReader(); + const decoder = new TextDecoder(); + let buffer = ""; + + try { + while (true) { + const { done, value } = await reader.read(); + if (done) break; + + buffer += decoder.decode(value, { stream: true }); + let newlineIndex: number; + while ((newlineIndex = buffer.indexOf("\n")) >= 0) { + const line = buffer.slice(0, newlineIndex).trim(); + buffer = buffer.slice(newlineIndex + 1); + if (!line.startsWith("data:")) continue; + + try { + const data = JSON.parse(line.slice(5).trim()) as { + text?: string; + finish_reason?: string | null; + complete?: boolean; + }; + const hasContent = typeof data.text === "string" && data.text.length > 0; + const hasFinishReason = + data.finish_reason !== undefined && data.finish_reason !== null; + if (data.complete || (!hasContent && !hasFinishReason)) continue; + + const chunk = { + id: responseId, + object: "chat.completion.chunk", + created, + model: modelId, + choices: [ + { + index: 0, + delta: { content: data.text || "" }, + finish_reason: hasFinishReason ? data.finish_reason : null, + }, + ], + }; + controller.enqueue(encoder.encode(`data: ${JSON.stringify(chunk)}\n\n`)); + } catch { + // Ignore malformed SSE data. + } + } + } + controller.enqueue(encoder.encode("data: [DONE]\n\n")); + controller.close(); + } catch (err) { + controller.error(err); + } + }, + }); + + return { + response: new Response(sseStream, { + status: 200, + headers: { + "Content-Type": "text/event-stream", + "Cache-Control": "no-cache", + Connection: "keep-alive", + }, + }), + url: RAYCAST_CHAT_URL, + headers, + transformedBody: payload, + }; + } + + const responseText = await raycastResponse.text(); + const content = parseRaycastSseText(responseText); + + return { + response: new Response( + JSON.stringify({ + id: responseId, + object: "chat.completion", + created, + model: modelId, + choices: [ + { + index: 0, + message: { role: "assistant", content, refusal: null }, + finish_reason: "stop", + }, + ], + usage: { + prompt_tokens: 0, + completion_tokens: 0, + total_tokens: 0, + }, + }), + { status: 200, headers: { "Content-Type": "application/json" } } + ), + url: RAYCAST_CHAT_URL, + headers, + transformedBody: payload, + }; + } +} diff --git a/open-sse/executors/veoaifree-web.ts b/open-sse/executors/veoaifree-web.ts index 269da61f31..d08acad4dd 100644 --- a/open-sse/executors/veoaifree-web.ts +++ b/open-sse/executors/veoaifree-web.ts @@ -102,7 +102,7 @@ async function fetchWithTimeout( function waitForDuration(ms: number, signal?: AbortSignal): Promise { throwIfAborted(signal); let abort: (() => void) | undefined; - return new Promise((resolve, reject) => { + return new Promise((resolve, reject) => { const timeout = setTimeout(resolve, ms); abort = () => { clearTimeout(timeout); diff --git a/open-sse/executors/vertex.ts b/open-sse/executors/vertex.ts index 0344a456d6..9d9ed6502f 100644 --- a/open-sse/executors/vertex.ts +++ b/open-sse/executors/vertex.ts @@ -138,13 +138,149 @@ function isPartnerModel(model: string) { return [...PARTNER_MODELS].some((prefix) => normalizedModel.startsWith(prefix)); } +// Anthropic models need their own branch: they use Vertex's native Anthropic Messages API +// (publishers/anthropic/.../rawPredict), not the generic OpenAI-compatible partner endpoint the +// other PARTNER_MODELS entries (DeepSeek, Qwen, Llama, Mistral, GLM) go through — the OpenAI-shaped +// endpoint 404s/"malformed argument"s for Claude models on at least some projects. +function isClaudeModel(model: string) { + return model.toLowerCase().startsWith("claude-"); +} + +// Defensive normalizer: target-format resolution for manually-added custom Claude models under +// "vertex"/"vertex-partner" was observed sending a Gemini-shaped body (contents/parts) to the +// Anthropic rawPredict endpoint instead of the configured "claude" format, causing a hard +// "messages: Field required" error upstream regardless of the stored per-model targetFormat. This +// converts a Gemini-shaped body to Anthropic Messages shape so the executor works either way, +// independent of that unresolved upstream resolution gap. +function toAnthropicBody(body: Record): Record { + const contents = body.contents as Array<{ role?: string; parts?: Array<{ text?: string }> }> | undefined; + if (!Array.isArray(contents)) return body; + + const messages = contents.map((c) => ({ + role: c.role === "model" ? "assistant" : "user", + content: (c.parts || []).map((p) => p.text || "").join(""), + })); + const generationConfig = body.generationConfig as { maxOutputTokens?: number } | undefined; + const systemInstruction = body.systemInstruction as { parts?: Array<{ text?: string }> } | undefined; + + const converted: Record = { + messages, + max_tokens: generationConfig?.maxOutputTokens || 4096, + }; + if (systemInstruction?.parts?.length) { + converted.system = systemInstruction.parts.map((p) => p.text || "").join(""); + } + return converted; +} + +// rawPredict always returns a single complete JSON body, never real SSE framing (see buildUrl). +// When the caller actually requested a stream, synthesize a genuine Anthropic-native event +// sequence from that JSON so the existing claude-to-openai.ts (and sibling) response translators +// — which already parse real message_start/content_block_*/message_delta/message_stop events — +// can consume it correctly, instead of relying on the OpenAI-`choices`-only JSON→SSE fallback +// (open-sse/utils/jsonToSse.ts) which cannot represent Anthropic's native response shape at all. +function synthesizeClaudeSse(response: Record): string { + const messageId = typeof response.id === "string" ? response.id : `msg_${Date.now()}`; + const model = typeof response.model === "string" ? response.model : ""; + const usage = (response.usage as Record) || {}; + const stopReason = typeof response.stop_reason === "string" ? response.stop_reason : "end_turn"; + const stopSequence = (response.stop_sequence as string | null | undefined) ?? null; + const content = Array.isArray(response.content) ? response.content : []; + + const events: Array<{ event: string; data: Record }> = []; + + events.push({ + event: "message_start", + data: { + type: "message_start", + message: { + id: messageId, + type: "message", + role: "assistant", + content: [], + model, + stop_reason: null, + stop_sequence: null, + usage: { input_tokens: usage.input_tokens || 0, output_tokens: 0 }, + }, + }, + }); + + content.forEach((block: Record, index: number) => { + if (block.type === "text") { + events.push({ + event: "content_block_start", + data: { type: "content_block_start", index, content_block: { type: "text", text: "" } }, + }); + if (block.text) { + events.push({ + event: "content_block_delta", + data: { + type: "content_block_delta", + index, + delta: { type: "text_delta", text: block.text }, + }, + }); + } + events.push({ event: "content_block_stop", data: { type: "content_block_stop", index } }); + } else if (block.type === "tool_use") { + events.push({ + event: "content_block_start", + data: { + type: "content_block_start", + index, + content_block: { type: "tool_use", id: block.id, name: block.name, input: {} }, + }, + }); + events.push({ + event: "content_block_delta", + data: { + type: "content_block_delta", + index, + delta: { type: "input_json_delta", partial_json: JSON.stringify(block.input ?? {}) }, + }, + }); + events.push({ event: "content_block_stop", data: { type: "content_block_stop", index } }); + } else if (block.type === "thinking") { + events.push({ + event: "content_block_start", + data: { type: "content_block_start", index, content_block: { type: "thinking", thinking: "" } }, + }); + if (block.thinking) { + events.push({ + event: "content_block_delta", + data: { + type: "content_block_delta", + index, + delta: { type: "thinking_delta", thinking: block.thinking }, + }, + }); + } + events.push({ event: "content_block_stop", data: { type: "content_block_stop", index } }); + } + }); + + events.push({ + event: "message_delta", + data: { + type: "message_delta", + delta: { stop_reason: stopReason, stop_sequence: stopSequence }, + usage: { output_tokens: usage.output_tokens || 0 }, + }, + }); + + events.push({ event: "message_stop", data: { type: "message_stop" } }); + + return events.map((e) => `event: ${e.event}\ndata: ${JSON.stringify(e.data)}\n\n`).join(""); +} + export class VertexExecutor extends BaseExecutor { constructor() { super("vertex", PROVIDERS.vertex); } async execute(input: ExecuteInput) { - const { credentials, log } = input; + const { credentials, log, model, stream } = input; // Defensive: trim stray surrounding whitespace from a pasted credential. if (typeof credentials.apiKey === "string") { credentials.apiKey = credentials.apiKey.trim(); @@ -160,7 +296,53 @@ export class VertexExecutor extends BaseExecutor { throw err; } } - return super.execute(input); + if (isClaudeModel(model) && input.body && typeof input.body === "object") { + let body = input.body as Record; + if (!Array.isArray(body.messages)) { + body = toAnthropicBody(body); + input.body = body; + } + // The rawPredict endpoint requires "anthropic_version" in the body (Vertex's substitute + // for the "anthropic-version" header used by Anthropic's direct API). + body.anthropic_version ??= "vertex-2023-10-16"; + // Unlike Anthropic's direct API (which reads the model from the body), Vertex's + // rawPredict endpoint already encodes project/region/model in the URL and 400s with + // "model: Extra inputs are not permitted" if the translated request body still carries + // one (the openai→claude request translator copies the client's model field over). + delete body.model; + } + + const result = await super.execute(input); + + if (isClaudeModel(model) && stream) { + const response = result instanceof Response ? result : result?.response; + if (response?.ok) { + const contentType = response.headers.get("content-type") || ""; + if (contentType.includes("application/json") && !contentType.includes("text/event-stream")) { + const jsonText = await response.text(); + let newBody = jsonText; + let newContentType = contentType; + try { + newBody = synthesizeClaudeSse(JSON.parse(jsonText)); + newContentType = "text/event-stream"; + } catch (err) { + const message = err instanceof Error ? err.message : String(err); + log?.warn?.("VERTEX", `Failed to synthesize Claude SSE stream: ${message}`); + } + const newHeaders = new Headers(response.headers); + newHeaders.set("content-type", newContentType); + newHeaders.delete("content-length"); + const newResponse = new Response(newBody, { + status: response.status, + statusText: response.statusText, + headers: newHeaders, + }); + return result instanceof Response ? newResponse : { ...result, response: newResponse }; + } + } + } + + return result; } buildUrl(model: string, stream: boolean, urlIndex = 0, credentials: any = null) { @@ -189,6 +371,13 @@ export class VertexExecutor extends BaseExecutor { } } + if (isClaudeModel(model)) { + // streamRawPredict?alt=sse was verified to return a single plain JSON body (not real SSE + // framing) rather than actual chunked events, which breaks the SSE parser upstream + // ("stream ended before producing a non-ping SSE event"). rawPredict is confirmed reliable + // for both streaming and non-streaming requests; always use it here. + return `https://aiplatform.googleapis.com/v1/projects/${project}/locations/${region}/publishers/anthropic/models/${model}:rawPredict`; + } if (isPartnerModel(model)) { return `https://aiplatform.googleapis.com/v1/projects/${project}/locations/global/endpoints/openapi/chat/completions`; } diff --git a/open-sse/executors/windsurf.ts b/open-sse/executors/windsurf.ts index d87e245149..782e48e4b7 100644 --- a/open-sse/executors/windsurf.ts +++ b/open-sse/executors/windsurf.ts @@ -168,7 +168,7 @@ function encodeVarint(value: number): Uint8Array { return new Uint8Array(bytes); } -function concatBytes(arrays: Uint8Array[]): Uint8Array { +function concatBytes(arrays: Uint8Array[]): Uint8Array { const total = arrays.reduce((n, a) => n + a.length, 0); const out = new Uint8Array(total); let off = 0; @@ -626,7 +626,8 @@ export class WindsurfExecutor extends BaseExecutor { const { done, value } = await reader.read(); if (done) break; if (!value) continue; - pending = pending.length === 0 ? value : concatBytes([pending, value]); + pending = + pending.length === 0 ? Uint8Array.from(value) : concatBytes([pending, value]); drainFrames(); } } finally { diff --git a/open-sse/executors/xai.ts b/open-sse/executors/xai.ts index 5fc6217729..f9b92fa1f6 100644 --- a/open-sse/executors/xai.ts +++ b/open-sse/executors/xai.ts @@ -1,6 +1,7 @@ import { BaseExecutor, type ExecutorLog, type ProviderCredentials } from "./base.ts"; import { PROVIDERS } from "../config/constants.ts"; import { getModelTargetFormat } from "../config/providerModels.ts"; +import { isResponsesEndpointPath } from "../utils/responsesEndpoint.ts"; type JsonRecord = Record; @@ -52,21 +53,18 @@ export class XaiExecutor extends BaseExecutor { super(provider, PROVIDERS[provider]); } - /** - * Port of decolua/9router#2439 (author: @ryanngit): xAI ships a native - * `/v1/responses` endpoint alongside `/v1/chat/completions`. Models tagged - * `targetFormat: "openai-responses"` in the registry (currently - * grok-4.20-multi-agent-0309, per upstream) resolve to that endpoint instead - * of the default chat-completions bridge. The per-model registry tag is the - * single source of truth — it also drives chatCore's body translation — so - * the URL stays in lockstep with the translated body, mirroring the gh - * executor's targetFormat-driven routing (9router#102) and the "openai" - * -pro heuristic in open-sse/executors/default.ts. - */ - buildUrl(model: string, _stream: boolean, _urlIndex = 0) { + buildUrl( + model: string, + _stream: boolean, + _urlIndex = 0, + credentials: ProviderCredentials | null = null + ) { if (getModelTargetFormat(this.provider, model) === "openai-responses") { return this.config.responsesBaseUrl || this.config.baseUrl; } + if (isResponsesEndpointPath(credentials?.requestEndpointPath)) { + return this.config.responsesBaseUrl || this.config.baseUrl; + } return this.config.baseUrl; } @@ -127,6 +125,14 @@ export class XaiExecutor extends BaseExecutor { if (!record) return cleaned; const out: JsonRecord = { ...record }; + const nativeXaiPassthrough = record._nativeXaiResponsesPassthrough === true; + delete out._nativeXaiResponsesPassthrough; + delete out._nativeCodexPassthrough; + + if (nativeXaiPassthrough || getModelTargetFormat(this.provider, model) === "openai-responses") { + return out; + } + let modelId = typeof out.model === "string" ? out.model : model; let suffixEffort: string | null = null; diff --git a/open-sse/executors/yuanbao-web.ts b/open-sse/executors/yuanbao-web.ts index 75a3d2c615..243e9ba7ae 100644 --- a/open-sse/executors/yuanbao-web.ts +++ b/open-sse/executors/yuanbao-web.ts @@ -457,9 +457,12 @@ function transformYuanbaoStream( if (event.type === "think" && event.content) { ensureRole(); emit({ reasoning_content: event.content }); - } else if (event.type === "text" && typeof event.msg === "string" && event.msg) { - ensureRole(); - emit({ content: event.msg }); + } else if (event.type === "text") { + const text = event.msg ?? event.content; + if (text) { + ensureRole(); + emit({ content: text }); + } } } } @@ -498,7 +501,10 @@ async function collectYuanbaoResponse( const event = parseYuanbaoDataLine(line); if (!event) continue; if (event.type === "think" && event.content) reasoning += event.content; - else if (event.type === "text" && typeof event.msg === "string") content += event.msg; + else if (event.type === "text") { + const text = event.msg ?? event.content; + if (text) content += text; + } } } } finally { diff --git a/open-sse/handlers/audioSpeech.ts b/open-sse/handlers/audioSpeech.ts index b931f6d543..912c81e27f 100644 --- a/open-sse/handlers/audioSpeech.ts +++ b/open-sse/handlers/audioSpeech.ts @@ -228,6 +228,35 @@ async function handleDeepgramSpeech(providerConfig, body, modelId, token) { return audioStreamResponse(res); } +/** + * Handle Soniox TTS (OpenAI speech shape → Soniox /tts, returns raw audio bytes) + */ +async function handleSonioxSpeech(providerConfig, body, modelId, token) { + const fmt = typeof body.response_format === "string" ? body.response_format : "mp3"; + const audioFormat = fmt === "pcm" ? "pcm_s16le" : fmt; + + const res = await fetch(providerConfig.baseUrl, { + method: "POST", + headers: { + "Content-Type": "application/json", + ...buildAuthHeaders(providerConfig, token), + }, + body: JSON.stringify({ + text: body.input, + model: modelId, + ...(body.voice ? { voice: body.voice } : {}), + audio_format: audioFormat, + }), + }); + + if (!res.ok) { + return upstreamErrorResponse(res, await res.text()); + } + + const contentType = fmt === "wav" ? "audio/wav" : fmt === "opus" ? "audio/opus" : "audio/mpeg"; + return audioStreamResponse(res, contentType); +} + /** * Handle ElevenLabs TTS * POST {baseUrl}/{voice_id} with { text, model_id } @@ -846,6 +875,10 @@ export async function handleAudioSpeech({ return handleDeepgramSpeech(providerConfig, body, modelId, token); } + if (providerConfig.format === "soniox-tts") { + return handleSonioxSpeech(providerConfig, body, modelId, token); + } + if (providerConfig.format === "elevenlabs") { return handleElevenLabsSpeech(providerConfig, body, modelId, token); } diff --git a/open-sse/handlers/audioTranscription.ts b/open-sse/handlers/audioTranscription.ts index aea16a0377..9fe9d2277e 100644 --- a/open-sse/handlers/audioTranscription.ts +++ b/open-sse/handlers/audioTranscription.ts @@ -336,6 +336,78 @@ async function handleGladiaTranscription(providerConfig, file, modelId, token) { return errorResponse(504, "Gladia transcription timed out after 120s"); } +/** + * Handle Soniox transcription (async: upload file → create job → poll → get transcript) + */ +async function handleSonioxTranscription(providerConfig, file, modelId, token) { + const authHeaders = buildAuthHeaders(providerConfig, token); + + const { body: uploadBody, contentType: uploadContentType } = await buildMultipartBody(file, {}); + const uploadRes = await fetch("https://api.soniox.com/v1/files", { + method: "POST", + headers: { ...authHeaders, "Content-Type": uploadContentType }, + body: uploadBody, + }); + if (!uploadRes.ok) { + return upstreamErrorResponse(uploadRes, await uploadRes.text()); + } + const fileId = (await uploadRes.json()).id; + + const createRes = await fetch(providerConfig.baseUrl, { + method: "POST", + headers: { ...authHeaders, "Content-Type": "application/json" }, + body: JSON.stringify({ + model: modelId, + file_id: fileId, + enable_language_identification: true, + }), + }); + if (!createRes.ok) { + return upstreamErrorResponse(createRes, await createRes.text()); + } + const { id: transcriptionId } = await createRes.json(); + + const statusUrl = `${providerConfig.baseUrl}/${transcriptionId}`; + const maxWait = 120_000; + const start = Date.now(); + let completed = false; + while (Date.now() - start < maxWait) { + await new Promise((r) => setTimeout(r, 2000)); + const pollRes = await fetch(statusUrl, { headers: authHeaders }); + if (!pollRes.ok) { + continue; + } + const result = await pollRes.json(); + if (result.status === "completed") { + completed = true; + break; + } + if (result.status === "error") { + return errorResponse( + 500, + result.error_message || result.error || "Soniox transcription failed" + ); + } + } + if (!completed) { + return errorResponse(504, "Soniox transcription timed out after 120s"); + } + + const transcriptRes = await fetch(`${statusUrl}/transcript`, { headers: authHeaders }); + if (!transcriptRes.ok) { + return upstreamErrorResponse(transcriptRes, await transcriptRes.text()); + } + const transcript = await transcriptRes.json(); + const text = + typeof transcript.text === "string" && transcript.text.length > 0 + ? transcript.text + : Array.isArray(transcript.tokens) + ? transcript.tokens.map((t: { text?: string }) => t.text ?? "").join("") + : ""; + + return Response.json({ text }, { headers: { ...CORS_HEADERS } }); +} + /** * Handle Nvidia NIM transcription * Multipart POST, transform response to { text } @@ -735,6 +807,10 @@ export async function handleAudioTranscription({ return handleGladiaTranscription(providerConfig, file, modelId, token); } + if (providerConfig.format === "soniox") { + return handleSonioxTranscription(providerConfig, file, modelId, token); + } + if (providerConfig.format === "nvidia-asr") { return handleNvidiaTranscription(providerConfig, file, modelId, token); } diff --git a/open-sse/handlers/chatCore.ts b/open-sse/handlers/chatCore.ts index 028590a09e..2b110b47f4 100644 --- a/open-sse/handlers/chatCore.ts +++ b/open-sse/handlers/chatCore.ts @@ -1,6 +1,7 @@ import { injectMemoryAndSkills } from "./chatCore/memorySkillsInjection.ts"; import { resolveChatCoreRequestSetup } from "./chatCore/requestSetup.ts"; import { buildFailureUsageRecord } from "./chatCore/failureUsage.ts"; +import { estimateFinalInputTokens } from "./chatCore/contextEstimation.ts"; import { extractSystemRoleMessages } from "./chatCore/claudeSystemRole.ts"; export { extractSystemRoleMessages } from "./chatCore/claudeSystemRole.ts"; import { checkIdempotencyCache } from "./chatCore/idempotency.ts"; @@ -38,6 +39,8 @@ import { } from "./chatCore/executorHelpers.ts"; import { shouldUseNativeCodexPassthrough, + shouldUseNativeXaiResponsesPassthrough, + stampNativeResponsesPassthroughBody, redactPassthroughThinkingSignatures, isClaudeCodeSemanticPassthroughRequest, } from "./chatCore/passthroughHelpers.ts"; @@ -56,6 +59,7 @@ import { // symbols from chatCore.ts (tests, sibling modules) keep resolving after the split. export { shouldUseNativeCodexPassthrough, + shouldUseNativeXaiResponsesPassthrough, redactPassthroughThinkingSignatures, isClaudeCodeSemanticPassthroughRequest, buildStreamingResponseHeaders, @@ -79,6 +83,7 @@ import { FORMATS } from "../translator/formats.ts"; import { collectCustomToolNamesForSourceFormat } from "../translator/request/openai-responses/additionalTools.ts"; import { sanitizeKiroTools } from "../utils/kiroSanitizer.ts"; import { splitMisplacedToolResults } from "../translator/helpers/claudeHelper.ts"; +import { ensureCacheControlOnLastUserMessage } from "../services/claudeCodeConstraints.ts"; import { createSSETransformStreamWithLogger, createPassthroughStreamWithLogger, @@ -119,6 +124,7 @@ import { normalizeClaudeAdaptiveThinking, normalizeClaudeDisabledThinkingEffort, } from "../services/claudeAdaptiveThinking.ts"; +import { shouldUseMidConversationSystem } from "../executors/claudeIdentity.ts"; import { normalizeClaudeHaikuConstraints } from "../services/claudeHaikuConstraints.ts"; import { applyDefaultReasoningEffort } from "../services/defaultReasoningEffort.ts"; import { echoModelInObject } from "../services/responseModelEcho.ts"; @@ -133,6 +139,7 @@ import { supportsMaxTokens, getResolvedModelCapabilities, getExplicitModelOutputCap, + resolveInputTokenCapForGate, } from "@/lib/modelCapabilities.ts"; import { toPositiveInteger } from "../services/reasoningTokenBuffer.ts"; import { normalizeThinkingForModel } from "@/shared/constants/modelSpecs.ts"; @@ -216,8 +223,9 @@ import { recordCost } from "@/domain/costRules"; import { calculateCost } from "@/lib/usage/costCalculator"; import { buildClaudePassthroughToolNameMap, - restoreClaudePassthroughToolNames, mergeResponseToolNameMap, + normalizeOpenAIToolFinishReasons, + restoreNonStreamingToolNames, } from "./chatCore/passthroughToolNames.ts"; import { resolveCompressionSettings } from "./chatCore/compressionSettings.ts"; import { isCompressionExcluded } from "../services/compression/exclusions.ts"; @@ -296,6 +304,7 @@ import { markBlocked as markAccountSemaphoreBlocked, } from "../services/accountSemaphore.ts"; import { lockModel, lockModelIfPerModelQuota } from "../services/accountFallback.ts"; +import { lockExactModel } from "../services/accountFallback.ts"; import { generateSignature, getCachedResponse, @@ -481,9 +490,10 @@ export async function handleChatCore({ model, provider, apiKeyInfo, + headers: clientRawRequest?.headers, log, }); - if (pluginGate.blocked) { + if (pluginGate.blocked === true) { return { success: false, status: 403, @@ -626,6 +636,7 @@ export async function handleChatCore({ sourceFormat, isResponsesEndpoint, nativeCodexPassthrough, + nativeXaiResponsesPassthrough, isDroidCLI, isOpencodeClient, copilotCompatibleReasoning, @@ -746,7 +757,9 @@ export async function handleChatCore({ sourceFormat, customModelTargetFormat, providerSpecificData: credentials?.providerSpecificData, + nativeXaiResponsesPassthrough, }); + const nativeResponsesPassthrough = nativeCodexPassthrough || nativeXaiResponsesPassthrough; const initialProviderRequest = body && typeof body === "object" && !Array.isArray(body) @@ -786,7 +799,7 @@ export async function handleChatCore({ provider, sourceFormat, targetFormat, - nativeCodexPassthrough, + nativeCodexPassthrough: nativeResponsesPassthrough, interceptSearchOverride, }); if (webSearchFallbackPlan.enabled) { @@ -804,7 +817,7 @@ export async function handleChatCore({ provider, sourceFormat, targetFormat, - nativeCodexPassthrough, + nativeCodexPassthrough: nativeResponsesPassthrough, interceptFetchOverride, }); if (webFetchFallbackPlan.enabled) { @@ -910,6 +923,15 @@ export async function handleChatCore({ ? credentials.providerSpecificData.customUserAgent.trim() : ""; + // #8369: connection-level custom upstream headers from provider_specific_data. + const connectionCustomHeaders = + credentials?.providerSpecificData && + typeof credentials.providerSpecificData === "object" && + typeof credentials.providerSpecificData.customHeaders === "object" && + !Array.isArray(credentials.providerSpecificData.customHeaders) + ? (credentials.providerSpecificData.customHeaders as Record) + : undefined; + // Upstream extra-header building extracted to chatCore/upstreamExecuteHeaders.ts (#3501); bind the // per-request inputs once and delegate so the existing call sites stay byte-identical. const buildUpstreamHeadersForExecute = (modelToCall: string): Record => @@ -921,6 +943,7 @@ export async function handleChatCore({ resolvedModel, sourceFormat, connectionCustomUserAgent, + connectionCustomHeaders, settings, }); @@ -1084,6 +1107,10 @@ export async function handleChatCore({ // settings read below, then threaded to executor.execute() further down. Lives at // function scope because the read happens inside the per-message compression block. let contextEditingEnabled = false; + // The dashboard's global compression switch must also control the built-in + // reactive and last-resort compaction passes. Otherwise an operator selecting + // "off" still has large histories rewritten by trim_tools/purify_history. + let reactiveContextCompactionEnabled = false; // Hoisted to function scope (not just the compression-block scope below) so the // combo-resolved override survives to the final enforceOutputTokenBudget() call // further down — see #8378 (context limit resolved by the combo was silently @@ -1100,6 +1127,7 @@ export async function handleChatCore({ compressionSettings?.exclusions ); let promptCompressionEnabled = compressionSettingsResult.enabled && !compressionExcluded; + reactiveContextCompactionEnabled = compressionSettingsResult.enabled && !compressionExcluded; contextEditingEnabled = compressionSettingsResult.contextEditingEnabled; if (compressionExcluded) { void writeCompressionSkip( @@ -1697,14 +1725,16 @@ export async function handleChatCore({ comboConfig as unknown as { name: string; models: unknown[] }, allCombosData as unknown as { name: string; models: unknown[] }[] ); - comboTargetLimits = targets.map((t: { modelStr?: string; provider?: string }) => - // Fall back to ResolvedComboTarget.provider when modelStr lacks a - // provider/ prefix — parseModel alone returns provider:null (#8716). - getComboTargetTokenLimit({ - modelStr: t.modelStr, - provider: t.provider, - }) - ); + // Fall back to ResolvedComboTarget.provider when modelStr lacks a + // provider/ prefix — parseModel alone returns provider:null (#8716). + comboTargetLimits = targets + .map((t: { modelStr?: string; provider?: string }) => + getComboTargetTokenLimit({ modelStr: t.modelStr, provider: t.provider }) + ) + .filter( + (limit): limit is number => + typeof limit === "number" && Number.isFinite(limit) && limit > 0 + ); } // chatCore executes per concrete target (handleSingleModel resolves // provider/effectiveModel before delegating). Compress against THIS @@ -1749,7 +1779,7 @@ export async function handleChatCore({ // engines (Caveman/RTK). Codex Desktop / Responses clients need this path even // when those engines are off, otherwise multi-turn image sessions hard-reject // at the budget check below (#8560). - if (estimatedTokens > threshold) { + if (reactiveContextCompactionEnabled && estimatedTokens > threshold) { log?.info?.( "CONTEXT", `Proactive compression triggered: ${estimatedTokens} tokens > ${threshold} threshold (${contextLimit} limit)` @@ -1809,27 +1839,6 @@ export async function handleChatCore({ // filtering is advisory and may preserve an all-incompatible pool; this is the // hard boundary that prevents a too-large prompt (or a negative token budget) // from reaching an OpenAI-compatible upstream such as NVIDIA NIM. - const estimateFinalInputTokens = (requestBody: Record | null | undefined) => { - const adapted = requestBody - ? adaptBodyForCompression(requestBody as Record).body - : null; - const messages = - adapted?.messages || - requestBody?.contents || - requestBody?.request?.contents || - (Array.isArray(requestBody?.input) - ? requestBody.input - : requestBody?.input && typeof requestBody.input === "object" - ? requestBody.input - : []); - return ( - estimateTokens(messages) + - (Array.isArray(requestBody?.tools) ? estimateTokens(requestBody.tools) : 0) + - estimateTokens(requestBody?.system) + - estimateTokens(requestBody?.instructions) - ); - }; - let finalEstimatedInputTokens = estimateFinalInputTokens(body as Record); // Reuse the already-resolved `contextLimit` (may have been narrowed to the // per-target combo window above, resolveComboContextLimit) instead of a bare @@ -1840,7 +1849,7 @@ export async function handleChatCore({ // Last-resort compaction against the concrete input budget (not the 70% threshold). // Covers cases where the proactive pass was skipped or still left the request oversized (#8560). - if (finalEstimatedInputTokens >= finalContextLimit && body) { + if (reactiveContextCompactionEnabled && finalEstimatedInputTokens >= finalContextLimit && body) { const lastResortTarget = Math.max(1, finalContextLimit - toolsReserve - 1); const lastResortAdapter = adaptBodyForCompression(body as Record); const lastResortResult = compressContext(lastResortAdapter.body, { @@ -1864,11 +1873,6 @@ export async function handleChatCore({ } } - // Key the lookup by { provider, model } — the bare-string form resolves to - // `provider: null`, which skips both the registry cap and the operator's - // `max_token` capability override (#6524), the documented escape hatch for a - // wrong synced `limit_output`. Clamping against a stale spec while the operator - // raised the ceiling would silently truncate output. const modelOutputCap = toPositiveInteger( getExplicitModelOutputCap({ provider, model: effectiveModel }) ); @@ -1877,13 +1881,15 @@ export async function handleChatCore({ finalEstimatedInputTokens, finalContextLimit, targetFormat === FORMATS.CLAUDE && sourceFormat !== FORMATS.CLAUDE ? DEFAULT_MAX_TOKENS : 0, - modelOutputCap + modelOutputCap, + toPositiveInteger(resolveInputTokenCapForGate({ provider, model: effectiveModel }, { isCombo })) ); - if (!outputBudget.ok) { + if (outputBudget.ok === false) { + const exceededInputCap = outputBudget.maxInputTokens !== undefined; const message = - `Input exceeds the context window for ${provider}/${effectiveModel}: ` + - `estimated ${outputBudget.estimatedInputTokens} input tokens, limit ${outputBudget.contextLimit}. ` + - "Reduce the prompt or route to a model with a larger context window."; + `Input exceeds ${exceededInputCap ? "maximum input tokens" : "context window"} for ${provider}/${effectiveModel}: ` + + `estimated ${outputBudget.estimatedInputTokens} input tokens, ${exceededInputCap ? `max input ${outputBudget.maxInputTokens}` : `limit ${outputBudget.contextLimit}`}. ` + + `Reduce the prompt or route to a model with a larger ${exceededInputCap ? "input limit" : "context window"}.`; log?.warn?.("CONTEXT", message); trackPendingRequest(model, provider, connectionId, false); return createErrorResult( @@ -1974,9 +1980,17 @@ export async function handleChatCore({ ) => normalizeClaudeUpstreamMessagesFor(payload, options, log); try { - if (nativeCodexPassthrough) { - translatedBody = { ...body, _nativeCodexPassthrough: true }; - log?.debug?.("FORMAT", "native codex passthrough enabled"); + if (nativeResponsesPassthrough) { + translatedBody = stampNativeResponsesPassthroughBody( + body, + nativeCodexPassthrough ? "codex" : "xai" + ); + log?.debug?.( + "FORMAT", + nativeCodexPassthrough + ? "native codex passthrough enabled" + : "native xAI Responses Agent Tools passthrough enabled" + ); } else if (isClaudeCodeCompatible) { let normalizedForCc = { ...body }; @@ -2065,20 +2079,23 @@ export async function handleChatCore({ } } - // Fix #2468: always extract role:"system" → top-level system. - // The semantic passthrough correctly skips the Claude→OpenAI→Claude - // round-trip, but even pure Claude bodies may carry system content as - // role:"system" messages rather than the top-level system field, which - // Anthropic's Messages API now rejects with a 400. + // Legacy models reject role:"system" messages. Opus accepts them behind + // its beta, and hoisting them breaks the prompt cache prefix. if (isClaudeCodeSemanticPassthrough) { - // Only lift system/developer messages — preserves Claude Code's - // native payload structure (documents, tool chains, thinking, etc.) - extractSystemRoleMessages(translatedBody); + if ( + provider !== "claude" || + !shouldUseMidConversationSystem(translatedBody, effectiveModel) + ) { + extractSystemRoleMessages(translatedBody); + } if (Array.isArray(translatedBody.messages)) { translatedBody.messages = splitMisplacedToolResults( translatedBody.messages as ClaudeMessage[] ) as typeof translatedBody.messages; } + if (provider === "claude") { + ensureCacheControlOnLastUserMessage(translatedBody); + } } else { normalizeClaudeUpstreamMessages(translatedBody, { preserveToolResultBlocks: true }); } @@ -2290,10 +2307,24 @@ export async function handleChatCore({ const nativeClaudeToolNameMap = isClaudePassthrough ? buildClaudePassthroughToolNameMap(body) : null; - const toolNameMap = + let toolNameMap: Map | null = translatedToolNameMap instanceof Map && translatedToolNameMap.size > 0 ? translatedToolNameMap : nativeClaudeToolNameMap; + + // For providers whose _toolNameMap was extracted as requestToolIdentityMap + // before the Kiro merge block (Gemini/Antigravity), merge it into the + // response toolNameMap so the response translator can restore tool names + // from their lowercased form (#9568). Only merge string-valued entries + // (tool name aliases), not object-valued namespace identities (#7936). + if (!toolNameMap && requestToolIdentityMap instanceof Map && requestToolIdentityMap.size > 0) { + const hasStringValues = [...requestToolIdentityMap.values()].every( + (v: unknown) => typeof v === "string" + ); + if (hasStringValues) { + toolNameMap = requestToolIdentityMap; + } + } delete translatedBody._toolNameMap; delete translatedBody._disableToolPrefix; @@ -2611,7 +2642,7 @@ export async function handleChatCore({ const getExecutionCredentials = () => resolveExecutionCredentialsFor({ credentials, - nativeCodexPassthrough, + nativeCodexPassthrough: nativeResponsesPassthrough, endpointPath, targetFormat, provider, @@ -3696,7 +3727,8 @@ export async function handleChatCore({ markAccountSemaphoreBlocked(accountSemaphoreKey, quotaCooldownMs); } if (isModelScope() && errorConnectionId) { - lockModel(provider, errorConnectionId, model, "quota_exhausted", quotaCooldownMs); + const lockFn = provider === "antigravity" ? lockExactModel : lockModel; + lockFn(provider, errorConnectionId, model, "quota_exhausted", quotaCooldownMs); console.warn( `[provider] Node ${errorConnectionId} ModelScope model quota exhausted (${statusCode}) for ${model} - ${Math.ceil(quotaCooldownMs / 1000)}s (connection stays active)` ); @@ -4191,14 +4223,14 @@ export async function handleChatCore({ } } - const responseToolNameMap = mergeResponseToolNameMap( + const restoreClaudeNames = sourceFormat === FORMATS.CLAUDE && targetFormat === FORMATS.CLAUDE; + let responseToolNameMap: Map | null; + [responseBody, responseToolNameMap] = restoreNonStreamingToolNames( + responseBody, toolNameMap, - (finalBody as Record | null | undefined) ?? null + finalBody, + restoreClaudeNames ); - - if (sourceFormat === FORMATS.CLAUDE && targetFormat === FORMATS.CLAUDE) { - responseBody = restoreClaudePassthroughToolNames(responseBody, responseToolNameMap); - } reqLogger.logProviderResponse( providerResponse.status, providerResponse.statusText, @@ -4294,17 +4326,7 @@ export async function handleChatCore({ } // T18: Normalize finish_reason to 'tool_calls' if tool calls are present - if (translatedResponse?.choices) { - for (const choice of translatedResponse.choices) { - if ( - choice.message?.tool_calls && - choice.message.tool_calls.length > 0 && - choice.finish_reason !== "tool_calls" - ) { - choice.finish_reason = "tool_calls"; - } - } - } + normalizeOpenAIToolFinishReasons(translatedResponse); // Reasoning Replay Cache (#1628): Capture reasoning_content from non-streaming responses // with tool_calls so it can be replayed on subsequent turns (DeepSeek V4, Kimi K2, etc.) @@ -4601,6 +4623,7 @@ export async function handleChatCore({ model, provider, apiKeyInfo, + headers: clientRawRequest?.headers, response: { status: 200, data: translatedResponse }, }); @@ -4991,6 +5014,7 @@ export async function handleChatCore({ model, provider, apiKeyInfo, + headers: clientRawRequest?.headers, response: { status: 200, streamed: true }, }); diff --git a/open-sse/handlers/chatCore/clientUsageBuffer.ts b/open-sse/handlers/chatCore/clientUsageBuffer.ts index 754c4f0811..a916edc1de 100644 --- a/open-sse/handlers/chatCore/clientUsageBuffer.ts +++ b/open-sse/handlers/chatCore/clientUsageBuffer.ts @@ -24,10 +24,13 @@ import { estimateUsage as defaultEstimateUsage, } from "../../utils/usageTracking.ts"; -type ResponseLike = { - usage?: unknown; - choices?: Array<{ message?: { content?: unknown } }>; -} | null | undefined; +type ResponseLike = + | { + usage?: unknown; + choices?: Array<{ message?: { content?: unknown } }>; + } + | null + | undefined; export interface ClientUsageBufferDeps { addBufferToUsage: typeof defaultAddBuffer; @@ -95,7 +98,7 @@ export interface ApplyClientUsageBufferOptions { export function applyClientUsageBuffer( translatedResponse: ResponseLike, body: unknown, - clientResponseFormat: unknown, + clientResponseFormat: string, options: ApplyClientUsageBufferOptions = {}, deps: ClientUsageBufferDeps = DEFAULT_DEPS ): void { diff --git a/open-sse/handlers/chatCore/clineResponseEnvelope.ts b/open-sse/handlers/chatCore/clineResponseEnvelope.ts index 0882ef3718..75229773b0 100644 --- a/open-sse/handlers/chatCore/clineResponseEnvelope.ts +++ b/open-sse/handlers/chatCore/clineResponseEnvelope.ts @@ -4,7 +4,7 @@ function isRecord(value: unknown): value is JsonRecord { return !!value && typeof value === "object" && !Array.isArray(value); } -function hasOpenAIChoices(value: unknown): boolean { +function hasOpenAIChoices(value: unknown): value is JsonRecord & { choices: unknown[] } { return isRecord(value) && Array.isArray(value.choices); } diff --git a/open-sse/handlers/chatCore/comboContextCache.ts b/open-sse/handlers/chatCore/comboContextCache.ts index da2c3d3c15..1a4f2c5b2c 100644 --- a/open-sse/handlers/chatCore/comboContextCache.ts +++ b/open-sse/handlers/chatCore/comboContextCache.ts @@ -1,4 +1,5 @@ import { getUpstreamProxyConfig } from "@/lib/localDb"; +import type { FallbackBackend } from "@/lib/db/upstreamProxy"; /** * Module-level cache for upstream proxy config (shared across all requests). @@ -8,6 +9,8 @@ type UpstreamProxyConfigCacheEntry = { mode: string; enabled: boolean; cliproxyapiModelMapping: Record | null; + // #dario: retry-leg backend when mode === "fallback". + fallbackBackend: FallbackBackend; ts: number; }; @@ -67,9 +70,16 @@ export async function getUpstreamProxyConfigCached(providerId: string) { mode: cfg.mode, enabled: cfg.enabled, cliproxyapiModelMapping: cfg.cliproxyapiModelMapping ?? null, + fallbackBackend: cfg.fallbackBackend, ts: Date.now(), } - : { mode: "native" as const, enabled: false, cliproxyapiModelMapping: null, ts: Date.now() }; + : { + mode: "native" as const, + enabled: false, + cliproxyapiModelMapping: null, + fallbackBackend: "cliproxyapi" as const, + ts: Date.now(), + }; _proxyConfigCache.set(providerId, result); return result; } diff --git a/open-sse/handlers/chatCore/compressionAnalyticsWrite.ts b/open-sse/handlers/chatCore/compressionAnalyticsWrite.ts index ec68aff23c..ecb9f11f6a 100644 --- a/open-sse/handlers/chatCore/compressionAnalyticsWrite.ts +++ b/open-sse/handlers/chatCore/compressionAnalyticsWrite.ts @@ -10,7 +10,7 @@ * stays under the complexity cap. */ -import { type CompressionStats } from "../../services/compression/stats.ts"; +import { type CompressionStats } from "../../services/compression/types.ts"; type LoggerLike = | { diff --git a/open-sse/handlers/chatCore/contextEstimation.ts b/open-sse/handlers/chatCore/contextEstimation.ts new file mode 100644 index 0000000000..f339cffc90 --- /dev/null +++ b/open-sse/handlers/chatCore/contextEstimation.ts @@ -0,0 +1,29 @@ +import { adaptBodyForCompression } from "../../services/compression/bodyAdapter.ts"; +import { estimateTokens } from "../../services/contextManager.ts"; + +type JsonRecord = Record; + +function asJsonRecord(value: unknown): JsonRecord | null { + return value && typeof value === "object" && !Array.isArray(value) ? (value as JsonRecord) : null; +} + +export function estimateFinalInputTokens(requestBody: JsonRecord | null | undefined): number { + const adapted = requestBody ? adaptBodyForCompression(requestBody).body : null; + const nestedRequest = asJsonRecord(requestBody?.request); + const messages = + adapted?.messages || + requestBody?.contents || + nestedRequest?.contents || + (Array.isArray(requestBody?.input) + ? requestBody.input + : requestBody?.input && typeof requestBody.input === "object" + ? requestBody.input + : []); + + return ( + estimateTokens(messages) + + (Array.isArray(requestBody?.tools) ? estimateTokens(requestBody.tools) : 0) + + estimateTokens(requestBody?.system) + + estimateTokens(requestBody?.instructions) + ); +} diff --git a/open-sse/handlers/chatCore/executionCredentials.ts b/open-sse/handlers/chatCore/executionCredentials.ts index 1a96ef92ee..c8e4223774 100644 --- a/open-sse/handlers/chatCore/executionCredentials.ts +++ b/open-sse/handlers/chatCore/executionCredentials.ts @@ -118,6 +118,18 @@ export function resolveExecutionCredentials(opts: { providerSpecificData._omnirouteForceResponsesUpstream = true; } + // #8969: Poe's native /v1/responses surface — DefaultExecutor.buildUrl("poe") + // reads this marker so Responses requests do not land on chat/completions. + if (targetFormat === FORMATS.OPENAI_RESPONSES && provider === "poe") { + providerSpecificData._omnirouteForceResponsesUpstream = true; + } + + // #8969: Claude-tagged Poe models speak Anthropic Messages wire format. Keep + // DefaultExecutor from injecting OpenAI stream_options onto that body. + if (targetFormat === FORMATS.CLAUDE && provider === "poe") { + providerSpecificData.disableStreamOptions = true; + } + // #7364: "zai"/"glm-coding-apikey" default to the Anthropic Messages wire format // (registry format:"claude"), but a per-model targetFormat override (custom-model // dropdown, #2905) can resolve targetFormat to "openai" — e.g. for a vision model diff --git a/open-sse/handlers/chatCore/executorProxy.ts b/open-sse/handlers/chatCore/executorProxy.ts index c791e9c5a4..19dc55f4d0 100644 --- a/open-sse/handlers/chatCore/executorProxy.ts +++ b/open-sse/handlers/chatCore/executorProxy.ts @@ -4,15 +4,24 @@ * * Extracted from handleChatCore: resolves the executor for a provider honoring the configured * upstream proxy mode. `native` / disabled → the provider's own executor; `cliproxyapi` → the - * CLIProxyAPI passthrough executor; `fallback` → a wrapper that tries the native executor first and - * retries via CLIProxyAPI on configured failure codes (default 5xx + 429 + network) or on a thrown - * error. Behaviour is byte-identical to the previous inline closure (it only captured `log`). + * CLIProxyAPI passthrough executor; `dario` → the Dario passthrough executor; `fallback` → a + * wrapper that tries the native executor first and retries via the configured fallback backend + * (CLIProxyAPI by default, or Dario) on configured failure codes (default 5xx + 429 + network) + * or on a thrown error. + * + * Dario (@askalf/dario) is wired as a parallel, independent backend choice at both levels + * (per-connection `darioMode` + provider `mode`/`fallbackBackend`) WITHOUT changing any existing + * CLIProxyAPI behaviour. Dario needs neither the dedicated-credential substitution nor the + * per-provider model-mapping wrappers CLIProxyAPI uses: it authenticates via its own OAuth + * account pool (not a configured bearer key) and has its own server-side model-alias mechanism. */ import { getExecutor } from "../../executors/index.ts"; import { isCliproxyapiDeepModeEnabled } from "../../executors/cliproxyapi.ts"; +import { isDarioDeepModeEnabled } from "../../executors/dario.ts"; import { getCachedSettings } from "@/lib/db/readCache"; import { getUpstreamProxyConfigCached } from "./comboContextCache.ts"; +import type { FallbackBackend } from "@/lib/db/upstreamProxy"; import { wrapExecutorWithCliproxyapiModelMapping } from "./cliproxyModelMapping.ts"; import { resolveDedicatedCliproxyapiApiKey, @@ -62,6 +71,21 @@ async function loadCliproxyapiSettings(): Promise<{ } } +/** + * Resolve the CLIProxyAPI passthrough executor with its model-mapping + + * dedicated-credential wrappers applied. Used by the direct `cliproxyapi` leg + * and the CLIProxyAPI branch of `fallback`. + */ +function resolveCliproxyapiExecutor( + cliproxyapiModelMapping: Record | null, + dedicatedApiKey: string | null +) { + return wrapExecutorWithCliproxyapiCredentials( + wrapExecutorWithCliproxyapiModelMapping(getExecutor("cliproxyapi"), cliproxyapiModelMapping), + dedicatedApiKey + ); +} + export async function resolveExecutorWithProxy( prov: string, log?: LoggerLike, @@ -81,29 +105,50 @@ export async function resolveExecutorWithProxy( return getExecutor("cliproxyapi"); } + // Sibling per-connection override for Dario (#dario). Checked AFTER the + // CLIProxyAPI check above by deliberate design: if a connection somehow sets + // BOTH cliproxyapiMode and darioMode to "claude-native", CLIProxyAPI's + // existing behaviour keeps winning — the least-surprising precedence for + // configs that predate this field, and the simplest to reason about. + if (isDarioDeepModeEnabled(providerSpecificData)) { + log?.info?.( + "UPSTREAM_PROXY", + `${prov} routed through Dario (per-connection claude-native override)` + ); + return getExecutor("dario"); + } + const cfg = await getUpstreamProxyConfigCached(prov); if (!cfg.enabled || cfg.mode === "native") return getExecutor(prov); if (cfg.mode === "cliproxyapi") { log?.info?.("UPSTREAM_PROXY", `${prov} routed through CLIProxyAPI (passthrough)`); const { dedicatedApiKey } = await loadCliproxyapiSettings(); - return wrapExecutorWithCliproxyapiCredentials( - wrapExecutorWithCliproxyapiModelMapping(getExecutor("cliproxyapi"), cfg.cliproxyapiModelMapping), - dedicatedApiKey - ); + return resolveCliproxyapiExecutor(cfg.cliproxyapiModelMapping, dedicatedApiKey); } - // mode === "fallback": try native first, retry via CLIProxyAPI on specific failures. - // The model mapping applies only to the CLIProxyAPI retry leg (proxyExec) — the - // native leg must keep seeing the original, unmapped model. + if (cfg.mode === "dario") { + // Direct Dario passthrough. No credential/model-mapping wrappers: Dario + // authenticates via its own OAuth pool and has its own model-alias layer. + log?.info?.("UPSTREAM_PROXY", `${prov} routed through Dario (passthrough)`); + return getExecutor("dario"); + } + + // mode === "fallback": try native first, retry via the configured fallback + // backend on specific failures. The backend defaults to CLIProxyAPI so every + // pre-existing fallback config behaves exactly as before; fallbackBackend + // === "dario" opts the retry leg over to Dario instead. const nativeExec = getExecutor(prov); + const fallbackBackend: FallbackBackend = cfg.fallbackBackend; const { fallbackCodes, dedicatedApiKey } = await loadCliproxyapiSettings(); - // #7645: the CLIProxyAPI retry leg must authenticate with the dedicated - // key, never the native provider's own (already-failed) credential. - const proxyExec = wrapExecutorWithCliproxyapiCredentials( - wrapExecutorWithCliproxyapiModelMapping(getExecutor("cliproxyapi"), cfg.cliproxyapiModelMapping), - dedicatedApiKey - ); + + // The model mapping applies only to the CLIProxyAPI retry leg (proxyExec) — + // the native leg must keep seeing the original, unmapped model. + const proxyExec = + fallbackBackend === "dario" + ? getExecutor("dario") + : resolveCliproxyapiExecutor(cfg.cliproxyapiModelMapping, dedicatedApiKey); + const backendLabel = fallbackBackend === "dario" ? "Dario" : "CLIProxyAPI"; const isRetryableStatus = (s: number) => fallbackCodes.includes(s) || s === 0; const wrapper = Object.create(nativeExec); @@ -121,12 +166,12 @@ export async function resolveExecutorWithProxy( result = await nativeExec.execute(input); } catch (err) { const errMsg = err instanceof Error ? err.message : String(err); - log?.info?.("UPSTREAM_PROXY", `${prov} native error (${errMsg}), retrying via CLIProxyAPI`); + log?.info?.("UPSTREAM_PROXY", `${prov} native error (${errMsg}), retrying via ${backendLabel}`); try { return await proxyExec.execute(input); } catch (proxyErr) { const proxyMsg = proxyErr instanceof Error ? proxyErr.message : String(proxyErr); - log?.error?.("UPSTREAM_PROXY", `${prov} CLIProxyAPI fallback also failed: ${proxyMsg}`); + log?.error?.("UPSTREAM_PROXY", `${prov} ${backendLabel} fallback also failed: ${proxyMsg}`); throw proxyErr; } } @@ -136,13 +181,13 @@ export async function resolveExecutorWithProxy( } log?.info?.( "UPSTREAM_PROXY", - `${prov} native failed (${result.response.status}), retrying via CLIProxyAPI` + `${prov} native failed (${result.response.status}), retrying via ${backendLabel}` ); try { return await proxyExec.execute(input); } catch (proxyErr) { const proxyMsg = proxyErr instanceof Error ? proxyErr.message : String(proxyErr); - log?.error?.("UPSTREAM_PROXY", `${prov} CLIProxyAPI fallback also failed: ${proxyMsg}`); + log?.error?.("UPSTREAM_PROXY", `${prov} ${backendLabel} fallback also failed: ${proxyMsg}`); throw proxyErr; } }; diff --git a/open-sse/handlers/chatCore/nonStreamingResponseHeaders.ts b/open-sse/handlers/chatCore/nonStreamingResponseHeaders.ts index 62ad018ccb..1a58391806 100644 --- a/open-sse/handlers/chatCore/nonStreamingResponseHeaders.ts +++ b/open-sse/handlers/chatCore/nonStreamingResponseHeaders.ts @@ -16,9 +16,9 @@ export function buildNonStreamingResponseHeaders( provider: string | null | undefined; model: string | null | undefined; startTime: number; - responseUsage: unknown; + responseUsage: Record | null | undefined; estimatedCost: number; - requestId: unknown; + requestId: string | null | undefined; compressionResponseMeta?: string | null | undefined; comboStrategy?: string | null | undefined; }, diff --git a/open-sse/handlers/chatCore/outputTokenBudget.ts b/open-sse/handlers/chatCore/outputTokenBudget.ts index 62752e42f4..3adb97fd81 100644 --- a/open-sse/handlers/chatCore/outputTokenBudget.ts +++ b/open-sse/handlers/chatCore/outputTokenBudget.ts @@ -15,6 +15,7 @@ export type OutputTokenBudgetResult = ok: false; estimatedInputTokens: number; contextLimit: number; + maxInputTokens?: number | null; }; type OutputTokenAdjustment = { field: string; value?: number; remove?: boolean }; @@ -74,19 +75,43 @@ function adjustOutputTokenFields( * cap limits how much is requested, not whether the request fits. Absent / * null / non-positive cap values leave behavior byte-identical to before this * parameter existed (fail-open). + * + * `maxInputTokenCap` (the model's own input ceiling, `maxInputTokens`) is an + * additional, independent input-only bound enforced on the accept/reject + * decision. The total-window check (`contextLimit - input >= 1`) stays in place + * and remains responsible for reserving output room; the input cap never + * double-counts a requested output. Absent / null / non-positive input caps + * leave behavior byte-identical (fail-open). */ export function enforceOutputTokenBudget( body: Record | null | undefined, estimatedInputTokens: number, contextLimit: number, defaultOutputTokens = 0, - maxOutputTokenCap?: number | null + maxOutputTokenCap?: number | null, + maxInputTokenCap?: number | null ): OutputTokenBudgetResult { const normalizedInputTokens = Math.max(0, Math.ceil(estimatedInputTokens)); const normalizedContextLimit = Math.max(1, Math.floor(contextLimit)); const normalizedDefaultOutputTokens = Math.max(0, Math.floor(defaultOutputTokens)); const availableOutputTokens = normalizedContextLimit - normalizedInputTokens; + // Independent input-only ceiling: reject when the prompt alone exceeds the + // model's declared max input, regardless of remaining output room. + const normalizedInputCap = maxInputTokenCap == null ? null : Math.floor(maxInputTokenCap); + if ( + normalizedInputCap !== null && + normalizedInputCap > 0 && + normalizedInputTokens > normalizedInputCap + ) { + return { + ok: false, + estimatedInputTokens: normalizedInputTokens, + contextLimit: normalizedContextLimit, + maxInputTokens: normalizedInputCap, + }; + } + if (availableOutputTokens < 1) { return { ok: false, diff --git a/open-sse/handlers/chatCore/passthroughHelpers.ts b/open-sse/handlers/chatCore/passthroughHelpers.ts index 3c0731c2b1..e644878329 100644 --- a/open-sse/handlers/chatCore/passthroughHelpers.ts +++ b/open-sse/handlers/chatCore/passthroughHelpers.ts @@ -1,7 +1,12 @@ import { FORMATS } from "../../translator/formats.ts"; import { isClaudeCodeCompatibleProvider } from "../../services/claudeCodeCompatible.ts"; +import { isResponsesEndpointPath } from "../../utils/responsesEndpoint.ts"; import { getHeaderValueCaseInsensitive } from "./headers.ts"; +export { isResponsesEndpointPath }; + +export const XAI_API_PROVIDERS = new Set(["xai", "xai-oauth", "xao"]); + export function shouldUseNativeCodexPassthrough({ provider, sourceFormat, @@ -13,10 +18,29 @@ export function shouldUseNativeCodexPassthrough({ }): boolean { if (provider !== "codex") return false; if (sourceFormat !== FORMATS.OPENAI_RESPONSES) return false; - let normalizedEndpoint = String(endpointPath || ""); - while (normalizedEndpoint.endsWith("/")) normalizedEndpoint = normalizedEndpoint.slice(0, -1); - const segments = normalizedEndpoint.split("/"); - return segments.includes("responses"); + return isResponsesEndpointPath(endpointPath); +} + +export function shouldUseNativeXaiResponsesPassthrough({ + provider, + sourceFormat, + endpointPath, +}: { + provider?: string | null; + sourceFormat?: string | null; + endpointPath?: string | null; +}): boolean { + if (!provider || !XAI_API_PROVIDERS.has(provider)) return false; + if (sourceFormat !== FORMATS.OPENAI_RESPONSES) return false; + return isResponsesEndpointPath(endpointPath); +} + +export function stampNativeResponsesPassthroughBody( + body: Record, + mode: "codex" | "xai" +): Record { + if (mode === "codex") return { ...body, _nativeCodexPassthrough: true }; + return { ...body, _nativeXaiResponsesPassthrough: true }; } /** diff --git a/open-sse/handlers/chatCore/passthroughToolNames.ts b/open-sse/handlers/chatCore/passthroughToolNames.ts index 0ab6b17d4d..87069c7360 100644 --- a/open-sse/handlers/chatCore/passthroughToolNames.ts +++ b/open-sse/handlers/chatCore/passthroughToolNames.ts @@ -1,6 +1,11 @@ import { CLAUDE_OAUTH_TOOL_PREFIX } from "../../translator/request/openai-to-claude.ts"; +import { restoreOpenAIToolNames } from "../../translator/helpers/toolCallHelper.ts"; -export function buildClaudePassthroughToolNameMap(body: Record | null | undefined) { +type JsonRecord = Record; + +export function buildClaudePassthroughToolNameMap( + body: Record | null | undefined +) { if (!body || !Array.isArray(body.tools)) return null; const toolNameMap = new Map(); @@ -47,11 +52,15 @@ export function restoreClaudePassthroughToolNames( export function mergeResponseToolNameMap( baseToolNameMap: Map | null, - transformedBody: Record | null | undefined + transformedBody: unknown ) { + const transformedRecord = + transformedBody && typeof transformedBody === "object" && !Array.isArray(transformedBody) + ? (transformedBody as JsonRecord) + : null; const executorToolNameMap = - transformedBody && transformedBody._toolNameMap instanceof Map - ? (transformedBody._toolNameMap as Map) + transformedRecord?._toolNameMap instanceof Map + ? (transformedRecord._toolNameMap as Map) : null; if (!executorToolNameMap?.size) return baseToolNameMap; @@ -63,3 +72,30 @@ export function mergeResponseToolNameMap( } return merged; } + +export function restoreNonStreamingToolNames( + responseBody: JsonRecord, + baseToolNameMap: Map | null, + transformedBody: unknown, + restoreClaudeNames: boolean +): [JsonRecord, Map | null] { + const responseToolNameMap = mergeResponseToolNameMap(baseToolNameMap, transformedBody); + const restoredBody = restoreClaudeNames + ? restoreClaudePassthroughToolNames(responseBody, responseToolNameMap) + : responseBody; + restoreOpenAIToolNames(restoredBody, responseToolNameMap); + return [restoredBody, responseToolNameMap]; +} + +export function normalizeOpenAIToolFinishReasons(responseBody: unknown): void { + const response = responseBody as { + choices?: Array; + } | null; + if (!response?.choices) return; + + for (const choice of response.choices) { + if (choice.message?.tool_calls?.length > 0 && choice.finish_reason !== "tool_calls") { + choice.finish_reason = "tool_calls"; + } + } +} diff --git a/open-sse/handlers/chatCore/pluginOnRequest.ts b/open-sse/handlers/chatCore/pluginOnRequest.ts index 170c276c5e..a4737d53af 100644 --- a/open-sse/handlers/chatCore/pluginOnRequest.ts +++ b/open-sse/handlers/chatCore/pluginOnRequest.ts @@ -10,13 +10,10 @@ */ type LoggerLike = - | { info?: (...args: unknown[]) => void; debug?: (...args: unknown[]) => void } - | null - | undefined; + { info?: (...args: unknown[]) => void; debug?: (...args: unknown[]) => void } | null | undefined; export type PluginOnRequestGate = - | { blocked: true; response: Response } - | { blocked: false; body?: unknown }; + { blocked: true; response: Response } | { blocked: false; body?: unknown }; const JSON_HEADERS = { status: 403, headers: { "Content-Type": "application/json" } } as const; @@ -26,6 +23,7 @@ export async function runPluginOnRequestHook(args: { model: string | null | undefined; provider: string | null | undefined; apiKeyInfo: unknown; + headers?: Record; log?: LoggerLike; }): Promise { try { @@ -36,6 +34,7 @@ export async function runPluginOnRequestHook(args: { model: args.model, provider: args.provider, apiKeyInfo: args.apiKeyInfo, + headers: args.headers, metadata: {}, }; const pluginResult = await runOnRequest(pluginCtx); diff --git a/open-sse/handlers/chatCore/pluginOnResponse.ts b/open-sse/handlers/chatCore/pluginOnResponse.ts index 1d74ca2989..63055e2e74 100644 --- a/open-sse/handlers/chatCore/pluginOnResponse.ts +++ b/open-sse/handlers/chatCore/pluginOnResponse.ts @@ -24,6 +24,7 @@ export async function runPluginOnResponseHook(args: { model: string | null | undefined; provider: string | null | undefined; apiKeyInfo: unknown; + headers?: Record; response: PluginOnResponsePayload; }): Promise { try { @@ -35,6 +36,7 @@ export async function runPluginOnResponseHook(args: { model: args.model, provider: args.provider, apiKeyInfo: args.apiKeyInfo, + headers: args.headers, metadata: {}, }, args.response diff --git a/open-sse/handlers/chatCore/requestFormat.ts b/open-sse/handlers/chatCore/requestFormat.ts index fa9e9194fb..d5ce5ad23b 100644 --- a/open-sse/handlers/chatCore/requestFormat.ts +++ b/open-sse/handlers/chatCore/requestFormat.ts @@ -11,7 +11,10 @@ */ import { detectFormatFromEndpoint } from "../../services/provider.ts"; -import { shouldUseNativeCodexPassthrough } from "./passthroughHelpers.ts"; +import { + shouldUseNativeCodexPassthrough, + shouldUseNativeXaiResponsesPassthrough, +} from "./passthroughHelpers.ts"; import { FORMATS } from "../../translator/formats.ts"; /** True when the request originates from a Copilot client (matched by user-agent or any header). */ @@ -49,13 +52,19 @@ function isOpencodeClient( if (headers instanceof Headers) { for (const [key, value] of headers as unknown as Iterable<[string, string]>) { - if (matchesHeaderKey(key) || (key.toLowerCase() === "user-agent" && matchesUserAgent(value))) { + if ( + matchesHeaderKey(key) || + (key.toLowerCase() === "user-agent" && matchesUserAgent(value)) + ) { return true; } } } else if (headers && typeof headers === "object") { for (const [key, value] of Object.entries(headers)) { - if (matchesHeaderKey(key) || (key.toLowerCase() === "user-agent" && matchesUserAgent(value))) { + if ( + matchesHeaderKey(key) || + (key.toLowerCase() === "user-agent" && matchesUserAgent(value)) + ) { return true; } } @@ -71,9 +80,7 @@ function isOpencodeClient( */ export function resolveChatCoreRequestFormat(opts: { clientRawRequest: - | { endpoint?: unknown; headers?: Headers | Record | null } - | null - | undefined; + { endpoint?: unknown; headers?: Headers | Record | null } | null | undefined; body: unknown; provider: string | null | undefined; userAgent: string | null | undefined; @@ -88,6 +95,11 @@ export function resolveChatCoreRequestFormat(opts: { sourceFormat, endpointPath, }); + const nativeXaiResponsesPassthrough = shouldUseNativeXaiResponsesPassthrough({ + provider, + sourceFormat, + endpointPath, + }); const isDroidCLI = userAgent?.toLowerCase().includes("droid") || userAgent?.toLowerCase().includes("codex-cli"); const copilotCompatibleReasoning = isCopilotClient(clientRawRequest?.headers, userAgent); @@ -101,6 +113,7 @@ export function resolveChatCoreRequestFormat(opts: { sourceFormat, isResponsesEndpoint, nativeCodexPassthrough, + nativeXaiResponsesPassthrough, isDroidCLI, copilotCompatibleReasoning, isOpencodeClient: isOpencodeClientRequest, diff --git a/open-sse/handlers/chatCore/responseHeaders.ts b/open-sse/handlers/chatCore/responseHeaders.ts index 60701d9495..43fdc5a88e 100644 --- a/open-sse/handlers/chatCore/responseHeaders.ts +++ b/open-sse/handlers/chatCore/responseHeaders.ts @@ -30,12 +30,27 @@ const STREAMING_RESPONSE_HEADER_DENYLIST = new Set([ "x-accel-buffering", ]); +const DEFAULT_FORWARDED_HEADER_BUDGET_BYTES = 768; + +/** + * Resolve the forwarded upstream response-header budget from an optional string value + * (typically `process.env.OMNIROUTE_FORWARDING_HEADER_BUDGET_BYTES`). Returns the + * default of 768 when the input is unset, empty, or non-positive. + * Extracted as a pure function so unit tests can pass values directly without + * module-cache manipulation. + */ +export function resolveForwardedHeaderBudget(env?: string): number { + const parsed = Number.parseInt(String(env ?? process.env.OMNIROUTE_FORWARDING_HEADER_BUDGET_BYTES), 10); + return Number.isFinite(parsed) && parsed > 0 ? parsed : DEFAULT_FORWARDED_HEADER_BUDGET_BYTES; +} + /** * Keep upstream-derived headers comfortably below common reverse-proxy response-header limits. * This budget includes each header name, separator, value, and trailing CRLF. OmniRoute's own * response metadata and framework/security headers are added separately. + * Override with `OMNIROUTE_FORWARDING_HEADER_BUDGET_BYTES`. */ -export const MAX_FORWARDED_UPSTREAM_RESPONSE_HEADER_BYTES = 768; +export const MAX_FORWARDED_UPSTREAM_RESPONSE_HEADER_BYTES = resolveForwardedHeaderBudget(); const MAX_LOGGED_DROPPED_RESPONSE_HEADERS = 20; const responseHeaderEncoder = new TextEncoder(); diff --git a/open-sse/handlers/chatCore/sanitization.ts b/open-sse/handlers/chatCore/sanitization.ts index 62b43615ed..b93f3ac2c3 100644 --- a/open-sse/handlers/chatCore/sanitization.ts +++ b/open-sse/handlers/chatCore/sanitization.ts @@ -46,7 +46,7 @@ export function sanitizeChatRequestBody( } if (Array.isArray(body.tools)) { - body.tools = body.tools.filter((tool: Record) => { + const tools = body.tools.filter((tool: Record) => { const toolType = typeof tool.type === "string" ? tool.type : ""; if (toolType && toolType !== "function" && !tool.function && tool.name === undefined) { return true; @@ -56,7 +56,7 @@ export function sanitizeChatRequestBody( return name && String(name).trim().length > 0; }); - body.tools = body.tools.map((tool) => sanitizeOpenAITool(tool) as (typeof body.tools)[number]); + body.tools = tools.map((tool) => sanitizeOpenAITool(tool)); } return body; diff --git a/open-sse/handlers/chatCore/semanticCacheStore.ts b/open-sse/handlers/chatCore/semanticCacheStore.ts index 8d119a863f..ff4e7d590c 100644 --- a/open-sse/handlers/chatCore/semanticCacheStore.ts +++ b/open-sse/handlers/chatCore/semanticCacheStore.ts @@ -20,8 +20,8 @@ type LoggerLike = { debug?: (...args: unknown[]) => void } | null | undefined; type CacheBody = { messages?: unknown; input?: unknown; - temperature?: unknown; - top_p?: unknown; + temperature?: number; + top_p?: number; }; type UsageLike = { prompt_tokens?: number; completion_tokens?: number } | null | undefined; @@ -47,7 +47,7 @@ export function storeSemanticCacheResponse( headers: unknown; translatedResponse: unknown; model: string; - apiKeyId?: string | number; + apiKeyId?: string; usage?: UsageLike; log?: LoggerLike; }, diff --git a/open-sse/handlers/chatCore/streamingPipeline.ts b/open-sse/handlers/chatCore/streamingPipeline.ts index 2a6a7c00bb..bbe0bdcb8b 100644 --- a/open-sse/handlers/chatCore/streamingPipeline.ts +++ b/open-sse/handlers/chatCore/streamingPipeline.ts @@ -61,12 +61,12 @@ const DEFAULT_DEPS: StreamingPipelineDeps = { export function assembleStreamingPipeline( args: { - providerResponse: unknown; - transformStream: unknown; - streamController: { signal: AbortSignal }; + providerResponse: Parameters[0]; + transformStream: Parameters[1]; + streamController: Parameters[2]; createPiiTransform: unknown; clientRawRequestHeaders: HeadersLike; - clientResponseFormat: unknown; + clientResponseFormat: Parameters[0]; echoModel: string | null | undefined; responseHeaders: Record; }, diff --git a/open-sse/handlers/chatCore/streamingSemanticCacheStore.ts b/open-sse/handlers/chatCore/streamingSemanticCacheStore.ts index 3aa16a9781..48bd144a3c 100644 --- a/open-sse/handlers/chatCore/streamingSemanticCacheStore.ts +++ b/open-sse/handlers/chatCore/streamingSemanticCacheStore.ts @@ -21,8 +21,8 @@ type LoggerLike = { debug?: (...args: unknown[]) => void } | null | undefined; type CacheBody = { messages?: unknown; input?: unknown; - temperature?: unknown; - top_p?: unknown; + temperature?: number; + top_p?: number; }; export interface StreamingSemanticCacheStoreDeps { @@ -46,7 +46,7 @@ interface StreamingCacheArgs { body: CacheBody; headers: unknown; model: string; - apiKeyId?: string | number; + apiKeyId?: string; streamUsage?: Record | null; log?: LoggerLike; } @@ -73,7 +73,10 @@ function writeStreamingCacheEntry( ); const tokensSaved = streamTokensSaved(args.streamUsage); deps.setCachedResponse(sig, args.model, cleanBody, tokensSaved); - args.log?.debug?.("CACHE", `Stored streaming response for ${args.model} (${tokensSaved} tokens)`); + args.log?.debug?.( + "CACHE", + `Stored streaming response for ${args.model} (${tokensSaved} tokens)` + ); } catch { // Cache write failed — non-critical } diff --git a/open-sse/handlers/chatCore/targetFormat.ts b/open-sse/handlers/chatCore/targetFormat.ts index 9bb2f0da7a..cde4be6162 100644 --- a/open-sse/handlers/chatCore/targetFormat.ts +++ b/open-sse/handlers/chatCore/targetFormat.ts @@ -22,6 +22,7 @@ export function resolveChatCoreTargetFormat(opts: { sourceFormat?: string; customModelTargetFormat: string | undefined; providerSpecificData: unknown; + nativeXaiResponsesPassthrough?: boolean; }) { const { provider, @@ -30,6 +31,7 @@ export function resolveChatCoreTargetFormat(opts: { sourceFormat, customModelTargetFormat, providerSpecificData, + nativeXaiResponsesPassthrough = false, } = opts; const alias = PROVIDER_ID_TO_ALIAS[provider] || provider; const modelTargetFormat = getModelTargetFormat(alias, resolvedModel); @@ -44,13 +46,16 @@ export function resolveChatCoreTargetFormat(opts: { sourceFormat === FORMATS.CLAUDE) ? sourceFormat : undefined; - const targetFormat = - apiFormat === "responses" + // #8994: model-level targetFormat overrides (from registry or custom-model DB override) + // take precedence over apiFormat="responses" — otherwise Vertex Claude models with + // targetFormat="claude" get wrongly routed to OpenAI Responses format. + let targetFormat = + modelTargetFormat || + customModelTargetFormat || + (apiFormat === "responses" ? FORMATS.OPENAI_RESPONSES - : modelTargetFormat || - customModelTargetFormat || - inferredAgentRouterTargetFormat || - getTargetFormat(provider, providerSpecificData); + : inferredAgentRouterTargetFormat || getTargetFormat(provider, providerSpecificData)); + if (nativeXaiResponsesPassthrough) targetFormat = FORMATS.OPENAI_RESPONSES; return { alias, targetFormat }; } diff --git a/open-sse/handlers/chatCore/thinkingSignatureRecovery.ts b/open-sse/handlers/chatCore/thinkingSignatureRecovery.ts index b0f080bd77..ab4fb1d931 100644 --- a/open-sse/handlers/chatCore/thinkingSignatureRecovery.ts +++ b/open-sse/handlers/chatCore/thinkingSignatureRecovery.ts @@ -69,7 +69,9 @@ export async function recoverAnthropicThinkingSignature(args: { return args.execute(requestBody); }, getError: async (result) => { - if (result === firstFailure) return { status: result.status, message: result.message }; + if (result === firstFailure) { + return { status: firstFailure.status, message: firstFailure.message }; + } if (result.response.ok) return null; const details = await args.parseError(result.response.clone()); return { status: details.statusCode, message: details.message }; diff --git a/open-sse/handlers/chatCore/upstreamExecuteHeaders.ts b/open-sse/handlers/chatCore/upstreamExecuteHeaders.ts index cb8adae950..fcf14196ec 100644 --- a/open-sse/handlers/chatCore/upstreamExecuteHeaders.ts +++ b/open-sse/handlers/chatCore/upstreamExecuteHeaders.ts @@ -12,6 +12,7 @@ import { getModelUpstreamExtraHeaders } from "@/lib/db/models"; import { resolveModelAlias } from "../../services/modelDeprecation.ts"; import { CPA_FORCE_FAST_MODE_HEADER, shouldRequestClaudeFastMode } from "@/lib/providers/claudeFastMode"; +import { isForbiddenCustomHeaderName } from "@/shared/constants/upstreamHeaders"; export function buildUpstreamHeadersForExecute(opts: { modelToCall: string; @@ -21,6 +22,7 @@ export function buildUpstreamHeadersForExecute(opts: { resolvedModel: string; sourceFormat: string; connectionCustomUserAgent: string; + connectionCustomHeaders?: Record; settings: unknown; }): Record { const { @@ -31,6 +33,7 @@ export function buildUpstreamHeadersForExecute(opts: { resolvedModel, sourceFormat, connectionCustomUserAgent, + connectionCustomHeaders, settings, } = opts; @@ -55,6 +58,23 @@ export function buildUpstreamHeadersForExecute(opts: { } } + // #8369: merge connection-level custom headers UNDER model-level so model-level wins on the + // same case-insensitive header name. Forbidden header names (hop-by-hop, auth) are silently + // skipped via isForbiddenCustomHeaderName(). + if (connectionCustomHeaders) { + for (const [key, value] of Object.entries(connectionCustomHeaders)) { + const keyLower = key.trim().toLowerCase(); + if (!keyLower) continue; + if (isForbiddenCustomHeaderName(key)) continue; + const existingKey = Object.keys(upstreamHeaders).find( + (k) => k.toLowerCase() === keyLower + ); + if (!existingKey) { + upstreamHeaders[key] = value; + } + } + } + // Claude Fast Mode opt-in. When enabled in Settings > AI AND the target provider is the canonical // Anthropic `claude` provider (Claude Code-compatible CPA bridges are excluded since they select // their own entrypoint) AND the model id matches the configured list, signal to a paired diff --git a/open-sse/handlers/embeddings.ts b/open-sse/handlers/embeddings.ts index 72d98c3b2d..7846ec3d58 100644 --- a/open-sse/handlers/embeddings.ts +++ b/open-sse/handlers/embeddings.ts @@ -28,6 +28,7 @@ import { getCallLogPipelineCaptureStreamChunks } from "@/lib/logEnv"; import { toJsonErrorPayload } from "@/shared/utils/upstreamError"; import { stripStaleEncodingHeaders } from "../utils/upstreamResponseHeaders.ts"; import { sanitizeErrorMessage } from "../utils/error.ts"; +import { stripTrailingSlashes } from "../utils/urlSanitize.ts"; import { fetchRemoteImage } from "@/shared/network/remoteImageFetch"; import { hasStructuredEmbeddingInput, @@ -41,6 +42,31 @@ interface ClientRawRequest { headers: Record; } +/** + * Flatten a single embedding item's vector to the OpenAI-spec `number[]` shape. + * + * Some OpenAI-compatible embedding backends — notably a llama.cpp + * `llama-server --embedding --pooling ...` instance — return each vector wrapped in one + * extra array level: `[[...floats]]` instead of `[...floats]` for a single input. That + * extra level is silently spec-breaking, since a standard OpenAI-SDK consumer reading + * `response.data[i].embedding` gets a length-1 array holding the real vector instead of + * the vector itself. Unwrap only that single redundant level; vectors that are already + * flat (or genuinely multi-row) are left untouched. See issue #9089. + */ +function flattenSingleRowEmbedding(item: unknown): void { + if (!item || typeof item !== "object" || !("embedding" in item)) return; + const record = item as { embedding: unknown }; + const embedding = record.embedding; + if ( + Array.isArray(embedding) && + embedding.length === 1 && + Array.isArray(embedding[0]) && + typeof embedding[0][0] === "number" + ) { + record.embedding = embedding[0]; + } +} + /** * Handle embedding request. * Supports both hardcoded cloud providers and dynamic local provider_nodes. @@ -59,7 +85,11 @@ export async function handleEmbedding({ connectionId = null, }: { body: Record; - credentials: { apiKey?: string | null; accessToken?: string | null } | null; + credentials: { + apiKey?: string | null; + accessToken?: string | null; + providerSpecificData?: Record | null; + } | null; log?: { info: (...args: unknown[]) => void; error: (...args: unknown[]) => void }; resolvedProvider?: EmbeddingProvider | null; resolvedModel?: string | null; @@ -205,6 +235,23 @@ export async function handleEmbedding({ } let upstreamUrl = providerConfig.baseUrl; + if (provider === "ollama-local") { + const configuredBaseUrl = credentials?.providerSpecificData?.baseUrl; + const rawBaseUrl = + typeof configuredBaseUrl === "string" && configuredBaseUrl.trim().length > 0 + ? configuredBaseUrl + : providerConfig.baseUrl; + // Use the shared O(n) helper instead of `/\/+$/` — that regex is + // vulnerable to polynomial backtracking on adversarial input + // (CodeQL js/polynomial-redos) since baseUrl is operator-configured + // per-connection data. See open-sse/utils/urlSanitize.ts. + const normalizedBaseUrl = stripTrailingSlashes(rawBaseUrl.trim()); + const ollamaHost = normalizedBaseUrl + .replace(/\/v1\/(?:chat\/completions|embeddings)$/i, "") + .replace(/\/api\/chat$/i, "") + .replace(/\/v1$/i, ""); + upstreamUrl = `${ollamaHost}/v1/embeddings`; + } let normalizeProviderResponse: ((data: Record) => Record) | null = null; @@ -359,6 +406,19 @@ export async function handleEmbedding({ // Log provider response reqLogger.logProviderResponse(response.status, "", response.headers, data); + // OpenAI-spec compliance (#9089): each item's `embedding` must be a flat number[]. + // Some OpenAI-compatible backends (e.g. a llama.cpp `llama-server --embedding` + // instance) return the vector wrapped in one extra array level — `[[...floats]]` + // instead of `[...floats]` — for a single input, which silently breaks any standard + // OpenAI-SDK consumer doing `response.data[i].embedding`. Flatten that one redundant + // level without touching providers that already return flat vectors. + const responseItems = data.data || data; + if (Array.isArray(responseItems)) { + for (const item of responseItems) { + flattenSingleRowEmbedding(item); + } + } + // Normalize response to OpenAI format const normalizedResponse = { object: "list", diff --git a/open-sse/handlers/imageGeneration.ts b/open-sse/handlers/imageGeneration.ts index c5d338c0bc..97941262ed 100644 --- a/open-sse/handlers/imageGeneration.ts +++ b/open-sse/handlers/imageGeneration.ts @@ -719,7 +719,7 @@ async function handleKieImageGeneration({ baseUrl = `${providerConfig.baseUrl.replace(/\/$/, "")}/api/v1/jobs/createTask`; const input: Record = { prompt, - aspect_ratio: mapImageSize(size, "1:1"), + aspect_ratio: mapImageSize(size), }; if (imageUrl) { input.image_url = imageUrl; @@ -737,7 +737,7 @@ async function handleKieImageGeneration({ payload = { prompt, - size: mapImageSize(size, "1:1"), + size: mapImageSize(size), nVariants: body.n || 1, }; } diff --git a/open-sse/handlers/imageGeneration/providers/adobeFirefly.ts b/open-sse/handlers/imageGeneration/providers/adobeFirefly.ts index 4270894188..24f2ba361d 100644 --- a/open-sse/handlers/imageGeneration/providers/adobeFirefly.ts +++ b/open-sse/handlers/imageGeneration/providers/adobeFirefly.ts @@ -15,15 +15,14 @@ import { saveImageErrorResult, saveImageSuccessResult } from "../../imageGenerat import { AdobeFireflyError, adobeFireflyGenerateImage, + adobeFireflyImageTimeoutMs, + adobeFireflyMaxImageRefs, resolveAdobeAccessToken, resolveAdobeSourceImageIds, resolveAdobeImageModel, } from "../../../services/adobeFireflyClient.ts"; - -function normalizePositiveNumber(value: unknown, fallback: number): number { - const n = Number(value); - return Number.isFinite(n) && n > 0 ? n : fallback; -} +import { isAdobeFireflyUpscaleModel } from "../../../services/adobeFireflyUpscale.ts"; +import { handleAdobeFireflyImageUpscale } from "../../imageUpscale/adobeFirefly.ts"; export async function handleAdobeFireflyImageGeneration({ model, @@ -57,6 +56,19 @@ export async function handleAdobeFireflyImageGeneration({ }) { const startTime = Date.now(); const prompt = typeof body.prompt === "string" ? body.prompt.trim() : ""; + + // Topaz upscalers share adobe-firefly but use /v2/3p-images/upsample (no prompt). + if (isAdobeFireflyUpscaleModel(model)) { + return handleAdobeFireflyImageUpscale({ + model, + provider, + body: body as Record, + credentials, + log, + fetchImpl, + }); + } + if (!prompt) { return saveImageErrorResult({ provider, @@ -69,7 +81,6 @@ export async function handleAdobeFireflyImageGeneration({ try { const accessToken = await resolveAdobeAccessToken(credentials, fetchImpl); - const timeoutMs = normalizePositiveNumber(body.timeout_ms, 180_000); const seed = typeof body.seed === "number" ? body.seed @@ -87,12 +98,10 @@ export async function handleAdobeFireflyImageGeneration({ ? credentials.accessToken : undefined); - // Cap uploads by model family (matches MediaViewModel GetSourceImageLimit). + // Cap uploads by model family. gpt-image: 2 subject refs max (3–4+ stalls colligo → 504). + // nano: 4 general refs for multi-panel composition. const { id: resolvedId } = resolveAdobeImageModel(model); - const maxRefs = - resolvedId.includes("nano-banana") || resolvedId.includes("gpt-image") - ? 4 - : 2; + const maxRefs = adobeFireflyMaxImageRefs(resolvedId); const sourceImageIds = await resolveAdobeSourceImageIds({ accessToken, @@ -104,10 +113,22 @@ export async function handleAdobeFireflyImageGeneration({ log, }); + const explicitTimeout = + typeof body.timeout_ms === "number" + ? body.timeout_ms + : typeof body.timeout_ms === "string" && body.timeout_ms.trim() + ? Number(body.timeout_ms) + : undefined; + const timeoutMs = adobeFireflyImageTimeoutMs({ + timeoutMs: explicitTimeout, + refCount: sourceImageIds.length, + }); + log?.info?.( "IMAGE", `${provider}/${model} (adobe-firefly) | prompt: "${prompt.slice(0, 60)}${prompt.length > 60 ? "..." : ""}"` + - (sourceImageIds.length ? ` | refs: ${sourceImageIds.length}` : "") + (sourceImageIds.length ? ` | refs: ${sourceImageIds.length}/${maxRefs}` : "") + + ` | pollTimeoutMs=${timeoutMs}` ); const result = await adobeFireflyGenerateImage({ diff --git a/open-sse/handlers/imageUpscale.ts b/open-sse/handlers/imageUpscale.ts new file mode 100644 index 0000000000..0c8956a18d --- /dev/null +++ b/open-sse/handlers/imageUpscale.ts @@ -0,0 +1,110 @@ +/** + * Image Upscale Handler + * + * Handles `POST /v1/images/upscale` — image→image super-resolution. + * + * Request (OpenAI-adjacent, deliberately minimal): + * { + * "model": "adobe-firefly/topaz-bloom", + * "image": "data:image/png;base64,...", // or image_url / http(s) URL + * "factor": 2, // 2 | 4 (snapped to what the model supports) + * "creativity": 40, // 0-100 % (generative upscalers only) + * "prompt": "…", // required by Stability conservative/creative + * "response_format": "url" | "b64_json" + * } + * + * Response is shaped like `/v1/images/generations` (`{ created, data: [{ url | b64_json }] }`) + * plus an `upscale` metadata block, so existing image clients need no changes. + */ + +import { getUpscaleProvider, parseUpscaleModel } from "../config/upscaleRegistry.ts"; +import { handleAdobeFireflyImageUpscale } from "./imageUpscale/adobeFirefly.ts"; +import { handleStabilityImageUpscale } from "./imageUpscale/stability.ts"; +import { handleTopazImageUpscale } from "./imageUpscale/topaz.ts"; +import type { + UpscaleCredentials, + UpscaleHandlerResult, + UpscaleLogger, +} from "./imageUpscale/shared.ts"; + +export type { UpscaleHandlerResult } from "./imageUpscale/shared.ts"; + +export async function handleImageUpscale({ + body, + credentials, + log, + fetchImpl, +}: { + body: Record; + credentials: UpscaleCredentials | null; + log?: UpscaleLogger; + fetchImpl?: typeof fetch; +}): Promise { + const requestedModel = typeof body.model === "string" ? body.model : ""; + const { provider, model } = parseUpscaleModel(requestedModel); + + if (!provider || !model) { + return { + success: false, + status: 400, + error: + `Invalid upscale model: ${requestedModel || "(missing)"}. ` + + `Use format: provider/model (e.g. adobe-firefly/topaz-bloom).`, + }; + } + + const providerConfig = getUpscaleProvider(provider); + if (!providerConfig) { + return { success: false, status: 400, error: `Unknown upscale provider: ${provider}` }; + } + + if (!providerConfig.models.some((entry) => entry.id === model)) { + return { + success: false, + status: 400, + error: + `Unsupported upscale model for ${provider}: ${model}. ` + + `Available: ${providerConfig.models.map((entry) => entry.id).join(", ")}.`, + }; + } + + const resolvedCredentials = credentials ?? {}; + + switch (providerConfig.format) { + case "adobe-firefly-upscale": + return handleAdobeFireflyImageUpscale({ + model, + provider, + body, + credentials: resolvedCredentials, + log, + ...(fetchImpl ? { fetchImpl } : {}), + }); + case "stability-upscale": + return handleStabilityImageUpscale({ + model, + provider, + providerConfig, + body, + credentials: resolvedCredentials, + log, + ...(fetchImpl ? { fetchImpl } : {}), + }); + case "topaz-upscale": + return handleTopazImageUpscale({ + model, + provider, + providerConfig, + body, + credentials: resolvedCredentials, + log, + ...(fetchImpl ? { fetchImpl } : {}), + }); + default: + return { + success: false, + status: 400, + error: `Upscale is not implemented for provider format: ${providerConfig.format}`, + }; + } +} diff --git a/open-sse/handlers/imageUpscale/adobeFirefly.ts b/open-sse/handlers/imageUpscale/adobeFirefly.ts new file mode 100644 index 0000000000..63b8b7c277 --- /dev/null +++ b/open-sse/handlers/imageUpscale/adobeFirefly.ts @@ -0,0 +1,177 @@ +/** + * Adobe Firefly upscale handler — Topaz Labs models on firefly-3p `/v2/3p-images/upsample`. + * + * Flow (mirrors the SPA and the Firefly generate path): + * 1. Resolve the durable session (JWT + Cookie → ARP rebuild, sticky ARP, submit gate). + * 2. Upload the source image to `/v2/storage/image` → blob id, reusing that ARP. + * 3. POST the upsample job, poll the BKS result link, return the presigned URL. + */ + +import { + AdobeFireflyError, + resolveAdobeAccessToken, + resolveAdobeSourceImageIds, +} from "../../services/adobeFireflyClient.ts"; +import { + adobeFireflyUpscaleImage, + resolveAdobeUpscaleModel, +} from "../../services/adobeFireflyUpscale.ts"; +import { sanitizeErrorMessage } from "../../utils/error.ts"; +import { + extractUpscaleSourceImage, + saveUpscaleErrorResult, + saveUpscaleSuccessResult, + type UpscaleCredentials, + type UpscaleHandlerResult, + type UpscaleLogger, +} from "./shared.ts"; + +export async function handleAdobeFireflyImageUpscale({ + model, + provider, + body, + credentials, + log, + fetchImpl = fetch, +}: { + model: string; + provider: string; + body: Record; + credentials: UpscaleCredentials; + log?: UpscaleLogger; + fetchImpl?: typeof fetch; +}): Promise { + const startTime = Date.now(); + + const resolved = resolveAdobeUpscaleModel(model); + if (!resolved) { + return saveUpscaleErrorResult({ + provider, + model, + status: 400, + startTime, + error: `Unsupported Adobe Firefly upscale model: ${model}. Use topaz-standard or topaz-bloom.`, + }); + } + + if (!extractUpscaleSourceImage(body)) { + return saveUpscaleErrorResult({ + provider, + model, + status: 400, + startTime, + error: "Adobe Firefly upscale requires a source image", + }); + } + + try { + const accessToken = await resolveAdobeAccessToken(credentials, fetchImpl); + // Keep the raw credential blob for Cookie + sherlockToken (x-arp-session-id). + const psd = (credentials as { providerSpecificData?: { cookie?: string } })?.providerSpecificData; + const sessionCookie = + (typeof psd?.cookie === "string" && psd.cookie.trim()) || + (typeof credentials?.apiKey === "string" && credentials.apiKey.trim()) || + (typeof credentials?.accessToken === "string" && credentials.accessToken.includes(";") + ? credentials.accessToken + : undefined); + + // Upscale consumes exactly one source; upload it under the same ARP as submit. + const blobIds = await resolveAdobeSourceImageIds({ + accessToken, + body, + max: 1, + sessionCookie, + prompt: "upsample", + fetchImpl, + log, + }); + + if (blobIds.length === 0) { + return saveUpscaleErrorResult({ + provider, + model, + status: 400, + startTime, + error: "Adobe Firefly upscale could not resolve the source image", + }); + } + + const timeoutMs = normalizePositiveNumber(body.timeout_ms, 0); + const result = await adobeFireflyUpscaleImage({ + accessToken, + model, + blobId: blobIds[0]!, + upsamplerFactor: readFactor(body), + creativityPercent: readCreativityPercent(body), + creativityLevel: body.creativity_level ?? body.creativityLevel, + sessionCookie, + ...(timeoutMs > 0 ? { timeoutMs } : {}), + fetchImpl, + log, + }); + + log?.info?.( + "IMAGE", + `${provider}/${model} (adobe-firefly upsample) | ${result.factor}x` + + (resolved.spec.supportsCreativity ? ` | creativityLevel=${result.creativityLevel}` : "") + ); + + return saveUpscaleSuccessResult({ + provider, + model, + startTime, + images: [{ url: result.url }], + meta: { + provider, + model, + factor: result.factor, + ...(resolved.spec.supportsCreativity ? { creativity_level: result.creativityLevel } : {}), + }, + }); + } catch (err) { + if (err instanceof AdobeFireflyError) { + log?.error?.("IMAGE", `${provider} adobe-firefly upscale error ${err.status}: ${err.message}`); + return saveUpscaleErrorResult({ + provider, + model, + status: err.status, + startTime, + error: err.message, + }); + } + const errorText = sanitizeErrorMessage(err instanceof Error ? err.message : String(err)); + log?.error?.("IMAGE", `${provider} adobe-firefly upscale exception: ${errorText}`); + return saveUpscaleErrorResult({ + provider, + model, + status: 500, + startTime, + error: errorText, + }); + } +} + +function readFactor(body: Record): unknown { + return ( + body.factor ?? + body.scale ?? + body.upscale_factor ?? + body.upscaleFactor ?? + body.upsampler_factor ?? + body.upsamplerFactor + ); +} + +function readCreativityPercent(body: Record): number | undefined { + const raw = body.creativity ?? body.creativity_percent ?? body.creativityPercent; + if (raw === undefined || raw === null) return undefined; + const n = typeof raw === "number" ? raw : Number(String(raw).replace("%", "").trim()); + if (!Number.isFinite(n)) return undefined; + if (n > 0 && n < 1) return Math.max(0, Math.min(100, n * 100)); + return Math.max(0, Math.min(100, n)); +} + +function normalizePositiveNumber(value: unknown, fallback: number): number { + const n = Number(value); + return Number.isFinite(n) && n > 0 ? n : fallback; +} diff --git a/open-sse/handlers/imageUpscale/shared.ts b/open-sse/handlers/imageUpscale/shared.ts new file mode 100644 index 0000000000..cf37e99910 --- /dev/null +++ b/open-sse/handlers/imageUpscale/shared.ts @@ -0,0 +1,391 @@ +/** + * Shared plumbing for the `/v1/images/upscale` provider handlers. + * + * Kept separate from `handlers/imageGeneration.ts` on purpose: upscaling needs raw + * source bytes + pixel dimensions (to turn a 2x/4x factor into an output size for + * providers that only accept absolute targets), neither of which the generation + * handler exposes. + */ + +import { saveCallLog } from "@/lib/usageDb"; +import { fetchRemoteImage } from "@/shared/network/remoteImageFetch"; + +export const UPSCALE_CALL_LOG_PATH = "/v1/images/upscale"; + +/** Hard cap on a decoded source image (matches the Firefly storage upload limit). */ +export const MAX_UPSCALE_SOURCE_BYTES = 20 * 1024 * 1024; + +export interface UpscaleImageSource { + buffer: Buffer; + base64: string; + contentType: string; +} + +export interface UpscaleHandlerResult { + success: boolean; + status?: number; + error?: unknown; + data?: unknown; +} + +export interface UpscaleLogger { + info?: (scope: string, message: string) => void; + error?: (scope: string, message: string) => void; +} + +/** + * Credential shape the upscale handlers need. Mirrors what + * `getProviderCredentialsWithQuotaPreflight` yields for these providers: an API key or + * access token, plus (for Adobe Firefly) the connection's `providerSpecificData`, which + * is where a pasted firefly.adobe.com Cookie lives. + */ +export interface UpscaleCredentials { + apiKey?: string; + accessToken?: string; + providerSpecificData?: { + cookie?: unknown; + access_token?: unknown; + accessToken?: unknown; + } | null; +} + +/** + * `Buffer` is typed as `Buffer`, which TypeScript will not accept as a + * `BlobPart` (a Blob part must be backed by a plain `ArrayBuffer`). Copy the bytes into a + * fresh `ArrayBuffer` so multipart bodies typecheck without an unsafe cast. + */ +export function toBlobBytes(buffer: Buffer): ArrayBuffer { + const out = new ArrayBuffer(buffer.byteLength); + new Uint8Array(out).set(buffer); + return out; +} + +/** + * Collect the source image from an OpenAI-ish / Media-page body. + * + * Only ONE image is meaningful for an upscale, so the first resolvable candidate + * wins. Field order mirrors `extractAdobeSourceImageSources` so a body built for + * generation keeps working here. + */ +export function extractUpscaleSourceImage(body: unknown): string | null { + if (!body || typeof body !== "object") return null; + const b = body as Record; + const providerOptions = + b.provider_options && typeof b.provider_options === "object" && !Array.isArray(b.provider_options) + ? (b.provider_options as Record) + : {}; + + const keys = [ + "image_url", + "imageUrl", + "input_image", + "source_image", + "promptImage", + "prompt_image", + "image", + "images", + "image_urls", + "imageUrls", + "input_images", + "reference_images", + "referenceImages", + "reference_image", + ]; + + for (const key of keys) { + const found = firstImageCandidate(b[key]) || firstImageCandidate(providerOptions[key]); + if (found) return found; + } + + if (Array.isArray(b.messages)) { + for (const msg of b.messages) { + if (!msg || typeof msg !== "object") continue; + const content = (msg as Record).content; + if (!Array.isArray(content)) continue; + for (const part of content) { + if (!part || typeof part !== "object") continue; + const p = part as Record; + if (p.type === "image_url" || p.type === "image") { + const found = firstImageCandidate(p.image_url ?? p.image ?? p.url); + if (found) return found; + } + } + } + } + + return null; +} + +function firstImageCandidate(value: unknown): string | null { + if (typeof value === "string") { + const trimmed = value.trim(); + if (!trimmed || trimmed === "null" || trimmed === "undefined") return null; + return trimmed; + } + if (Array.isArray(value)) { + for (const item of value) { + const found = firstImageCandidate(item); + if (found) return found; + } + return null; + } + if (value && typeof value === "object") { + const o = value as Record; + if (typeof o.url === "string") return firstImageCandidate(o.url); + if (typeof o.image_url === "string") return firstImageCandidate(o.image_url); + if (o.image_url && typeof o.image_url === "object") { + return firstImageCandidate((o.image_url as Record).url); + } + if (typeof o.b64_json === "string") return `data:image/png;base64,${o.b64_json}`; + if (typeof o.base64 === "string") return `data:image/png;base64,${o.base64}`; + } + return null; +} + +/** Decode a data URL / http(s) URL / bare base64 string into bytes. */ +export async function resolveUpscaleImageSource(source: string): Promise { + const trimmed = String(source || "").trim(); + if (!trimmed) throw new Error("Invalid image source"); + + const dataUri = /^data:([^;,]+)?(?:;charset=[^;,]+)?;base64,([\s\S]+)$/i.exec(trimmed); + if (dataUri) { + const contentType = (dataUri[1] || "image/png").trim().toLowerCase(); + const base64 = (dataUri[2] || "").replace(/\s/g, ""); + const buffer = Buffer.from(base64, "base64"); + assertSourceBytes(buffer); + return { + buffer, + base64, + contentType: contentType.startsWith("image/") ? contentType : "image/png", + }; + } + + if (/^https?:\/\//i.test(trimmed)) { + const remote = await fetchRemoteImage(trimmed); + assertSourceBytes(remote.buffer); + // fetchRemoteImage falls back to application/octet-stream; sniff whenever the + // server did not send a usable image/* type so multipart uploads stay correct. + const declared = (remote.contentType || "").split(";")[0]!.trim().toLowerCase(); + return { + buffer: remote.buffer, + base64: remote.buffer.toString("base64"), + contentType: declared.startsWith("image/") ? declared : sniffImageMime(remote.buffer), + }; + } + + const buffer = Buffer.from(trimmed.replace(/\s/g, ""), "base64"); + assertSourceBytes(buffer); + return { buffer, base64: buffer.toString("base64"), contentType: sniffImageMime(buffer) }; +} + +function assertSourceBytes(buffer: Buffer): void { + if (!buffer.length) throw new Error("Source image decoded to empty bytes"); + if (buffer.length > MAX_UPSCALE_SOURCE_BYTES) { + throw new Error( + `Source image too large (${buffer.length} bytes; max ${MAX_UPSCALE_SOURCE_BYTES})` + ); + } +} + +/** Best-effort MIME sniff from the magic bytes (falls back to PNG). */ +export function sniffImageMime(buffer: Buffer): string { + if (buffer.length >= 3 && buffer[0] === 0xff && buffer[1] === 0xd8 && buffer[2] === 0xff) { + return "image/jpeg"; + } + if (buffer.length >= 8 && buffer[0] === 0x89 && buffer.toString("ascii", 1, 4) === "PNG") { + return "image/png"; + } + if (buffer.length >= 6 && buffer.toString("ascii", 0, 3) === "GIF") return "image/gif"; + if ( + buffer.length >= 12 && + buffer.toString("ascii", 0, 4) === "RIFF" && + buffer.toString("ascii", 8, 12) === "WEBP" + ) { + return "image/webp"; + } + if (buffer.length >= 2 && buffer.toString("ascii", 0, 2) === "BM") return "image/bmp"; + return "image/png"; +} + +/** + * Read pixel dimensions straight from the container header — no image library needed. + * Supports PNG, JPEG (SOFn scan), GIF, WebP (VP8 / VP8L / VP8X) and BMP. + * Returns null when the format is unknown or the header is truncated. + */ +export function readImageDimensions(buffer: Buffer): { width: number; height: number } | null { + try { + if ( + buffer.length >= 24 && + buffer[0] === 0x89 && + buffer.toString("ascii", 1, 4) === "PNG" + ) { + // IHDR is always the first chunk: 8-byte signature + 4 length + 4 "IHDR". + return { width: buffer.readUInt32BE(16), height: buffer.readUInt32BE(20) }; + } + + if (buffer.length >= 6 && buffer.toString("ascii", 0, 3) === "GIF") { + return { width: buffer.readUInt16LE(6), height: buffer.readUInt16LE(8) }; + } + + if (buffer.length >= 26 && buffer.toString("ascii", 0, 2) === "BM") { + return { width: buffer.readInt32LE(18), height: Math.abs(buffer.readInt32LE(22)) }; + } + + if ( + buffer.length >= 30 && + buffer.toString("ascii", 0, 4) === "RIFF" && + buffer.toString("ascii", 8, 12) === "WEBP" + ) { + return readWebpDimensions(buffer); + } + + if (buffer.length >= 4 && buffer[0] === 0xff && buffer[1] === 0xd8) { + return readJpegDimensions(buffer); + } + } catch { + return null; + } + return null; +} + +function readWebpDimensions(buffer: Buffer): { width: number; height: number } | null { + const chunk = buffer.toString("ascii", 12, 16); + if (chunk === "VP8 " && buffer.length >= 30) { + // Lossy: 3-byte frame tag + 3-byte sync code, then 14-bit width/height. + return { + width: buffer.readUInt16LE(26) & 0x3fff, + height: buffer.readUInt16LE(28) & 0x3fff, + }; + } + if (chunk === "VP8L" && buffer.length >= 25) { + const bits = buffer.readUInt32LE(21); + return { width: (bits & 0x3fff) + 1, height: ((bits >> 14) & 0x3fff) + 1 }; + } + if (chunk === "VP8X" && buffer.length >= 30) { + const width = 1 + (buffer[24]! | (buffer[25]! << 8) | (buffer[26]! << 16)); + const height = 1 + (buffer[27]! | (buffer[28]! << 8) | (buffer[29]! << 16)); + return { width, height }; + } + return null; +} + +function readJpegDimensions(buffer: Buffer): { width: number; height: number } | null { + let offset = 2; + while (offset + 9 < buffer.length) { + if (buffer[offset] !== 0xff) { + offset += 1; + continue; + } + const marker = buffer[offset + 1]!; + // Standalone markers (no length payload). + if (marker === 0xd8 || marker === 0x01 || (marker >= 0xd0 && marker <= 0xd7)) { + offset += 2; + continue; + } + const length = buffer.readUInt16BE(offset + 2); + // SOF0..SOF15 except DHT(c4)/JPGA(c8)/DAC(cc) carry the frame dimensions. + const isSof = + marker >= 0xc0 && marker <= 0xcf && marker !== 0xc4 && marker !== 0xc8 && marker !== 0xcc; + if (isSof) { + return { height: buffer.readUInt16BE(offset + 5), width: buffer.readUInt16BE(offset + 7) }; + } + if (length <= 0) return null; + offset += 2 + length; + } + return null; +} + +/** + * Absolute output size for a scale factor, clamped to `maxEdge` so a 4x pass on an + * already-large source cannot ask for an impossible canvas. Returns null when the + * source dimensions could not be read. + */ +export function scaleDimensions( + buffer: Buffer, + factor: number, + maxEdge = 32000 +): { width: number; height: number } | null { + const source = readImageDimensions(buffer); + if (!source || source.width <= 0 || source.height <= 0) return null; + const safeFactor = Number.isFinite(factor) && factor > 0 ? factor : 2; + const scale = Math.min( + safeFactor, + maxEdge / Math.max(source.width, source.height) + ); + return { + width: Math.max(1, Math.round(source.width * Math.max(1, scale))), + height: Math.max(1, Math.round(source.height * Math.max(1, scale))), + }; +} + +/** OpenAI-images-shaped success envelope + call log. */ +export function saveUpscaleSuccessResult(opts: { + provider: string; + model: string; + startTime: number; + images: Array>; + requestBody?: unknown; + responseBody?: unknown; + meta?: Record; +}): UpscaleHandlerResult { + saveCallLog({ + method: "POST", + path: UPSCALE_CALL_LOG_PATH, + status: 200, + model: `${opts.provider}/${opts.model}`, + provider: opts.provider, + duration: Date.now() - opts.startTime, + requestBody: opts.requestBody ?? null, + responseBody: opts.responseBody ?? { images_count: opts.images.length }, + }).catch(() => {}); + + return { + success: true, + data: { + created: Math.floor(Date.now() / 1000), + data: opts.images, + ...(opts.meta ? { upscale: opts.meta } : {}), + }, + }; +} + +export function saveUpscaleErrorResult(opts: { + provider: string; + model: string; + status: number; + startTime: number; + error: unknown; + requestBody?: unknown; +}): UpscaleHandlerResult { + saveCallLog({ + method: "POST", + path: UPSCALE_CALL_LOG_PATH, + status: opts.status, + model: `${opts.provider}/${opts.model}`, + provider: opts.provider, + duration: Date.now() - opts.startTime, + error: + typeof opts.error === "string" + ? opts.error.slice(0, 500) + : String(opts.error).slice(0, 500), + requestBody: opts.requestBody ?? null, + }).catch(() => {}); + + return { success: false, status: opts.status, error: opts.error }; +} + +/** `{ url }` or `{ b64_json }` depending on the requested response_format. */ +export function buildUpscaleImageEntry(opts: { + buffer?: Buffer | null; + contentType?: string; + url?: string | null; + responseFormat?: unknown; +}): Record { + const wantsBase64 = String(opts.responseFormat ?? "").toLowerCase() === "b64_json"; + if (opts.buffer && opts.buffer.length > 0) { + const base64 = opts.buffer.toString("base64"); + const mime = opts.contentType || sniffImageMime(opts.buffer); + return wantsBase64 ? { b64_json: base64 } : { url: `data:${mime};base64,${base64}` }; + } + return { url: String(opts.url || "") }; +} diff --git a/open-sse/handlers/imageUpscale/stability.ts b/open-sse/handlers/imageUpscale/stability.ts new file mode 100644 index 0000000000..4b323ea222 --- /dev/null +++ b/open-sse/handlers/imageUpscale/stability.ts @@ -0,0 +1,335 @@ +/** + * Stability AI upscale handler — `/v2beta/stable-image/upscale/{fast,conservative,creative}`. + * + * Wire contract (platform.stability.ai): + * - all three take multipart/form-data with an `image` part + * - `Accept: application/json` → `{ image: , finish_reason, seed }` + * - `fast` : no prompt, fixed 4x + * - `conservative` : prompt REQUIRED, `creativity` 0.2-0.5 (default 0.35), synchronous + * - `creative` : prompt REQUIRED, `creativity` 0-0.35 (default 0.3), **async** — + * responds `{ id }`, then `GET /v2beta/results/{id}` returns 202 while + * running and 200 with the base64 image when finished. + * + * The generation handler's stability path does not poll, so the async `creative` + * variant is implemented here rather than delegated. + */ + +import { + buildUpscaleImageEntry, + extractUpscaleSourceImage, + resolveUpscaleImageSource, + saveUpscaleErrorResult, + saveUpscaleSuccessResult, + toBlobBytes, + type UpscaleCredentials, + type UpscaleHandlerResult, + type UpscaleLogger, +} from "./shared.ts"; +import { sanitizeErrorMessage } from "../../utils/error.ts"; + +const UPSCALE_ENDPOINTS: Record = { + fast: "/v2beta/stable-image/upscale/fast", + conservative: "/v2beta/stable-image/upscale/conservative", + creative: "/v2beta/stable-image/upscale/creative", +}; + +/** Documented `creativity` range per model — a 0-100 % request is mapped into it. */ +const CREATIVITY_RANGES: Record = { + conservative: { min: 0.2, max: 0.5, fallback: 0.35 }, + creative: { min: 0, max: 0.35, fallback: 0.3 }, +}; + +/** Models whose upstream rejects a request without a prompt. */ +const PROMPT_REQUIRED = new Set(["conservative", "creative"]); + +/** `creative` is an async job. */ +const ASYNC_MODELS = new Set(["creative"]); + +const RESULT_POLL_INTERVAL_MS = 3000; +const DEFAULT_RESULT_TIMEOUT_MS = 300_000; +const ALLOWED_OUTPUT_FORMATS = ["png", "jpeg", "webp"]; + +export async function handleStabilityImageUpscale({ + model, + provider, + providerConfig, + body, + credentials, + log, + fetchImpl = fetch, +}: { + model: string; + provider: string; + providerConfig: { baseUrl: string }; + body: Record; + credentials: UpscaleCredentials; + log?: UpscaleLogger; + fetchImpl?: typeof fetch; +}): Promise { + const startTime = Date.now(); + const endpoint = UPSCALE_ENDPOINTS[model]; + if (!endpoint) { + return saveUpscaleErrorResult({ + provider, + model, + status: 400, + startTime, + error: `Unsupported Stability AI upscale model: ${model}. Use fast, conservative or creative.`, + }); + } + + const token = credentials.apiKey || credentials.accessToken; + if (!token) { + return saveUpscaleErrorResult({ + provider, + model, + status: 401, + startTime, + error: "Missing Stability AI API key", + }); + } + + const source = extractUpscaleSourceImage(body); + if (!source) { + return saveUpscaleErrorResult({ + provider, + model, + status: 400, + startTime, + error: `Stability AI upscale model ${model} requires a source image`, + }); + } + + const prompt = typeof body.prompt === "string" ? body.prompt.trim() : ""; + if (PROMPT_REQUIRED.has(model) && !prompt) { + return saveUpscaleErrorResult({ + provider, + model, + status: 400, + startTime, + error: + `Stability AI "${model}" upscale requires a prompt describing the image. ` + + `Use the "fast" model for a prompt-free 4x upscale.`, + }); + } + + const outputFormat = normalizeOutputFormat(body.output_format ?? body.format); + const creativity = CREATIVITY_RANGES[model] + ? mapCreativity(body, CREATIVITY_RANGES[model]!) + : null; + + const requestSummary: Record = { model, output_format: outputFormat }; + if (prompt) requestSummary.prompt = prompt; + if (creativity !== null) requestSummary.creativity = creativity; + + try { + const imageSource = await resolveUpscaleImageSource(source); + + const formData = new FormData(); + formData.append( + "image", + new Blob([toBlobBytes(imageSource.buffer)], { type: imageSource.contentType || "image/png" }), + "image" + ); + formData.append("output_format", outputFormat); + if (prompt) formData.append("prompt", prompt); + if (typeof body.negative_prompt === "string" && body.negative_prompt.trim()) { + formData.append("negative_prompt", body.negative_prompt.trim()); + } + if (creativity !== null) formData.append("creativity", String(creativity)); + if (body.seed !== undefined && body.seed !== null && String(body.seed).trim()) { + formData.append("seed", String(body.seed)); + } + if (typeof body.style_preset === "string" && body.style_preset.trim()) { + formData.append("style_preset", body.style_preset.trim()); + } + + log?.info?.( + "IMAGE", + `${provider}/${model} (stability upscale)` + + (creativity !== null ? ` | creativity=${creativity}` : "") + + ` | output=${outputFormat}` + ); + + const baseUrl = providerConfig.baseUrl.replace(/\/$/, ""); + const response = await fetchImpl(`${baseUrl}${endpoint}`, { + method: "POST", + headers: { Accept: "application/json", Authorization: `Bearer ${token}` }, + body: formData, + }); + + if (!response.ok) { + const errorText = await response.text().catch(() => ""); + log?.error?.( + "IMAGE", + `${provider} stability upscale error ${response.status}: ${errorText.slice(0, 200)}` + ); + return saveUpscaleErrorResult({ + provider, + model, + status: response.status, + startTime, + error: errorText || `HTTP ${response.status}`, + requestBody: requestSummary, + }); + } + + const payload = (await response.json().catch(() => ({}))) as Record; + + let finalPayload = payload; + if (ASYNC_MODELS.has(model) && typeof payload.id === "string" && payload.id) { + finalPayload = await pollStabilityResult({ + baseUrl, + token, + id: payload.id, + timeoutMs: normalizePositiveNumber(body.timeout_ms, DEFAULT_RESULT_TIMEOUT_MS), + fetchImpl, + log, + }); + } + + const finishReason = String(finalPayload.finish_reason ?? "").toUpperCase(); + if (finishReason === "CONTENT_FILTERED") { + return saveUpscaleErrorResult({ + provider, + model, + status: 400, + startTime, + error: "Stability AI filtered the upscale result (CONTENT_FILTERED)", + requestBody: requestSummary, + }); + } + + const base64 = typeof finalPayload.image === "string" ? finalPayload.image : ""; + if (!base64) { + return saveUpscaleErrorResult({ + provider, + model, + status: 502, + startTime, + error: "Stability AI upscale returned no image", + requestBody: requestSummary, + }); + } + + const buffer = Buffer.from(base64, "base64"); + return saveUpscaleSuccessResult({ + provider, + model, + startTime, + requestBody: requestSummary, + images: [ + buildUpscaleImageEntry({ + buffer, + contentType: `image/${outputFormat === "jpeg" ? "jpeg" : outputFormat}`, + responseFormat: body.response_format, + }), + ], + meta: { + provider, + model, + factor: 4, + ...(creativity !== null ? { creativity } : {}), + ...(finalPayload.seed !== undefined ? { seed: finalPayload.seed } : {}), + }, + }); + } catch (err) { + const errorText = sanitizeErrorMessage(err instanceof Error ? err.message : String(err)); + log?.error?.("IMAGE", `${provider} stability upscale exception: ${errorText}`); + return saveUpscaleErrorResult({ + provider, + model, + status: 502, + startTime, + error: `Image upscale provider error: ${errorText}`, + requestBody: requestSummary, + }); + } +} + +/** Poll `GET /v2beta/results/{id}` until the async creative upscale finishes. */ +async function pollStabilityResult(opts: { + baseUrl: string; + token: string; + id: string; + timeoutMs: number; + fetchImpl: typeof fetch; + log?: UpscaleLogger; +}): Promise> { + const deadline = Date.now() + opts.timeoutMs; + let attempt = 0; + + while (Date.now() < deadline) { + attempt += 1; + const response = await opts.fetchImpl( + `${opts.baseUrl}/v2beta/results/${encodeURIComponent(opts.id)}`, + { + method: "GET", + headers: { Accept: "application/json", Authorization: `Bearer ${opts.token}` }, + } + ); + + if (response.status === 202) { + opts.log?.info?.("IMAGE", `stability creative upscale pending #${attempt}`); + await sleep(RESULT_POLL_INTERVAL_MS); + continue; + } + + if (!response.ok) { + const text = await response.text().catch(() => ""); + if (response.status === 429 || response.status >= 500) { + await sleep(RESULT_POLL_INTERVAL_MS); + continue; + } + throw new Error( + `Stability AI upscale result failed (${response.status}): ${text.slice(0, 300)}` + ); + } + + return (await response.json().catch(() => ({}))) as Record; + } + + throw new Error("Stability AI creative upscale timed out"); +} + +function normalizeOutputFormat(value: unknown): string { + const raw = String(value ?? "").trim().toLowerCase(); + if (raw === "jpg") return "jpeg"; + return ALLOWED_OUTPUT_FORMATS.includes(raw) ? raw : "png"; +} + +/** + * Map the API's 0-100 % creativity onto the model's documented float range. + * An explicit in-range float (`creativity: 0.4`) is passed through untouched so + * power users keep exact control. + */ +function mapCreativity( + body: Record, + range: { min: number; max: number; fallback: number } +): number { + const raw = body.creativity ?? body.creativity_percent ?? body.creativityPercent; + if (raw === undefined || raw === null || String(raw).trim() === "") return range.fallback; + + const n = typeof raw === "number" ? raw : Number(String(raw).replace("%", "").trim()); + if (!Number.isFinite(n)) return range.fallback; + + // Values that already look like a native Stability creativity float (< 1 and not a + // whole percent) are honored as-is, clamped to the documented range. + if (n > 0 && n < 1) return round2(Math.max(range.min, Math.min(range.max, n))); + + const percent = Math.max(0, Math.min(100, n)); + return round2(range.min + ((range.max - range.min) * percent) / 100); +} + +function round2(n: number): number { + return Math.round(n * 100) / 100; +} + +function normalizePositiveNumber(value: unknown, fallback: number): number { + const n = Number(value); + return Number.isFinite(n) && n > 0 ? n : fallback; +} + +async function sleep(ms: number): Promise { + await new Promise((resolve) => setTimeout(resolve, ms)); +} diff --git a/open-sse/handlers/imageUpscale/topaz.ts b/open-sse/handlers/imageUpscale/topaz.ts new file mode 100644 index 0000000000..100102a37b --- /dev/null +++ b/open-sse/handlers/imageUpscale/topaz.ts @@ -0,0 +1,271 @@ +/** + * Topaz Labs upscale handler — native Image API `POST /image/v1/enhance`. + * + * Wire contract (docs.topazlabs.com Image API v1): + * headers: X-API-Key: , accept: image/ + * multipart/form-data: + * image (required) source bytes + * model (optional) e.g. "Standard V2" / "High Fidelity V2" / "Low Resolution V2" + * output_width (optional) absolute target width + * output_height (optional) absolute target height + * output_format (optional) jpeg | png | webp + * sharpen / denoise / fix_compression (optional) 0-1 strengths + * face_enhancement (optional) boolean + * → raw image bytes of the enhanced result. + * + * The endpoint only accepts an ABSOLUTE target size, so a 2x/4x factor is turned into + * `output_width`/`output_height` by reading the source dimensions out of the container + * header (`scaleDimensions`). When the dimensions cannot be read the factor is dropped + * and Topaz's own default upscale applies, rather than failing the request. + */ + +import { + buildUpscaleImageEntry, + extractUpscaleSourceImage, + resolveUpscaleImageSource, + saveUpscaleErrorResult, + saveUpscaleSuccessResult, + scaleDimensions, + sniffImageMime, + toBlobBytes, + type UpscaleCredentials, + type UpscaleHandlerResult, + type UpscaleLogger, +} from "./shared.ts"; +import { sanitizeErrorMessage } from "../../utils/error.ts"; + +/** Topaz caps a single output edge well below this; keeps a 4x pass on a huge source sane. */ +const MAX_OUTPUT_EDGE = 16000; +const ALLOWED_OUTPUT_FORMATS = ["png", "jpeg", "webp"]; + +export async function handleTopazImageUpscale({ + model, + provider, + providerConfig, + body, + credentials, + log, + fetchImpl = fetch, +}: { + model: string; + provider: string; + providerConfig: { baseUrl: string }; + body: Record; + credentials: UpscaleCredentials; + log?: UpscaleLogger; + fetchImpl?: typeof fetch; +}): Promise { + const startTime = Date.now(); + const token = credentials.apiKey || credentials.accessToken; + if (!token) { + return saveUpscaleErrorResult({ + provider, + model, + status: 401, + startTime, + error: "Missing Topaz Labs API key", + }); + } + + const source = extractUpscaleSourceImage(body); + if (!source) { + return saveUpscaleErrorResult({ + provider, + model, + status: 400, + startTime, + error: `Topaz Labs upscale model ${model} requires a source image`, + }); + } + + const factor = normalizeFactor(body); + const outputFormat = normalizeOutputFormat(body.output_format ?? body.format); + const requestSummary: Record = { model, factor, output_format: outputFormat }; + + try { + const imageSource = await resolveUpscaleImageSource(source); + + const formData = new FormData(); + formData.append( + "image", + new Blob([toBlobBytes(imageSource.buffer)], { type: imageSource.contentType || "image/png" }), + "image" + ); + formData.append("output_format", outputFormat); + + const explicitSize = parseExplicitSize(body.size ?? body.output_size); + const target = explicitSize ?? scaleDimensions(imageSource.buffer, factor, MAX_OUTPUT_EDGE); + if (target) { + formData.append("output_width", String(target.width)); + formData.append("output_height", String(target.height)); + requestSummary.output_width = target.width; + requestSummary.output_height = target.height; + } else { + log?.info?.( + "IMAGE", + `${provider}/${model} (topaz upscale) | source dimensions unknown — using Topaz default scale` + ); + } + + const topazModel = typeof body.topaz_model === "string" ? body.topaz_model.trim() : ""; + if (topazModel) { + formData.append("model", topazModel); + requestSummary.topaz_model = topazModel; + } + + appendUnitFloat(formData, "sharpen", body.sharpen, requestSummary); + appendUnitFloat(formData, "denoise", body.denoise, requestSummary); + appendUnitFloat(formData, "fix_compression", body.fix_compression, requestSummary); + + if (body.face_enhancement !== undefined && body.face_enhancement !== null) { + const enabled = toBoolean(body.face_enhancement); + formData.append("face_enhancement", enabled ? "true" : "false"); + requestSummary.face_enhancement = enabled; + // Topaz exposes creativity/strength only when face enhancement is on. + if (enabled) { + appendUnitFloat( + formData, + "face_enhancement_creativity", + body.creativity ?? body.face_enhancement_creativity, + requestSummary, + /* percentAware */ true + ); + appendUnitFloat( + formData, + "face_enhancement_strength", + body.face_enhancement_strength, + requestSummary + ); + } + } + + log?.info?.( + "IMAGE", + `${provider}/${model} (topaz upscale) | ${factor}x` + + (target ? ` → ${target.width}x${target.height}` : "") + + ` | output=${outputFormat}` + ); + + const baseUrl = providerConfig.baseUrl.replace(/\/$/, ""); + const response = await fetchImpl(`${baseUrl}/image/v1/enhance`, { + method: "POST", + headers: { + Accept: `image/${outputFormat}`, + "X-API-Key": token, + }, + body: formData, + }); + + if (!response.ok) { + const errorText = await response.text().catch(() => ""); + log?.error?.( + "IMAGE", + `${provider} topaz upscale error ${response.status}: ${errorText.slice(0, 200)}` + ); + return saveUpscaleErrorResult({ + provider, + model, + status: response.status, + startTime, + error: errorText || `HTTP ${response.status}`, + requestBody: requestSummary, + }); + } + + const buffer = Buffer.from(await response.arrayBuffer()); + if (!buffer.length) { + return saveUpscaleErrorResult({ + provider, + model, + status: 502, + startTime, + error: "Topaz Labs upscale returned an empty body", + requestBody: requestSummary, + }); + } + + const declared = (response.headers.get("content-type") || "").split(";")[0]!.trim().toLowerCase(); + const contentType = declared.startsWith("image/") ? declared : sniffImageMime(buffer); + + return saveUpscaleSuccessResult({ + provider, + model, + startTime, + requestBody: requestSummary, + images: [ + buildUpscaleImageEntry({ buffer, contentType, responseFormat: body.response_format }), + ], + meta: { provider, model, factor, ...(target ? { width: target.width, height: target.height } : {}) }, + }); + } catch (err) { + const errorText = sanitizeErrorMessage(err instanceof Error ? err.message : String(err)); + log?.error?.("IMAGE", `${provider} topaz upscale exception: ${errorText}`); + return saveUpscaleErrorResult({ + provider, + model, + status: 502, + startTime, + error: `Image upscale provider error: ${errorText}`, + requestBody: requestSummary, + }); + } +} + +function normalizeFactor(body: Record): number { + const raw = + body.factor ?? + body.scale ?? + body.upscale_factor ?? + body.upscaleFactor ?? + body.upsampler_factor ?? + body.upsamplerFactor; + let n = typeof raw === "number" ? raw : Number(String(raw ?? "").replace(/[^\d.]/g, "")); + if (!Number.isFinite(n) || n <= 0) return 2; + return Math.abs(n - 4) < Math.abs(n - 2) ? 4 : 2; +} + +function normalizeOutputFormat(value: unknown): string { + const raw = String(value ?? "").trim().toLowerCase(); + if (raw === "jpg") return "jpeg"; + return ALLOWED_OUTPUT_FORMATS.includes(raw) ? raw : "png"; +} + +function parseExplicitSize(value: unknown): { width: number; height: number } | null { + if (typeof value !== "string") return null; + const match = /^(\d+)\s*[x×]\s*(\d+)$/i.exec(value.trim()); + if (!match) return null; + const width = Number(match[1]); + const height = Number(match[2]); + if (!Number.isFinite(width) || !Number.isFinite(height) || width <= 0 || height <= 0) return null; + return { + width: Math.min(width, MAX_OUTPUT_EDGE), + height: Math.min(height, MAX_OUTPUT_EDGE), + }; +} + +/** + * Append a 0-1 strength. Percent-aware fields also accept 0-100 (the shared UI + * creativity slider), which is divided down; anything non-numeric is skipped. + */ +function appendUnitFloat( + formData: FormData, + key: string, + value: unknown, + summary: Record, + percentAware = false +): void { + if (value === undefined || value === null || String(value).trim() === "") return; + let n = typeof value === "number" ? value : Number(String(value).replace("%", "").trim()); + if (!Number.isFinite(n)) return; + if (percentAware && n > 1) n = n / 100; + n = Math.max(0, Math.min(1, n)); + const rounded = Math.round(n * 100) / 100; + formData.append(key, String(rounded)); + summary[key] = rounded; +} + +function toBoolean(value: unknown): boolean { + if (typeof value === "boolean") return value; + const raw = String(value ?? "").trim().toLowerCase(); + return raw === "true" || raw === "1" || raw === "yes" || raw === "on"; +} diff --git a/open-sse/handlers/responseSanitizer.ts b/open-sse/handlers/responseSanitizer.ts index 140011f64e..77a126ed34 100644 --- a/open-sse/handlers/responseSanitizer.ts +++ b/open-sse/handlers/responseSanitizer.ts @@ -42,8 +42,17 @@ const ALLOWED_RESPONSES_USAGE_FIELDS = new Set([ "input_tokens_details", "output_tokens_details", "estimated", + "cost_in_usd_ticks", + "server_side_tool_usage_details", + "server_side_tool_usage", ]); +const RESPONSES_EXTRA_TOP_LEVEL_FIELDS = [ + "server_side_tool_usage_details", + "server_side_tool_usage", + "cost_in_usd_ticks", +] as const; + type JsonRecord = Record; type ParseOptions = { parseTextualReasoningTags?: boolean }; @@ -355,6 +364,10 @@ export function sanitizeResponsesApiResponse(body: unknown): unknown { sanitized.usage = sanitizeResponsesUsage(responseRoot.usage); } + for (const key of RESPONSES_EXTRA_TOP_LEVEL_FIELDS) { + if (responseRoot[key] !== undefined) sanitized[key] = responseRoot[key]; + } + return sanitized; } diff --git a/open-sse/handlers/responseTranslator.ts b/open-sse/handlers/responseTranslator.ts index 7c03f1f623..165e292dc0 100644 --- a/open-sse/handlers/responseTranslator.ts +++ b/open-sse/handlers/responseTranslator.ts @@ -6,6 +6,10 @@ import { import { normalizeOpenAICompatibleFinishReasonString } from "../utils/finishReason.ts"; import { containsTextualToolCallMarker } from "../utils/textualToolCall.ts"; import { getAnyReasoningValue } from "../utils/reasoningFields.ts"; +import { + caseInsensitiveToolNameLookup, + restoreOpenAIToolNames, +} from "../translator/helpers/toolCallHelper.ts"; type JsonRecord = Record; @@ -137,11 +141,18 @@ export function translateNonStreamingResponse( ): unknown { // If already in source format, return as-is if (targetFormat === sourceFormat) { + if (targetFormat === FORMATS.OPENAI) { + restoreOpenAIToolNames(responseBody, toolNameMap); + } return responseBody; } let intermediateOpenAI = responseBody; + if (targetFormat === FORMATS.OPENAI) { + restoreOpenAIToolNames(intermediateOpenAI, toolNameMap); + } + // Handle OpenAI Responses API format if (targetFormat === FORMATS.OPENAI_RESPONSES) { const responseRoot = toRecord(responseBody); @@ -166,14 +177,18 @@ export function translateNonStreamingResponse( if (!part || typeof part !== "object") continue; const partObj = toRecord(part); if (partObj.type === "summary_text" && typeof partObj.text === "string") { - reasoningContent += partObj.text; + // #9500 — reasoning summary parts are discrete segments; join with "\n\n" + // (matches extractThinkingFromContent convention) so they don't glue back-to-back. + reasoningContent += reasoningContent ? `\n\n${partObj.text}` : partObj.text; } } } else if (itemObj.type === "reasoning" && Array.isArray(itemObj.summary)) { for (const part of itemObj.summary) { const partObj = toRecord(part); if (partObj.type === "summary_text" && typeof partObj.text === "string") { - reasoningContent += partObj.text; + // #9500 — reasoning summary parts are discrete segments; join with "\n\n" + // (matches extractThinkingFromContent convention) so they don't glue back-to-back. + reasoningContent += reasoningContent ? `\n\n${partObj.text}` : partObj.text; } } } else if (itemObj.type === "function_call") { @@ -194,7 +209,7 @@ export function translateNonStreamingResponse( typeof argsToEmit === "string" ? argsToEmit : JSON.stringify(argsToEmit || {}); const rawName = toString(itemObj.name); // Strip Claude OAuth proxy_ prefix using toolNameMap - const resolvedName = toolNameMap?.get(rawName) ?? rawName; + const resolvedName = caseInsensitiveToolNameLookup(rawName, toolNameMap) ?? rawName; toolCalls.push({ id: callId, type: "function", @@ -328,7 +343,9 @@ export function translateNonStreamingResponse( for (const part of content.parts) { const partObj = toRecord(part); if (partObj.thought === true && typeof partObj.text === "string") { - reasoningContent += partObj.text; + // #9500 — Gemini thinking parts are discrete segments; join with "\n\n" + // (matches extractThinkingFromContent convention) so they don't glue back-to-back. + reasoningContent += reasoningContent ? `\n\n${partObj.text}` : partObj.text; continue; } @@ -374,7 +391,8 @@ export function translateNonStreamingResponse( if (partObj.functionCall) { const fn = toRecord(partObj.functionCall); const rawName = toString(fn.name); - const restoredName = toolNameMap?.get(rawName) ?? rawName; + const restoredName = + caseInsensitiveToolNameLookup(rawName, toolNameMap) ?? rawName; const nativeId = toString(fn.id); const toolCallId = nativeId.length > 0 @@ -493,7 +511,7 @@ export function translateNonStreamingResponse( thinkingContent += toString(blockObj.thinking); } else if (blockObj.type === "tool_use") { const rawName = toString(blockObj.name); - const strippedName = toolNameMap?.get(rawName) ?? rawName; + const strippedName = caseInsensitiveToolNameLookup(rawName, toolNameMap) ?? rawName; toolCalls.push({ id: toString(blockObj.id, `call_${Date.now()}_${toolCalls.length}`), type: "function", @@ -547,11 +565,20 @@ export function translateNonStreamingResponse( const cacheCreationTokens = toNumber(usage.cache_creation_input_tokens, 0); const promptTokens = toNumber(usage.input_tokens, 0) + cachedTokens; const completionTokens = toNumber(usage.output_tokens, 0); + const reasoningTokens = firstPositiveNumber( + toRecord(usage.output_tokens_details).thinking_tokens, + toRecord(usage.completion_tokens_details).reasoning_tokens, + usage.reasoning_tokens + ); const usageOut: JsonRecord = { prompt_tokens: promptTokens, completion_tokens: completionTokens, total_tokens: promptTokens + completionTokens, }; + if (reasoningTokens > 0) { + usageOut.reasoning_tokens = reasoningTokens; + usageOut.completion_tokens_details = { reasoning_tokens: reasoningTokens }; + } if (cachedTokens > 0 || cacheCreationTokens > 0) { const details: JsonRecord = {}; if (cachedTokens > 0) details.cached_tokens = cachedTokens; @@ -664,6 +691,35 @@ function convertOpenAINonStreamingToClaude(openaiResponse: JsonRecord): JsonReco if (stopReason === "tool_calls") stopReason = "tool_use"; const usageSrc = toRecord(openaiResponse.usage); + const promptTokens = toNumber(usageSrc.prompt_tokens, 0); + const outputTokens = toNumber(usageSrc.completion_tokens, 0); + + // Extract cache tokens from prompt_tokens_details (mirrors the streaming + // translator in open-sse/translator/response/openai-to-claude.ts lines 119-148). + const promptDetails = toRecord(usageSrc.prompt_tokens_details); + const cachedTokens = toNumber(promptDetails.cached_tokens, 0); + const cacheCreationTokens = toNumber(promptDetails.cache_creation_tokens, 0); + + // OpenAI's prompt_tokens includes all prompt-side tokens (cached + non-cached). + // Claude expects input_tokens to be only non-cached tokens, with cached tokens + // exposed separately as cache_read_input_tokens. + const inputTokens = promptTokens - cachedTokens - cacheCreationTokens; + + const usage: JsonRecord = { + input_tokens: inputTokens, + output_tokens: outputTokens, + }; + + // Add cache_read_input_tokens if present + if (cachedTokens > 0) { + usage.cache_read_input_tokens = cachedTokens; + } + + // Add cache_creation_input_tokens if present + if (cacheCreationTokens > 0) { + usage.cache_creation_input_tokens = cacheCreationTokens; + } + const claudeResponse: JsonRecord = { id: toString(openaiResponse.id, `msg_${Date.now()}`), type: "message", @@ -672,10 +728,7 @@ function convertOpenAINonStreamingToClaude(openaiResponse: JsonRecord): JsonReco content, stop_reason: stopReason, stop_sequence: null, - usage: { - input_tokens: toNumber(usageSrc.prompt_tokens, 0), - output_tokens: toNumber(usageSrc.completion_tokens, 0), - }, + usage, }; return claudeResponse; diff --git a/open-sse/handlers/search.ts b/open-sse/handlers/search.ts index b5e909abe9..502bc2ee73 100644 --- a/open-sse/handlers/search.ts +++ b/open-sse/handlers/search.ts @@ -27,6 +27,7 @@ import { Client } from "@modelcontextprotocol/sdk/client/index.js"; import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js"; import { z } from "zod"; import { sanitizeErrorMessage } from "../utils/error.ts"; +import { resolveSearchProxy, executeProviderFetch } from "./search/searchProxy.ts"; export interface SearchResult { title: string; @@ -96,6 +97,9 @@ interface SearchHandlerOptions { alternateProvider?: string; alternateCredentials?: Record | null; log?: any; + /** Connection ID (proxy resolution + call-log attribution) and API key ID (per-key proxy). */ + connectionId?: string; + apiKeyId?: string; } // ── Constants ──────────────────────────────────────────────────────────── @@ -1195,6 +1199,8 @@ export async function handleSearch(options: SearchHandlerOptions): Promise, credentials: Record, globalStartTime: number, - log?: any + log?: any, + connectionId?: string, + apiKeyId?: string ): Promise { const startTime = Date.now(); const providerSpecificData = @@ -1421,6 +1440,10 @@ async function tryProvider( }; } + // Resolve proxy for the selected connection (see search/searchProxy.ts for the + // resolveProxyForConnection precedence chain: per-key, account, provider, combo, global). + const { proxy, proxyLevel } = await resolveSearchProxy(connectionId, apiKeyId, config.id); + // Timeout: min of provider timeout and remaining global timeout const remainingGlobal = GLOBAL_TIMEOUT_MS - (Date.now() - globalStartTime); const timeout = Math.min(config.timeoutMs, Math.max(remainingGlobal, 1000)); @@ -1431,105 +1454,22 @@ async function tryProvider( log.info("SEARCH", `${config.id} | query: "${query.slice(0, 80)}" | type: ${searchType}`); } - try { - const response = await fetch(url, { ...init, signal: controller.signal }); - clearTimeout(timer); - - if (!response.ok) { - const errorText = await response.text(); - if (log) { - log.error("SEARCH", `${config.id} error ${response.status}: ${errorText.slice(0, 200)}`); - } - - saveCallLog({ - method: config.method, - path: "/v1/search", - status: response.status, - model: config.id, - provider: config.id, - duration: Date.now() - startTime, - requestType: "search", - error: errorText.slice(0, 500), - requestBody: { - query: query.slice(0, 200), - search_type: searchType, - max_results: maxResults, - }, - }).catch(() => { - /* non-critical — logging must not block search response */ - }); - - return { - success: false, - status: response.status, - error: `Search provider ${config.id} returned ${response.status}`, - }; - } - - const data = await response.json(); - const normalized = normalizeResponse(config.id, data, query, searchType); - // Enforce max_results — some providers return more than requested - const results = normalized.results.slice(0, maxResults); - const totalResults = normalized.totalResults; - const duration = Date.now() - startTime; - - saveCallLog({ - method: config.method, - path: "/v1/search", - status: 200, - model: config.id, - provider: config.id, - duration, - requestType: "search", - tokens: { prompt_tokens: 0, completion_tokens: 0 }, - requestBody: { query: query.slice(0, 200), search_type: searchType, max_results: maxResults }, - responseBody: { results_count: results.length, cached: false }, - }).catch(() => { - /* non-critical — logging must not block search response */ - }); - - return { - success: true, - data: { - provider: config.id, - query, - results, - answer: null, - usage: { queries_used: 1, search_cost_usd: config.costPerQuery }, - metrics: { - response_time_ms: duration, - upstream_latency_ms: duration, - total_results_available: totalResults, - }, - errors: [], - }, - }; - } catch (err: any) { - clearTimeout(timer); - - const isTimeout = err.name === "AbortError"; - if (log) { - log.error("SEARCH", `${config.id} ${isTimeout ? "timeout" : "fetch error"}: ${err.message}`); - } - - saveCallLog({ - method: config.method, - path: "/v1/search", - status: isTimeout ? 504 : 502, - model: config.id, - provider: config.id, - duration: Date.now() - startTime, - requestType: "search", - error: err.message, - requestBody: { query: query.slice(0, 200), search_type: searchType, max_results: maxResults }, - }).catch(() => { - /* non-critical — logging must not block search response */ - }); - - return { - success: false, - status: isTimeout ? 504 : 502, - error: `Search provider ${isTimeout ? "timeout" : "error"}: ${sanitizeErrorMessage(err.message)}`, - }; - } + // Delegate the fetch + response handling (proxy fetch, call-log, sanitized + // proxy event, result shaping) to the shared chokepoint in searchProxy.ts. + return executeProviderFetch({ + config, + url, + init, + controller, + timer, + query, + searchType, + maxResults, + startTime, + connectionId, + proxy, + proxyLevel, + log, + normalize: normalizeResponse, + }); } diff --git a/open-sse/handlers/search/firecrawlSearch.ts b/open-sse/handlers/search/firecrawlSearch.ts index 350f7b2bb8..9885486e94 100644 --- a/open-sse/handlers/search/firecrawlSearch.ts +++ b/open-sse/handlers/search/firecrawlSearch.ts @@ -5,6 +5,8 @@ export interface FirecrawlSearchParams { searchType: string; maxResults: number; token?: string; + baseUrl?: string; + providerSpecificData?: Record; country?: string; language?: string; timeRange?: string; @@ -68,7 +70,11 @@ export function buildFirecrawlSearchRequest( params: FirecrawlSearchParams ): { url: string; init: RequestInit } { const envBase = process.env.FIRECRAWL_BASE_URL?.trim().replace(/\/+$/, ""); - const url = envBase ? `${envBase}/v2/search` : config.baseUrl; + const providerData = params.providerSpecificData as Record | undefined; + const paramBase = typeof params.baseUrl === "string" ? params.baseUrl : providerData?.baseUrl; + const customBase = typeof paramBase === "string" && paramBase.trim() ? paramBase.trim().replace(/\/+$/, "") : undefined; + const rawBase = envBase || customBase; + const url = rawBase ? `${rawBase}/v2/search` : config.baseUrl; const { includes, excludes } = parseDomainFilter(params.domainFilter); const source = params.searchType === "news" ? "news" : "web"; diff --git a/open-sse/handlers/search/searchProxy.ts b/open-sse/handlers/search/searchProxy.ts new file mode 100644 index 0000000000..f134b4a3bd --- /dev/null +++ b/open-sse/handlers/search/searchProxy.ts @@ -0,0 +1,245 @@ +/** + * Per-attempt proxy binding for web search provider calls. + * + * Extracted from ../search.ts (tryProvider) to keep the provider-dispatch + * chokepoint under the frozen file-size cap. Resolves the proxy for a given + * connection/apiKey/provider triple, wraps a fetch in that proxy context, + * and emits a sanitized proxy event for observability (never includes + * query, API key, or proxy credentials). + */ + +import { saveCallLog } from "@/lib/usageDb"; +import { sanitizeErrorMessage } from "../../utils/error.ts"; +import type { SearchProviderConfig } from "../../config/searchRegistry.ts"; +import type { SearchResult } from "../search.ts"; + +/** Resolved proxy binding for a single provider attempt. */ +export interface ResolvedSearchProxy { + proxy: unknown; + proxyLevel: string; +} + +/** + * Resolve the proxy for the selected connection. Uses the existing + * resolveProxyForConnection(connectionId, apiKeyId, providerId) precedence + * chain so per-key, account, provider, combo, and global proxy rules apply + * consistently with other data-plane routes. + * + * Never throws — proxy resolution failure must not block the search. + */ +export async function resolveSearchProxy( + connectionId: string | undefined, + apiKeyId: string | undefined, + providerId: string +): Promise { + if (!connectionId) { + return { proxy: null, proxyLevel: "direct" }; + } + try { + const { resolveProxyForConnection } = await import("@/lib/db/settings"); + const proxyInfo = await resolveProxyForConnection(connectionId, apiKeyId, providerId); + return { proxy: proxyInfo.proxy, proxyLevel: proxyInfo.level || "direct" }; + } catch { + return { proxy: null, proxyLevel: "direct" }; + } +} + +/** + * Run a fetch, routed through the resolved proxy context when one is set. + * Wraps the patched globalThis.fetch so the upstream call egresses via the + * configured proxy instead of directly. + */ +export async function fetchWithSearchProxy( + proxy: unknown, + doFetch: () => Promise +): Promise { + if (!proxy) return doFetch(); + const { runWithProxyContext } = await import("../../utils/proxyFetch.ts"); + return runWithProxyContext(proxy, doFetch); +} + +/** + * Emit a sanitized proxy event for a search provider attempt. + * Never includes query, API key, proxy username, or proxy password. + */ +export async function emitSearchProxyEvent( + provider: string, + connectionId: string | undefined, + proxy: unknown, + proxyLevel: string, + targetUrl: string, + startTime: number, + status: string +): Promise { + try { + const { logProxyEvent } = await import("@/lib/proxyLogger"); + let targetOrigin = ""; + let targetPath = ""; + try { + const u = new URL(targetUrl); + targetOrigin = u.origin; + targetPath = u.pathname; + } catch { + targetOrigin = targetUrl.slice(0, 80); + } + const proxyRecord = + proxy && typeof proxy === "object" ? (proxy as Record) : null; + const proxyInfo = proxyRecord + ? { + type: String(proxyRecord.type || "http"), + host: String(proxyRecord.host || ""), + port: Number(proxyRecord.port || 0), + } + : null; + logProxyEvent({ + status, + proxy: proxyInfo, + level: proxyLevel, + levelId: connectionId || null, + provider: provider || null, + targetUrl: `${targetOrigin}${targetPath}`, + latencyMs: Date.now() - startTime, + connectionId: connectionId || null, + account: connectionId ? connectionId.slice(0, 8) : null, + }); + } catch { + // Non-critical — proxy logging must not block search response + } +} + +/** Loose result shape mirroring SearchHandlerResult in ../search.ts. */ +export interface ProviderFetchResult { + success: boolean; + status?: number; + error?: string; + data?: { + provider: string; + query: string; + results: SearchResult[]; + answer: null; + usage: { queries_used: number; search_cost_usd: number }; + metrics: { response_time_ms: number; upstream_latency_ms: number; total_results_available: number | null }; + errors: []; + }; +} + +/** Minimal logger shape used by the search handlers (pino-compatible). */ +export interface SearchLog { + info: (tag: string, message: string) => void; + error: (tag: string, message: string) => void; + warn?: (tag: string, message: string) => void; +} + +export interface ExecuteProviderFetchParams { + config: SearchProviderConfig; + url: string; + init: RequestInit; + controller: AbortController; + timer: ReturnType; + query: string; + searchType: string; + maxResults: number; + startTime: number; + connectionId?: string; + proxy: unknown; + proxyLevel: string; + log?: SearchLog; + normalize: ( + providerId: string, + data: unknown, + query: string, + searchType: string + ) => { results: SearchResult[]; totalResults: number | null }; +} + +/** + * Perform the upstream search HTTP call (through the resolved proxy, if any), + * then handle the success/error/exception branches: call-log persistence, + * sanitized proxy-event emission, and SearchHandlerResult construction. + * This is the single chokepoint tryProvider() delegates to after building + * the request and resolving the proxy — keeps search.ts to wiring only. + */ +export async function executeProviderFetch(p: ExecuteProviderFetchParams): Promise { + const { config, url, init, controller, timer, query, searchType, maxResults, startTime } = p; + const { connectionId, proxy, proxyLevel, log, normalize } = p; + const emitEvent = (status: string) => + emitSearchProxyEvent(config.id, connectionId, proxy, proxyLevel, url, startTime, status); + const logCall = (fields: Record) => + saveCallLog({ + method: config.method, + path: "/v1/search", + model: config.id, + provider: config.id, + connectionId: connectionId || null, + requestType: "search", + requestBody: { query: query.slice(0, 200), search_type: searchType, max_results: maxResults }, + ...fields, + }).catch(() => { + /* non-critical — logging must not block search response */ + }); + + try { + const response = await fetchWithSearchProxy(proxy, () => + fetch(url, { ...init, signal: controller.signal }) + ); + clearTimeout(timer); + + if (!response.ok) { + const errorText = await response.text(); + if (log) { + log.error("SEARCH", `${config.id} error ${response.status}: ${errorText.slice(0, 200)}`); + } + logCall({ status: response.status, duration: Date.now() - startTime, error: errorText.slice(0, 500) }); + await emitEvent("error"); + return { + success: false, + status: response.status, + error: `Search provider ${config.id} returned ${response.status}`, + }; + } + + const data = await response.json(); + const normalized = normalize(config.id, data, query, searchType); + const results = normalized.results.slice(0, maxResults); + const duration = Date.now() - startTime; + + logCall({ + status: 200, + duration, + tokens: { prompt_tokens: 0, completion_tokens: 0 }, + responseBody: { results_count: results.length, cached: false }, + }); + await emitEvent("success"); + + return { + success: true, + data: { + provider: config.id, + query, + results, + answer: null, + usage: { queries_used: 1, search_cost_usd: config.costPerQuery }, + metrics: { + response_time_ms: duration, + upstream_latency_ms: duration, + total_results_available: normalized.totalResults, + }, + errors: [], + }, + }; + } catch (err: unknown) { + clearTimeout(timer); + const error = err instanceof Error ? err : new Error(String(err)); + const isTimeout = error.name === "AbortError"; + if (log) { + log.error("SEARCH", `${config.id} ${isTimeout ? "timeout" : "fetch error"}: ${error.message}`); + } + logCall({ status: isTimeout ? 504 : 502, duration: Date.now() - startTime, error: error.message }); + await emitEvent(isTimeout ? "timeout" : "error"); + return { + success: false, + status: isTimeout ? 504 : 502, + error: `Search provider ${isTimeout ? "timeout" : "error"}: ${sanitizeErrorMessage(error.message)}`, + }; + } +} diff --git a/open-sse/handlers/sseParser.ts b/open-sse/handlers/sseParser.ts index d2e634e12a..49eaefc3c8 100644 --- a/open-sse/handlers/sseParser.ts +++ b/open-sse/handlers/sseParser.ts @@ -244,10 +244,8 @@ export function parseSSEToOpenAIResponse(rawSSE, fallbackModel) { existing.index = tc.index; } if (tc?.function?.name && !existing.function?.name) { - existing.function = existing.function || {}; existing.function.name = tc.function.name; } - existing.function = existing.function || {}; existing.function.arguments = appendToolCallArgumentDelta( existing.function.arguments, deltaArgs @@ -711,11 +709,18 @@ export function parseSSEToResponsesOutput(rawSSE, fallbackModel) { toIdString(evt.item_id) ); const summary = Array.isArray(reasoningItem.summary) ? reasoningItem.summary : []; - const firstPart = - summary.length > 0 ? { ...toRecord(summary[0]) } : { type: "summary_text", text: "" }; - firstPart.type = firstPart.type || "summary_text"; - firstPart.text = `${toString(firstPart.text)}${toString(evt.delta)}`; - summary[0] = firstPart; + // #9500 — respect summary_index: each segment is a distinct summary_text + // part. Place deltas at summary[summary_index] (growing the array) so + // segments are preserved for later "\n\n" joining on the non-stream path, + // instead of overwriting summary[0] regardless of index. + const summaryIndex = typeof evt.summary_index === "number" ? evt.summary_index : 0; + const part = + summary[summaryIndex] && typeof summary[summaryIndex] === "object" + ? { ...toRecord(summary[summaryIndex]) } + : { type: "summary_text", text: "" }; + part.type = part.type || "summary_text"; + part.text = `${toString(part.text)}${toString(evt.delta)}`; + summary[summaryIndex] = part; reasoningItem.summary = summary; } @@ -726,11 +731,15 @@ export function parseSSEToResponsesOutput(rawSSE, fallbackModel) { toIdString(evt.item_id) ); const summary = Array.isArray(reasoningItem.summary) ? reasoningItem.summary : []; - const firstPart = - summary.length > 0 ? { ...toRecord(summary[0]) } : { type: "summary_text", text: "" }; - firstPart.type = firstPart.type || "summary_text"; - firstPart.text = toString(evt.text, toString(firstPart.text)); - summary[0] = firstPart; + // #9500 — respect summary_index on the terminal done event too. + const summaryIndex = typeof evt.summary_index === "number" ? evt.summary_index : 0; + const part = + summary[summaryIndex] && typeof summary[summaryIndex] === "object" + ? { ...toRecord(summary[summaryIndex]) } + : { type: "summary_text", text: "" }; + part.type = part.type || "summary_text"; + part.text = toString(evt.text, toString(part.text)); + summary[summaryIndex] = part; reasoningItem.summary = summary; } diff --git a/open-sse/handlers/usageExtractor.ts b/open-sse/handlers/usageExtractor.ts index 114ccefa50..3871534646 100644 --- a/open-sse/handlers/usageExtractor.ts +++ b/open-sse/handlers/usageExtractor.ts @@ -63,6 +63,9 @@ export function extractUsageFromResponse(responseBody, provider) { completion_tokens: responseBody.usage.output_tokens || 0, cache_read_input_tokens: cacheRead, cache_creation_input_tokens: cacheCreation, + ...(typeof responseBody.usage.output_tokens_details?.thinking_tokens === "number" + ? { reasoning_tokens: responseBody.usage.output_tokens_details.thinking_tokens } + : {}), }; } @@ -91,10 +94,13 @@ export function extractUsageFromResponse(responseBody, provider) { // Gemini format if (responseBody.usageMetadata && typeof responseBody.usageMetadata === "object") { + // Gemini reports thoughts outside candidates. Fold them into completion so + // every provider keeps reasoning as a subset of completion tokens. + const thoughts = responseBody.usageMetadata.thoughtsTokenCount || 0; return { prompt_tokens: responseBody.usageMetadata.promptTokenCount || 0, - completion_tokens: responseBody.usageMetadata.candidatesTokenCount || 0, - reasoning_tokens: responseBody.usageMetadata.thoughtsTokenCount, + completion_tokens: (responseBody.usageMetadata.candidatesTokenCount || 0) + thoughts, + reasoning_tokens: thoughts, }; } diff --git a/open-sse/handlers/videoGeneration.ts b/open-sse/handlers/videoGeneration.ts index 4ba841c688..0b26f7d673 100644 --- a/open-sse/handlers/videoGeneration.ts +++ b/open-sse/handlers/videoGeneration.ts @@ -655,11 +655,11 @@ async function handleRunwayVideoGeneration({ ); const headers = buildRunwayHeaders(token); - const upstreamBody = { + // prettier-ignore + const upstreamBody: { model: typeof model; promptText: typeof body.prompt; ratio: typeof ratio; duration: typeof duration; promptImage?: typeof promptImage; seed?: number } = { model, promptText: body.prompt, - ratio, - duration, + ratio, duration, }; if (useImageToVideo) upstreamBody.promptImage = promptImage; diff --git a/open-sse/handlers/webFetch.ts b/open-sse/handlers/webFetch.ts index 27179ab289..8b6c25660a 100644 --- a/open-sse/handlers/webFetch.ts +++ b/open-sse/handlers/webFetch.ts @@ -50,6 +50,8 @@ export interface WebFetchResult { export interface WebFetchCredentials { apiKey?: string; + baseUrl?: string; + providerSpecificData?: Record; } const WEB_FETCH_PROVIDERS = ["firecrawl", "jina-reader", "tavily-search", "tinyfish"] as const; diff --git a/open-sse/mcp-server/__tests__/advancedTools.test.ts b/open-sse/mcp-server/__tests__/advancedTools.test.ts index 0fedef6aef..c2aaf4d846 100644 --- a/open-sse/mcp-server/__tests__/advancedTools.test.ts +++ b/open-sse/mcp-server/__tests__/advancedTools.test.ts @@ -9,9 +9,15 @@ import { describe, it, expect, vi, beforeEach } from "vitest"; const mockFetch = vi.fn(); vi.stubGlobal("fetch", mockFetch); +const { handleTestCombo } = await import("../tools/advancedTools.ts"); + describe("MCP Advanced Tools", () => { beforeEach(() => { mockFetch.mockReset(); + // Re-assert the stub: importing advancedTools.ts triggers OmniRoute's own + // startup side effects (DB init, global fetch proxy patch) that overwrite + // globalThis.fetch after the top-level vi.stubGlobal() above ran. + vi.stubGlobal("fetch", mockFetch); }); describe("simulate_route", () => { @@ -82,6 +88,32 @@ describe("MCP Advanced Tools", () => { expect(combo).toBeDefined(); expect(combo.models).toHaveLength(2); }); + + it("does not send a non-standard 'x-provider' body field upstream (regression, strict providers like Groq reject it with HTTP 400)", async () => { + mockFetch + .mockResolvedValueOnce({ + ok: true, + json: async () => [ + { + id: "groq-combo", + models: [{ provider: "groq", model: "groq/llama-3.1-8b-instant" }], + }, + ], + }) + .mockResolvedValueOnce({ + ok: true, + json: async () => ({ model: "llama-3.1-8b-instant", cost: 0, usage: {} }), + }); + + await handleTestCombo({ comboId: "groq-combo", testPrompt: "hi" }); + + const chatCompletionsCall = mockFetch.mock.calls.find(([url]) => + String(url).includes("/v1/chat/completions") + ); + expect(chatCompletionsCall).toBeDefined(); + const sentBody = JSON.parse(chatCompletionsCall![1].body); + expect(sentBody).not.toHaveProperty("x-provider"); + }); }); describe("get_provider_metrics", () => { diff --git a/open-sse/mcp-server/__tests__/audit.test.ts b/open-sse/mcp-server/__tests__/audit.test.ts index 19f69ffb8d..829acaf4af 100644 --- a/open-sse/mcp-server/__tests__/audit.test.ts +++ b/open-sse/mcp-server/__tests__/audit.test.ts @@ -18,6 +18,13 @@ function createStatementMock() { }; } +// #8959 made the production loader use createRequire() (Electron/global-install +// resolution), which vi.doMock CANNOT intercept — it only patches Vitest's ESM +// module graph. The old better-sqlite3 doMock therefore never engaged: the code +// opened a REAL sqlite file in the temp DATA_DIR ("no such table" on stderr) +// and every mock assertion counted 0 calls. The shutdown tests now inject the +// mock through the audit connection cache (globalThis.__omnirouteMcpAuditDb), +// and the fallback test uses the __setBetterSqliteLoaderForTests seam. describe("MCP audit shutdown", () => { let dataDir: string; let dbFile: string; @@ -46,15 +53,10 @@ describe("MCP audit shutdown", () => { close: vi.fn(), open: true, }; - const MockDatabase = vi.fn(function MockDatabase() { - return mockDb; - }); - - vi.doMock("better-sqlite3", () => ({ - default: MockDatabase, - })); const audit = await import("../audit.ts"); + // Inject through the connection cache — the seam the module itself uses. + globalThis.__omnirouteMcpAuditDb = mockDb as unknown as typeof globalThis.__omnirouteMcpAuditDb; await audit.logToolCall("omniroute_get_health", { ok: true }, { ok: true }, 12, true); expect(mockDb.prepare).toHaveBeenCalledTimes(1); @@ -80,15 +82,9 @@ describe("MCP audit shutdown", () => { close: vi.fn(), open: true, }; - const MockDatabase = vi.fn(function MockDatabase() { - return mockDb; - }); - - vi.doMock("better-sqlite3", () => ({ - default: MockDatabase, - })); const audit = await import("../audit.ts"); + globalThis.__omnirouteMcpAuditDb = mockDb as unknown as typeof globalThis.__omnirouteMcpAuditDb; await audit.logToolCall("omniroute_get_health", {}, {}, 5, true); expect(audit.closeAuditDb()).toBe(true); @@ -103,26 +99,16 @@ describe("MCP audit shutdown", () => { // Simulate a global-install scenario where the bundled native binary // never landed in dist/node_modules/better-sqlite3/build/Release/. + // Thrown from the loader seam because the real load path is + // createRequire("better-sqlite3"), unreachable by vi.doMock. const bindingErr = new Error( "Could not locate the bindings file. Tried: …/better_sqlite3.node" ) as Error & { code?: string }; bindingErr.code = "MODULE_NOT_FOUND"; - // Simulate the binding-missing failure as the better-sqlite3 default - // constructor throwing — this matches reality (`new Database()` throws - // "Could not locate the bindings file" when the prebuilt .node is absent) - // and reaches the adapter's `catch (nativeErr)`. A factory that itself - // throws is reported by vitest as a mock-setup error and never reaches - // the code under test. - const ThrowingDatabase = vi.fn(function ThrowingDatabase() { - throw bindingErr; - }); - vi.doMock("better-sqlite3", () => ({ - default: ThrowingDatabase, - })); - // node:sqlite's DatabaseSync does not expose a boolean `open` property, - // so the mock intentionally omits it — the adapter tracks open state in - // a local closure and exposes it via a getter. + // node:sqlite IS loaded via dynamic import(), so doMock works for it. + // Its DatabaseSync does not expose a boolean `open` property — the + // adapter tracks open state in a local closure. const mockNodeDb = { prepare: vi.fn(() => createStatementMock()), exec: vi.fn(), @@ -134,17 +120,24 @@ describe("MCP audit shutdown", () => { vi.doMock("node:sqlite", () => ({ DatabaseSync })); const audit = await import("../audit.ts"); + audit.__setBetterSqliteLoaderForTests(() => { + throw bindingErr; + }); - await audit.logToolCall("omniroute_get_health", { ok: true }, { ok: true }, 4, true); - expect(DatabaseSync).toHaveBeenCalledWith(dbFile); - expect(mockNodeDb.prepare).toHaveBeenCalled(); + try { + await audit.logToolCall("omniroute_get_health", { ok: true }, { ok: true }, 4, true); + expect(DatabaseSync).toHaveBeenCalledWith(dbFile); + expect(mockNodeDb.prepare).toHaveBeenCalled(); - expect(audit.closeAuditDb()).toBe(true); - expect(mockNodeDb.exec).toHaveBeenCalledWith("PRAGMA wal_checkpoint(TRUNCATE)"); - expect(mockNodeDb.close).toHaveBeenCalledTimes(1); + expect(audit.closeAuditDb()).toBe(true); + expect(mockNodeDb.exec).toHaveBeenCalledWith("PRAGMA wal_checkpoint(TRUNCATE)"); + expect(mockNodeDb.close).toHaveBeenCalledTimes(1); - // Cache is cleared after close, so a second close is a no-op. - expect(audit.closeAuditDb()).toBe(false); - expect(mockNodeDb.close).toHaveBeenCalledTimes(1); + // Cache is cleared after close, so a second close is a no-op. + expect(audit.closeAuditDb()).toBe(false); + expect(mockNodeDb.close).toHaveBeenCalledTimes(1); + } finally { + audit.__setBetterSqliteLoaderForTests(null); + } }); }); diff --git a/open-sse/mcp-server/__tests__/createComboTool.test.ts b/open-sse/mcp-server/__tests__/createComboTool.test.ts new file mode 100644 index 0000000000..a0c4ce0ee0 --- /dev/null +++ b/open-sse/mcp-server/__tests__/createComboTool.test.ts @@ -0,0 +1,193 @@ +import { describe, it, expect, vi, beforeEach, afterEach } from "vitest"; +import { Client } from "@modelcontextprotocol/sdk/client/index.js"; +import { InMemoryTransport } from "@modelcontextprotocol/sdk/inMemory.js"; +import { MCP_TOOLS, MCP_TOOL_MAP, createComboInput, createComboTool } from "../schemas/tools.ts"; +import { createMcpServer } from "../server.ts"; + +const mockFetch = vi.fn(); +vi.stubGlobal("fetch", mockFetch); + +const mockLogToolCall = vi.hoisted(() => vi.fn().mockResolvedValue(undefined)); +vi.mock("../audit.ts", () => ({ + logToolCall: mockLogToolCall, +})); + +describe("omniroute_create_combo MCP tool schema", () => { + it("should be registered in MCP_TOOLS and MCP_TOOL_MAP", () => { + const tool = MCP_TOOLS.find((t) => t.name === "omniroute_create_combo"); + expect(tool).toBeDefined(); + expect(MCP_TOOL_MAP["omniroute_create_combo"]).toBeDefined(); + }); + + it("should require write:combos scope", () => { + expect(createComboTool.scopes).toContain("write:combos"); + }); + + it("should validate a minimal payload (name + models)", () => { + const result = createComboInput.safeParse({ + name: "My Combo", + models: [{ provider: "anthropic", model: "claude-sonnet" }], + }); + expect(result.success).toBe(true); + }); + + it("should validate a full payload with description and strategy", () => { + const result = createComboInput.safeParse({ + name: "My Combo", + description: "A test combo", + strategy: "priority", + models: [ + { provider: "anthropic", model: "claude-sonnet" }, + { provider: "google", model: "gemini-pro" }, + ], + }); + expect(result.success).toBe(true); + }); + + it("should reject a payload missing name", () => { + const result = createComboInput.safeParse({ + models: [{ provider: "anthropic", model: "claude-sonnet" }], + }); + expect(result.success).toBe(false); + }); + + it("should reject a payload with an empty models array", () => { + const result = createComboInput.safeParse({ name: "My Combo", models: [] }); + expect(result.success).toBe(false); + }); + + it("should reject an unknown strategy value", () => { + const result = createComboInput.safeParse({ + name: "My Combo", + strategy: "not-a-real-strategy", + models: [{ provider: "anthropic", model: "claude-sonnet" }], + }); + expect(result.success).toBe(false); + }); +}); + +describe("omniroute_create_combo handler (via MCP dispatch)", () => { + let client: Client; + + beforeEach(async () => { + mockFetch.mockReset(); + mockLogToolCall.mockClear(); + + const [clientTransport, serverTransport] = InMemoryTransport.createLinkedPair(); + const server = createMcpServer(); + await server.connect(serverTransport); + client = new Client({ name: "create-combo-test", version: "1.0.0" }); + await client.connect(clientTransport); + }); + + afterEach(async () => { + await client.close(); + }); + + it("should appear in tools/list after registration", async () => { + const { tools } = await client.listTools(); + const tool = tools.find((t) => t.name === "omniroute_create_combo"); + expect(tool).toBeDefined(); + expect(tool?.description).toContain("Registers new combo"); + }); + + it("should POST to /api/combos and return the created combo on success", async () => { + mockFetch.mockResolvedValueOnce({ + ok: true, + json: async () => ({ + success: true, + combo: { id: "combo-123", name: "My Combo", strategy: "priority", enabled: true }, + }), + }); + + const args = { + name: "My Combo", + models: [{ provider: "anthropic", model: "claude-sonnet" }], + }; + + const result = await client.callTool({ name: "omniroute_create_combo", arguments: args }); + + expect(result.isError).toBeFalsy(); + const content = result.content[0] as { type: string; text: string }; + const data = JSON.parse(content.text); + expect(data.success).toBe(true); + expect(data.combo.id).toBe("combo-123"); + expect(data.combo.name).toBe("My Combo"); + + expect(mockFetch).toHaveBeenCalledWith( + expect.stringContaining("/api/combos"), + expect.objectContaining({ method: "POST" }) + ); + const [, options] = mockFetch.mock.calls[0]; + const body = JSON.parse(options.body as string); + expect(body.name).toBe("My Combo"); + expect(body.models).toHaveLength(1); + + // Audit: the invocation must be logged to mcp_audit (via logToolCall). + expect(mockLogToolCall).toHaveBeenCalledWith( + "omniroute_create_combo", + expect.objectContaining({ name: "My Combo" }), + expect.objectContaining({ success: true }), + expect.any(Number), + true + ); + }); + + it("should pass through optional description and strategy fields", async () => { + mockFetch.mockResolvedValueOnce({ + ok: true, + json: async () => ({ + success: true, + combo: { id: "combo-456", name: "Cost Saver", strategy: "cost-optimized", enabled: true }, + }), + }); + + await client.callTool({ + name: "omniroute_create_combo", + arguments: { + name: "Cost Saver", + description: "Prefers cheaper models", + strategy: "cost-optimized", + models: [ + { provider: "anthropic", model: "claude-haiku" }, + { provider: "google", model: "gemini-flash" }, + ], + }, + }); + + const [, options] = mockFetch.mock.calls[0]; + const body = JSON.parse(options.body as string); + expect(body.description).toBe("Prefers cheaper models"); + expect(body.strategy).toBe("cost-optimized"); + expect(body.models).toHaveLength(2); + }); + + it("should return isError and log the failure when the backend rejects the combo (e.g. name collision)", async () => { + mockFetch.mockResolvedValueOnce({ + ok: false, + status: 409, + text: async () => "Combo name already exists", + }); + + const result = await client.callTool({ + name: "omniroute_create_combo", + arguments: { + name: "Duplicate Combo", + models: [{ provider: "anthropic", model: "claude-sonnet" }], + }, + }); + + expect(result.isError).toBe(true); + const content = result.content[0] as { type: string; text: string }; + expect(content.text).toContain("Error"); + + expect(mockLogToolCall).toHaveBeenCalledWith( + "omniroute_create_combo", + expect.objectContaining({ name: "Duplicate Combo" }), + null, + expect.any(Number), + false, + expect.stringContaining("Combo name already exists") + ); + }); +}); diff --git a/open-sse/mcp-server/__tests__/essentialTools.test.ts b/open-sse/mcp-server/__tests__/essentialTools.test.ts index 5784b50a7f..88353eed92 100644 --- a/open-sse/mcp-server/__tests__/essentialTools.test.ts +++ b/open-sse/mcp-server/__tests__/essentialTools.test.ts @@ -22,9 +22,10 @@ describe("MCP Essential Tools", () => { }); describe("Tool schema validation", () => { - it("should have exactly 11 essential tools (includes web_search + web_fetch + tool_search)", () => { + it("should have exactly 12 essential tools (includes web_search + web_fetch + tool_search)", () => { + // 11 -> 12: #8925 shipped omniroute_create_combo as a phase-1 tool. const schemas = MCP_ESSENTIAL_TOOLS; - expect(schemas).toHaveLength(11); + expect(schemas).toHaveLength(12); }); it("all tools should have omniroute_ prefix", () => { diff --git a/open-sse/mcp-server/audit.ts b/open-sse/mcp-server/audit.ts index 40e023212c..a658d3af7f 100644 --- a/open-sse/mcp-server/audit.ts +++ b/open-sse/mcp-server/audit.ts @@ -206,8 +206,27 @@ function toString(value: unknown): string { return typeof value === "string" ? value : ""; } +/** + * Test-only seam: the production load path uses `createRequire()` (so the + * Electron/global-install resolution works — #8959), which `vi.doMock` cannot + * intercept (it only patches Vitest's ESM module graph). Tests inject a + * throwing/mocked loader here to exercise the node:sqlite fallback. + */ +let betterSqliteLoaderForTests: (() => unknown) | null = null; +export function __setBetterSqliteLoaderForTests(loader: (() => unknown) | null): void { + betterSqliteLoaderForTests = loader; +} + async function openBetterSqliteAuditDb(dbPath: string): Promise { - const Database = (await import("better-sqlite3")).default as unknown as new ( + let mod: unknown; + if (betterSqliteLoaderForTests) { + mod = betterSqliteLoaderForTests(); + } else { + const { createRequire } = await import("node:module"); + const _require = createRequire(import.meta.url); + mod = _require("better-sqlite3"); + } + const Database = ((mod as { default?: unknown })?.default || mod) as unknown as new ( dbPath: string ) => AuditDatabase; return new Database(dbPath); diff --git a/open-sse/mcp-server/schemas/tools.ts b/open-sse/mcp-server/schemas/tools.ts index 012198baf8..4db6a850dc 100644 --- a/open-sse/mcp-server/schemas/tools.ts +++ b/open-sse/mcp-server/schemas/tools.ts @@ -192,6 +192,53 @@ export const switchComboTool: McpToolDefinition = + { + name: "omniroute_create_combo", + description: + "Registers a new combo (model chain) with a name, ordered model list, and optional routing strategy. Full validation (name collisions, nested-combo DAG, composite tiers) is enforced by the combos API.", + inputSchema: createComboInput, + outputSchema: createComboOutput, + scopes: ["write:combos"], + auditLevel: "full", + phase: 1, + sourceEndpoints: ["/api/combos"], + }; + // --- Tool 5: omniroute_check_quota --- export const checkQuotaInput = z.object({ provider: z @@ -1460,6 +1507,7 @@ export const MCP_TOOLS = [ listCombosTool, getComboMetricsTool, switchComboTool, + createComboTool, checkQuotaTool, routeRequestTool, costReportTool, diff --git a/open-sse/mcp-server/server.ts b/open-sse/mcp-server/server.ts index c584b7a75d..d61b654f3c 100644 --- a/open-sse/mcp-server/server.ts +++ b/open-sse/mcp-server/server.ts @@ -12,6 +12,7 @@ import { listCombosInput, getComboMetricsInput, switchComboInput, + createComboInput, checkQuotaInput, routeRequestInput, costReportInput, @@ -46,6 +47,7 @@ import { type McpToolExtraLike, } from "./scopeEnforcement.ts"; import { getMcpHttpAuthHeadersForInternalFetch } from "./httpAuthContext.ts"; +import { getInternalServiceAuthHeaders } from "../../src/lib/api/internalServiceAuth.ts"; import { handleSimulateRoute, handleSetBudgetGuard, @@ -203,6 +205,9 @@ export async function omniRouteFetch(path: string, options: RequestInit = {}): P ...(apiKey ? { Authorization: `Bearer ${apiKey}` } : {}), ...getMcpHttpAuthHeadersForInternalFetch(), ...((options.headers as Record) || {}), + // Authenticate only the server-to-server hop. This does not replace or + // weaken the caller identity forwarded above. + ...getInternalServiceAuthHeaders(), }; const signal = options.signal || AbortSignal.timeout(10000); @@ -389,6 +394,27 @@ async function handleSwitchCombo(args: { comboId: string; active: boolean }) { } } +async function handleCreateCombo(args: { + name: string; + description?: string; + strategy?: string; + models: { provider: string; model: string }[]; +}) { + const start = Date.now(); + try { + const result = await omniRouteFetch("/api/combos", { + method: "POST", + body: JSON.stringify(args), + }); + await logToolCall("omniroute_create_combo", args, result, Date.now() - start, true); + return { content: [{ type: "text" as const, text: JSON.stringify(result, null, 2) }] }; + } catch (err) { + const msg = err instanceof Error ? err.message : String(err); + await logToolCall("omniroute_create_combo", args, null, Date.now() - start, false, msg); + return { content: [{ type: "text" as const, text: `Error: ${msg}` }], isError: true }; + } +} + async function handleCheckQuota(args: { provider?: string; connectionId?: string }) { const start = Date.now(); try { @@ -734,6 +760,17 @@ export function createMcpServer(): McpServer { ) ); + server.registerTool( + "omniroute_create_combo", + { + description: "Registers a new combo (model chain) with name, models, and strategy", + inputSchema: createComboInput, + }, + withScopeEnforcement("omniroute_create_combo", (args) => + handleCreateCombo(createComboInput.parse(args)) + ) + ); + server.registerTool( "omniroute_check_quota", { @@ -1366,6 +1403,10 @@ export function createMcpServer(): McpServer { * Called when `omniroute --mcp` is used. */ export async function startMcpStdio(): Promise { + // Stdout is reserved for JSON-RPC — bin/mcpStdioConsoleGuard.mjs is preloaded via + // `node --import` (see bin/mcp-server.mjs) so console.log/warn already redirect to + // stderr before this module's own imports evaluate (DB init happens as a side effect of + // createMcpServer()'s tool registration, earlier than any code placed here could catch). const server = createMcpServer(); const transport = new StdioServerTransport(); const version = process.env.npm_package_version || "1.8.1"; diff --git a/open-sse/mcp-server/tools/advancedTools.ts b/open-sse/mcp-server/tools/advancedTools.ts index e9fbdc22b7..fef283d8d2 100644 --- a/open-sse/mcp-server/tools/advancedTools.ts +++ b/open-sse/mcp-server/tools/advancedTools.ts @@ -548,7 +548,6 @@ export async function handleTestCombo(args: { comboId: string; testPrompt: strin messages: [{ role: "user", content: prompt }], max_tokens: 50, stream: false, - "x-provider": model.provider, }), }) ); diff --git a/open-sse/mcp-server/tools/compressionTools.ts b/open-sse/mcp-server/tools/compressionTools.ts index 1958c4736d..51b37a0daa 100644 --- a/open-sse/mcp-server/tools/compressionTools.ts +++ b/open-sse/mcp-server/tools/compressionTools.ts @@ -256,6 +256,7 @@ import { getCcrStoreStats, handleCcrRetrieve, inspectCcrBlock, + isCcrStoreRejection, listCcrBlocks, tryStoreBlock, } from "../../services/compression/engines/ccr/index.ts"; @@ -298,7 +299,7 @@ export async function handleCcrStoreTool( ttlSeconds: args.ttlSeconds, }); const auditInput = buildCcrStoreAuditInput(args); - if (!result.stored) { + if (isCcrStoreRejection(result)) { const output = { stored: false as const, reason: result.reason }; await logToolCall( "omniroute_ccr_store", diff --git a/open-sse/package.json b/open-sse/package.json index b2f90507e1..858e80d0c8 100644 --- a/open-sse/package.json +++ b/open-sse/package.json @@ -1,18 +1,7 @@ { "name": "@omniroute/open-sse", "version": "3.8.50", - "description": "Express SSE sidecar for OmniRoute — handles streaming, protocol translation, and provider orchestration", + "description": "OmniRoute streaming engine — handles provider dispatch, protocol translation, and SSE streaming", "type": "module", - "main": "index.js", - "types": "types.d.ts", - "private": true, - "exports": { - ".": "./index.js", - "./*": "./*" - }, - "dependencies": { - "@toon-format/toon": "^4.1.0", - "safe-regex": "^2.1.1", - "smol-toml": "1.7.1" - } + "private": true } diff --git a/open-sse/services/__tests__/antigravity-quota-family.test.ts b/open-sse/services/__tests__/antigravity-quota-family.test.ts index c23d79926b..b1983a0909 100644 --- a/open-sse/services/__tests__/antigravity-quota-family.test.ts +++ b/open-sse/services/__tests__/antigravity-quota-family.test.ts @@ -7,7 +7,10 @@ import { clearAllModelLockouts, getModelLockoutInfo, isModelLocked, + lockModelIfPerModelQuota, + lockExactModel, recordModelLockoutFailure, + clearModelLock, } from "@omniroute/open-sse/services/accountFallback.ts"; const provider = "antigravity"; @@ -74,6 +77,38 @@ describe("Antigravity account quota-family cooldown", () => { expect(isModelLocked(provider, "account-a", "gemini-3.5-flash-low")).toBe(false); }); + it("can isolate a confirmed Antigravity quota exhaustion to one exact model", () => { + lockExactModel( + provider, + "account-a", + "claude-opus-4-6-thinking", + "quota_exhausted", + 60_000 + ); + + expect(isModelLocked(provider, "account-a", "claude-opus-4-6-thinking")).toBe(true); + expect(isModelLocked(provider, "account-a", "claude-sonnet-4-6-thinking")).toBe(false); + expect(isModelLocked(provider, "account-a", "gemini-3.5-flash-medium")).toBe(false); + + expect(clearModelLock(provider, "account-a", "claude-opus-4-6-thinking")).toBe(true); + expect(isModelLocked(provider, "account-a", "claude-opus-4-6-thinking")).toBe(false); + }); + + it("uses an exact model lock for Antigravity in the generic per-model quota path", () => { + expect( + lockModelIfPerModelQuota( + provider, + "account-a", + "claude-opus-4-6-thinking", + "quota_exhausted", + 60_000 + ) + ).toBe(true); + + expect(isModelLocked(provider, "account-a", "claude-opus-4-6-thinking")).toBe(true); + expect(isModelLocked(provider, "account-a", "claude-sonnet-4-6-thinking")).toBe(false); + }); + it("honors exact upstream cooldowns and otherwise uses bounded inferred cooldown", () => { const upstream = recordModelLockoutFailure( provider, diff --git a/open-sse/services/__tests__/claudeTlsClient.test.ts b/open-sse/services/__tests__/claudeTlsClient.test.ts index 940883600f..7eb2479b1a 100644 --- a/open-sse/services/__tests__/claudeTlsClient.test.ts +++ b/open-sse/services/__tests__/claudeTlsClient.test.ts @@ -273,9 +273,15 @@ describe("claudeTlsClient", () => { await tlsFetchClaude("https://claude.ai/test", {}); - // The proxyUrl should reflect environment resolution + // The testOverride is called with the raw options object BEFORE proxy + // resolution occurs (see claudeTlsClient.ts line 258: + // `if (testOverride) return testOverride(url, options)`). + // Proxy resolution (env var → proxyUrl) only runs inside the real + // tls-client path, which is bypassed when an override is active. + // So callOptions here is exactly the {} we passed — no proxyUrl injected. + expect(mockFn).toHaveBeenCalledOnce(); const callOptions = mockFn.mock.calls[0][1]; - expect(callOptions).toHaveProperty("proxyUrl"); + expect(callOptions.proxyUrl).toBeUndefined(); __setTlsFetchOverrideForTesting(null); delete process.env.HTTPS_PROXY; diff --git a/open-sse/services/__tests__/fail-fast-concurrency-gate.test.ts b/open-sse/services/__tests__/fail-fast-concurrency-gate.test.ts new file mode 100644 index 0000000000..cd969fb352 --- /dev/null +++ b/open-sse/services/__tests__/fail-fast-concurrency-gate.test.ts @@ -0,0 +1,30 @@ +import { describe, it, expect, beforeEach } from "vitest"; +import { acquire, isAccountSemaphoreFull, resetAll } from "../accountSemaphore.ts"; + +describe("isAccountSemaphoreFull fail-fast concurrency gate", () => { + beforeEach(() => { + resetAll(); + }); + + it("returns false when no semaphore gate exists", () => { + expect(isAccountSemaphoreFull("featherless-ai", "conn-1", 1)).toBe(false); + }); + + it("returns false when maxConcurrency is null, <= 0, or bypassed", () => { + expect(isAccountSemaphoreFull("featherless-ai", "conn-1", null)).toBe(false); + expect(isAccountSemaphoreFull("featherless-ai", "conn-1", 0)).toBe(false); + }); + + it("returns false when running < maxConcurrency", async () => { + const release = await acquire("featherless-ai:conn-1", { maxConcurrency: 2 }); + expect(isAccountSemaphoreFull("featherless-ai", "conn-1", 2)).toBe(false); + release(); + }); + + it("returns true immediately when running >= maxConcurrency", async () => { + const release = await acquire("featherless-ai:conn-1", { maxConcurrency: 1 }); + expect(isAccountSemaphoreFull("featherless-ai", "conn-1", 1)).toBe(true); + release(); + expect(isAccountSemaphoreFull("featherless-ai", "conn-1", 1)).toBe(false); + }); +}); diff --git a/open-sse/services/__tests__/manifestAdapter.test.ts b/open-sse/services/__tests__/manifestAdapter.test.ts index b391e6b152..e9430851a4 100644 --- a/open-sse/services/__tests__/manifestAdapter.test.ts +++ b/open-sse/services/__tests__/manifestAdapter.test.ts @@ -1,5 +1,4 @@ -import { describe, it } from "node:test"; -import assert from "node:assert/strict"; +import { describe, it, expect } from "vitest"; import { generateRoutingHints, compareByCostEffectiveness, @@ -27,8 +26,8 @@ describe("ManifestAdapter", () => { const hints = generateRoutingHints([], { messages: [{ content: "Hello" }], }); - assert.equal(hints.strategyModifier, "prefer-free"); - assert.equal(hints.specificityLevel, "trivial"); + expect(hints.strategyModifier).toBe("prefer-free"); + expect(hints.specificityLevel).toBe("trivial"); }); }); @@ -43,7 +42,7 @@ describe("ManifestAdapter", () => { ], }); const validModifiers = ["prefer-free", "prefer-cheap", "require-premium", "default"]; - assert.ok(validModifiers.includes(hints.strategyModifier)); + expect(validModifiers.includes(hints.strategyModifier)).toBe(true); }); }); @@ -53,15 +52,15 @@ describe("ManifestAdapter", () => { const hints = generateRoutingHints(targets, { messages: [{ content: "Hi" }], }); - assert.ok(hints.eligibleTargets.length >= 0); + expect(hints.eligibleTargets.length).toBeGreaterThanOrEqual(0); }); it("handles empty targets array gracefully", () => { const hints = generateRoutingHints([], { messages: [{ content: "Hello" }], }); - assert.equal(hints.eligibleTargets.length, 0); - assert.equal(hints.underqualifiedTargets.length, 0); + expect(hints.eligibleTargets.length).toBe(0); + expect(hints.underqualifiedTargets.length).toBe(0); }); it("classifies mixed targets for simple query", () => { @@ -69,7 +68,7 @@ describe("ManifestAdapter", () => { const hints = generateRoutingHints(targets, { messages: [{ content: "Hello" }], }); - assert.ok(hints.eligibleTargets.length >= 0); + expect(hints.eligibleTargets.length).toBeGreaterThanOrEqual(0); }); }); @@ -81,7 +80,7 @@ describe("ManifestAdapter", () => { messages: [{ content: "Test" }], }); const result = compareByCostEffectiveness(a, b, hints); - assert.equal(typeof result, "number"); + expect(typeof result).toBe("number"); }); it("returns negative when a is cheaper than b", () => { @@ -91,7 +90,7 @@ describe("ManifestAdapter", () => { messages: [{ content: "Test" }], }); const result = compareByCostEffectiveness(a, b, hints); - assert.ok(result < 0, "deepseek should be cheaper than openai"); + expect(result, "deepseek should be cheaper than openai").toBeLessThan(0); }); }); @@ -99,19 +98,19 @@ describe("ManifestAdapter", () => { it("returns 0 for free providers", () => { const target = makeTarget("kiro", "claude-sonnet-4.5"); const cost = estimateRequestCost(target, 1000, 500); - assert.equal(cost, 0); + expect(cost).toBe(0); }); it("returns non-zero for premium provider", () => { const target = makeTarget("openai", "gpt-4o"); const cost = estimateRequestCost(target, 1000000, 500000); - assert.ok(cost > 0, "gpt-4o should have non-zero cost"); + expect(cost, "gpt-4o should have non-zero cost").toBeGreaterThan(0); }); it("handles zero tokens", () => { const target = makeTarget("openai", "gpt-4o"); const cost = estimateRequestCost(target, 0, 0); - assert.equal(cost, 0); + expect(cost).toBe(0); }); }); @@ -120,17 +119,17 @@ describe("ManifestAdapter", () => { const hints = generateRoutingHints([], { messages: [{ content: "Hello" }], }); - assert.equal(hints.eligibleTargets.length, 0); - assert.equal(hints.underqualifiedTargets.length, 0); + expect(hints.eligibleTargets.length).toBe(0); + expect(hints.underqualifiedTargets.length).toBe(0); }); it("returns valid hints structure with no targets", () => { const hints = generateRoutingHints([], { messages: [{ content: "Test" }], }); - assert.ok("specificityLevel" in hints); - assert.ok("strategyModifier" in hints); - assert.ok("recommendedMinTier" in hints); + expect("specificityLevel" in hints).toBe(true); + expect("strategyModifier" in hints).toBe(true); + expect("recommendedMinTier" in hints).toBe(true); }); }); }); diff --git a/open-sse/services/__tests__/specificityDetector.test.ts b/open-sse/services/__tests__/specificityDetector.test.ts index 9e18996248..b93e90725f 100644 --- a/open-sse/services/__tests__/specificityDetector.test.ts +++ b/open-sse/services/__tests__/specificityDetector.test.ts @@ -1,5 +1,4 @@ -import { describe, it } from "node:test"; -import assert from "node:assert/strict"; +import { describe, it, expect } from "vitest"; import { analyzeSpecificity, getSpecificityLevel, @@ -12,13 +11,13 @@ describe("SpecificityDetector", () => { describe("analyzeSpecificity - trivial query", () => { it("returns score <= 5 for greeting", () => { const result = analyzeSpecificity({ messages: [{ content: "Hello, how are you?" }] }); - assert.ok(result.score <= 5); + expect(result.score).toBeLessThanOrEqual(5); }); it("level is 'trivial' for greeting", () => { const result = analyzeSpecificity({ messages: [{ content: "Hi there!" }] }); const level = getSpecificityLevel(result.score); - assert.equal(level, "trivial"); + expect(level).toBe("trivial"); }); }); @@ -27,8 +26,8 @@ describe("SpecificityDetector", () => { const result = analyzeSpecificity({ messages: [{ content: "What is the capital of France?" }], }); - assert.ok(result.score >= 0); - assert.ok(result.score <= 20); + expect(result.score).toBeGreaterThanOrEqual(0); + expect(result.score).toBeLessThanOrEqual(20); }); it("returns 'simple' or lower for factual question", () => { @@ -36,7 +35,7 @@ describe("SpecificityDetector", () => { messages: [{ content: "Who invented Python?" }], }); const level = getSpecificityLevel(result.score); - assert.ok(["trivial", "simple"].includes(level)); + expect(["trivial", "simple"].includes(level)).toBe(true); }); }); @@ -45,14 +44,14 @@ describe("SpecificityDetector", () => { const result = analyzeSpecificity({ messages: [{ content: "```ts\nfunction foo(){}\n```" }], }); - assert.ok(result.score >= 5, `Expected >= 5, got ${result.score}`); + expect(result.score, `Expected >= 5, got ${result.score}`).toBeGreaterThanOrEqual(5); }); it("code complexity is detected in code blocks", () => { const result = analyzeSpecificity({ messages: [{ content: "```ts\nfunction foo(){}\n```" }], }); - assert.ok(result.breakdown.codeComplexity > 0); + expect(result.breakdown.codeComplexity).toBeGreaterThan(0); }); it("returns higher score for code + reasoning", () => { @@ -66,7 +65,7 @@ describe("SpecificityDetector", () => { { content: "```typescript\nclass BST { insert(val: T): void {} }\n```" }, ], }); - assert.ok(result.score >= 10, `Expected >= 10, got ${result.score}`); + expect(result.score, `Expected >= 10, got ${result.score}`).toBeGreaterThanOrEqual(10); }); }); @@ -80,82 +79,82 @@ describe("SpecificityDetector", () => { }, ], }); - assert.ok(result.breakdown.reasoningDepth > 0); + expect(result.breakdown.reasoningDepth).toBeGreaterThan(0); }); }); describe("getSpecificityLevel", () => { it("returns 'trivial' for score 0-5", () => { - assert.equal(getSpecificityLevel(0), "trivial"); - assert.equal(getSpecificityLevel(3), "trivial"); - assert.equal(getSpecificityLevel(5), "trivial"); + expect(getSpecificityLevel(0)).toBe("trivial"); + expect(getSpecificityLevel(3)).toBe("trivial"); + expect(getSpecificityLevel(5)).toBe("trivial"); }); it("returns 'simple' for score 6-20", () => { - assert.equal(getSpecificityLevel(6), "simple"); - assert.equal(getSpecificityLevel(10), "simple"); - assert.equal(getSpecificityLevel(20), "simple"); + expect(getSpecificityLevel(6)).toBe("simple"); + expect(getSpecificityLevel(10)).toBe("simple"); + expect(getSpecificityLevel(20)).toBe("simple"); }); it("returns 'moderate' for score 6-40", () => { - assert.equal(getSpecificityLevel(21), "moderate"); - assert.equal(getSpecificityLevel(30), "moderate"); - assert.equal(getSpecificityLevel(40), "moderate"); + expect(getSpecificityLevel(21)).toBe("moderate"); + expect(getSpecificityLevel(30)).toBe("moderate"); + expect(getSpecificityLevel(40)).toBe("moderate"); }); it("returns 'complex' for score 41+", () => { - assert.equal(getSpecificityLevel(41), "complex"); - assert.equal(getSpecificityLevel(46), "complex"); - assert.equal(getSpecificityLevel(65), "complex"); + expect(getSpecificityLevel(41)).toBe("complex"); + expect(getSpecificityLevel(46)).toBe("complex"); + expect(getSpecificityLevel(65)).toBe("complex"); }); it("returns 'expert' for score 66+", () => { - assert.equal(getSpecificityLevel(66), "expert"); - assert.equal(getSpecificityLevel(80), "expert"); - assert.equal(getSpecificityLevel(100), "expert"); + expect(getSpecificityLevel(66)).toBe("expert"); + expect(getSpecificityLevel(80)).toBe("expert"); + expect(getSpecificityLevel(100)).toBe("expert"); }); }); describe("getRecommendedMinTier", () => { it("returns 'free' for 'trivial'", () => { - assert.equal(getRecommendedMinTier("trivial"), "free"); + expect(getRecommendedMinTier("trivial")).toBe("free"); }); it("returns 'free' for 'simple'", () => { - assert.equal(getRecommendedMinTier("simple"), "free"); + expect(getRecommendedMinTier("simple")).toBe("free"); }); it("returns 'cheap' for 'moderate'", () => { - assert.equal(getRecommendedMinTier("moderate"), "cheap"); + expect(getRecommendedMinTier("moderate")).toBe("cheap"); }); it("returns 'premium' for 'complex'", () => { - assert.equal(getRecommendedMinTier("complex"), "cheap"); + expect(getRecommendedMinTier("complex")).toBe("cheap"); }); it("returns 'premium' for 'expert'", () => { - assert.equal(getRecommendedMinTier("expert"), "premium"); + expect(getRecommendedMinTier("expert")).toBe("premium"); }); }); describe("isHighSpecificity", () => { it("returns false for trivial query", () => { const result = analyzeSpecificity({ messages: [{ content: "Hi" }] }); - assert.equal(isHighSpecificity(result), false); + expect(isHighSpecificity(result)).toBe(false); }); it("returns false for simple query", () => { const result = analyzeSpecificity({ messages: [{ content: "What is Python?" }], }); - assert.equal(isHighSpecificity(result), false); + expect(isHighSpecificity(result)).toBe(false); }); }); describe("isLowSpecificity", () => { it("returns true for trivial query", () => { const result = analyzeSpecificity({ messages: [{ content: "Hi" }] }); - assert.equal(isLowSpecificity(result), true); + expect(isLowSpecificity(result)).toBe(true); }); it("returns false for complex query", () => { @@ -172,45 +171,45 @@ describe("SpecificityDetector", () => { }, ], }); - assert.equal(isLowSpecificity(result), false); + expect(isLowSpecificity(result)).toBe(false); }); }); describe("analyzeSpecificity returns complete result", () => { it("returns score, breakdown, rulesTriggered, inputTokens, confidence", () => { const result = analyzeSpecificity({ messages: [{ content: "Test" }] }); - assert.ok("score" in result); - assert.ok("breakdown" in result); - assert.ok("rulesTriggered" in result); - assert.ok("inputTokens" in result); - assert.ok("confidence" in result); + expect("score" in result).toBe(true); + expect("breakdown" in result).toBe(true); + expect("rulesTriggered" in result).toBe(true); + expect("inputTokens" in result).toBe(true); + expect("confidence" in result).toBe(true); }); it("returns all 6 breakdown categories", () => { const result = analyzeSpecificity({ messages: [{ content: "Test" }] }); - assert.ok("codeComplexity" in result.breakdown); - assert.ok("mathComplexity" in result.breakdown); - assert.ok("reasoningDepth" in result.breakdown); - assert.ok("contextSize" in result.breakdown); - assert.ok("toolCalling" in result.breakdown); - assert.ok("domainSpecificity" in result.breakdown); + expect("codeComplexity" in result.breakdown).toBe(true); + expect("mathComplexity" in result.breakdown).toBe(true); + expect("reasoningDepth" in result.breakdown).toBe(true); + expect("contextSize" in result.breakdown).toBe(true); + expect("toolCalling" in result.breakdown).toBe(true); + expect("domainSpecificity" in result.breakdown).toBe(true); }); it("returns non-negative scores for all categories", () => { const result = analyzeSpecificity({ messages: [{ content: "Hello" }] }); - assert.ok(result.breakdown.codeComplexity >= 0); - assert.ok(result.breakdown.mathComplexity >= 0); - assert.ok(result.breakdown.reasoningDepth >= 0); - assert.ok(result.breakdown.contextSize >= 0); - assert.ok(result.breakdown.toolCalling >= 0); - assert.ok(result.breakdown.domainSpecificity >= 0); + expect(result.breakdown.codeComplexity).toBeGreaterThanOrEqual(0); + expect(result.breakdown.mathComplexity).toBeGreaterThanOrEqual(0); + expect(result.breakdown.reasoningDepth).toBeGreaterThanOrEqual(0); + expect(result.breakdown.contextSize).toBeGreaterThanOrEqual(0); + expect(result.breakdown.toolCalling).toBeGreaterThanOrEqual(0); + expect(result.breakdown.domainSpecificity).toBeGreaterThanOrEqual(0); }); }); describe("tool calling detection", () => { it("returns 0 when no tools defined", () => { const result = analyzeSpecificity({ messages: [{ content: "Hello" }] }); - assert.equal(result.breakdown.toolCalling, 0); + expect(result.breakdown.toolCalling).toBe(0); }); it("returns positive score when tools present", () => { @@ -221,7 +220,7 @@ describe("SpecificityDetector", () => { { type: "function", function: { name: "weather", description: "get weather" } }, ], }); - assert.ok(result.breakdown.toolCalling > 0); + expect(result.breakdown.toolCalling).toBeGreaterThan(0); }); }); @@ -234,7 +233,7 @@ describe("SpecificityDetector", () => { const t0 = performance.now(); analyzeSpecificity({ messages: msgs }); const elapsed = performance.now() - t0; - assert.ok(elapsed < 5, `Expected < 5ms, got ${elapsed.toFixed(2)}ms`); + expect(elapsed, `Expected < 5ms, got ${elapsed.toFixed(2)}ms`).toBeLessThan(5); }); }); }); diff --git a/open-sse/services/__tests__/tierResolver.test.ts b/open-sse/services/__tests__/tierResolver.test.ts index 2a1fdd2e2a..7f2ce7a9f8 100644 --- a/open-sse/services/__tests__/tierResolver.test.ts +++ b/open-sse/services/__tests__/tierResolver.test.ts @@ -3,8 +3,7 @@ * Tests: classifyTier, setTierConfig, clearTierCache, getTierStats, classifyTiers */ -import { describe, it, beforeEach } from "node:test"; -import assert from "node:assert/strict"; +import { describe, it, expect, beforeEach } from "vitest"; import { classifyTier, setTierConfig, @@ -27,94 +26,94 @@ describe("TierResolver", () => { describe("classifyTier - free providers", () => { it("classifies Kiro as free", () => { const result = classifyTier("kiro", "claude-sonnet-4.5"); - assert.equal(result.tier, PROVIDER_TIER.FREE); - assert.equal(result.hasFreeTier, true); + expect(result.tier).toBe(PROVIDER_TIER.FREE); + expect(result.hasFreeTier).toBe(true); }); it("classifies Qoder as free", () => { const result = classifyTier("qoder", "kimi-k2-thinking"); - assert.equal(result.tier, PROVIDER_TIER.FREE); - assert.equal(result.hasFreeTier, true); + expect(result.tier).toBe(PROVIDER_TIER.FREE); + expect(result.hasFreeTier).toBe(true); }); it("classifies Pollinations as free", () => { const result = classifyTier("pollinations", "gpt-5"); - assert.equal(result.tier, PROVIDER_TIER.FREE); - assert.equal(result.hasFreeTier, true); + expect(result.tier).toBe(PROVIDER_TIER.FREE); + expect(result.hasFreeTier).toBe(true); }); it("classifies LongCat as free", () => { const result = classifyTier("longcat", "LongCat-2.0"); - assert.equal(result.tier, PROVIDER_TIER.FREE); - assert.equal(result.hasFreeTier, true); + expect(result.tier).toBe(PROVIDER_TIER.FREE); + expect(result.hasFreeTier).toBe(true); }); it("classifies Cloudflare AI as free", () => { const result = classifyTier("cloudflare-ai", "llama-3.3-70b"); - assert.equal(result.tier, PROVIDER_TIER.FREE); - assert.equal(result.hasFreeTier, true); + expect(result.tier).toBe(PROVIDER_TIER.FREE); + expect(result.hasFreeTier).toBe(true); }); it("classifies NVIDIA NIM as free", () => { const result = classifyTier("nvidia-nim", "llama-3.1-8b"); - assert.equal(result.tier, PROVIDER_TIER.FREE); - assert.equal(result.hasFreeTier, true); + expect(result.tier).toBe(PROVIDER_TIER.FREE); + expect(result.hasFreeTier).toBe(true); }); it("classifies Cerebras as free", () => { const result = classifyTier("cerebras", "llama-3.1-70b"); - assert.equal(result.tier, PROVIDER_TIER.FREE); - assert.equal(result.hasFreeTier, true); + expect(result.tier).toBe(PROVIDER_TIER.FREE); + expect(result.hasFreeTier).toBe(true); }); it("classifies Groq as free", () => { const result = classifyTier("groq", "llama-3.3-70b"); - assert.equal(result.tier, PROVIDER_TIER.FREE); - assert.equal(result.hasFreeTier, true); + expect(result.tier).toBe(PROVIDER_TIER.FREE); + expect(result.hasFreeTier).toBe(true); }); it("sets costPer1MInput to 0 for free providers", () => { const result = classifyTier("kiro", "claude-sonnet-4.5"); - assert.equal(result.costPer1MInput, 0); - assert.equal(result.costPer1MOutput, 0); + expect(result.costPer1MInput).toBe(0); + expect(result.costPer1MOutput).toBe(0); }); }); describe("classifyTier - cost-based classification", () => { it("classifies DeepSeek as cheap ($0.27/M < $1.00/M)", () => { const result = classifyTier("deepseek", "deepseek-chat"); - assert.equal(result.tier, PROVIDER_TIER.CHEAP); - assert.ok(result.costPer1MInput <= 1.0); + expect(result.tier).toBe(PROVIDER_TIER.CHEAP); + expect(result.costPer1MInput).toBeLessThanOrEqual(1.0); }); it("classifies GLM as cheap ($0.60/M < $1.00/M)", () => { const result = classifyTier("glm", "glm-4.7"); - assert.equal(result.tier, PROVIDER_TIER.CHEAP); - assert.ok(result.costPer1MInput <= 1.0); + expect(result.tier).toBe(PROVIDER_TIER.CHEAP); + expect(result.costPer1MInput).toBeLessThanOrEqual(1.0); }); it("classifies MiniMax as cheap ($0.20/M < $1.00/M)", () => { const result = classifyTier("minimax", "minimax-m2.1"); - assert.equal(result.tier, PROVIDER_TIER.CHEAP); - assert.ok(result.costPer1MInput <= 1.0); + expect(result.tier).toBe(PROVIDER_TIER.CHEAP); + expect(result.costPer1MInput).toBeLessThanOrEqual(1.0); }); it("classifies GPT-4o as premium ($2.50/M > $1.00/M)", () => { const result = classifyTier("openai", "gpt-4o"); - assert.equal(result.tier, PROVIDER_TIER.PREMIUM); - assert.ok(result.costPer1MInput > 1.0); + expect(result.tier).toBe(PROVIDER_TIER.PREMIUM); + expect(result.costPer1MInput).toBeGreaterThan(1.0); }); it("classifies Claude Opus as premium ($15.00/M > $1.00/M)", () => { const result = classifyTier("anthropic", "claude-opus-4-7"); - assert.equal(result.tier, PROVIDER_TIER.PREMIUM); - assert.ok(result.costPer1MInput > 1.0); + expect(result.tier).toBe(PROVIDER_TIER.PREMIUM); + expect(result.costPer1MInput).toBeGreaterThan(1.0); }); it("defaults unknown providers to premium", () => { const result = classifyTier("unknown-provider", "unknown-model"); - assert.equal(result.tier, PROVIDER_TIER.PREMIUM); - assert.equal(result.costPer1MInput, 5.0); // default premium pricing + expect(result.tier).toBe(PROVIDER_TIER.PREMIUM); + expect(result.costPer1MInput).toBe(5.0); // default premium pricing }); }); @@ -122,8 +121,8 @@ describe("TierResolver", () => { it("respects provider-level tier override", () => { setTierConfig({ providerOverrides: [{ provider: "openai", tier: "cheap" }] }); const result = classifyTier("openai", "gpt-4o"); - assert.equal(result.tier, PROVIDER_TIER.CHEAP); - assert.ok(result.reason.includes("override")); + expect(result.tier).toBe(PROVIDER_TIER.CHEAP); + expect(result.reason.includes("override")).toBe(true); }); it("respects model-level glob pattern override", () => { @@ -131,7 +130,7 @@ describe("TierResolver", () => { modelOverrides: [{ provider: "openai", modelPattern: "gpt-4o-mini*", tier: "cheap" }], }); const result = classifyTier("openai", "gpt-4o-mini-2024-07-18"); - assert.equal(result.tier, PROVIDER_TIER.CHEAP); + expect(result.tier).toBe(PROVIDER_TIER.CHEAP); }); it("glob pattern gpt-4o-mini* matches gpt-4o-mini-2024-07-18", () => { @@ -139,15 +138,15 @@ describe("TierResolver", () => { modelOverrides: [{ provider: "openai", modelPattern: "gpt-4o-mini*", tier: "cheap" }], }); const result = classifyTier("openai", "gpt-4o-mini-2024-07-18"); - assert.equal(result.tier, PROVIDER_TIER.CHEAP); + expect(result.tier).toBe(PROVIDER_TIER.CHEAP); }); it("config change invalidates cache", () => { const before = classifyTier("openai", "gpt-4o"); - assert.equal(before.tier, PROVIDER_TIER.PREMIUM); + expect(before.tier).toBe(PROVIDER_TIER.PREMIUM); setTierConfig({ providerOverrides: [{ provider: "openai", tier: "free" }] }); const after = classifyTier("openai", "gpt-4o"); - assert.equal(after.tier, PROVIDER_TIER.FREE); + expect(after.tier).toBe(PROVIDER_TIER.FREE); }); }); @@ -157,15 +156,15 @@ describe("TierResolver", () => { const t0 = performance.now(); classifyTier("openai", "gpt-4o"); const elapsed = performance.now() - t0; - assert.ok(elapsed < 0.1, "cache hit should be <0.1ms"); + expect(elapsed, "cache hit should be <0.1ms").toBeLessThan(0.1); }); it("clearTierCache() forces re-classification", () => { const first = classifyTier("openai", "gpt-4o"); clearTierCache(); const second = classifyTier("openai", "gpt-4o"); - assert.equal(first.tier, second.tier); - assert.ok(second.costPer1MInput > 0); + expect(first.tier).toBe(second.tier); + expect(second.costPer1MInput).toBeGreaterThan(0); }); }); @@ -185,20 +184,25 @@ describe("TierResolver", () => { { provider: "unknown", model: "unknown-model" }, ]; const results = classifyTiers(targets); - assert.equal(results.length, 9); - assert.equal(results[0].tier, PROVIDER_TIER.FREE); // kiro - assert.equal(results[1].tier, PROVIDER_TIER.PREMIUM); // openai gpt-4o ($2.50/M) - assert.equal(results[2].tier, PROVIDER_TIER.CHEAP); // deepseek - assert.equal(results[8].tier, PROVIDER_TIER.PREMIUM); // unknown + expect(results.length).toBe(9); + expect(results[0].tier).toBe(PROVIDER_TIER.FREE); // kiro + expect(results[1].tier).toBe(PROVIDER_TIER.PREMIUM); // openai gpt-4o ($2.50/M) + expect(results[2].tier).toBe(PROVIDER_TIER.CHEAP); // deepseek + expect(results[8].tier).toBe(PROVIDER_TIER.PREMIUM); // unknown }); it("uses cache for repeated models", () => { - classifyTiers([ + clearTierCache(); + const results = classifyTiers([ { provider: "openai", model: "gpt-4o" }, { provider: "openai", model: "gpt-4o" }, ]); - // If cache works, second call should be instant; test passes if no error - assert.ok(true); + // Observable effect of the cache: the duplicate resolves to the same tier and only + // ONE entry is memoized (getTierStats counts cache entries, not classify calls). + expect(results).toHaveLength(2); + expect(results[0].tier).toBe(results[1].tier); + const stats = getTierStats(); + expect(stats.free + stats.cheap + stats.premium).toBe(1); }); }); @@ -208,8 +212,8 @@ describe("TierResolver", () => { classifyTier("kiro", "claude-sonnet-4.5"); classifyTier("deepseek", "deepseek-chat"); const stats = getTierStats(); - assert.ok(stats[PROVIDER_TIER.FREE] >= 1); - assert.ok(stats[PROVIDER_TIER.CHEAP] >= 1); + expect(stats[PROVIDER_TIER.FREE]).toBeGreaterThanOrEqual(1); + expect(stats[PROVIDER_TIER.CHEAP]).toBeGreaterThanOrEqual(1); }); }); @@ -227,58 +231,64 @@ describe("TierResolver", () => { "cerebras", "groq", ]) { - assert.ok(LEGACY_FREE_PROVIDERS.includes(id), `expected ${id} in LEGACY_FREE_PROVIDERS`); + expect(LEGACY_FREE_PROVIDERS.includes(id), `expected ${id} in LEGACY_FREE_PROVIDERS`).toBe( + true + ); } }); it("deriveNoAuthFreeProviders includes all chat-tier noAuth providers", () => { const derived = deriveNoAuthFreeProviders(); // opencode + mimocode are the ones the bug report called out - assert.ok(derived.includes("opencode"), "opencode should be in derived noAuth-free list"); - assert.ok(derived.includes("mimocode"), "mimocode should be in derived noAuth-free list"); - assert.ok(derived.includes("duckduckgo-web")); + expect(derived.includes("opencode"), "opencode should be in derived noAuth-free list").toBe( + true + ); + expect(derived.includes("mimocode"), "mimocode should be in derived noAuth-free list").toBe( + true + ); + expect(derived.includes("duckduckgo-web")).toBe(true); }); it("deriveNoAuthFreeProviders excludes non-LLM noAuth providers", () => { const derived = deriveNoAuthFreeProviders(); - assert.ok( - !derived.includes("veoaifree-web"), + expect( + derived.includes("veoaifree-web"), "veoaifree-web (serviceKinds: video) must not be classified as chat-free" - ); + ).toBe(false); }); it("DEFAULT_TIER_CONFIG.freeProviders contains the union of legacy + noAuth-derived", () => { const expected = new Set([...LEGACY_FREE_PROVIDERS, ...deriveNoAuthFreeProviders()]); const actual = new Set(DEFAULT_TIER_CONFIG.freeProviders); - assert.deepEqual(actual, expected, "freeProviders must be the union, deduplicated"); + expect(actual).toEqual(expected); }); it("classifyTier classifies opencode/big-pickle as free via noAuth derivation", () => { // No provider override, no cost-based match (big-pickle has no KNOWN_MODEL_PRICING row). // The fix is that 'opencode' is now in freeProviders. const result = classifyTier("opencode", "big-pickle"); - assert.equal(result.tier, PROVIDER_TIER.FREE); - assert.equal(result.hasFreeTier, true); + expect(result.tier).toBe(PROVIDER_TIER.FREE); + expect(result.hasFreeTier).toBe(true); }); it("classifyTier classifies mimocode/mimo-auto as free via noAuth derivation", () => { const result = classifyTier("mimocode", "mimo-auto"); - assert.equal(result.tier, PROVIDER_TIER.FREE); - assert.equal(result.hasFreeTier, true); + expect(result.tier).toBe(PROVIDER_TIER.FREE); + expect(result.hasFreeTier).toBe(true); }); it("classifyTier still returns cheap for paid glm-5.1 (no regression)", () => { // glm-5.1 is not in freeProviders, costs $0.50/M → cheap tier. // Make sure the new noAuth derivation didn't accidentally pull it into free. const result = classifyTier("opencode-go", "glm-5.1"); - assert.equal(result.tier, PROVIDER_TIER.CHEAP); + expect(result.tier).toBe(PROVIDER_TIER.CHEAP); }); it("userConfig.freeProviders is merged on top of the noAuth-derived list", () => { // Re-merge with a new free provider (e.g. local-llama) and confirm it's added. setTierConfig({ freeProviders: ["local-llama"] }); const result = classifyTier("local-llama", "anything"); - assert.equal(result.tier, PROVIDER_TIER.FREE); + expect(result.tier).toBe(PROVIDER_TIER.FREE); clearTierCache(); }); }); diff --git a/open-sse/services/__tests__/volumeDetector.test.ts b/open-sse/services/__tests__/volumeDetector.test.ts index e29684f912..7b71289478 100644 --- a/open-sse/services/__tests__/volumeDetector.test.ts +++ b/open-sse/services/__tests__/volumeDetector.test.ts @@ -1,5 +1,12 @@ -import { describe, it } from "node:test"; -import assert from "node:assert/strict"; +import { describe, it, expect, vi } from "vitest"; + +// Mock the DB so recommendStrategyOverride sees adaptiveVolumeRouting = true. +// Without this the real getSettings() throws (no SQLite in test env), the +// catch block fires, and the function returns noOverride before any rule runs. +vi.mock("@/lib/localDb", () => ({ + getSettings: vi.fn().mockResolvedValue({ adaptiveVolumeRouting: true }), +})); + import { detectVolumeSignals, recommendStrategyOverride } from "../volumeDetector"; describe("volumeDetector", async () => { @@ -9,11 +16,11 @@ describe("volumeDetector", async () => { messages: [{ role: "user", content: "Hello" }], }; const signals = detectVolumeSignals(body); - assert.equal(signals.batchSize, 1); - assert.ok(signals.estimatedTokens < 100); - assert.equal(signals.toolCount, 0); - assert.equal(signals.hasBrowser, false); - assert.equal(signals.complexity, "trivial"); + expect(signals.batchSize).toBe(1); + expect(signals.estimatedTokens).toBeLessThan(100); + expect(signals.toolCount).toBe(0); + expect(signals.hasBrowser).toBe(false); + expect(signals.complexity).toBe("trivial"); }); it("detects tool-heavy request as high complexity", async () => { @@ -27,8 +34,8 @@ describe("volumeDetector", async () => { ], }; const signals = detectVolumeSignals(body); - assert.equal(signals.toolCount, 4); - assert.equal(signals.complexity, "critical"); + expect(signals.toolCount).toBe(4); + expect(signals.complexity).toBe("critical"); }); it("detects browser keywords", async () => { @@ -36,7 +43,7 @@ describe("volumeDetector", async () => { messages: [{ role: "user", content: "Navigate to the page and take a screenshot" }], }; const signals = detectVolumeSignals(body); - assert.equal(signals.hasBrowser, true); + expect(signals.hasBrowser).toBe(true); }); it("detects batch from multi-part content", async () => { @@ -48,7 +55,7 @@ describe("volumeDetector", async () => { messages: [{ role: "user", content: parts }], }; const signals = detectVolumeSignals(body); - assert.equal(signals.batchSize, 20); + expect(signals.batchSize).toBe(20); }); it("detects security keywords as high complexity", async () => { @@ -56,10 +63,10 @@ describe("volumeDetector", async () => { messages: [{ role: "user", content: "Refactor the authentication module for production" }], }; const signals = detectVolumeSignals(body); - assert.ok( + expect( signals.complexity === "critical" || signals.complexity === "high", `expected critical or high, got ${signals.complexity}` - ); + ).toBe(true); }); }); @@ -67,9 +74,9 @@ describe("volumeDetector", async () => { it("recommends round-robin for large batches", async () => { const signals = detectVolumeSignals({ input: Array(60).fill("item") }); const override = await recommendStrategyOverride(signals, "priority"); - assert.equal(override.shouldOverride, true); - assert.equal(override.strategy, "round-robin"); - assert.equal(override.preferEconomy, true); + expect(override.shouldOverride).toBe(true); + expect(override.strategy).toBe("round-robin"); + expect(override.preferEconomy).toBe(true); }); it("recommends premium-first for browser tasks", async () => { @@ -82,9 +89,9 @@ describe("volumeDetector", async () => { complexity: "high" as const, }; const override = await recommendStrategyOverride(signals, "round-robin"); - assert.equal(override.shouldOverride, true); - assert.equal(override.strategy, "priority"); - assert.equal(override.forcePremium, true); + expect(override.shouldOverride).toBe(true); + expect(override.strategy).toBe("priority"); + expect(override.forcePremium).toBe(true); }); it("flags economy for tiny requests without changing strategy", async () => { @@ -97,8 +104,8 @@ describe("volumeDetector", async () => { complexity: "trivial" as const, }; const override = await recommendStrategyOverride(signals, "priority"); - assert.equal(override.shouldOverride, false); - assert.equal(override.preferEconomy, true); + expect(override.shouldOverride).toBe(false); + expect(override.preferEconomy).toBe(true); }); it("no override for normal medium requests", async () => { @@ -111,8 +118,8 @@ describe("volumeDetector", async () => { complexity: "low" as const, }; const override = await recommendStrategyOverride(signals, "priority"); - assert.equal(override.shouldOverride, false); - assert.equal(override.preferEconomy, false); + expect(override.shouldOverride).toBe(false); + expect(override.preferEconomy).toBe(false); }); }); }); diff --git a/open-sse/services/accountFallback.ts b/open-sse/services/accountFallback.ts index 5204c7410d..b51cace449 100644 --- a/open-sse/services/accountFallback.ts +++ b/open-sse/services/accountFallback.ts @@ -58,6 +58,7 @@ import { evictLockoutOverflow } from "./accountFallback/lockoutEviction.ts"; export { MODEL_LOCKOUT_EVICTION_CAP } from "./accountFallback/lockoutEviction.ts"; import { capScaledCooldownMs } from "./accountFallback/cooldownCap.ts"; import { resolveApiKeyForbiddenFallback } from "./accountFallback/nonRetryableUpstream.ts"; +import * as exactModelLock from "./accountFallback/exactModelLock.ts"; export type ProviderProfile = { baseCooldownMs: number; useUpstreamRetryHints: boolean; @@ -183,6 +184,12 @@ export const CREDITS_EXHAUSTED_SIGNALS = [ "out of credits", "payment required", "free tier of the model has been exhausted", + // #8631: narrower than a bare "has been exhausted" — that generic phrase also + // appears in Gemini's transient RPM/TPM 429 body ("Resource has been exhausted + // (e.g. check quota)."), which must stay RATE_LIMIT_EXCEEDED, not terminal. + // Anchoring on "tier" keeps free-tier depletion wording matched while excluding + // Gemini's "resource has been exhausted" rate-limit phrasing. + "tier has been exhausted", // #5239: providers (e.g. DeepSeek/GLM-style) return "Insufficient account balance" // on a depleted key. 402 is already terminalized by status, but catch non-402 // out-of-credit bodies here too. @@ -442,6 +449,12 @@ function getModelLockKey( return `${canonicalProvider}:${connectionId}:${lockModel}`; } +const buildExactKey = exactModelLock.buildExactModelLockKey; // see exactModelLock.ts +const getModelLockKeys = exactModelLock.createGetModelLockKeys( + getModelLockKey, + getCanonicalLockProvider +); + function getFailureWindowMs(profile: ProviderProfile | null = null, fallbackMs = 30 * 60 * 1000) { const configured = profile?.resetTimeoutMs; return typeof configured === "number" && configured > 0 ? configured : fallbackMs; @@ -559,6 +572,14 @@ export function lockModel( }); } +// Lock only this exact provider/account/model tuple, never a quota family — see exactModelLock.ts. +export const lockExactModel = exactModelLock.createLockExactModel( + modelLockouts, + ensureCleanupTimer, + cleanupModelLockKey, + getCanonicalLockProvider +); + /** * Pick the `exactCooldownMs` to apply to a model lockout (#1308). * @@ -591,6 +612,7 @@ export function recordModelLockoutFailure( options: { exactCooldownMs?: number | null; maxCooldownMs?: number; + scope?: "exact" | "quota_family"; /** * #6863 vs #7940: set true only when `exactCooldownMs` came from an actual * upstream signal (Retry-After header, X-RateLimit-Reset, or a reset parsed @@ -606,7 +628,10 @@ export function recordModelLockoutFailure( } = {} ) { ensureCleanupTimer(); - const key = getModelLockKey(provider, connectionId, model, reason, status); + const key = + options.scope === "exact" + ? buildExactKey(getCanonicalLockProvider(provider), connectionId, model) + : getModelLockKey(provider, connectionId, model, reason, status); const now = Date.now(); cleanupModelLockKey(key, now); @@ -656,7 +681,8 @@ export function recordModelLockoutFailure( lastCooldownMs: cooldownMs, }); - lockModel(provider, connectionId, model, reason, cooldownMs, { + const lockFn = options.scope === "exact" ? lockExactModel : lockModel; + lockFn(provider, connectionId, model, reason, cooldownMs, { failureCount, lastFailureAt: now, resetAfterMs, @@ -675,16 +701,11 @@ export function clearModelLock( model: string | null | undefined ): boolean { if (!model) return false; - const familyKey = getModelLockKey(provider, connectionId, model); - const exactKey = `${getCanonicalLockProvider(provider)}:${connectionId}:${model}`; - - const hadLock1 = modelLockouts.delete(familyKey); - const hadFailure1 = modelFailureState.delete(familyKey); - - const hadLock2 = modelLockouts.delete(exactKey); - const hadFailure2 = modelFailureState.delete(exactKey); - - return hadLock1 || hadFailure1 || hadLock2 || hadFailure2; + return exactModelLock.clearMultiKeyLock( + modelLockouts, + modelFailureState, + getModelLockKeys(provider, connectionId, model) + ); } /** @@ -708,6 +729,7 @@ export function hasPerModelQuota( return connectionPassthroughModels; } if (!provider) return false; + if (getCanonicalLockProvider(provider) === "antigravity") return true; if (getCanonicalLockProvider(provider) === "codex") return true; if (provider === "gemini" || provider === "github") return true; if (getPassthroughProviders().has(provider)) return true; @@ -731,7 +753,8 @@ export function lockModelIfPerModelQuota( // Skip model-level lock if the entire provider is in circuit-breaker cooldown. // The provider cooldown already prevents all requests, so a model lock is redundant. if (isProviderInCooldown(provider)) return false; - lockModel(provider, connectionId, model, reason, cooldownMs); + const lockFn = getCanonicalLockProvider(provider) === "antigravity" ? lockExactModel : lockModel; + lockFn(provider, connectionId, model, reason, cooldownMs); return true; } @@ -800,14 +823,11 @@ export function isModelLocked( model: string | null | undefined ): boolean { if (!model) return false; - - const exactKey = `${getCanonicalLockProvider(provider)}:${connectionId}:${model}`; - cleanupModelLockKey(exactKey); - if (modelLockouts.has(exactKey)) return true; - - const familyKey = getModelLockKey(provider, connectionId, model); - cleanupModelLockKey(familyKey); - return modelLockouts.has(familyKey); + return exactModelLock.isAnyKeyLocked( + modelLockouts, + cleanupModelLockKey, + getModelLockKeys(provider, connectionId, model) + ); } /** @@ -819,32 +839,18 @@ export function getModelLockoutInfo( model: string | null | undefined ) { if (!model) return null; - - const exactKey = `${getCanonicalLockProvider(provider)}:${connectionId}:${model}`; - cleanupModelLockKey(exactKey); - const exactEntry = modelLockouts.get(exactKey); - if (exactEntry) { - return { - reason: exactEntry.reason, - remainingMs: exactEntry.until - Date.now(), - lockedAt: new Date(exactEntry.lockedAt).toISOString(), - failureCount: exactEntry.failureCount, - }; - } - - const familyKey = getModelLockKey(provider, connectionId, model); - cleanupModelLockKey(familyKey); - const familyEntry = modelLockouts.get(familyKey); - if (familyEntry) { - return { - reason: familyEntry.reason, - remainingMs: familyEntry.until - Date.now(), - lockedAt: new Date(familyEntry.lockedAt).toISOString(), - failureCount: familyEntry.failureCount, - }; - } - - return null; + const entry = exactModelLock.findLatestLockEntry( + modelLockouts, + cleanupModelLockKey, + getModelLockKeys(provider, connectionId, model) + ); + if (!entry) return null; + return { + reason: entry.reason, + remainingMs: entry.until - Date.now(), + lockedAt: new Date(entry.lockedAt).toISOString(), + failureCount: entry.failureCount, + }; } export type ModelLockoutInfo = { @@ -1625,7 +1631,11 @@ export function checkFallbackError( !errorStr.toLowerCase().includes("hour quota") && !errorStr.toLowerCase().includes("quota has been exceeded") ) { - return resolveApiKeyForbiddenFallback(errorStr, buildRetryableFallback, RateLimitReason.AUTH_ERROR); + return resolveApiKeyForbiddenFallback( + errorStr, + buildRetryableFallback, + RateLimitReason.AUTH_ERROR + ); } } @@ -1947,6 +1957,8 @@ export function applyErrorState( return nextState; } +export { isAccountSemaphoreFull } from "./accountSemaphore.ts"; + /** * Get account health score (0-100) for P2C selection (Phase 9) * @param {object} account diff --git a/open-sse/services/accountFallback/exactModelLock.ts b/open-sse/services/accountFallback/exactModelLock.ts new file mode 100644 index 0000000000..838d6a9173 --- /dev/null +++ b/open-sse/services/accountFallback/exactModelLock.ts @@ -0,0 +1,158 @@ +/** + * accountFallback/exactModelLock.ts — exact-model (non-family-scoped) lockout key + entry math. + * + * Extracted from services/accountFallback.ts (file-size gate, #8630): pure helpers for the + * opt-in "exact model" lockout scope introduced for Antigravity — a confirmed exhaustion on + * one specific model (e.g. one Claude model) must not lock the whole quota family (Gemini or + * other Claude models on the same account). Pure w.r.t. module state — accountFallback.ts + * still owns the modelLockouts/modelFailureState maps, canonical-provider resolution, and the + * cleanup timer; it calls into these with its own map instances. + */ + +import type { ModelLockoutEntry, ModelFailureState } from "../accountFallback.ts"; + +/** Build the "exact" scoped lockout key — a distinct namespace from the quota-family key. */ +export function buildExactModelLockKey( + canonicalProvider: string, + connectionId: string, + model: string +): string { + return `${canonicalProvider}:${connectionId}:exact:${model.trim().toLowerCase()}`; +} + +/** Dedupe the 3 lockout key shapes callers must check: quota-family, #8050 not_found, exact. */ +export function collectModelLockKeys( + familyKey: string, + notFoundKey: string, + exactKey: string +): string[] { + return Array.from(new Set([familyKey, notFoundKey, exactKey])); +} + +/** + * DI factory for `getModelLockKeys` — accountFallback.ts's own `getModelLockKey` (quota-family + * scoping) and `getCanonicalLockProvider` (alias resolution) are private, so this closes over + * them here rather than duplicating that logic in the leaf. + */ +export function createGetModelLockKeys( + getModelLockKey: ( + provider: string, + connectionId: string, + model: string, + reason?: string | null, + status?: number | null + ) => string, + getCanonicalLockProvider: (provider: string) => string +) { + return function getModelLockKeys(provider: string, connectionId: string, model: string) { + return collectModelLockKeys( + getModelLockKey(provider, connectionId, model), + getModelLockKey(provider, connectionId, model, "not_found", 404), + buildExactModelLockKey(getCanonicalLockProvider(provider), connectionId, model) + ); + }; +} + +/** + * Compute the next ModelLockoutEntry for an exact-model lock, merging with any existing entry + * the same way lockModel() does (extend failureCount on a shorter re-lock instead of shrinking + * the remaining cooldown). Returns null when the caller should leave state untouched. + */ +export function computeExactModelLockEntry( + existing: ModelLockoutEntry | undefined, + reason: string, + cooldownMs: number, + metadata: Partial +): ModelLockoutEntry | null { + const now = Date.now(); + const newUntil = now + cooldownMs; + if (existing && existing.until > newUntil) { + if (!metadata.failureCount || metadata.failureCount <= existing.failureCount) return null; + return { + ...existing, + failureCount: metadata.failureCount, + lastFailureAt: metadata.lastFailureAt ?? existing.lastFailureAt, + resetAfterMs: metadata.resetAfterMs ?? existing.resetAfterMs, + }; + } + return { + reason, + until: newUntil, + lockedAt: now, + failureCount: metadata.failureCount ?? existing?.failureCount ?? 1, + lastFailureAt: metadata.lastFailureAt ?? now, + resetAfterMs: metadata.resetAfterMs ?? existing?.resetAfterMs ?? 0, + }; +} + +/** + * Delete every one of the 3 lockout key shapes from both maps — a success on any one + * of them must clear the lock regardless of which reason originally wrote it. + */ +export function clearMultiKeyLock( + modelLockouts: Map, + modelFailureState: Map, + keys: string[] +): boolean { + let cleared = false; + for (const key of keys) { + cleared = modelLockouts.delete(key) || cleared; + cleared = modelFailureState.delete(key) || cleared; + } + return cleared; +} + +/** True when any of the 3 lockout key shapes is currently active (post-cleanup). */ +export function isAnyKeyLocked( + modelLockouts: Map, + cleanup: (key: string) => void, + keys: string[] +): boolean { + return keys.some((key) => { + cleanup(key); + return modelLockouts.has(key); + }); +} + +/** The active entry with the most remaining time across the 3 lockout key shapes. */ +export function findLatestLockEntry( + modelLockouts: Map, + cleanup: (key: string) => void, + keys: string[] +): ModelLockoutEntry | undefined { + return keys + .map((key) => { + cleanup(key); + return modelLockouts.get(key); + }) + .filter((value): value is ModelLockoutEntry => Boolean(value)) + .sort((a, b) => b.until - a.until)[0]; +} + +/** + * DI factory for the exported `lockExactModel` — accountFallback.ts owns the + * modelLockouts map + cleanup timer/key private functions and closes over them here so + * the full lock-only-this-exact-tuple implementation lives in this leaf, not the god-file. + */ +export function createLockExactModel( + modelLockouts: Map, + ensureCleanupTimer: () => void, + cleanupModelLockKey: (key: string) => void, + getCanonicalLockProvider: (provider: string) => string +) { + return function lockExactModel( + provider: string, + connectionId: string, + model: string | null | undefined, + reason: string, + cooldownMs: number, + metadata: Partial = {} + ): void { + if (!model) return; + ensureCleanupTimer(); + const key = buildExactModelLockKey(getCanonicalLockProvider(provider), connectionId, model); + cleanupModelLockKey(key); + const next = computeExactModelLockEntry(modelLockouts.get(key), reason, cooldownMs, metadata); + if (next) modelLockouts.set(key, next); + }; +} diff --git a/open-sse/services/accountSemaphore.ts b/open-sse/services/accountSemaphore.ts index affb06a41f..2d3a1f50b8 100644 --- a/open-sse/services/accountSemaphore.ts +++ b/open-sse/services/accountSemaphore.ts @@ -54,8 +54,21 @@ export function buildAccountSemaphoreKey({ return `${String(provider)}:${String(accountKey)}`; } +/** + * Effective positive cap, or null when the semaphore is bypassed (unset/<=0). + * + * Narrowing companion of {@link isBypassed}: that one returns a plain boolean, so + * TypeScript cannot narrow `number | null` to `number` in its else-branch (a + * `x is null | undefined` predicate would be unsound — 0 bypasses too). Callers + * that need the VALUE after the guard go through here instead of casting. + */ +function resolveActiveCap(maxConcurrency?: number | null): number | null { + if (maxConcurrency == null || maxConcurrency <= 0) return null; + return maxConcurrency; +} + function isBypassed(maxConcurrency?: number | null): boolean { - return maxConcurrency == null || maxConcurrency <= 0; + return resolveActiveCap(maxConcurrency) === null; } function createNoopReleaseFn(): () => void { @@ -192,7 +205,8 @@ export function acquire( maxQueueSize = DEFAULT_MAX_QUEUE_SIZE, }: AcquireAccountSemaphoreOptions = {} ): Promise<() => void> { - if (isBypassed(maxConcurrency)) { + const activeCap = resolveActiveCap(maxConcurrency); + if (activeCap === null) { return Promise.resolve(createNoopReleaseFn()); } @@ -200,7 +214,7 @@ export function acquire( return Promise.reject(makeAbortError(signal)); } - const gate = ensureGate(semaphoreKey, maxConcurrency); + const gate = ensureGate(semaphoreKey, activeCap); clearCleanupTimer(gate); if (gate.running < gate.maxConcurrency && !isBlocked(gate)) { @@ -342,6 +356,24 @@ export function getStats(): Record { return stats; } +/** + * Check if an account semaphore key is currently at or over its max concurrency limit. + * Returns true if running >= maxConcurrency or blocked. + */ +export function isAccountSemaphoreFull( + provider: string, + accountKey: string, + maxConcurrency?: number | null +): boolean { + if (isBypassed(maxConcurrency)) return false; + const key = buildAccountSemaphoreKey({ provider, accountKey }); + const gate = gates.get(key); + if (!gate) return false; + const effectiveCap = maxConcurrency ?? gate.maxConcurrency; + if (isBypassed(effectiveCap)) return false; + return gate.running >= effectiveCap || isBlocked(gate); +} + /** * Reset a single key and reject queued waiters. */ diff --git a/open-sse/services/adobeFireflyBrowserLogin.ts b/open-sse/services/adobeFireflyBrowserLogin.ts new file mode 100644 index 0000000000..1482971c3e --- /dev/null +++ b/open-sse/services/adobeFireflyBrowserLogin.ts @@ -0,0 +1,482 @@ +/** + * Adobe Firefly browser login (packaged-backend safe). + * + * Firefly needs an Adobe IMS access_token JWT (Bearer) issued for + * client_id `clio-playground-web`. That JWT is NEVER present in + * cookies/localStorage тАФ the SPA only holds it in memory and attaches it + * as `Authorization: Bearer ` on XHRs to firefly-3p.ff.adobe.io. + * + * IMPORTANT: The VibeProxyServices.exe is a pkg-packaged Node binary. + * Dynamic `import("playwright")` fails there (native bindings / browsers + * are not in the package). This module launches the **system** Chrome or + * Edge with `--remote-debugging-port` and talks pure Chrome DevTools + * Protocol over WebSocket тАФ zero Playwright dependency. + */ +import { spawn, type ChildProcess } from "node:child_process"; +import { existsSync, mkdtempSync, rmSync } from "node:fs"; +import { createServer } from "node:net"; +import { tmpdir } from "node:os"; +import { join } from "node:path"; +import { sanitizeErrorMessage } from "../utils/error.ts"; + +const FIREFLY_HOME_URL = "https://firefly.adobe.com/"; +const FIREFLY_3P_HOST_SUFFIX = "firefly-3p.ff.adobe.io"; +// Bounded quantifiers (Hard Rule: avoid ReDoS on adversarial Authorization headers). +const ADOBE_BEARER_REGEX = + /^Bearer\s+(eyJ[A-Za-z0-9_-]{1,4096}\.[A-Za-z0-9_-]{1,4096}\.[A-Za-z0-9_-]{1,4096})/i; + +const DEFAULT_LOGIN_TIMEOUT_MS = 300_000; +const MIN_LOGIN_TIMEOUT_MS = 15_000; +const MAX_LOGIN_TIMEOUT_MS = 600_000; +const POLL_INTERVAL_MS = 400; +const CDP_READY_TIMEOUT_MS = 30_000; + +export interface AdobeFireflyBrowserLoginResult { + success: boolean; + credentials?: { accessToken?: string; cookie?: string }; + /** Best-effort Adobe account label (email or user id) decoded from the JWT. */ + account?: string; + error?: string; +} + +export function clampAdobeFireflyLoginTimeout(value: unknown): number { + if (typeof value !== "number" || !Number.isFinite(value)) return DEFAULT_LOGIN_TIMEOUT_MS; + return Math.max(MIN_LOGIN_TIMEOUT_MS, Math.min(MAX_LOGIN_TIMEOUT_MS, Math.trunc(value))); +} + +/** Extract an IMS JWT from an Authorization header value. Exported for unit tests. */ +export function extractAdobeBearerTokenFromAuthorization(authHeader: string): string { + const m = String(authHeader || "").match(ADOBE_BEARER_REGEX); + return m?.[1] || ""; +} + +/** Build a single cookie header from relevant Firefly cookies. Exported for unit tests. */ +export function buildAdobeFireflyCookieHeader( + cookies: Array<{ name: string; value: string; domain?: string }> +): string { + const wanted = ["sherlockToken", "forterToken", "aux_sid", "ff_session_guid"]; + const parts: string[] = []; + for (const wantedName of wanted) { + const c = cookies.find( + (candidate) => + candidate.name === wantedName && + typeof candidate.value === "string" && + candidate.value.length > 0 && + !/[\r\n;]/.test(candidate.value) + ); + if (c) parts.push(`${wantedName}=${c.value}`); + } + return parts.join("; "); +} + +/** Best-effort account label from an IMS JWT payload. Exported for unit tests. */ +export function accountLabelFromAdobeJwt(token: string): string { + try { + const part = String(token || "").split(".")[1]; + if (!part) return ""; + const json = Buffer.from(part.replace(/-/g, "+").replace(/_/g, "/"), "base64").toString("utf8"); + const obj = JSON.parse(json) as Record; + for (const key of ["email", "preferred_username", "user_id", "sub"]) { + const v = obj[key]; + if (typeof v === "string" && v.trim()) return v.trim(); + } + } catch { + // ignore + } + return ""; +} + +/** Resolve system Chrome/Edge executable. Exported for unit tests. */ +export function resolveSystemBrowserExecutable(): string | null { + const configured = process.env.OMNIROUTE_LOGIN_BROWSER_PATH?.trim(); + if (configured && existsSync(configured)) return configured; + + const pf = process.env.ProgramFiles || "C:\\Program Files"; + const pf86 = process.env["ProgramFiles(x86)"] || "C:\\Program Files (x86)"; + const local = process.env.LOCALAPPDATA || ""; + const candidates = [ + join(pf, "Google", "Chrome", "Application", "chrome.exe"), + join(pf86, "Google", "Chrome", "Application", "chrome.exe"), + join(local, "Google", "Chrome", "Application", "chrome.exe"), + join(pf, "Microsoft", "Edge", "Application", "msedge.exe"), + join(pf86, "Microsoft", "Edge", "Application", "msedge.exe"), + join(local, "Microsoft", "Edge", "Application", "msedge.exe"), + "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome", + "/Applications/Microsoft Edge.app/Contents/MacOS/Microsoft Edge", + "/usr/bin/google-chrome-stable", + "/usr/bin/google-chrome", + "/usr/bin/chromium-browser", + "/usr/bin/chromium", + "/usr/bin/microsoft-edge", + "/usr/bin/microsoft-edge-stable", + ]; + for (const path of candidates) { + if (path && existsSync(path)) return path; + } + return null; +} + +async function getFreeLoopbackPort(): Promise { + return new Promise((resolve, reject) => { + const server = createServer(); + server.once("error", reject); + server.listen(0, "127.0.0.1", () => { + const addr = server.address(); + if (!addr || typeof addr === "string") { + server.close(); + reject(new Error("Could not allocate a free loopback port for Chrome DevTools")); + return; + } + const { port } = addr; + server.close((err) => (err ? reject(err) : resolve(port))); + }); + }); +} + +async function waitForCdpReady( + port: number, + timeoutMs: number +): Promise<{ webSocketDebuggerUrl: string }> { + const deadline = Date.now() + timeoutMs; + let lastError = "CDP endpoint not ready"; + while (Date.now() < deadline) { + try { + const res = await fetch(`http://127.0.0.1:${port}/json/version`, { + signal: AbortSignal.timeout(2000), + }); + if (res.ok) { + const body = (await res.json()) as { webSocketDebuggerUrl?: string }; + if (body.webSocketDebuggerUrl) { + return { webSocketDebuggerUrl: body.webSocketDebuggerUrl }; + } + } + lastError = `CDP /json/version HTTP ${res.status}`; + } catch (err) { + lastError = err instanceof Error ? err.message : String(err); + } + await new Promise((r) => setTimeout(r, 250)); + } + throw new Error(`Chrome DevTools did not become ready: ${lastError}`); +} + +type CdpCookie = { name: string; value: string; domain?: string }; + +class CdpSocket { + private ws: WebSocket; + private nextId = 1; + private pending = new Map< + number, + { resolve: (v: unknown) => void; reject: (e: Error) => void } + >(); + private onEvent: (method: string, params: Record) => void; + + constructor(ws: WebSocket, onEvent: (method: string, params: Record) => void) { + this.ws = ws; + this.onEvent = onEvent; + this.ws.addEventListener("message", (ev) => { + let data: Record; + try { + data = JSON.parse(String(ev.data)) as Record; + } catch { + return; + } + if (typeof data.id === "number" && this.pending.has(data.id)) { + const p = this.pending.get(data.id)!; + this.pending.delete(data.id); + if (data.error) { + const errObj = data.error as { message?: string }; + p.reject(new Error(errObj.message || "CDP error")); + } else { + p.resolve(data.result); + } + return; + } + if (typeof data.method === "string") { + this.onEvent(data.method, (data.params || {}) as Record); + } + }); + } + + send(method: string, params?: Record, sessionId?: string): Promise { + const id = this.nextId++; + const msg: Record = { id, method }; + if (params) msg.params = params; + if (sessionId) msg.sessionId = sessionId; + return new Promise((resolve, reject) => { + this.pending.set(id, { resolve, reject }); + try { + this.ws.send(JSON.stringify(msg)); + } catch (err) { + this.pending.delete(id); + reject(err instanceof Error ? err : new Error(String(err))); + } + }); + } + + close(): void { + try { + this.ws.close(); + } catch { + /* ignore */ + } + } + + get open(): boolean { + return this.ws.readyState === WebSocket.OPEN; + } +} + +async function openCdp(url: string): Promise { + const WebSocketCtor = (globalThis as { WebSocket?: typeof WebSocket }).WebSocket; + if (!WebSocketCtor) { + throw new Error("WebSocket is unavailable in this Node runtime"); + } + return new Promise((resolve, reject) => { + const ws = new WebSocketCtor(url); + const onErr = () => reject(new Error(`Failed to connect CDP: ${url}`)); + ws.addEventListener("error", onErr); + ws.addEventListener("open", () => { + ws.removeEventListener("error", onErr); + resolve(ws); + }); + }); +} + +/** + * Capture Firefly IMS JWT by watching Network.requestWillBeSent on all page targets. + */ +async function captureViaCdp(opts: { + port: number; + browserWsUrl: string; + timeoutMs: number; +}): Promise<{ accessToken: string; cookies: CdpCookie[] }> { + let capturedAccessToken = ""; + const pageSockets = new Map(); + let browserCdp: CdpSocket | null = null; + + const onEvent = (method: string, params: Record) => { + if (method === "Network.requestWillBeSent") { + if (capturedAccessToken) return; + const request = params.request as + { url?: string; headers?: Record } | undefined; + if (!request?.url) return; + let host: string; + try { + host = new URL(request.url).hostname.toLowerCase(); + } catch { + return; + } + if (host !== FIREFLY_3P_HOST_SUFFIX && !host.endsWith(`.${FIREFLY_3P_HOST_SUFFIX}`)) return; + const headers = request.headers || {}; + const auth = headers.Authorization || headers.authorization || headers.AUTHORIZATION || ""; + const token = extractAdobeBearerTokenFromAuthorization(auth); + if (token) capturedAccessToken = token; + } else if (method === "Target.attachedToTarget") { + const sessionId = String(params.sessionId || ""); + const targetInfo = params.targetInfo as { type?: string; targetId?: string } | undefined; + if (sessionId && targetInfo?.type === "page" && browserCdp) { + void browserCdp.send("Network.enable", {}, sessionId).catch(() => undefined); + } + } + }; + + try { + const browserWs = await openCdp(opts.browserWsUrl); + browserCdp = new CdpSocket(browserWs, onEvent); + await browserCdp.send("Target.setDiscoverTargets", { discover: true }).catch(() => undefined); + await browserCdp + .send("Target.setAutoAttach", { + autoAttach: true, + waitForDebuggerOnStart: false, + flatten: true, + }) + .catch(() => undefined); + + const deadline = Date.now() + opts.timeoutMs; + while (Date.now() < deadline) { + // Attach to every page target listed by the DevTools HTTP API. + try { + const list = (await fetch(`http://127.0.0.1:${opts.port}/json/list`, { + signal: AbortSignal.timeout(2000), + }).then((r) => r.json())) as Array<{ + id?: string; + type?: string; + url?: string; + webSocketDebuggerUrl?: string; + }>; + for (const t of list) { + if (t.type !== "page" || !t.webSocketDebuggerUrl || !t.id) continue; + if (pageSockets.has(t.id)) continue; + try { + const ws = await openCdp(t.webSocketDebuggerUrl); + const cdp = new CdpSocket(ws, onEvent); + pageSockets.set(t.id, cdp); + await cdp.send("Network.enable"); + if (!t.url || t.url === "about:blank" || t.url.startsWith("chrome://")) { + await cdp.send("Page.enable").catch(() => undefined); + await cdp.send("Page.navigate", { url: FIREFLY_HOME_URL }).catch(() => undefined); + } + } catch { + // page may navigate away mid-connect + } + } + } catch { + // list may fail briefly while Chrome starts + } + + if (capturedAccessToken) { + // Prefer cookies from any live page socket; fall back to empty. + for (const cdp of pageSockets.values()) { + if (!cdp.open) continue; + try { + const result = (await cdp.send("Network.getAllCookies")) as { + cookies?: CdpCookie[]; + }; + return { + accessToken: capturedAccessToken, + cookies: Array.isArray(result?.cookies) ? result.cookies : [], + }; + } catch { + /* try next */ + } + } + return { accessToken: capturedAccessToken, cookies: [] }; + } + + await new Promise((r) => setTimeout(r, POLL_INTERVAL_MS)); + } + + throw new Error( + "Adobe Firefly sign-in timed out. Complete sign-in at firefly.adobe.com and trigger an action " + + "(open Generate) so the browser sends the Firefly request, then try again." + ); + } finally { + for (const cdp of pageSockets.values()) cdp.close(); + browserCdp?.close(); + } +} + +function killProcessTree(child: ChildProcess | null): void { + if (!child?.pid) return; + try { + if (process.platform === "win32") { + spawn("taskkill", ["/pid", String(child.pid), "/T", "/F"], { + stdio: "ignore", + windowsHide: true, + }); + } else { + child.kill("SIGTERM"); + setTimeout(() => { + try { + child.kill("SIGKILL"); + } catch { + /* ignore */ + } + }, 2000).unref?.(); + } + } catch { + try { + child.kill(); + } catch { + /* ignore */ + } + } +} + +/** + * Launch system Chrome/Edge at firefly.adobe.com, intercept firefly-3p + * Authorization Bearer via CDP, return JWT + useful cookies. + */ +export async function startAdobeFireflyBrowserLogin( + requestedTimeout?: unknown +): Promise { + const timeout = clampAdobeFireflyLoginTimeout(requestedTimeout); + const browserPath = resolveSystemBrowserExecutable(); + if (!browserPath) { + return { + success: false, + error: + "No Chrome or Edge browser found for Adobe Firefly sign-in. " + + "Install Google Chrome or Microsoft Edge, or set OMNIROUTE_LOGIN_BROWSER_PATH, " + + "or paste the IMS Bearer JWT from firefly-3p.ff.adobe.io.", + }; + } + + let userDataDir: string | null = null; + let child: ChildProcess | null = null; + try { + userDataDir = mkdtempSync(join(tmpdir(), "omniroute-firefly-login-")); + const port = await getFreeLoopbackPort(); + + const args = [ + `--remote-debugging-port=${port}`, + `--user-data-dir=${userDataDir}`, + "--no-first-run", + "--no-default-browser-check", + "--disable-sync", + "--disable-background-networking", + "--window-size=1280,800", + FIREFLY_HOME_URL, + ]; + + child = spawn(browserPath, args, { + stdio: "ignore", + windowsHide: false, + detached: false, + }); + + // If Chrome exits immediately, fail fast with a clear message. + const earlyExit = new Promise((_, reject) => { + child?.once("exit", (code) => { + reject(new Error(`Browser exited early (code ${code}). Is the executable runnable?`)); + }); + child?.once("error", (err) => { + reject(new Error(`Failed to launch browser: ${err.message}`)); + }); + }); + + const ready = waitForCdpReady(port, CDP_READY_TIMEOUT_MS); + const { webSocketDebuggerUrl } = await Promise.race([ready, earlyExit]); + + // Detach exit handler so normal user close after capture is fine + child.removeAllListeners("exit"); + child.removeAllListeners("error"); + + const captured = await Promise.race([ + captureViaCdp({ + port, + browserWsUrl: webSocketDebuggerUrl, + timeoutMs: timeout, + }), + earlyExit, + ]); + + const cookie = buildAdobeFireflyCookieHeader(captured.cookies); + const account = accountLabelFromAdobeJwt(captured.accessToken); + return { + success: true, + credentials: { + accessToken: captured.accessToken, + ...(cookie ? { cookie } : {}), + }, + ...(account ? { account } : {}), + }; + } catch (error) { + return { + success: false, + error: sanitizeErrorMessage(error instanceof Error ? error.message : error), + }; + } finally { + killProcessTree(child); + child = null; + if (userDataDir) { + // Give Chrome a moment to release the profile directory. + await new Promise((r) => setTimeout(r, 300)); + try { + rmSync(userDataDir, { recursive: true, force: true }); + } catch { + // Profile may still be locked; temp cleaner will reclaim later. + } + } + } +} diff --git a/open-sse/services/adobeFireflyClient.ts b/open-sse/services/adobeFireflyClient.ts index b9ee9e1589..16d491637a 100644 --- a/open-sse/services/adobeFireflyClient.ts +++ b/open-sse/services/adobeFireflyClient.ts @@ -49,11 +49,57 @@ const DEFAULT_USER_AGENT = const DEFAULT_SEC_CH_UA = '"Not;A=Brand";v="8", "Chromium";v="150", "Google Chrome";v="150"'; const DEFAULT_POLL_INTERVAL_MS = 3000; -const DEFAULT_IMAGE_TIMEOUT_MS = 180_000; +/** + * Poll budget for image generate-async. Multi-ref gpt-image / nano jobs commonly + * exceed 3 minutes (upload + colligo + render at detailLevel 5). 180s was the + * previous default and produced widespread 504s on listing assets with screenshots. + */ +export const DEFAULT_IMAGE_TIMEOUT_MS = 300_000; const DEFAULT_VIDEO_TIMEOUT_MS = 300_000; +/** Extra poll budget per uploaded reference blob (large screenshots + image2image). */ +export const ADOBE_FIREFLY_IMAGE_TIMEOUT_PER_REF_MS = 60_000; +export const ADOBE_FIREFLY_IMAGE_TIMEOUT_MAX_MS = 600_000; +/** + * gpt-image family accepts subject refs, but the live SPA and colligo are reliable + * with 1–2 only. Sending 3–4+ (e.g. Store listing "5 screenshots") often hangs until + * poll timeout. Nano multi-ref composition supports more via usage "general". + */ +export const ADOBE_FIREFLY_GPT_IMAGE_MAX_REFS = 2; +export const ADOBE_FIREFLY_NANO_MAX_REFS = 4; +export const ADOBE_FIREFLY_GENERIC_IMAGE_MAX_REFS = 2; const FIREFLY_ORIGIN = "https://firefly.adobe.com"; const FIREFLY_REFERER = "https://firefly.adobe.com/"; +/** Cap reference uploads by Firefly image model family. */ +export function adobeFireflyMaxImageRefs(model: string): number { + const raw = String(model || "").toLowerCase(); + if (raw.includes("nano-banana") || raw.includes("nanobanana") || raw.includes("gemini-flash")) { + return ADOBE_FIREFLY_NANO_MAX_REFS; + } + if (raw.includes("gpt-image") || raw.includes("gptimage")) { + return ADOBE_FIREFLY_GPT_IMAGE_MAX_REFS; + } + return ADOBE_FIREFLY_GENERIC_IMAGE_MAX_REFS; +} + +/** + * Resolve poll timeout: explicit body.timeout_ms wins; else base + per-ref budget. + * Covers multi-screenshot listing jobs without unbounded waits. + */ +export function adobeFireflyImageTimeoutMs(opts?: { + timeoutMs?: number; + refCount?: number; +}): number { + const explicit = Number(opts?.timeoutMs); + if (Number.isFinite(explicit) && explicit > 0) { + return Math.min(ADOBE_FIREFLY_IMAGE_TIMEOUT_MAX_MS, Math.floor(explicit)); + } + const refs = Math.max(0, Math.floor(Number(opts?.refCount) || 0)); + const budget = + DEFAULT_IMAGE_TIMEOUT_MS + refs * ADOBE_FIREFLY_IMAGE_TIMEOUT_PER_REF_MS; + return Math.min(ADOBE_FIREFLY_IMAGE_TIMEOUT_MAX_MS, budget); +} + export type AdobeFireflyImageModelId = | "nano-banana-pro" | "nano-banana" @@ -716,9 +762,14 @@ export function buildAdobeImagePayload(opts: { }; if (opts.sourceImageIds?.length) { // gpt-image subject references (mask path uses separate mask blob when present). + // Cap to wire-stable count — extra subject blobs stall colligo until poll 504. + const refIds = opts.sourceImageIds + .map((id) => String(id)) + .filter(Boolean) + .slice(0, ADOBE_FIREFLY_GPT_IMAGE_MAX_REFS); payload.generationMetadata = { module: "image2image", submodule: "ff-image-generate" }; - payload.referenceBlobs = opts.sourceImageIds.map((id) => ({ - id: String(id), + payload.referenceBlobs = refIds.map((id) => ({ + id, usage: "subject", })); payload.modelSpecificPayload = {}; @@ -751,8 +802,16 @@ export function buildAdobeImagePayload(opts: { if (Object.keys(genSettings).length) payload.generationSettings = genSettings; if (opts.sourceImageIds?.length) { - payload.referenceBlobs = opts.sourceImageIds.map((id) => ({ - id: String(id), + const maxRefs = + opts.modelSpec.family === "generic" + ? ADOBE_FIREFLY_GENERIC_IMAGE_MAX_REFS + : ADOBE_FIREFLY_NANO_MAX_REFS; + const refIds = opts.sourceImageIds + .map((id) => String(id)) + .filter(Boolean) + .slice(0, maxRefs); + payload.referenceBlobs = refIds.map((id) => ({ + id, usage: "general", })); // Flux / Seedream / Runway image historically used image2image; nano keeps text2image. @@ -1967,7 +2026,7 @@ async function sleep(ms: number): Promise { await new Promise((resolve) => setTimeout(resolve, ms)); } -async function pollAdobeJob(opts: { +export async function pollAdobeJob(opts: { pollUrl: string; accessToken: string; kind: "image" | "video"; @@ -2167,11 +2226,15 @@ export async function adobeFireflyGenerateImage(opts: { } pollUrl = normalizeAdobePollUrl(pollUrl); + const pollTimeoutMs = adobeFireflyImageTimeoutMs({ + timeoutMs: opts.timeoutMs, + refCount: opts.sourceImageIds?.length ?? 0, + }); const { mediaUrl, latest } = await pollAdobeJob({ pollUrl, accessToken: opts.accessToken, kind: "image", - timeoutMs: opts.timeoutMs && opts.timeoutMs > 0 ? opts.timeoutMs : DEFAULT_IMAGE_TIMEOUT_MS, + timeoutMs: pollTimeoutMs, fetchImpl, log: opts.log, }); diff --git a/open-sse/services/adobeFireflyUpscale.ts b/open-sse/services/adobeFireflyUpscale.ts new file mode 100644 index 0000000000..92edc6b340 --- /dev/null +++ b/open-sse/services/adobeFireflyUpscale.ts @@ -0,0 +1,437 @@ +/** + * Adobe Firefly (unofficial) image **upsample** client — Topaz Labs models. + * + * Wire contract from a live firefly.adobe.com capture (web_providers/upsample.txt): + * + * POST https://firefly-3p.ff.adobe.io/v2/3p-images/upsample + * headers: Authorization: Bearer + * x-api-key: clio-playground-web + * x-arp-session-id: (NO x-nonce on this endpoint) + * content-type: application/json + * body: { + * "modelId": "topaz", + * "modelVersion": "reimagine", + * "generationMetadata": { "module": "image-editing", "submodule": "ff-image-editor", ... }, + * "referenceBlobs": [{ "id": "", "usage": "general" }], + * "upsamplerFactor": 2, + * "creativityLevel": 0 + * } + * → 200 { "links": { "cancel": {...}, "result": { "href": ".../jobs/result/" } } } + * + * The job link is polled with the same BKS rewrite + status semantics as + * generate-async, so `pollAdobeJob` from `adobeFireflyClient.ts` is reused verbatim. + * + * Model discovery (web_providers/upscale.txt) lists modelId `topaz` with image + * modelVersions `default` / `standard` / `reimagine`, each carrying + * `inputMediaUseCase: ["upscaling"]`. `starlight-*` and `astra-2` are the VIDEO + * upscalers of the same family (`acModelFamilyId: topaz-video`) and are not served + * by this image endpoint, so they are deliberately absent. + */ + +import { + AdobeFireflyError, + buildAdobeArpSessionId, + buildAdobeSubmitHeaders, + extractAdobeArpSessionId, + extractAdobeCookieHeader, + extractAdobeResultLink, + formatAdobeSystemUnderLoadError, + isAdobeTransientSubmitError, + normalizeAdobePollUrl, + pollAdobeJob, +} from "./adobeFireflyClient.ts"; +import { sanitizeErrorMessage } from "../utils/error.ts"; + +export const ADOBE_FIREFLY_IMAGE_UPSAMPLE_URL = + "https://firefly-3p.ff.adobe.io/v2/3p-images/upsample"; + +/** Firefly image upscale timeout — Topaz jobs are slower than a 1K generate. */ +export const ADOBE_FIREFLY_UPSCALE_TIMEOUT_MS = 300_000; + +/** Same submit-retry budget as generate-async (colligo 408 recovery). */ +const SUBMIT_MAX_ATTEMPTS = 5; + +/** + * Firefly Topaz upsample wire range for `creativityLevel`. + * + * Live colligo on `/v2/3p-images/upsample` rejects values > 1 + * (`less_than_equal`, `le: 1.0`). The browser capture sends `0` (off). + * Discovery docs mention a 1–5 integer scale for *other* Topaz endpoints — + * that scale is NOT accepted by upsample, so we stay on 0–1. + */ +export const ADOBE_FIREFLY_MAX_CREATIVITY_LEVEL = 1; + +export type AdobeFireflyUpscaleModelId = "topaz" | "topaz-standard" | "topaz-bloom"; + +export interface AdobeFireflyUpscaleModelSpec { + upstreamModelId: string; + upstreamModelVersion: string; + /** Scale factors accepted for this version. */ + factors: number[]; + /** `creativityLevel` is only meaningful on the generative (reimagine) version. */ + supportsCreativity: boolean; +} + +export const ADOBE_FIREFLY_UPSCALE_MODELS: Record< + AdobeFireflyUpscaleModelId, + AdobeFireflyUpscaleModelSpec +> = { + // Bare `topaz` maps to the standard version rather than the discovery-listed + // "default" alias: both resolve to bksGenerationModel firefly_3p:external:topaz_standard, + // and pinning the explicit version avoids depending on an alias we have not captured. + topaz: { + upstreamModelId: "topaz", + upstreamModelVersion: "standard", + factors: [2, 4], + supportsCreativity: false, + }, + "topaz-standard": { + upstreamModelId: "topaz", + upstreamModelVersion: "standard", + factors: [2, 4], + supportsCreativity: false, + }, + "topaz-bloom": { + upstreamModelId: "topaz", + upstreamModelVersion: "reimagine", + factors: [2, 4], + supportsCreativity: true, + }, +}; + +/** + * Resolve a catalog id (with or without an `adobe-firefly/` prefix) to its upstream + * modelId/modelVersion pair. Returns null for anything that is not a Firefly image + * upscaler, so callers can fall through instead of silently upscaling with a default. + */ +export function resolveAdobeUpscaleModel(model: string): { + id: AdobeFireflyUpscaleModelId; + spec: AdobeFireflyUpscaleModelSpec; +} | null { + const raw = String(model || "") + .trim() + .toLowerCase() + .replace(/^adobe-firefly\//, "") + .replace(/^firefly\//, ""); + + if (!raw) return null; + if (raw in ADOBE_FIREFLY_UPSCALE_MODELS) { + const id = raw as AdobeFireflyUpscaleModelId; + return { id, spec: ADOBE_FIREFLY_UPSCALE_MODELS[id] }; + } + + // Accept the upstream version names and common spellings. + if (raw.includes("bloom") || raw.includes("reimagine")) { + return { id: "topaz-bloom", spec: ADOBE_FIREFLY_UPSCALE_MODELS["topaz-bloom"] }; + } + if (raw.includes("topaz")) { + return { id: "topaz-standard", spec: ADOBE_FIREFLY_UPSCALE_MODELS["topaz-standard"] }; + } + return null; +} + +/** True when the model id names a Firefly image upscaler (used to split the generate path). */ +export function isAdobeFireflyUpscaleModel(model: string): boolean { + return resolveAdobeUpscaleModel(model) !== null; +} + +/** + * Map a 0-100 creativity percentage onto Firefly upsample's `creativityLevel` (0–1 float). + * + * Precedence: + * 1. explicit `creativityLevel` — if in (1, 5] treat as legacy 1–5 integer scale + * and map onto 0–1 (`level / 5`); otherwise clamp to 0–1 + * 2. `creativityPercent` 0–100 → 0–1 + * 3. default 0 (browser default / off) + */ +export function resolveAdobeCreativityLevel(opts: { + creativityPercent?: number | null; + creativityLevel?: unknown; +}): number { + const explicit = opts.creativityLevel; + if (typeof explicit === "number" && Number.isFinite(explicit)) { + return clampLevel(normalizeExplicitCreativity(explicit)); + } + if (typeof explicit === "string" && explicit.trim() && Number.isFinite(Number(explicit))) { + return clampLevel(normalizeExplicitCreativity(Number(explicit))); + } + + const percent = typeof opts.creativityPercent === "number" && Number.isFinite(opts.creativityPercent) + ? Math.max(0, Math.min(100, opts.creativityPercent)) + : 0; + return clampLevel(percent / 100); +} + +/** Legacy 1–5 integer scale (discovery docs) → 0–1 wire float. Values already in 0–1 pass through. */ +function normalizeExplicitCreativity(value: number): number { + if (value > ADOBE_FIREFLY_MAX_CREATIVITY_LEVEL && value <= 5) { + return value / 5; + } + return value; +} + +/** Clamp to the upsample wire range [0, 1], two decimal places. */ +function clampLevel(value: number): number { + if (!Number.isFinite(value)) return 0; + const clamped = Math.max(0, Math.min(ADOBE_FIREFLY_MAX_CREATIVITY_LEVEL, value)); + return Math.round(clamped * 100) / 100; +} + +/** + * Headers for the upsample submit. + * + * Identical to generate-async EXCEPT `x-nonce`, which the live upsample request does + * not send (there is no prompt to derive a deterministic nonce from). We mirror the + * capture exactly rather than adding a header colligo never sees from the SPA. + */ +export function buildAdobeUpsampleHeaders( + accessToken: string, + extras?: { arpSessionId?: string; cookie?: string } +): Record { + const headers = buildAdobeSubmitHeaders(accessToken, { + arpSessionId: extras?.arpSessionId, + cookie: extras?.cookie, + prompt: "upsample", + }); + delete headers["x-nonce"]; + return headers; +} + +export function buildAdobeUpsamplePayload(opts: { + modelSpec: AdobeFireflyUpscaleModelSpec; + blobId: string; + upsamplerFactor: number; + creativityLevel?: number; +}): Record { + const payload: Record = { + modelId: opts.modelSpec.upstreamModelId, + modelVersion: opts.modelSpec.upstreamModelVersion, + generationMetadata: { + module: "image-editing", + submodule: "ff-image-editor", + sourceDocumentId: null, + originalPrompt: null, + filterString: null, + subPrompts: null, + canvasImageReference: null, + }, + referenceBlobs: [{ id: String(opts.blobId), usage: "general" }], + upsamplerFactor: opts.upsamplerFactor, + }; + + // creativityLevel is optional/nullable upstream — only the generative version + // consumes it, so the standard pass omits it entirely. + if (opts.modelSpec.supportsCreativity) { + payload.creativityLevel = Number.isFinite(opts.creativityLevel as number) + ? (opts.creativityLevel as number) + : 0; + } + + return payload; +} + +/** + * Submit + poll a Firefly Topaz upscale job. + * + * `blobId` must already be a Firefly storage id — callers upload the source image with + * `resolveAdobeSourceImageIds`/`uploadAdobeFireflyImage` first, reusing the same ARP so + * colligo sees one coherent risk session for upload + submit. + */ +export async function adobeFireflyUpscaleImage(opts: { + accessToken: string; + model: string; + blobId: string; + upsamplerFactor?: unknown; + creativityPercent?: number; + creativityLevel?: unknown; + sessionCookie?: string; + arpSessionId?: string; + sessionFingerprint?: string; + timeoutMs?: number; + fetchImpl?: typeof fetch; + log?: { info?: (...args: unknown[]) => void; error?: (...args: unknown[]) => void }; +}): Promise<{ url: string; latest: unknown; factor: number; creativityLevel: number }> { + const fetchImpl = opts.fetchImpl || fetch; + const resolved = resolveAdobeUpscaleModel(opts.model); + if (!resolved) { + throw new AdobeFireflyError( + `Unsupported Adobe Firefly upscale model: ${opts.model}. ` + + `Use topaz-standard or topaz-bloom.`, + 400, + "bad_model" + ); + } + const { spec } = resolved; + + const blobId = String(opts.blobId || "").trim(); + if (!blobId) { + throw new AdobeFireflyError( + "Adobe Firefly upscale requires a source image", + 400, + "bad_image" + ); + } + + const factor = normalizeFactor(opts.upsamplerFactor, spec.factors); + const creativityLevel = spec.supportsCreativity + ? resolveAdobeCreativityLevel({ + creativityPercent: opts.creativityPercent ?? null, + creativityLevel: opts.creativityLevel, + }) + : 0; + + const payload = buildAdobeUpsamplePayload({ + modelSpec: spec, + blobId, + upsamplerFactor: factor, + creativityLevel, + }); + + const sessionCookie = String(opts.sessionCookie || "").trim(); + const cookieHeader = extractAdobeCookieHeader(sessionCookie); + const browserArp = extractAdobeArpSessionId(cookieHeader || sessionCookie); + const hadBrowserArp = Boolean(browserArp); + let arpSessionId = + (opts.arpSessionId && String(opts.arpSessionId).trim()) || + browserArp || + buildAdobeArpSessionId(); + const accessToken = opts.accessToken; + let submitData: unknown = {}; + let submitHeaders: Headers | Record = new Headers(); + let lastSubmitError = ""; + let sawSystemUnderLoad = false; + let submitted = false; + + for (let attempt = 1; attempt <= SUBMIT_MAX_ATTEMPTS; attempt++) { + const submitResp = await fetchImpl(ADOBE_FIREFLY_IMAGE_UPSAMPLE_URL, { + method: "POST", + headers: buildAdobeUpsampleHeaders(accessToken, { + arpSessionId, + cookie: cookieHeader || undefined, + }), + body: JSON.stringify(payload), + }); + + if (submitResp.status === 401 || submitResp.status === 403) { + if ((submitResp.headers.get("x-access-error") || "") === "taste_exhausted") { + throw new AdobeFireflyError( + "Adobe Firefly quota exhausted for this account", + 429, + "quota_exhausted" + ); + } + throw new AdobeFireflyError( + "Adobe Firefly token invalid or expired. Paste a fresh IMS JWT (Authorization: Bearer on " + + "firefly-3p) plus the firefly.adobe.com Cookie once.", + 401, + "auth" + ); + } + + if (!submitResp.ok) { + const text = await submitResp.text().catch(() => ""); + if (isAdobeTransientSubmitError(submitResp.status, text)) sawSystemUnderLoad = true; + lastSubmitError = + `Adobe Firefly image upscale submit failed (${submitResp.status}): ` + + sanitizeErrorMessage(text.slice(0, 300)); + + if (isAdobeTransientSubmitError(submitResp.status, text) && attempt < SUBMIT_MAX_ATTEMPTS) { + // Rotate synthetic ARP on transient 408; real browser ARP is reused as-is. + if (!hadBrowserArp) { + arpSessionId = buildAdobeArpSessionId(); + } + const delay = submitRetryDelayMs(attempt); + opts.log?.info?.( + "ADOBE-FIREFLY", + `upscale submit transient ${submitResp.status}, retry ${attempt}/${SUBMIT_MAX_ATTEMPTS} in ${delay}ms` + ); + await sleep(delay); + continue; + } + + if (sawSystemUnderLoad && isAdobeTransientSubmitError(submitResp.status, text)) { + throw new AdobeFireflyError( + formatAdobeSystemUnderLoadError("image", attempt), + 408, + "system_under_load" + ); + } + throw new AdobeFireflyError( + lastSubmitError, + submitResp.status >= 400 && submitResp.status < 500 ? submitResp.status : 502 + ); + } + + submitData = await submitResp.json().catch(() => ({})); + submitHeaders = submitResp.headers; + submitted = true; + break; + } + + if (!submitted) { + throw new AdobeFireflyError( + lastSubmitError || "Adobe Firefly upscale submit failed after retries", + 502 + ); + } + + let pollUrl = extractAdobeResultLink(submitHeaders, submitData); + if (!pollUrl) { + if (sawSystemUnderLoad) { + throw new AdobeFireflyError( + formatAdobeSystemUnderLoadError("image", SUBMIT_MAX_ATTEMPTS), + 408, + "system_under_load" + ); + } + throw new AdobeFireflyError( + lastSubmitError || "Adobe Firefly upscale submit succeeded but no poll URL was returned", + 502 + ); + } + pollUrl = normalizeAdobePollUrl(pollUrl); + + const { mediaUrl, latest } = await pollAdobeJob({ + pollUrl, + accessToken, + kind: "image", + timeoutMs: + opts.timeoutMs && opts.timeoutMs > 0 ? opts.timeoutMs : ADOBE_FIREFLY_UPSCALE_TIMEOUT_MS, + fetchImpl, + log: opts.log, + }); + + return { url: mediaUrl, latest, factor, creativityLevel }; +} + +function normalizeFactor(value: unknown, allowed: readonly number[]): number { + const factors = allowed.length > 0 ? [...allowed] : [2, 4]; + let n = typeof value === "number" ? value : Number(String(value ?? "").replace(/[^\d.]/g, "")); + if (!Number.isFinite(n) || n <= 0) n = 2; + let best = factors[0]!; + let bestDelta = Math.abs(best - n); + for (const f of factors) { + const delta = Math.abs(f - n); + if (delta < bestDelta) { + best = f; + bestDelta = delta; + } + } + return best; +} + +function submitRetryDelayMs(attempt: number): number { + const raw = process.env.ADOBE_FIREFLY_SUBMIT_BASE_DELAY_MS; + const base = + raw != null && raw !== "" + ? Math.max(0, Number(raw) || 0) + : process.env.NODE_ENV === "test" || process.env.VITEST || process.env.NODE_TEST_CONTEXT + ? 20 + : 8000; + if (base <= 50) return base; + return Math.min(90_000, base * Math.pow(2, attempt - 1)) + Math.floor(Math.random() * 1500); +} + +async function sleep(ms: number): Promise { + await new Promise((resolve) => setTimeout(resolve, ms)); +} diff --git a/open-sse/services/antigravity429Engine.ts b/open-sse/services/antigravity429Engine.ts index a29b0dba2e..7c859c673b 100644 --- a/open-sse/services/antigravity429Engine.ts +++ b/open-sse/services/antigravity429Engine.ts @@ -61,6 +61,14 @@ const FULL_QUOTA_COOLDOWN_MS = 24 * 60 * 60 * 1000; // 24 hours export function classify429(errorMessage: string): Category { const lower = (errorMessage || "").toLowerCase(); + // Cloud Code may report an exhausted-capacity message with a zero reset + // window for a burst/RPM throttle. The explicit zero reset is stronger + // evidence than the generic wording, so retry briefly instead of applying + // the durable quota cooldown. + if (/\breset\s+(?:after|in)\s+0s\b/.test(lower)) { + return "rate_limited"; + } + // Check for quota exhaustion first (most specific) for (const kw of QUOTA_EXHAUSTED_KEYWORDS) { if (lower.includes(kw)) return "quota_exhausted"; diff --git a/open-sse/services/antigravityProjectBootstrap.ts b/open-sse/services/antigravityProjectBootstrap.ts index 169066d42f..7d69216f1e 100644 --- a/open-sse/services/antigravityProjectBootstrap.ts +++ b/open-sse/services/antigravityProjectBootstrap.ts @@ -1,5 +1,5 @@ /** - * Antigravity project bootstrap — loadCodeAssist. + * Antigravity project bootstrap — loadCodeAssist + onboardUser. * * The Google Cloud Code Assist API (/v1internal:models) requires a prior * /v1internal:loadCodeAssist call to assign a project context to the @@ -10,52 +10,70 @@ * attempt. Results are memoized per-token for the process lifetime to * avoid redundant round-trips. * - * Based on the Antigravity loadCodeAssist flow and the CLIProxyAPI reference - * implementation in internal/runtime/executor/antigravity_executor.go. + * When loadCodeAssist returns no project (account never onboarded), + * the fallback calls onboardUser to create the project, then retries. */ import { getAntigravityContentHeaders, getAntigravityLoadCodeAssistMetadata, } from "./antigravityHeaders.ts"; +import { extractCodeAssistOnboardTierId } from "./codeAssistSubscription.ts"; import type { AntigravityClientProfile } from "./antigravityClientProfile.ts"; -import { ANTIGRAVITY_BOOTSTRAP_BASE_URLS } from "../config/antigravityUpstream.ts"; +import { ANTIGRAVITY_BOOTSTRAP_BASE_URLS, getAntigravityOnboardUrls } from "../config/antigravityUpstream.ts"; const LOAD_CODE_ASSIST_PATH = "/v1internal:loadCodeAssist"; const BOOTSTRAP_TIMEOUT_MS = 8_000; +const ONBOARD_TIMEOUT_MS = 15_000; +const DEFAULT_TIER_ID = "legacy-tier"; -/** Ordered list of loadCodeAssist endpoint URLs (mirrors the models discovery order). */ +/** Ordered list of loadCodeAssist endpoint URLs. */ export function getAntigravityLoadCodeAssistUrls(): string[] { return ANTIGRAVITY_BOOTSTRAP_BASE_URLS.map((base) => `${base}${LOAD_CODE_ASSIST_PATH}`); } +/** Max entries in the per-token caches (prevents unbounded growth). */ +const MAX_CACHE_SIZE = 256; + +/** LRU-style Map: deleting and re-inserting moves the key to the end. */ +function evictOldest(cache: Map): void { + if (cache.size >= MAX_CACHE_SIZE) { + const oldest = cache.keys().next().value; + if (oldest !== undefined) cache.delete(oldest); + } +} + /** Per-token memoization cache (lives for the process lifetime). */ const projectCache = new Map(); +/** Per-key lock to prevent concurrent onboard attempts for the same token. */ +const onboardLocks = new Map>(); + type FetchLike = (url: string, init?: RequestInit) => Promise; function getProjectCacheKey(accessToken: string, clientProfile: AntigravityClientProfile): string { return `${clientProfile}:${accessToken}`; } +type LoadCodeAssistResult = { projectId: string | null; tierId: string }; + /** * Attempt loadCodeAssist against each known base URL in order. - * Returns the discovered project id, or null if all endpoints fail. + * Returns the discovered project id and tier id, or null projectId if all endpoints fail. */ async function tryLoadCodeAssist( accessToken: string, fetchImpl: FetchLike, clientProfile: AntigravityClientProfile, signal?: AbortSignal -): Promise { +): Promise { const urls = getAntigravityLoadCodeAssistUrls(); const headers = getAntigravityContentHeaders(clientProfile, accessToken); - for (const url of urls) { + for (let i = 0; i < urls.length; i++) { + const url = urls[i]; if (signal?.aborted) throw signal.reason; try { - // Combine the caller's cancellation signal (#8098) with the per-attempt - // bootstrap timeout so an aborted request tears down immediately. const timeoutSignal = AbortSignal.timeout(BOOTSTRAP_TIMEOUT_MS); const response = await fetchImpl(url, { method: "POST", @@ -75,7 +93,7 @@ async function tryLoadCodeAssist( // cloudaicompanionProject may be a plain string or an object with an id field. const raw = data.cloudaicompanionProject; - let projectId = + const projectId = typeof raw === "string" ? raw.trim() : raw && @@ -84,16 +102,21 @@ async function tryLoadCodeAssist( ? ((raw as Record).id as string).trim() : ""; + const tierId = extractCodeAssistOnboardTierId(data) || DEFAULT_TIER_ID; + if (projectId) { - return projectId; + return { projectId, tierId }; } + // Continue to next URL if available — a different endpoint might + // have the project. Only return empty when this is the last URL. + if (i === urls.length - 1) { + return { projectId: null, tierId }; + } console.warn( `[models] antigravity loadCodeAssist at ${url} returned no project id — trying next` ); } catch (error) { - // A caller-initiated abort (#8098) must propagate, not be swallowed as a - // "try next URL" transient — otherwise a cancelled request silently proceeds. if (signal?.aborted || (error instanceof Error && error.name === "AbortError")) { throw signal?.reason ?? error; } @@ -101,7 +124,65 @@ async function tryLoadCodeAssist( console.warn(`[models] antigravity loadCodeAssist threw for ${url}: ${msg} — trying next`); } } - return null; + return { projectId: null, tierId: DEFAULT_TIER_ID }; +} + +/** + * Attempt onboardUser to create a Cloud Code project for the account. + * Called when loadCodeAssist returns no project — the account has never + * been onboarded. Returns true if any endpoint reports success. + */ +async function tryOnboardUser( + accessToken: string, + fetchImpl: FetchLike, + clientProfile: AntigravityClientProfile, + tierId: string, + signal?: AbortSignal +): Promise { + const urls = getAntigravityOnboardUrls(); + const headers = getAntigravityContentHeaders(clientProfile, accessToken); + + for (const url of urls) { + if (signal?.aborted) throw signal.reason; + try { + const timeoutSignal = AbortSignal.timeout(ONBOARD_TIMEOUT_MS); + const response = await fetchImpl(url, { + method: "POST", + headers, + body: JSON.stringify({ + tier_id: tierId, + metadata: getAntigravityLoadCodeAssistMetadata(), + }), + signal: signal ? AbortSignal.any([signal, timeoutSignal]) : timeoutSignal, + }); + + if (response.ok) { + return true; + } + + console.warn( + `[models] antigravity onboardUser failed at ${url} (${response.status}) — trying next` + ); + } catch (error) { + if (signal?.aborted || (error instanceof Error && error.name === "AbortError")) { + throw signal?.reason ?? error; + } + const msg = error instanceof Error ? error.message : String(error); + console.warn(`[models] antigravity onboardUser threw for ${url}: ${msg} — trying next`); + } + } + return false; +} + +/** Per-token memoization for accounts we already tried onboarding (avoid repeated calls). */ +const onboardAttemptedCache = new Set(); + +function addToOnboardAttemptedCache(key: string): void { + if (onboardAttemptedCache.size >= MAX_CACHE_SIZE) { + const oldest = onboardAttemptedCache.values().next().value; + if (oldest !== undefined) onboardAttemptedCache.delete(oldest); + } + onboardAttemptedCache.add(key); } /** @@ -123,22 +204,72 @@ export async function ensureAntigravityProjectAssigned( ): Promise { const cacheKey = getProjectCacheKey(accessToken, clientProfile); if (projectCache.has(cacheKey)) { - return projectCache.get(cacheKey); // already bootstrapped for this token + const cached = projectCache.get(cacheKey)!; + // Touch on read: delete+reinsert moves this entry to the end (LRU). + projectCache.delete(cacheKey); + projectCache.set(cacheKey, cached); + return cached; } - const projectId = await tryLoadCodeAssist(accessToken, fetchImpl, clientProfile, signal); + const { projectId: initialProjectId, tierId } = await tryLoadCodeAssist( + accessToken, fetchImpl, clientProfile, signal + ); + + let projectId = initialProjectId; + + // loadCodeAssist is read-only — if the account was never onboarded, it returns + // empty. Call onboardUser to create the project, then retry discovery. + if (!projectId && !onboardAttemptedCache.has(cacheKey)) { + // Per-key lock: concurrent calls for the same token share one onboard attempt. + let lock = onboardLocks.get(cacheKey); + if (!lock) { + lock = (async () => { + let aborted = false; + try { + const onboarded = await tryOnboardUser( + accessToken, fetchImpl, clientProfile, tierId, signal + ); + if (onboarded) { + const retry = await tryLoadCodeAssist( + accessToken, fetchImpl, clientProfile, signal + ); + if (retry.projectId) { + evictOldest(projectCache); + projectCache.set(cacheKey, retry.projectId); + return true; + } + } + return false; + } catch (e) { + aborted = signal?.aborted === true; + return false; + } finally { + onboardLocks.delete(cacheKey); + if (!aborted) addToOnboardAttemptedCache(cacheKey); + } + })(); + onboardLocks.set(cacheKey, lock); + } + const success = await lock; + if (success) { + const cached = projectCache.get(cacheKey); + if (cached) return cached; + } + } if (projectId) { + evictOldest(projectCache); projectCache.set(cacheKey, projectId); return projectId; } - // Non-fatal: if all endpoints failed, we proceed without caching. return undefined; } /** Exported for tests. */ export function clearAntigravityProjectCache(): void { projectCache.clear(); + onboardAttemptedCache.clear(); + onboardLocks.clear(); } /** Exported for tests — inspect cache state. */ diff --git a/open-sse/services/antigravityProjectPersist.ts b/open-sse/services/antigravityProjectPersist.ts index 8a0d1070a5..1068c4d3ec 100644 --- a/open-sse/services/antigravityProjectPersist.ts +++ b/open-sse/services/antigravityProjectPersist.ts @@ -22,6 +22,43 @@ import { updateProviderConnection } from "@/lib/db/providers"; * Best-effort / non-fatal by design: a persistence failure must never block * the in-flight request, which already has the discovered id in hand. */ +/** + * Selection-side companion of the persistence write path (#8894): given a pool + * of Antigravity/AGY connections, prefer the ones that already carry a stored + * projectId — they can serve a request without the `loadCodeAssist` discovery + * round-trip. "Prefer", not "require": when NO connection has a stored project + * the pool is returned unchanged, so a fresh install never empties its + * candidate list. + * + * Sync on purpose (called inside the quota-strategy connection expansion, which + * builds candidate lists without awaiting per-connection work). Tolerates + * `providerSpecificData` arriving either parsed or as the raw DB JSON string. + */ +export function preferAntigravityConnectionsWithStoredProject>( + connections: T[] +): T[] { + if (!Array.isArray(connections) || connections.length === 0) return connections; + const hasStoredProject = (connection: T): boolean => { + if (typeof connection.projectId === "string" && connection.projectId) return true; + let psd = connection.providerSpecificData; + if (typeof psd === "string") { + try { + psd = JSON.parse(psd); + } catch { + return false; + } + } + return Boolean( + psd && + typeof psd === "object" && + typeof (psd as Record).projectId === "string" && + (psd as Record).projectId + ); + }; + const withStoredProject = connections.filter(hasStoredProject); + return withStoredProject.length > 0 ? withStoredProject : connections; +} + export async function persistDiscoveredAntigravityProjectId( connectionId: string | undefined | null, discoveredProjectId: string | undefined | null, diff --git a/open-sse/services/antigravityProjectPersistence.ts b/open-sse/services/antigravityProjectPersistence.ts new file mode 100644 index 0000000000..f34445fe00 --- /dev/null +++ b/open-sse/services/antigravityProjectPersistence.ts @@ -0,0 +1,13 @@ +/** + * Re-export from `antigravityProjectPersist.ts` plus a connection-preference helper. + */ +import { persistDiscoveredAntigravityProjectId } from "./antigravityProjectPersist.ts"; +export { persistDiscoveredAntigravityProjectId }; + +export function preferAntigravityConnectionsWithStoredProject( + connections: Array> +): Array> { + return connections.filter( + (conn) => conn != null && typeof conn.projectId === "string" && conn.projectId.trim().length > 0 + ); +} diff --git a/open-sse/services/autoCombo/pipelineRouter.ts b/open-sse/services/autoCombo/pipelineRouter.ts index e957fd83f7..5fbc9eea02 100644 --- a/open-sse/services/autoCombo/pipelineRouter.ts +++ b/open-sse/services/autoCombo/pipelineRouter.ts @@ -54,6 +54,7 @@ const INTENT_TO_TASK: Record = { export interface PipelineComboParams { body: Record; combo: Record; + availableModels?: readonly string[]; handleChatCore: (body: Record, modelStr?: string) => Promise; log: { info: (...args: unknown[]) => void; @@ -85,7 +86,7 @@ export interface StageExecutorResult { */ function resolveModelForTier( tier: FitnessTier, - availableModels: string[], + availableModels: readonly string[], taskType: string ): string { // Score each available model for this task type and tier @@ -125,7 +126,7 @@ function createStageExecutor( body: Record, handleChatCore: (body: Record, modelStr?: string) => Promise, log: { info: (...args: unknown[]) => void; warn: (...args: unknown[]) => void }, - availableModels: string[], + availableModels: readonly string[], taskType: string ): (args: StageExecutorArgs & { fitnessTier?: FitnessTier }) => Promise { return async ({ @@ -222,6 +223,7 @@ function estimateTokens(messages: Array<{ role: string; content: unknown }>): nu export async function handlePipelineCombo({ body, combo, + availableModels: routedModels, handleChatCore, log, settings, @@ -291,7 +293,13 @@ export async function handlePipelineCombo({ }) .filter((model): model is string => typeof model === "string" && model.length > 0) : []; - const availableModels = comboModels.length ? comboModels : ["deepseek-chat"]; + const availableModels = + routedModels === undefined + ? comboModels.length + ? comboModels + : ["deepseek-chat"] + : routedModels; + if (availableModels.length === 0) throw new Error("PIPELINE_NO_MODELS"); // ── Create stage executor ───────────────────────────────────────────────── const stageExecutor = createStageExecutor(body, handleChatCore, log, availableModels, taskType); diff --git a/open-sse/services/autoCombo/scoring.ts b/open-sse/services/autoCombo/scoring.ts index ed410c36be..a8758df00c 100644 --- a/open-sse/services/autoCombo/scoring.ts +++ b/open-sse/services/autoCombo/scoring.ts @@ -201,16 +201,43 @@ function calculateSpecificityMatch( } } +/** + * Pool-wide maxima used to normalize cost/latency/stability factors. These are + * identical for every candidate in a given pool, so callers scoring many + * candidates against the same pool should compute this ONCE via + * computePoolMaxima() and pass it to calculateFactors — recomputing it inside + * a per-candidate loop turns an O(n) scoring pass into O(n^2) (#OOM incident: + * a zero-config "auto" combo with no explicit candidatePool can expand the + * pool to 1000s of provider/model targets, at which point the repeated + * `pool.map()` + spread here dominates heap churn and can OOM the process). + */ +export interface PoolMaxima { + maxCost: number; + maxLatency: number; + maxStdDev: number; +} + +export function computePoolMaxima(pool: ProviderCandidate[]): PoolMaxima { + let maxCost = 0.001; + let maxLatency = 1; + let maxStdDev = 0.001; + for (const p of pool) { + if (p.costPer1MTokens > maxCost) maxCost = p.costPer1MTokens; + if (p.p95LatencyMs > maxLatency) maxLatency = p.p95LatencyMs; + if (p.latencyStdDev > maxStdDev) maxStdDev = p.latencyStdDev; + } + return { maxCost, maxLatency, maxStdDev }; +} + export function calculateFactors( candidate: ProviderCandidate, pool: ProviderCandidate[], taskType: string, getTaskFitness: (model: string, taskType: string) => number, - manifestHint?: RoutingHint | null + manifestHint?: RoutingHint | null, + precomputedMaxima?: PoolMaxima ): ScoringFactors { - const maxCost = Math.max(...pool.map((p) => p.costPer1MTokens), 0.001); - const maxLatency = Math.max(...pool.map((p) => p.p95LatencyMs), 1); - const maxStdDev = Math.max(...pool.map((p) => p.latencyStdDev), 0.001); + const { maxCost, maxLatency, maxStdDev } = precomputedMaxima ?? computePoolMaxima(pool); // Every factor is contractually [0,1]. clamp01 guards against bad telemetry // (negative quota / cost / latency, NaN, out-of-range candidate-supplied @@ -245,9 +272,17 @@ export function scorePool( getTaskFitness: (model: string, taskType: string) => number = () => 0.5, manifestHint?: RoutingHint | null ): ScoredProvider[] { + const poolMaxima = computePoolMaxima(pool); return pool .map((candidate) => { - const factors = calculateFactors(candidate, pool, taskType, getTaskFitness, manifestHint); + const factors = calculateFactors( + candidate, + pool, + taskType, + getTaskFitness, + manifestHint, + poolMaxima + ); return { provider: candidate.provider, model: candidate.model, diff --git a/open-sse/services/browserBackedChat.ts b/open-sse/services/browserBackedChat.ts index 567e22338a..433da826fb 100644 --- a/open-sse/services/browserBackedChat.ts +++ b/open-sse/services/browserBackedChat.ts @@ -90,7 +90,7 @@ export function __resetHttpBackedChatOverrideForTesting(): void { // Helper to make Playwright waitForTimeout abortable via AbortSignal function waitWithSignal(ms: number, signal?: AbortSignal | null): Promise { - return new Promise((resolve, reject) => { + return new Promise((resolve, reject) => { if (signal?.aborted) return reject(new DOMException("Aborted", "AbortError")); const onAbort = () => { clearTimeout(timer); diff --git a/open-sse/services/claudeCodeConstraints.ts b/open-sse/services/claudeCodeConstraints.ts index af17a3657c..ddac177b32 100644 --- a/open-sse/services/claudeCodeConstraints.ts +++ b/open-sse/services/claudeCodeConstraints.ts @@ -128,6 +128,20 @@ export function ensureCacheControlOnLastUserMessage(body: Record> | undefined; if (!Array.isArray(messages) || messages.length === 0) return; + const system = body.system as Array> | undefined; + const systemCacheControlCount = Array.isArray(system) + ? system.filter((block) => block.cache_control).length + : 0; + + for (const message of messages) { + const content = message.content as Array> | undefined; + if (Array.isArray(content) && content.some((block) => block.cache_control)) { + return; + } + } + + if (systemCacheControlCount >= MAX_CACHE_CONTROL_BLOCKS) return; + // Find the last user message for (let i = messages.length - 1; i >= 0; i--) { if (String(messages[i].role) === "user") { diff --git a/open-sse/services/claudeCodeObfuscation.ts b/open-sse/services/claudeCodeObfuscation.ts index 3a8423cbf1..92c7c86d6e 100644 --- a/open-sse/services/claudeCodeObfuscation.ts +++ b/open-sse/services/claudeCodeObfuscation.ts @@ -87,9 +87,18 @@ export function obfuscateInBody(body: Record): void { if (typeof content === "string") { msg.content = obfuscateSensitiveWords(content); } else if (Array.isArray(content)) { - for (const block of content as Array>) { - if (typeof block.text === "string") { - block.text = obfuscateSensitiveWords(block.text); + // Anthropic verifies a signature over a thinking turn. Mutating a text + // sibling in that same turn invalidates it and makes the next request + // fail with `Invalid signature in thinking block`. + const blocks = content as Array>; + const hasSignedThinking = blocks.some( + (block) => block?.type === "thinking" || block?.type === "redacted_thinking" + ); + if (!hasSignedThinking) { + for (const block of blocks) { + if (typeof block.text === "string") { + block.text = obfuscateSensitiveWords(block.text); + } } } } diff --git a/open-sse/services/codexUsageQuotas.ts b/open-sse/services/codexUsageQuotas.ts index 4d4ed9c229..e730e9279d 100644 --- a/open-sse/services/codexUsageQuotas.ts +++ b/open-sse/services/codexUsageQuotas.ts @@ -13,6 +13,7 @@ export type CodexUsageQuota = { remaining?: number; resetAt: string | null; unlimited: boolean; + windowSeconds: number | null; displayName?: string; }; @@ -38,6 +39,15 @@ function toNumber(value: unknown, fallback = 0): number { return fallback; } +function toNullableNumber(value: unknown): number | null { + if (typeof value === "number" && Number.isFinite(value)) return value; + if (typeof value === "string" && value.trim().length > 0) { + const parsed = Number(value); + return Number.isFinite(parsed) ? parsed : null; + } + return null; +} + function parseResetTime(resetValue: unknown): string | null { if (!resetValue) return null; try { @@ -81,6 +91,15 @@ function buildPercentageQuota(window: JsonRecord, displayName?: string): CodexUs remaining: 100 - usedPercent, resetAt: parseWindowReset(window), unlimited: false, + windowSeconds: toNullableNumber( + getFieldValue( + window, + "limit_window_seconds", + "limitWindowSeconds", + "window_seconds", + "windowSeconds" + ) + ), ...(displayName ? { displayName } : {}), }; } @@ -105,10 +124,7 @@ function isLatentWindow(window: JsonRecord): boolean { getFieldValue(window, "limit_window_seconds", "limitWindowSeconds"), 0 ); - const resetAfter = toNumber( - getFieldValue(window, "reset_after_seconds", "resetAfterSeconds"), - 0 - ); + const resetAfter = toNumber(getFieldValue(window, "reset_after_seconds", "resetAfterSeconds"), 0); return usedPercent === 0 && limitWindow > 0 && resetAfter >= limitWindow; } @@ -225,7 +241,9 @@ function findCodexReviewRateLimit(data: JsonRecord): JsonRecord { * (issue #5199). */ function parseBankedResetCredits(data: JsonRecord): number | undefined { - const resetCredits = toRecord(getFieldValue(data, "rate_limit_reset_credits", "rateLimitResetCredits")); + const resetCredits = toRecord( + getFieldValue(data, "rate_limit_reset_credits", "rateLimitResetCredits") + ); const availableCount = getFieldValue(resetCredits, "available_count", "availableCount"); const count = toNumber(availableCount, NaN); return Number.isFinite(count) ? count : undefined; diff --git a/open-sse/services/combo.ts b/open-sse/services/combo.ts index 12113422ca..c817296a0e 100644 --- a/open-sse/services/combo.ts +++ b/open-sse/services/combo.ts @@ -14,6 +14,7 @@ import { getModelLockoutInfo, getRuntimeProviderProfile, hasPerModelQuota, + isAccountSemaphoreFull, isModelLocked, MODEL_ACCESS_DENIED_PATTERNS, recordModelLockoutFailure, @@ -570,6 +571,7 @@ export async function handleComboChat({ signal, apiKeyAllowedConnections = null, nesting = null, + hiddenModelsByProvider = getHiddenModelsByProvider(), }: HandleComboChatOptions): Promise { const comboCtx = createComboContext({ body, combo, settings, relayOptions, log }); const { @@ -607,6 +609,7 @@ export async function handleComboChat({ clientRequestedStream, handleSingleModelWithTimeout, log, + hiddenModelsByProvider, }); if (pinnedDispatch) return pinnedDispatch; } @@ -628,6 +631,7 @@ export async function handleComboChat({ relayOptions, signal, apiKeyAllowedConnections, + hiddenModelsByProvider, runCombo: handleComboChat, }); if (fusionDispatch) return fusionDispatch; @@ -636,7 +640,12 @@ export async function handleComboChat({ // chaosEngine.ts (dispatchChaosFromCombo), returning null when not chaos-enabled. const chaosDispatch = dispatchChaosFromCombo({ cfg, - comboModels: combo.models || [], + comboModels: resolveComboTargets( + combo, + allCombos, + clampComboDepth(config.maxComboDepth), + hiddenModelsByProvider + ).map((target) => target.modelStr), comboName: combo.name, body, handleSingleModel: handleSingleModelWithTimeout, @@ -649,8 +658,10 @@ export async function handleComboChat({ combo, config, strategy, + allCombos, handleSingleModelWithTimeout, log, + hiddenModelsByProvider, }); if (pipelineDispatch) return pipelineDispatch; @@ -669,6 +680,7 @@ export async function handleComboChat({ relayOptions, signal, apiKeyAllowedConnections, + hiddenModelsByProvider, runCombo: handleComboChat, }); if (runtimeUnitDispatch) return runtimeUnitDispatch; @@ -684,6 +696,7 @@ export async function handleComboChat({ settings, allCombos, signal, + hiddenModelsByProvider, }); } @@ -708,6 +721,7 @@ export async function handleComboChat({ isModelAvailable, handleSingleModelWithTimeout, buildAutoCandidates, + hiddenModelsByProvider, }); if ("earlyResponse" in targetResolution) return targetResolution.earlyResponse; const { stickyWeightedLimit, getWeightedStepKeyForTarget, preScreenMap } = targetResolution; @@ -749,7 +763,7 @@ export async function handleComboChat({ combo, config, body, - resolveShadowTargets(combo, config, allCombos), + resolveShadowTargets(combo, config, allCombos, hiddenModelsByProvider), handleSingleModel, isModelAvailable, strategy, @@ -999,6 +1013,20 @@ export async function handleComboChat({ if (i > 0) fallbackCount++; return null; } + + // Concurrency gate: fail-fast skip when connection is at max_concurrent capacity (e.g. Featherless 1/1) + const maxConcurrentCap = await lookupPositiveCap(connectionId); + if ( + maxConcurrentCap && + isAccountSemaphoreFull(provider, connectionId, maxConcurrentCap) + ) { + log.info( + "COMBO", + `Skipping ${modelStr} — connection ${connectionId} is at max concurrency cap (${maxConcurrentCap})` + ); + if (i > 0) fallbackCount++; + return null; + } } // Retry loop for transient errors @@ -2009,15 +2037,26 @@ export async function handleComboChat({ // All set retries exhausted — return the final error if (!lastStatus) { + if (recordedAttempts === 0) { + notifyWebhookEvent("request.failed", { + combo: combo.name, + reason: "ALL_TARGETS_SKIPPED", + latencyMs, + fallbackCount, + }); + return errorResponseWithComboDiagnostics( + 503, + "Service temporarily unavailable: all targets were skipped by pre-dispatch filters", + buildComboDiag("all_targets_skipped"), + { code: "ALL_TARGETS_SKIPPED", type: "service_unavailable" } + ); + } notifyWebhookEvent("request.failed", { combo: combo.name, reason: "ALL_ACCOUNTS_INACTIVE", latencyMs, fallbackCount, }); - // Silent-stop fix: bump the failure counter so the session pin clears on the 3rd - // consecutive all-inactive cascade; buildRecoveryHint emits `switch-combo` with a - // next-step that points the user at /dashboard/providers. recordComboFailure(effectiveSessionId, combo.name); return errorResponseWithComboDiagnostics( 503, @@ -2184,11 +2223,15 @@ async function handleRoundRobinCombo({ settings, allCombos, signal, + hiddenModelsByProvider = getHiddenModelsByProvider(), }: HandleRoundRobinOptions): Promise { const config = settings ? resolveComboConfig(combo, settings) : { ...getDefaultComboConfig(), ...(combo.config || {}) }; - const concurrency = config.concurrencyPerModel ?? 3; + // #9158: clamp combo-level concurrency to a sane bound — a config carrying a + // huge or negative value would otherwise open an unbounded semaphore and + // flood targets (or deadlock at 0). + const concurrency = Math.min(Math.max(config.concurrencyPerModel ?? 3, 1), 32); // Honor each target connection's own maxConcurrent ceiling (cached per dispatch) // so a low-concurrency subscription account is not flooded; falls back to the // combo-level concurrency when the connection has no positive cap. @@ -2222,7 +2265,8 @@ async function handleRoundRobinCombo({ const orderedTargets = resolveComboTargets( rrExpandedCombo, rrExpandedAllCombos, - clampComboDepth(config.maxComboDepth) + clampComboDepth(config.maxComboDepth), + hiddenModelsByProvider ); const tagFilteredTargets = await applyRequestTagRouting(orderedTargets, body, log); const evalRankedTargets = orderTargetsByEvalScores(tagFilteredTargets, config.evalRouting, log); @@ -2295,7 +2339,7 @@ async function handleRoundRobinCombo({ combo, config, body, - resolveShadowTargets(combo, config, allCombos), + resolveShadowTargets(combo, config, allCombos, hiddenModelsByProvider), handleSingleModel, isModelAvailable, "round-robin", @@ -2972,6 +3016,18 @@ async function handleRoundRobinCombo({ } if (!lastStatus) { + if (recordedAttempts === 0) { + return new Response( + JSON.stringify({ + error: { + message: "Service temporarily unavailable: all targets were skipped by pre-dispatch filters", + type: "service_unavailable", + code: "ALL_TARGETS_SKIPPED", + }, + }), + { status: 503, headers: { "Content-Type": "application/json" } } + ); + } return new Response( JSON.stringify({ error: { diff --git a/open-sse/services/combo/applyStrategyOrdering.ts b/open-sse/services/combo/applyStrategyOrdering.ts index a2eba3a555..34514c881d 100644 --- a/open-sse/services/combo/applyStrategyOrdering.ts +++ b/open-sse/services/combo/applyStrategyOrdering.ts @@ -205,7 +205,7 @@ export async function applyStrategyOrdering( if (resolvePromptCacheAffinityKey(body)) { orderedTargets = await expandPromptCacheAffinityTargets(orderedTargets); } - const affinity = applyPromptCacheAffinity(orderedTargets, body); + const affinity = applyPromptCacheAffinity(orderedTargets, body, true, "global"); orderedTargets = affinity.targets; log.info( "COMBO", diff --git a/open-sse/services/combo/autoStrategy.ts b/open-sse/services/combo/autoStrategy.ts index e5c2a1e5a8..cdb0124de2 100644 --- a/open-sse/services/combo/autoStrategy.ts +++ b/open-sse/services/combo/autoStrategy.ts @@ -33,6 +33,7 @@ import { getTaskFitness } from "../autoCombo/taskFitness.ts"; import { calculateFactors, calculateScore, + computePoolMaxima, type ProviderCandidate, type ScoringWeights, } from "../autoCombo/scoring.ts"; @@ -351,6 +352,11 @@ export function scoreAutoTargets( ) { const targetByExecutionKey = new Map(targets.map((target) => [target.executionKey, target])); const activeCandidates = candidates.filter((candidate) => candidate.quotaCutoffBlocked !== true); + // Computed once per scoring pass, not per candidate — see computePoolMaxima's + // doc comment (scoring.ts) for the O(n^2) OOM this avoids on large auto-combo + // candidate pools (#OOM incident, zero-config auto combo expanding to 1000s + // of provider/model targets). + const poolMaxima = computePoolMaxima(activeCandidates as unknown as ProviderCandidate[]); return activeCandidates .map((candidate) => { @@ -373,10 +379,11 @@ export function scoreAutoTargets( }; const factors = calculateFactors( candidate as ProviderCandidate, - activeCandidates, + activeCandidates as unknown as ProviderCandidate[], taskType ?? "general", getTaskFitness, - manifestHint ?? undefined + manifestHint ?? undefined, + poolMaxima ); let score = calculateScore(factors, weights); // B17: Quota Share soft-policy deprioritization @@ -447,11 +454,16 @@ export async function expandAutoComboCandidatePool( .filter((p): p is string => typeof p === "string" && p.length > 0) ), ]; + // Pre-build a Set of already-present modelStr values so candidate-pool + // expansion doesn't turn into O(n^2) per provider. See #OOM incident + // (zero-config auto combo expanding to 1000s of provider/model targets). + const seenModelStrs = new Set(eligibleTargets.map((t) => t.modelStr)); for (const providerId of providerIds) { const providerModels = getProviderModels(providerId); for (const model of providerModels) { const modelStr = `${providerId}/${model.id}`; - if (!eligibleTargets.some((t) => t.modelStr === modelStr)) { + if (!seenModelStrs.has(modelStr)) { + seenModelStrs.add(modelStr); eligibleTargets.push({ kind: "model", stepId: modelStr, diff --git a/open-sse/services/combo/comboStructure.ts b/open-sse/services/combo/comboStructure.ts index 4bb3aabc33..aa6ff9e596 100644 --- a/open-sse/services/combo/comboStructure.ts +++ b/open-sse/services/combo/comboStructure.ts @@ -8,19 +8,21 @@ * getComboModelsFromData, validateComboDAG, resolveNestedComboModels, * filterTargetsByRequestCompatibility) are re-exported from combo.ts for the * ~20 external consumers (chatCore.ts, the /api/combos routes, embeddings, etc.). + * Context-window metadata is advisory: known-fitting targets are ordered first, + * while catalog-too-small targets remain available for runtime fallback. * No barrel import — depends only on sibling leaves. */ import { getModelContextLimit } from "../../../src/lib/modelCapabilities"; +import { getHiddenModelsByProvider } from "../../../src/lib/db/models"; import { getComboModelString, normalizeComboStep } from "../../../src/lib/combos/steps.ts"; -import { - getProviderByAlias, - getProviderById, -} from "../../../src/shared/constants/providers.ts"; +import { getProviderByAlias, getProviderById } from "../../../src/shared/constants/providers.ts"; import { estimateTokens } from "../contextManager.ts"; +import { containsMediaKind } from "../../utils/mediaParts.ts"; import { getResolvedModelCapabilities } from "../modelCapabilities.ts"; -import { parseModel } from "../model.ts"; +import { parseModel, stripContextWindowSuffix } from "../model.ts"; import { dedupeTargetsByExecutionKey, isRecord } from "./comboData.ts"; +import { isComboModelVisible } from "./comboVisibility.ts"; import { getTargetProvider, MAX_COMBO_DEPTH } from "./comboPredicates.ts"; import { evaluateContextLimit } from "./contextOverrideGate.ts"; import { hasEstimableContent } from "./knownContextOverflow.ts"; @@ -35,6 +37,7 @@ import type { ComboLike, ComboLogger, ComboRuntimeStep, + HiddenModelsByProvider, NestedComboMode, ResolvedComboTarget, ResolvedComboUnit, @@ -135,15 +138,30 @@ function normalizeRuntimeStep( : {}), weight, label, + // `prompt` is a per-step pipeline input and only exists on a model step — + // #8894 widened the union with ComboProviderWildcardStep, which has no prompt. + prompt: (step.kind === "model" ? step.prompt : null) || null, } satisfies ResolvedComboTarget; } -function getDirectComboTargets(combo: ComboLike): ResolvedComboTarget[] { - return getOrderedTopLevelRuntimeSteps(combo, null).filter( - (entry): entry is ResolvedComboTarget => entry?.kind === "model" +function isComboTargetVisible( + target: ResolvedComboTarget, + hiddenModelsByProvider: HiddenModelsByProvider +): boolean { + return isComboModelVisible( + target.modelStr, + target.providerId || target.provider, + hiddenModelsByProvider ); } +export function filterVisibleComboTargets( + targets: ResolvedComboTarget[], + hiddenModelsByProvider: HiddenModelsByProvider = getHiddenModelsByProvider() +): ResolvedComboTarget[] { + return targets.filter((target) => isComboTargetVisible(target, hiddenModelsByProvider)); +} + function getTopLevelRuntimeSteps( combo: ComboLike, allCombos: ComboCollectionLike, @@ -323,7 +341,8 @@ export function getComboModelsFromData( modelStr: string, combosData: ComboCollectionLike ): string[] | null { - const combo = getComboFromData(modelStr, combosData); + const baseModelStr = stripContextWindowSuffix(modelStr); + const combo = getComboFromData(baseModelStr || modelStr, combosData); if (!combo) return null; return combo.models.map((m) => normalizeModelEntry(m).model); } @@ -465,21 +484,15 @@ function estimateRequestInputTokens(body: Record): number { return Object.keys(estimatePayload).length > 0 ? estimateTokens(estimatePayload) : 0; } -function valueContainsImagePart(value: unknown, depth = 0): boolean { - if (depth > 8 || value === null || value === undefined) return false; - if (typeof value === "string") return value.startsWith("data:image/"); - if (Array.isArray(value)) return value.some((entry) => valueContainsImagePart(entry, depth + 1)); - if (!isRecord(value)) return false; - - const type = typeof value.type === "string" ? value.type.toLowerCase() : null; - if (type === "image" || type === "image_url" || type === "input_image") return true; - if ("image_url" in value || "input_image" in value) return true; - - const source = isRecord(value.source) ? value.source : null; - const mediaType = typeof source?.media_type === "string" ? source.media_type.toLowerCase() : ""; - if (mediaType.startsWith("image/")) return true; - - return Object.values(value).some((entry) => valueContainsImagePart(entry, depth + 1)); +function valueContainsImagePart(value: unknown): boolean { + // Delegates to the unified media detector (open-sse/utils/mediaParts.ts) — + // single source of truth shared with the vision-bridge guardrail. The + // detector keeps this filter's legacy permissive matches (image-ish `type` + // in any casing, bare `image_url`/`input_image` keys, source.media_type + // image/*, bare data:image strings, recursion capped at depth 8) via + // "image_indicator" parts. containsMediaKind short-circuits on the first + // hit — this runs on every request, so no full-part collection here. + return containsMediaKind([{ content: [value] }], "image"); } export function deriveRequestCompatibilityRequirements( @@ -517,9 +530,7 @@ function hasKnownCompatibleContextLimit( return evaluateContextLimit(capabilities, requirements, target.modelStr) === true; } -function hasOnlyContextWindowFailures(reasons: string[]): boolean { - return reasons.length > 0 && reasons.every((reason) => reason === "context_window"); -} +const HARD_COMPAT_REASONS = new Set(["tools", "vision", "structured_output", "output_tokens"]); /** * #8332: vision is a hard requirement, not a soft preference — a target whose vision @@ -604,12 +615,6 @@ export type CompatFilterOptions = { failOpen?: boolean; }; -const HARD_COMPAT_REASONS = new Set(["tools", "vision", "structured_output"]); - -function hasHardCapabilityFailure(reasons: string[]): boolean { - return reasons.some((reason) => HARD_COMPAT_REASONS.has(reason)); -} - /** * Summarize a capability-filter exhaustion for a 400-class combo error (#8488). * Returns null when the empty pool is not attributable to hard requirements. @@ -680,73 +685,42 @@ export function filterTargetsByRequestCompatibility( if (!needsFiltering) return targets; const rejected: Array<{ target: ResolvedComboTarget; reasons: string[] }> = []; - const compatible = targets.filter((target) => { + const targetReasons = new Map(); + for (const target of targets) { const reasons = getTargetCompatibilityFailures(target, requirements); - if (reasons.length === 0) return true; - rejected.push({ target, reasons }); - return false; - }); + targetReasons.set(target, reasons); + if (reasons.length > 0) rejected.push({ target, reasons }); + } - // Unknown context limits are safe only as a fallback. If this request already - // filtered at least one known-too-small target and known-good targets remain, - // prefer the known-good set over unknown metadata gaps. If no known-good - // context target remains, fall back to the strategy order for context-only - // candidates instead of letting unknown metadata be the only survivors. - const rejectedForContextWindow = rejected.some((entry) => + // Context metadata is advisory. Keep every target that has no hard capability + // mismatch, but prefer targets whose known limit fits. A stale catalog entry must + // never remove the only target that could accept the request at runtime. + const compatible = targets.filter((target) => { + const reasons = targetReasons.get(target) || []; + return !reasons.some((reason) => HARD_COMPAT_REASONS.has(reason)); + }); + const hadKnownTooSmallContextTarget = rejected.some((entry) => entry.reasons.includes("context_window") ); - if (requirements.requiredContextTokens > 0 && rejectedForContextWindow) { + if ( + requirements.requiredContextTokens > 0 && + hadKnownTooSmallContextTarget && + compatible.length > 1 + ) { const knownContextCompatible = compatible.filter((target) => hasKnownCompatibleContextLimit(target, requirements) ); - if (knownContextCompatible.length > 0 && knownContextCompatible.length < compatible.length) { - const knownContextCompatibleTargets = new Set(knownContextCompatible); - for (const target of compatible) { - if (!knownContextCompatibleTargets.has(target)) { - rejected.push({ target, reasons: ["context_window_unknown"] }); - } - } - - log.info( - "COMBO", - `${label}: kept ${knownContextCompatible.length}/${targets.length} targets for request requirements` - ); - log.debug?.( - "COMBO", - `${label}: rejected targets ${rejected - .map((entry) => `${entry.target.modelStr}(${entry.reasons.join("+")})`) - .join(", ")}` - ); - return knownContextCompatible; - } - - if (knownContextCompatible.length === 0 && compatible.length > 0) { - const rejectedByTarget = new Map(rejected.map((entry) => [entry.target, entry.reasons])); - const contextOnlyFallback = targets.filter((target) => { - const reasons = rejectedByTarget.get(target); - return !reasons || hasOnlyContextWindowFailures(reasons); - }); - - if (contextOnlyFallback.length > compatible.length) { - log.warn( - "COMBO", - `${label}: no known-compatible context target remains; preserving strategy order for context-only candidates` - ); - log.debug?.( - "COMBO", - `${label}: rejected targets ${rejected - .map((entry) => `${entry.target.modelStr}(${entry.reasons.join("+")})`) - .join(", ")}` - ); - return contextOnlyFallback; - } + const knownSet = new Set(knownContextCompatible); + return [...knownContextCompatible, ...compatible.filter((target) => !knownSet.has(target))]; } } if (compatible.length === targets.length) return targets; if (compatible.length === 0) { - const hardRejected = rejected.some((entry) => hasHardCapabilityFailure(entry.reasons)); + const hardRejected = rejected.some((entry) => + entry.reasons.some((r) => HARD_COMPAT_REASONS.has(r)) + ); const failOpen = options?.failOpen === true; log.debug?.( @@ -834,36 +808,50 @@ export function sortTargetsByContextSize(targets: ResolvedComboTarget[]) { export function resolveComboTargets( combo: ComboLike, allCombos: ComboCollectionLike, - maxDepth: number = MAX_COMBO_DEPTH + maxDepth: number = MAX_COMBO_DEPTH, + hiddenModelsByProvider: HiddenModelsByProvider = getHiddenModelsByProvider() ): ResolvedComboTarget[] { - return allCombos - ? resolveNestedComboTargets(combo, allCombos, new Set(), 0, [], maxDepth) - : getDirectComboTargets(combo); + return filterVisibleComboTargets( + allCombos + ? resolveNestedComboTargets(combo, allCombos, new Set(), 0, [], maxDepth) + : getOrderedTopLevelRuntimeSteps(combo, null).filter( + (entry): entry is ResolvedComboTarget => entry?.kind === "model" + ), + hiddenModelsByProvider + ); } export function resolveComboRuntimeUnits( combo: ComboLike, allCombos: ComboCollectionLike, mode: NestedComboMode, - maxDepth: number = MAX_COMBO_DEPTH + maxDepth: number = MAX_COMBO_DEPTH, + hiddenModelsByProvider: HiddenModelsByProvider = getHiddenModelsByProvider() ): ResolvedComboUnit[] { - if (mode === "flatten" || !allCombos) return resolveComboTargets(combo, allCombos, maxDepth); + if (mode === "flatten" || !allCombos) + return resolveComboTargets(combo, allCombos, maxDepth, hiddenModelsByProvider); validateComboDAG(combo.name, allCombos, new Set(), 0, maxDepth); - return getOrderedTopLevelRuntimeSteps(combo, allCombos); + return getOrderedTopLevelRuntimeSteps(combo, allCombos).filter( + (unit) => unit.kind === "combo-ref" || isComboTargetVisible(unit, hiddenModelsByProvider) + ); } export function resolveWeightedStepGroups( combo: ComboLike, - allCombos: ComboCollectionLike + allCombos: ComboCollectionLike, + hiddenModelsByProvider: HiddenModelsByProvider = getHiddenModelsByProvider() ): Array<{ step: ComboRuntimeStep; targets: ResolvedComboTarget[] }> { return getOrderedTopLevelRuntimeSteps(combo, allCombos) .map((step) => ({ step, - targets: !allCombos - ? step.kind === "model" - ? [step] - : [] - : expandRuntimeStep(step, allCombos, new Set([combo.name])), + targets: filterVisibleComboTargets( + !allCombos + ? step.kind === "model" + ? [step] + : [] + : expandRuntimeStep(step, allCombos, new Set([combo.name])), + hiddenModelsByProvider + ), })) .filter((group) => group.targets.length > 0); } diff --git a/open-sse/services/combo/comboVisibility.ts b/open-sse/services/combo/comboVisibility.ts new file mode 100644 index 0000000000..e3d363ef59 --- /dev/null +++ b/open-sse/services/combo/comboVisibility.ts @@ -0,0 +1,23 @@ +import { getHiddenModelsByProvider } from "../../../src/lib/db/models"; +import { parseModel, resolveCanonicalProviderModel } from "../model.ts"; +import type { HiddenModelsByProvider } from "./types.ts"; + +export function isComboModelVisible( + modelStr: string, + providerId: string | null = null, + hiddenModelsByProvider: HiddenModelsByProvider = getHiddenModelsByProvider() +): boolean { + const parsed = parseModel(modelStr); + const hasExplicitProvider = + providerId && providerId !== parsed.provider && providerId !== parsed.providerAlias; + const rawModel = hasExplicitProvider ? modelStr : parsed.model || modelStr; + const resolved = resolveCanonicalProviderModel( + providerId || parsed.provider || parsed.providerAlias, + rawModel + ); + return ( + !resolved.provider || + !resolved.model || + !hiddenModelsByProvider.get(resolved.provider)?.has(resolved.model) + ); +} diff --git a/open-sse/services/combo/contextOverrideGate.ts b/open-sse/services/combo/contextOverrideGate.ts index 605c27c13f..4f03978a45 100644 --- a/open-sse/services/combo/contextOverrideGate.ts +++ b/open-sse/services/combo/contextOverrideGate.ts @@ -16,14 +16,13 @@ * pool to one provider and producing a hard 503 with no fallback once that * provider's quota is exhausted. An operator-set or auto-discovered override * reflects the real capacity, so it supersedes both catalog limits. Uses the - * raw override (`getModelContextOverride` returns `null` when none is set) — + * resolved exact override (`getResolvedModelContextOverride` returns `null` when none is set) — * NOT `getModelContextLimitForModelString`, which falls back to * `contextWindow` and would therefore bypass the `maxInputTokens` cap for * every model, not just overridden ones. */ -import { getModelContextOverride } from "../../../src/lib/db/modelContextOverrides"; -import { parseModel } from "../model.ts"; +import { getResolvedModelContextOverride } from "../../../src/lib/modelCapabilities"; /** * Resolve the context-fit verdict from a persisted per-model override, if one @@ -36,8 +35,7 @@ function resolveContextOverrideVerdict( requiredContextTokens: number ): boolean | undefined { if (!modelStr) return undefined; - const parsed = parseModel(modelStr); - const override = getModelContextOverride(parsed.provider, parsed.model); + const override = getResolvedModelContextOverride(modelStr); if (override == null) return undefined; return override >= requiredContextTokens; } diff --git a/open-sse/services/combo/contextRequirements.ts b/open-sse/services/combo/contextRequirements.ts index e5c2886acd..0a608d18db 100644 --- a/open-sse/services/combo/contextRequirements.ts +++ b/open-sse/services/combo/contextRequirements.ts @@ -9,6 +9,7 @@ import type { ComboLogger, ResolvedComboTarget } from "./types.ts"; export interface ContextRequirements { minContextWindow?: number; + maxContextWindow?: number; preferLargeContext?: boolean; contextFilterMode?: "strict" | "lenient"; } @@ -51,10 +52,15 @@ export function applyContextRequirements( ): ResolvedComboTarget[] { if (!requirements || targets.length === 0) return targets; - const { minContextWindow, preferLargeContext, contextFilterMode = "lenient" } = requirements; + const { + minContextWindow, + maxContextWindow, + preferLargeContext, + contextFilterMode = "lenient", + } = requirements; // No requirements specified - if (!minContextWindow && !preferLargeContext) return targets; + if (!minContextWindow && !maxContextWindow && !preferLargeContext) return targets; let filtered = targets; @@ -108,6 +114,34 @@ export function applyContextRequirements( } } + // Apply maxContextWindow filtering + if (maxContextWindow && maxContextWindow > 0) { + const beforeFilterCount = filtered.length; + + filtered = filtered.filter((target) => { + const contextWindow = getTargetContextWindow(target); + + // Unknown context limit handling + if (contextWindow === null) { + return contextFilterMode === "lenient"; + } + + // Known context limit - check threshold + return contextWindow <= maxContextWindow; + }); + + if (filtered.length < beforeFilterCount) { + log.info( + "COMBO", + `Context requirements: filtered ${beforeFilterCount} → ${filtered.length} targets (maxContextWindow: ${maxContextWindow}, mode: ${contextFilterMode})` + ); + log.debug?.( + "COMBO", + `Context requirements: kept models ${filtered.map((t) => t.modelStr).join(", ")}` + ); + } + } + // Apply preferLargeContext sorting if (preferLargeContext && filtered.length > 1) { filtered = [...filtered].sort((a, b) => { diff --git a/open-sse/services/combo/dispatchPrelude.ts b/open-sse/services/combo/dispatchPrelude.ts index 69d2576c00..65dd76e175 100644 --- a/open-sse/services/combo/dispatchPrelude.ts +++ b/open-sse/services/combo/dispatchPrelude.ts @@ -21,6 +21,7 @@ import { handlePipelineChat, type PipelineStep } from "../pipeline.ts"; import type { resolveComboSetupConfig } from "../comboConfig.ts"; import { clampComboDepth, MAX_GLOBAL_ATTEMPTS, resolveDelayMs } from "./comboPredicates.ts"; import { resolveComboRuntimeUnits, resolveComboTargets } from "./comboStructure.ts"; +import { isComboModelVisible } from "./comboVisibility.ts"; import { buildFusionHandleSingleModel, extractFusionPanelSpec } from "./fusionPanel.ts"; import { clampStickyWeightedTargetLimit, @@ -45,6 +46,7 @@ import type { HandleComboChatOptions, HandleSingleModel, IsModelAvailable, + HiddenModelsByProvider, NestedComboMode, ResolvedComboUnit, SingleModelTarget, @@ -68,6 +70,7 @@ type PreludeBaseOptionArgs = { relayOptions?: HandleComboChatOptions["relayOptions"]; signal?: AbortSignal | null; apiKeyAllowedConnections?: string[] | null; + hiddenModelsByProvider?: HiddenModelsByProvider; }; /** Rebuild handleComboChat's option bag verbatim for a recursive dispatch. */ @@ -83,6 +86,7 @@ function buildBaseOptions(a: PreludeBaseOptionArgs): HandleComboChatOptions { relayOptions: a.relayOptions, signal: a.signal, apiKeyAllowedConnections: a.apiKeyAllowedConnections, + hiddenModelsByProvider: a.hiddenModelsByProvider, }; } @@ -232,6 +236,7 @@ export async function tryPinnedModelDispatch(args: { clientRequestedStream: boolean; handleSingleModelWithTimeout: HandleSingleModel; log: ComboLogger; + hiddenModelsByProvider?: HiddenModelsByProvider; }): Promise { const { body, @@ -242,6 +247,7 @@ export async function tryPinnedModelDispatch(args: { clientRequestedStream, handleSingleModelWithTimeout, log, + hiddenModelsByProvider, } = args; // The pin is read from session_model_history (a PRIOR turn) and may name a // model that has since been removed from this combo, or a provider whose @@ -254,11 +260,12 @@ export async function tryPinnedModelDispatch(args: { // when allCombos is authoritative (non-empty) so we can resolve combo-refs; // the auto-combo redirect path passes an empty list and keeps prior behavior. const haveFullCombos = Array.isArray(allCombos) ? allCombos.length > 0 : !!allCombos; - const pinInCombo = - !haveFullCombos || - resolveComboTargets(combo, allCombos, clampComboDepth(config.maxComboDepth)).some( - (t) => t.modelStr === pinnedModel - ); + const pinInCombo = resolveComboTargets( + combo, + haveFullCombos ? allCombos : null, + clampComboDepth(config.maxComboDepth), + hiddenModelsByProvider + ).some((target) => target.modelStr === pinnedModel); // Honor the pin only if it is still a combo target AND its provider is not // DURABLY down. Without the health gate a pin keeps routing a session to a // dead/credits-exhausted/throttled account forever (strategy bypassed, no @@ -330,15 +337,24 @@ export async function tryFusionDispatch(args: { relayOptions?: HandleComboChatOptions["relayOptions"]; signal?: AbortSignal | null; apiKeyAllowedConnections?: string[] | null; + hiddenModelsByProvider?: HiddenModelsByProvider; runCombo: RunCombo; }): Promise { const { cfg, combo, config, strategy, log } = args; - const judgeModel = typeof cfg.judgeModel === "string" ? cfg.judgeModel : undefined; + const configuredJudge = typeof cfg.judgeModel === "string" ? cfg.judgeModel : undefined; + // The panel is filtered for hidden models by resolveComboTargets, but the + // explicit judge is a bare string that never passes through it (#8878). Drop a + // hidden judge so fusion falls back to a surviving panel member instead of + // dispatching a model the operator hid. + const judgeModel = + configuredJudge && !isComboModelVisible(configuredJudge, null, args.hiddenModelsByProvider) + ? undefined + : configuredJudge; const fusionTuning = cfg.fusionTuning && typeof cfg.fusionTuning === "object" ? (cfg.fusionTuning as FusionTuning) : undefined; - if (strategy !== "fusion" && (judgeModel || fusionTuning)) { + if (strategy !== "fusion" && (configuredJudge || fusionTuning)) { log.warn( "COMBO", `Combo "${combo.name}" sets config.judgeModel/fusionTuning but strategy is "${strategy}" — these fields are only consumed by the fusion strategy and will be ignored (#6455)` @@ -346,10 +362,29 @@ export async function tryFusionDispatch(args: { } if (strategy !== "fusion") return null; - const { panel: fusionModels, comboRefUnits } = extractFusionPanelSpec( - combo.models || [], + const resolvedFusionTargets = resolveComboTargets( + combo, + args.allCombos, + clampComboDepth(config.maxComboDepth), + args.hiddenModelsByProvider + ); + // extractFusionPanelSpec only understands model strings / combo refs, so the + // resolved targets have to be flattened before it runs. Keep them indexed so + // the panel can be rehydrated below — dispatching the bare strings strips + // `providerId` and every panel member loses its provider identity (#8878). + const resolvedByModelStr = new Map(); + for (const target of resolvedFusionTargets) { + if (!resolvedByModelStr.has(target.modelStr)) resolvedByModelStr.set(target.modelStr, target); + } + const { panel: fusionPanel, comboRefUnits } = extractFusionPanelSpec( + resolvedFusionTargets.map((target) => target.modelStr), combo.name, - args.allCombos + null + ); + // A panel entry naming a combo ref stays a string (it is a combo name, not a + // model); everything else regains its resolved target. + const fusionModels = fusionPanel.map((entry) => + comboRefUnits.has(entry) ? entry : (resolvedByModelStr.get(entry) ?? entry) ); // Untyped like the existing `nestingContext` further down — `nesting` is // already `ComboNestingContext | null` per HandleComboChatOptions, no new @@ -389,26 +424,28 @@ export async function tryPipelineDispatch(args: { combo: ComboLike; config: ComboSetupConfig; strategy: string; + allCombos?: ComboCollectionLike; handleSingleModelWithTimeout: HandleSingleModel; log: ComboLogger; + hiddenModelsByProvider?: HiddenModelsByProvider; }): Promise { - const { body, combo, config, strategy, handleSingleModelWithTimeout, log } = args; + const { + body, + combo, + config, + strategy, + allCombos, + handleSingleModelWithTimeout, + log, + hiddenModelsByProvider, + } = args; if (strategy !== "pipeline") return null; - const pipelineSteps = (combo.models || []) - .map((m): PipelineStep | null => { - if (typeof m === "string") return { model: m }; - if (m && typeof m === "object") { - const obj = m as Record; - if (typeof obj.model === "string") { - return { - model: obj.model, - prompt: typeof obj.prompt === "string" ? obj.prompt : undefined, - }; - } - } - return null; - }) - .filter((s): s is PipelineStep => Boolean(s)); + const pipelineSteps: PipelineStep[] = resolveComboTargets( + combo, + allCombos, + clampComboDepth(config.maxComboDepth), + hiddenModelsByProvider + ).map((target) => ({ target, prompt: target.prompt })); return handlePipelineChat({ body, steps: pipelineSteps, @@ -523,6 +560,7 @@ export async function tryRuntimeUnitDispatch(args: { relayOptions?: HandleComboChatOptions["relayOptions"]; signal?: AbortSignal | null; apiKeyAllowedConnections?: string[] | null; + hiddenModelsByProvider?: HiddenModelsByProvider; runCombo: RunCombo; }): Promise { const { body, combo, config, strategy, allCombos, log, settings } = args; @@ -531,7 +569,13 @@ export async function tryRuntimeUnitDispatch(args: { const executeModeUnits = nestedComboMode === "execute" && allCombos - ? resolveComboRuntimeUnits(combo, allCombos, "execute", nestingContext.maxDepth) + ? resolveComboRuntimeUnits( + combo, + allCombos, + "execute", + nestingContext.maxDepth, + args.hiddenModelsByProvider + ) : []; const hasExecutableComboRef = executeModeUnits.some((unit) => unit.kind === "combo-ref"); const simpleExecuteStrategies = new Set([ @@ -575,6 +619,7 @@ export async function tryRuntimeUnitDispatch(args: { nesting: nestingContext, baseOptions: buildBaseOptions(args), runCombo: args.runCombo, + hiddenModelsByProvider: args.hiddenModelsByProvider, }); recordRuntimeUnitStickySuccess({ strategy, diff --git a/open-sse/services/combo/fusionPanel.ts b/open-sse/services/combo/fusionPanel.ts index 6397c5120c..a0f3d36d30 100644 --- a/open-sse/services/combo/fusionPanel.ts +++ b/open-sse/services/combo/fusionPanel.ts @@ -10,7 +10,7 @@ * literal `auto/*` string panel member already behaves via the single- * dispatch safety net in src/sse/handlers/chat.ts. */ -import { normalizeComboStep } from "../../../src/lib/combos/steps.ts"; +import { getComboModelString, normalizeComboStep } from "../../../src/lib/combos/steps.ts"; import { executeComboRefUnit } from "./runtimeUnits.ts"; import type { ComboCollectionLike, @@ -51,7 +51,11 @@ export function extractFusionPanelSpec( panel.push(step.comboName); return; } - panel.push(step.model); + // #8894 widened ComboStep with ComboProviderWildcardStep, which carries a + // modelPattern instead of a model. getComboModelString() already resolves any + // step shape (and returns null for the ones with no concrete model id). + const modelStr = getComboModelString(step); + if (modelStr) panel.push(modelStr); }); return { panel, comboRefUnits }; } diff --git a/open-sse/services/combo/promptCacheAffinity.ts b/open-sse/services/combo/promptCacheAffinity.ts index 070e50f84e..4433e7b69d 100644 --- a/open-sse/services/combo/promptCacheAffinity.ts +++ b/open-sse/services/combo/promptCacheAffinity.ts @@ -266,14 +266,32 @@ export function shouldProtectOriginalFirst( } /** - * Order eligible targets using rendezvous hashing. The original order is used - * as the final tie-breaker, so targets sharing one account identity remain - * stable without using modelStr as the affinity identity. + * Extract the base model identity from a target's executionKey or modelStr. + * This strips any per-connection suffix (@connectionId) to identify the model itself. + */ +function getBaseModelIdentity(target: ResolvedComboTarget): string { + // executionKey format: "stepId@connectionId" when expanded, or just "stepId" + const executionKey = target.executionKey || ""; + const baseExecutionKey = executionKey.split("@")[0]; + + // modelStr format: "provider/model" or "provider/model:version" + const modelStr = target.modelStr || ""; + + // Use executionKey as primary (preserves stepId grouping), fall back to modelStr + return baseExecutionKey || modelStr; +} + +/** + * Order eligible targets using rendezvous hashing. + * @param scope - "model": sort only within same-model groups, preserving inter-model order; + * "global": sort across all targets (original behavior). + * Defaults to "global" for backward compatibility. */ export function applyPromptCacheAffinity( targets: ResolvedComboTarget[], body: Record | null | undefined, - enabled: boolean = true + enabled: boolean = true, + scope: "model" | "global" = "global" ): PromptCacheAffinityResult { const resolution = enabled ? resolvePromptCacheAffinityKey(body) : null; if (!resolution || targets.length <= 1) { @@ -290,19 +308,61 @@ export function applyPromptCacheAffinity( index, identity: promptCacheTargetIdentity(target), score: rendezvousScore(resolution.key, promptCacheTargetIdentity(target)), + baseModel: scope === "model" ? getBaseModelIdentity(target) : null, })); - ranked.sort((a, b) => { - if (a.score > b.score) return -1; - if (a.score < b.score) return 1; - const identityOrder = a.identity.localeCompare(b.identity); - return identityOrder !== 0 ? identityOrder : a.index - b.index; - }); + if (scope === "model") { + // Group by base model identity, preserving original group order + const groups = new Map(); + const groupOrder: string[] = []; - return { - targets: ranked.map((entry) => entry.target), - applied: true, - source: resolution.source, - fingerprint: resolution.fingerprint, - }; + for (const entry of ranked) { + // baseModel is guaranteed non-null when scope === "model" (see map above) + const baseModel = entry.baseModel as string; + if (!groups.has(baseModel)) { + groups.set(baseModel, []); + groupOrder.push(baseModel); + } + groups.get(baseModel)!.push(entry); + } + + // Sort within each group by score, then identity, then original index + const sortedGroups = groupOrder.map((baseModel) => { + const group = groups.get(baseModel)!; + return group.sort((a, b) => { + if (a.score > b.score) return -1; + if (a.score < b.score) return 1; + const identityOrder = a.identity.localeCompare(b.identity); + return identityOrder !== 0 ? identityOrder : a.index - b.index; + }); + }); + + // Flatten groups in original order + const sortedTargets = sortedGroups.flatMap((group) => group.map((entry) => entry.target)); + + // Check if the order actually changed (for applied flag) + const orderChanged = !targets.every((target, i) => target === sortedTargets[i]); + + return { + targets: sortedTargets, + applied: orderChanged, // Only true if the order actually changed + source: resolution.source, + fingerprint: resolution.fingerprint, + }; + } else { + // Original global sorting behavior + ranked.sort((a, b) => { + if (a.score > b.score) return -1; + if (a.score < b.score) return 1; + const identityOrder = a.identity.localeCompare(b.identity); + return identityOrder !== 0 ? identityOrder : a.index - b.index; + }); + + return { + targets: ranked.map((entry) => entry.target), + applied: true, + source: resolution.source, + fingerprint: resolution.fingerprint, + }; + } } diff --git a/open-sse/services/combo/providerWildcard.ts b/open-sse/services/combo/providerWildcard.ts index fdc5cd60ab..d27c168cd5 100644 --- a/open-sse/services/combo/providerWildcard.ts +++ b/open-sse/services/combo/providerWildcard.ts @@ -31,7 +31,7 @@ import { wildcardMatch } from "../wildcardRouter.ts"; import { getProviderModels } from "../../config/providerModels.ts"; -import { getSyncedAvailableModels } from "../../../src/lib/db/models.ts"; +import { getActiveSyncedCatalog } from "../../../src/lib/db/models/activeSyncedCatalog.ts"; import type { ComboLike } from "./types.ts"; /** Sentinel pattern used for "all models of a provider". */ @@ -116,39 +116,18 @@ function parseWildcardEntry(entry: unknown): ProviderWildcardSpec | null { } /** - * Collect candidate model IDs for a provider from two sources: - * 1. Synced available models in the DB (runtime-dynamic; custom/OAuth providers) - * 2. Static provider registry (built-in providers bundled with the release) - * - * The union is deduped by model id. + * Collect candidate model IDs using the active synced catalog as the + * authoritative source when it is non-empty. Static registry models remain a + * fail-open fallback when no active usable catalog exists. */ async function collectProviderModelIds(providerId: string): Promise { - const seen = new Set(); - const ids: string[] = []; + const liveCatalog = await getActiveSyncedCatalog(providerId); - // 1. Synced DB models (highest priority — reflects the live catalog) - try { - const synced = await getSyncedAvailableModels(providerId); - for (const m of synced) { - if (m.id && !seen.has(m.id)) { - seen.add(m.id); - ids.push(m.id); - } - } - } catch { - // Non-fatal — DB may be offline in tests or at early init. + if (liveCatalog.authoritative) { + return liveCatalog.models.map((model) => model.id); } - // 2. Static registry models (fallback / built-in providers) - const registryModels = getProviderModels(providerId); - for (const m of registryModels) { - if (m.id && !seen.has(m.id)) { - seen.add(m.id); - ids.push(m.id); - } - } - - return ids; + return getProviderModels(providerId).map((model) => model.id); } /** diff --git a/open-sse/services/combo/quotaScoring.ts b/open-sse/services/combo/quotaScoring.ts index 8f9dbbca92..4a853b1455 100644 --- a/open-sse/services/combo/quotaScoring.ts +++ b/open-sse/services/combo/quotaScoring.ts @@ -177,46 +177,113 @@ function normalizeWindowPercentUsed(value: unknown): number | null { return clamp01(numericValue); } +type QuotaWindowSnapshot = { percentUsed: number | null; resetAt: string | null }; + +/** + * Pick the first candidate that actually carries a reset instant, falling back + * to the first present candidate. A window can be structurally present but + * carry `resetAt: null` (e.g. Codex's `window7d` placeholder when the upstream + * only reported the primary limit); a plain `a || b` short-circuit would let + * that empty window shadow a sibling that does know when it resets — #9330. + */ +function pickWindowWithResetAt( + ...candidates: Array +): QuotaWindowSnapshot | null { + return candidates.find((candidate) => candidate?.resetAt) ?? candidates.find(Boolean) ?? null; +} + function getNamedQuotaWindow( quota: unknown, windowName: ResetWindowName -): { percentUsed: number | null; resetAt: string | null } | null { +): QuotaWindowSnapshot | null { if (!quota || !isRecord(quota)) return null; if (windowName === "session") return getQuotaWindow(quota, "window5h"); if (windowName === "weekly") { - return getQuotaWindow(quota, "window7d") || getQuotaWindow(quota, "windowWeekly"); + return pickWindowWithResetAt( + getQuotaWindow(quota, "window7d"), + getQuotaWindow(quota, "windowWeekly") + ); } if (windowName === "monthly") return getQuotaWindow(quota, "windowMonthly"); return null; } -function getWindowsMapQuotaWindow( - quota: unknown, - windowName: ResetWindowName -): { percentUsed: number | null; resetAt: string | null } | null { - if (!quota || !isRecord(quota) || !isRecord(quota.windows)) return null; - const candidates = Object.entries(quota.windows) - .map(([key, value]) => ({ key: key.toLowerCase(), value })) - .filter(({ key }) => key === windowName || key.startsWith(`${windowName} `)); - - if (candidates.length === 0) return null; - candidates.sort((a, b) => a.key.localeCompare(b.key)); - const window = candidates[0].value; +function toWindowSnapshot(window: unknown): QuotaWindowSnapshot | null { if (!isRecord(window)) return null; - return { percentUsed: normalizeWindowPercentUsed(window.percentUsed), resetAt: normalizeResetAt(window.resetAt), }; } +/** + * Every entry of the snapshot's `windows` map, name lower-cased. + * + * Deliberately reads `windows` only, never Codex's wider `allWindows`: for a + * Spark request `fetchCodexQuota` narrows `windows` to the Spark scope on + * purpose, and pulling the normal-scope entries back in would rank a request + * against a window it cannot spend. + */ +function getQuotaWindowEntries( + quota: unknown +): Array<{ key: string; window: QuotaWindowSnapshot }> { + if (!quota || !isRecord(quota) || !isRecord(quota.windows)) return []; + const entries: Array<{ key: string; window: QuotaWindowSnapshot }> = []; + for (const [key, value] of Object.entries(quota.windows)) { + const window = toWindowSnapshot(value); + if (window) entries.push({ key: key.toLowerCase(), window }); + } + return entries; +} + +function getWindowsMapQuotaWindow( + quota: unknown, + windowName: ResetWindowName +): QuotaWindowSnapshot | null { + const candidates = getQuotaWindowEntries(quota).filter( + ({ key }) => key === windowName || key.startsWith(`${windowName} `) + ); + + if (candidates.length === 0) return null; + candidates.sort((a, b) => a.key.localeCompare(b.key)); + // Prefer a candidate that knows when it resets (e.g. "weekly" vs a scoped + // "weekly (spark)" placeholder without a resetAt) — #9330. + return pickWindowWithResetAt( + ...candidates.filter(({ window }) => window.resetAt).map(({ window }) => window), + candidates[0].window + ); +} + function resolveQuotaWindowByName( quota: unknown, windowName: ResetWindowName -): { percentUsed: number | null; resetAt: string | null } | null { - return getNamedQuotaWindow(quota, windowName) || getWindowsMapQuotaWindow(quota, windowName); +): QuotaWindowSnapshot | null { + return pickWindowWithResetAt( + getNamedQuotaWindow(quota, windowName), + getWindowsMapQuotaWindow(quota, windowName) + ); +} + +/** + * Earliest reset instant across EVERY window a snapshot exposes, regardless of + * how the provider named it. + * + * Last-resort normalizer for #9330: providers routed through + * `genericQuotaFetcher.convertUsageToQuotaInfo` key their `windows` map by + * MODEL ID (Antigravity: "gemini-3-flash", "claude-sonnet-5", …), so none of + * the canonical "weekly" | "session" | "monthly" lookups match. Without this + * those accounts resolved to `Infinity` ("never resets") and were sorted behind + * a Codex account whose secondary window was 26 days out. + */ +function getEarliestWindowResetMs(quota: unknown): number { + let earliest = Infinity; + for (const { window } of getQuotaWindowEntries(quota)) { + const resetMs = parseResetTimeMs(window.resetAt); + if (Number.isFinite(resetMs)) earliest = Math.min(earliest, resetMs); + } + return earliest; } function getResetUrgency(resetAt: string | null | undefined, windowMs: number): number { @@ -276,6 +343,23 @@ export function scoreResetAwareQuota( return { score }; } +/** + * Absolute epoch-ms instant at which the configured quota window next resets, + * or `Infinity` when the snapshot exposes no parseable reset (which sorts the + * target last under the `reset-window` strategy). + * + * Resolution order — each step only runs when the previous one found nothing: + * 1. the configured windows, by canonical name (structural `window5h` / + * `window7d` / `windowWeekly` / `windowMonthly` fields, then a `windows` + * map keyed by "weekly" | "session" | "monthly"); + * 2. the earliest reset across every entry of the `windows` map, whatever the + * provider named them (Antigravity keys its map by model id — #9330); + * 3. the single-signal top-level `quota.resetAt`. + * + * Step 2 sits ahead of step 3 deliberately: `quota.resetAt` is populated from + * the most-USED window, which is not necessarily the one resetting soonest, and + * is left null entirely while every window is still at 0% used. + */ export function getResetWindowTimestampMs(quota: unknown, windows: ResetWindowName[]): number { if (!quota || !isRecord(quota) || quota.limitReached === true) return Infinity; @@ -288,6 +372,10 @@ export function getResetWindowTimestampMs(quota: unknown, windows: ResetWindowNa } } + if (!Number.isFinite(selectedResetMs)) { + selectedResetMs = getEarliestWindowResetMs(quota); + } + if (!Number.isFinite(selectedResetMs)) { selectedResetMs = parseResetTimeMs(normalizeResetAt(quota.resetAt)); } @@ -295,6 +383,26 @@ export function getResetWindowTimestampMs(quota: unknown, windows: ResetWindowNa return Number.isFinite(selectedResetMs) ? selectedResetMs : Infinity; } +/** + * Milliseconds remaining until the configured window resets — the uniform + * metric the `reset-window` strategy sorts on (ascending: soonest first). + * + * Normalizing to a duration (rather than comparing raw epoch timestamps) keeps + * every provider on one scale and collapses already-elapsed resets to 0, so a + * snapshot that is stale by three days ties with one that reset a second ago + * instead of jumping the queue by virtue of being older. `Infinity` means "no + * known reset" and sorts last. + */ +export function getResetWindowRemainingMs( + quota: unknown, + windows: ResetWindowName[], + now: number = Date.now() +): number { + const resetMs = getResetWindowTimestampMs(quota, windows); + if (!Number.isFinite(resetMs)) return Infinity; + return Math.max(0, resetMs - now); +} + function getResetWindowHorizonMs(windows: ResetWindowName[]): number { if (windows.includes("monthly")) return 30 * 24 * 60 * 60 * 1000; if (windows.includes("weekly")) return RESET_AWARE_WEEKLY_WINDOW_MS; diff --git a/open-sse/services/combo/quotaStrategies.ts b/open-sse/services/combo/quotaStrategies.ts index 3e0f27ee99..4234b29433 100644 --- a/open-sse/services/combo/quotaStrategies.ts +++ b/open-sse/services/combo/quotaStrategies.ts @@ -18,10 +18,18 @@ * and orderTargetsByResetWindow shares the same rrCounters Map from ./rrState.ts * (D7a) so reset-aware tie rotation stays consistent with round-robin routing. * + * @changes + * - [2026-07-24] [Composer] - Exclude Antigravity accounts without stored projectId from reset-aware pool + * - [2026-07-24] [Composer] - Skip quota-exhausted and rate-limited connections in reset-aware expansion + * * Pure leaf: this module never imports from the combo barrel. */ -import { getRuntimeProviderProfile, type ProviderProfile } from "../accountFallback.ts"; +import { + getRuntimeProviderProfile, + isAccountUnavailable, + type ProviderProfile, +} from "../accountFallback.ts"; import { PRE_SCREEN_CONCURRENCY } from "../comboConfig.ts"; import { getQuotaFetcher } from "../quotaPreflight.ts"; import { getCircuitBreaker } from "../../../src/shared/utils/circuitBreaker"; @@ -33,10 +41,12 @@ import { resolveResetWindowConfig, getResetAwareProvider, scoreResetAwareQuota, - getResetWindowTimestampMs, + getResetWindowRemainingMs, type QuotaFetchCacheConfig, } from "./quotaScoring.ts"; import { rankByHeadroom, type HeadroomSaturation } from "./headroomRanking.ts"; +import { preferAntigravityConnectionsWithStoredProject } from "../antigravityProjectPersist.ts"; +import { isQuotaExhaustedForRequest } from "../../../src/domain/quotaCache.ts"; const RESET_AWARE_CONNECTION_CACHE_TTL_MS = 30_000; const RESET_AWARE_QUOTA_FETCH_CONCURRENCY = 5; @@ -75,9 +85,14 @@ async function getQuotaAwareConnectionsForTarget( (async () => { try { const connections = await getCachedProviderConnections({ provider, isActive: true }); - const activeConnections = Array.isArray(connections) + let activeConnections = Array.isArray(connections) ? (connections as Array>) : []; + if (provider === "antigravity" || provider === "agy") { + activeConnections = preferAntigravityConnectionsWithStoredProject( + activeConnections + ) as Array>; + } if ( !resetAwareConnectionCache.has(provider) && resetAwareConnectionCache.size >= MAX_RESET_AWARE_CACHE @@ -199,6 +214,18 @@ async function expandTargetsByQuotaAwareConnections( } for (const connectionId of connectionIds) { + const provider = getResetAwareProvider(target); + const connection = connectionById.get(connectionId); + if ( + connection && + typeof connection.rateLimitedUntil === "string" && + isAccountUnavailable(connection.rateLimitedUntil) + ) { + continue; + } + if (provider && isQuotaExhaustedForRequest(connectionId, provider, target.modelStr || null)) { + continue; + } expandedTargets.push({ ...target, connectionId, @@ -509,27 +536,35 @@ export async function orderTargetsByResetWindow( apiKeyAllowedConnectionIds ); + // One `now` snapshot for the whole ranking: quota fetches run concurrently and + // can take seconds, so re-reading the clock per target would compare remaining + // times measured against different instants (#9330). + const now = Date.now(); const scoredTargets = await scoreQuotaAwareTargets({ comboName, config, connectionById, expandedTargets, log, - scoreQuota: (quota) => ({ resetMs: getResetWindowTimestampMs(quota, config.windows) }), + scoreQuota: (quota) => ({ + remainingMs: getResetWindowRemainingMs(quota, config.windows, now), + }), }); + // Ascending: the account whose quota resets SOONEST goes first. Targets with + // no known reset (Infinity) fall to the back, ordered by combo priority. scoredTargets.sort((a, b) => { - if (a.resetMs !== b.resetMs) return a.resetMs - b.resetMs; + if (a.remainingMs !== b.remainingMs) return a.remainingMs - b.remainingMs; return a.index - b.index; }); - const bestResetMs = scoredTargets[0]?.resetMs ?? Infinity; - if (!Number.isFinite(bestResetMs) || config.tieBandMs <= 0) { + const bestRemainingMs = scoredTargets[0]?.remainingMs ?? Infinity; + if (!Number.isFinite(bestRemainingMs) || config.tieBandMs <= 0) { return scoredTargets.map((entry) => entry.target); } const tiedTargets = scoredTargets.filter( - (entry) => entry.resetMs - bestResetMs <= config.tieBandMs + (entry) => entry.remainingMs - bestRemainingMs <= config.tieBandMs ); if (tiedTargets.length <= 1) return scoredTargets.map((entry) => entry.target); diff --git a/open-sse/services/combo/runtimeUnitCapacity.ts b/open-sse/services/combo/runtimeUnitCapacity.ts new file mode 100644 index 0000000000..6af5430043 --- /dev/null +++ b/open-sse/services/combo/runtimeUnitCapacity.ts @@ -0,0 +1,90 @@ +/** + * @file runtimeUnitCapacity.ts + * @description Concurrency-capacity checks for nested combo execute-mode units so + * ordered strategies overflow to the next slot instead of queueing on a full connection. + * + * @changes + * - [2026-07-24] [Composer] - Initial capacity pre-check for execute-mode runtime units + */ +import { isAccountSemaphoreFull } from "../accountSemaphore.ts"; +import { resolveComboTargets } from "./comboStructure.ts"; +import { lookupPositiveCap } from "./concurrencyCaps.ts"; +import type { + ComboCollectionLike, + ComboLike, + HiddenModelsByProvider, + ResolvedComboUnit, +} from "./types.ts"; + +type CapLookup = (connectionId: string) => Promise; + +function isRecord(value: unknown): value is Record { + return !!value && typeof value === "object" && !Array.isArray(value); +} + +function getCombosList(allCombos: ComboCollectionLike): ComboLike[] { + const combos = Array.isArray(allCombos) ? allCombos : allCombos?.combos || []; + return combos.filter( + (combo): combo is ComboLike => isRecord(combo) && typeof combo.name === "string" + ); +} + +function findComboByName(allCombos: ComboCollectionLike, name: string): ComboLike | null { + return getCombosList(allCombos).find((combo) => combo.name === name) || null; +} + +async function isConnectionAtConcurrencyCap( + provider: string, + connectionId: string, + lookupCap: CapLookup +): Promise { + const cap = await lookupCap(connectionId); + if (!cap) return false; + return isAccountSemaphoreFull(provider, connectionId, cap); +} + +/** + * Returns true when the runtime unit should be skipped because every limited + * connection it would use is already at max_concurrent. + */ +export async function isRuntimeUnitAtConcurrencyCap( + unit: ResolvedComboUnit, + allCombos: ComboCollectionLike, + lookupCap: CapLookup = lookupPositiveCap, + // Threaded from the caller so the hidden-model snapshot resolved once per + // request is reused. Without it resolveComboTargets falls back to its default + // getHiddenModelsByProvider(), i.e. a fresh full key_value read per nested + // combo-ref unit on EVERY request (#8878 threaded the other call sites). + hiddenModelsByProvider?: HiddenModelsByProvider +): Promise { + if (unit.kind === "model") { + if (!unit.connectionId || !unit.provider) return false; + return isConnectionAtConcurrencyCap(unit.provider, unit.connectionId, lookupCap); + } + + const childCombo = findComboByName(allCombos, unit.comboName); + if (!childCombo) return false; + + const targets = resolveComboTargets(childCombo, allCombos, 1, hiddenModelsByProvider); + const byConnection = new Map(); + for (const target of targets) { + if (!target.connectionId || !target.provider) continue; + byConnection.set(target.connectionId, { + provider: target.provider, + connectionId: target.connectionId, + }); + } + if (byConnection.size === 0) return false; + + let sawLimitedConnection = false; + for (const { provider, connectionId } of byConnection.values()) { + const cap = await lookupCap(connectionId); + if (!cap) continue; + sawLimitedConnection = true; + if (!isAccountSemaphoreFull(provider, connectionId, cap)) { + return false; + } + } + + return sawLimitedConnection; +} diff --git a/open-sse/services/combo/runtimeUnits.ts b/open-sse/services/combo/runtimeUnits.ts index e839fc01bb..90ad1c2cac 100644 --- a/open-sse/services/combo/runtimeUnits.ts +++ b/open-sse/services/combo/runtimeUnits.ts @@ -1,7 +1,14 @@ -// Nested combo runtime unit execution — see combo.ts for integration. +/** + * @file runtimeUnits.ts + * @description Nested combo runtime unit execution — see combo.ts for integration. + * + * @changes + * - [2026-07-24] [Composer] - Skip execute-mode units at concurrency cap before dispatch + */ import { errorResponse } from "../../utils/error.ts"; import { recordComboRequest } from "../comboMetrics.ts"; import { resolveDelayMs } from "./comboPredicates.ts"; +import { isRuntimeUnitAtConcurrencyCap } from "./runtimeUnitCapacity.ts"; import { validateResponseQuality, releaseQualityClone } from "./validateQuality.ts"; import type { ResponseValidationConfig } from "./responseValidation.ts"; import type { @@ -11,6 +18,7 @@ import type { ComboNestingContext, HandleComboChatOptions, HandleSingleModel, + HiddenModelsByProvider, IsModelAvailable, ResolvedComboRefTarget, ResolvedComboUnit, @@ -179,6 +187,7 @@ export async function executeRuntimeUnitCombo(args: { nesting: ComboNestingContext; baseOptions: HandleComboChatOptions; runCombo: RuntimeUnitRunner; + hiddenModelsByProvider?: HiddenModelsByProvider; }): Promise { const maxRetries = Number(args.config.maxRetries ?? 1); const retryDelayMs = resolveDelayMs(args.config.retryDelayMs, 2000); @@ -190,6 +199,22 @@ export async function executeRuntimeUnitCombo(args: { let fallbackCount = 0; for (const unit of orderedUnits) { + if ( + await isRuntimeUnitAtConcurrencyCap( + unit, + args.allCombos, + undefined, + args.hiddenModelsByProvider + ) + ) { + args.log.info( + "COMBO", + `Skipping ${unit.kind} ${unitDisplayName(unit)} — concurrency cap reached` + ); + fallbackCount += 1; + continue; + } + for (let retry = 0; retry <= maxRetries; retry += 1) { if (args.signal?.aborted) return { response: errorResponse(499, "Client disconnected"), unit }; diff --git a/open-sse/services/combo/shadowRouting.ts b/open-sse/services/combo/shadowRouting.ts index 5483b4320d..a04a23687f 100644 --- a/open-sse/services/combo/shadowRouting.ts +++ b/open-sse/services/combo/shadowRouting.ts @@ -16,13 +16,14 @@ import { secureRandomFloat } from "../../../src/shared/utils/secureRandom"; import { recordComboShadowRequest } from "../comboMetrics.ts"; import { isRecord } from "./comboData.ts"; -import { resolveNestedComboTargets } from "./comboStructure.ts"; +import { filterVisibleComboTargets, resolveNestedComboTargets } from "./comboStructure.ts"; import { toRecordedTarget } from "./comboPredicates.ts"; import type { ComboLike, ComboCollectionLike, ComboLogger, HandleSingleModel, + HiddenModelsByProvider, IsModelAvailable, ResolvedComboTarget, ShadowRoutingConfig, @@ -47,7 +48,8 @@ function normalizeShadowRoutingConfig(config: Record): ShadowRo export function resolveShadowTargets( combo: ComboLike, config: Record, - allCombos: ComboCollectionLike + allCombos: ComboCollectionLike, + hiddenModelsByProvider?: HiddenModelsByProvider ): ResolvedComboTarget[] { const shadowConfig = normalizeShadowRoutingConfig(config); if (!shadowConfig.enabled || shadowConfig.targets.length === 0) return []; @@ -58,7 +60,10 @@ export function resolveShadowTargets( name: `${combo.name}:shadow`, models: shadowConfig.targets, }; - return resolveNestedComboTargets(shadowCombo, allCombos, new Set([combo.name]), 0, ["shadow"]) + return filterVisibleComboTargets( + resolveNestedComboTargets(shadowCombo, allCombos, new Set([combo.name]), 0, ["shadow"]), + hiddenModelsByProvider + ) .slice(0, shadowConfig.maxTargets) .map((target) => ({ ...target, diff --git a/open-sse/services/combo/targetResolution.ts b/open-sse/services/combo/targetResolution.ts index 82f23b8c3d..0b1189aa7e 100644 --- a/open-sse/services/combo/targetResolution.ts +++ b/open-sse/services/combo/targetResolution.ts @@ -88,6 +88,7 @@ import type { ComboRuntimeStep, HandleSingleModel, IsModelAvailable, + HiddenModelsByProvider, ResolvedComboTarget, } from "./types.ts"; @@ -111,6 +112,7 @@ export interface ResolveComboTargetPipelineDeps { * this leaf), so importing it directly would create an import cycle. */ buildAutoCandidates: ResolveAutoStrategyDeps["buildAutoCandidates"]; + hiddenModelsByProvider?: HiddenModelsByProvider; } export interface ResolvedComboTargetPipeline { @@ -204,10 +206,15 @@ async function collectWeightedEligibility( expandedCombo: ComboLike, expandedAllCombos: ComboCollectionLike, resilienceSettings: ResilienceSettings, - isModelAvailable?: IsModelAvailable + isModelAvailable?: IsModelAvailable, + hiddenModelsByProvider?: HiddenModelsByProvider ): Promise<{ stepGroups: WeightedStepGroups; weightedEligibleKeys: Set }> { const weightedEligibleKeys = new Set(); - const stepGroups = resolveWeightedStepGroups(expandedCombo, expandedAllCombos); + const stepGroups = resolveWeightedStepGroups( + expandedCombo, + expandedAllCombos, + hiddenModelsByProvider + ); for (const group of stepGroups) { const availability = await Promise.all( group.targets.map((target) => @@ -260,7 +267,8 @@ async function resolveWeightedSelection( expandedCombo, expandedAllCombos, deps.resilienceSettings, - deps.isModelAvailable + deps.isModelAvailable, + deps.hiddenModelsByProvider ); stepGroups = eligibility.stepGroups; weightedEligibleKeys = eligibility.weightedEligibleKeys; @@ -351,7 +359,8 @@ function logTargetPoolSize( * auto routing (pipeline disabled, below token threshold, or dispatch failure). */ async function dispatchSmartPipeline( - deps: ResolveComboTargetPipelineDeps + deps: ResolveComboTargetPipelineDeps, + availableModels: readonly string[] ): Promise { const { body, combo, strategy, config, settings, signal, log } = deps; if (strategy !== "auto") return null; @@ -362,6 +371,7 @@ async function dispatchSmartPipeline( const pipelineRaw = await handlePipelineCombo({ body, combo, + availableModels, handleChatCore: deps.handleSingleModelWithTimeout, log: { info: log.info, @@ -648,10 +658,24 @@ async function applyPromptCacheStage( promptCacheAffinityEnabled && resolvePromptCacheAffinityKey(body) ? await expandPromptCacheAffinityTargets(orderedTargets) : orderedTargets; + + // Determine affinity scope: restrict to model-level for deterministic strategies + // to preserve operator-defined model order; keep global for cross-model + // strategies. Per #8370, lkgp/auto/cache-optimized explicitly support promoting + // a previously-successful model ahead of the declared order, so they must stay + // cross-model ("global") rather than be locked into a single model step. + const modelOrderPreservingStrategies = new Set([ + "priority", + "weighted", + "fill-first", + "quota-share", + ]); + const isDeterministicStrategy = modelOrderPreservingStrategies.has(strategy); const promptCacheAffinity = applyPromptCacheAffinity( promptCacheAffinityTargets, body, - promptCacheAffinityEnabled + promptCacheAffinityEnabled, + isDeterministicStrategy ? "model" : "global" ); if (!promptCacheAffinity.applied) return orderedTargets; const protectedOriginal = @@ -687,7 +711,8 @@ export async function resolveComboTargetPipeline( : resolveComboTargets( expandedCombo, expandedAllCombos, - clampComboDepth(config.maxComboDepth) + clampComboDepth(config.maxComboDepth), + deps.hiddenModelsByProvider ); orderedTargets = await applyRequestTagRouting(orderedTargets, body, log); @@ -699,7 +724,10 @@ export async function resolveComboTargetPipeline( logTargetPoolSize(strategy, allCombos, orderedTargets, stickyWeightedKey, log); - const pipelineResponse = await dispatchSmartPipeline(deps); + const pipelineResponse = await dispatchSmartPipeline( + deps, + orderedTargets.map((target) => target.modelStr) + ); if (pipelineResponse) return { earlyResponse: pipelineResponse }; const ordering = await orderByStrategy(deps, orderedTargets); diff --git a/open-sse/services/combo/types.ts b/open-sse/services/combo/types.ts index 9371d11529..ca00fedbce 100644 --- a/open-sse/services/combo/types.ts +++ b/open-sse/services/combo/types.ts @@ -95,6 +95,8 @@ export type ComboNestingContext = { attemptBudget: { count: number; limit: number }; }; +export type HiddenModelsByProvider = ReadonlyMap>; + export type HandleComboChatOptions = { body: Record; combo: ComboLike; @@ -107,6 +109,7 @@ export type HandleComboChatOptions = { signal?: AbortSignal | null; apiKeyAllowedConnections?: string[] | null; nesting?: ComboNestingContext | null; + hiddenModelsByProvider?: HiddenModelsByProvider; }; export type HandleRoundRobinOptions = Omit< @@ -167,6 +170,7 @@ export type ResolvedComboTarget = { allowedConnectionIds?: string[] | null; weight: number; label: string | null; + prompt?: string | null; failoverBeforeRetry?: unknown; trafficType?: "production" | "shadow"; /** diff --git a/open-sse/services/comboConfig.ts b/open-sse/services/comboConfig.ts index 30fd959186..4489b6194a 100644 --- a/open-sse/services/comboConfig.ts +++ b/open-sse/services/comboConfig.ts @@ -98,7 +98,15 @@ const DEFAULT_COMBO_CONFIG = { maxRetries: 1, retryDelayMs: 2000, fallbackDelayMs: 0, - concurrencyPerModel: 3, // max simultaneous requests per model (round-robin) + // #9100: round-robin combo concurrency was hard-capped at 3 concurrent + // requests per model with no override — 5 concurrent requests through a + // round-robin combo serialized behind that cap. Now configurable via + // COMBO_CONCURRENCY_PER_MODEL (validated to >= 1, clamped to <= 32; default + // 3 preserves the historical behavior). + concurrencyPerModel: Math.min( + Math.max(Number(process.env.COMBO_CONCURRENCY_PER_MODEL) || 3, 1), + 32 + ), queueTimeoutMs: 120000, // max wait time in semaphore queue (round-robin); raised from 30s for browser-automation providers like gemini-web (#9407) queueDepth: DEFAULT_COMBO_QUEUE_DEPTH, // pre-cascade semaphore queue depth (round-robin, #3872) handoffThreshold: 0.85, @@ -171,6 +179,7 @@ const DEFAULT_COMBO_CONFIG = { contextRequirements: undefined as | { minContextWindow?: number; + maxContextWindow?: number; preferLargeContext?: boolean; contextFilterMode?: "strict" | "lenient"; } diff --git a/open-sse/services/compression/bodyAdapter.ts b/open-sse/services/compression/bodyAdapter.ts index 64edaca84e..467575349f 100644 --- a/open-sse/services/compression/bodyAdapter.ts +++ b/open-sse/services/compression/bodyAdapter.ts @@ -400,13 +400,24 @@ export function adaptBodyForCompression( }); const cleanedInput = nextInput.filter((item) => { - if (!isRecord(item) || item.type !== "function_call") return true; + if (!isRecord(item)) return true; + const t = item.type; + if ( + t !== "function_call" && + t !== "custom_tool_call" && + t !== "local_shell_call" && + t !== "apply_patch_call" + ) { + return true; + } if (typeof item.call_id !== "string" || item.call_id.length === 0) return true; const hadMappedOutput = mappings.some((mapping) => { const original = mapping.item; return ( (original.type === "function_call_output" || - original.type === "custom_tool_call_output") && + original.type === "custom_tool_call_output" || + original.type === "local_shell_call_output" || + original.type === "apply_patch_call_output") && original.call_id === item.call_id ); }); diff --git a/open-sse/services/compression/engines/ccr/index.ts b/open-sse/services/compression/engines/ccr/index.ts index 476d9b37b0..d0b5ba10e7 100644 --- a/open-sse/services/compression/engines/ccr/index.ts +++ b/open-sse/services/compression/engines/ccr/index.ts @@ -37,6 +37,13 @@ */ import crypto from "node:crypto"; +import { + deleteAllCcrBlocks, + deleteCcrBlockRow, + loadCcrBlock, + persistCcrBlock, + touchCcrBlock, +} from "../../../../../src/lib/db/ccrBlocks.ts"; import { createCompressionStats } from "../../stats.ts"; import { queryBlock, type CcrQuery } from "./ccrQuery.ts"; import { injectCcrProtocolInstruction } from "./protocolInstruction.ts"; @@ -61,7 +68,12 @@ const RETRIEVAL_THRESHOLD = 3; * ramp (only the >= threshold cliff remains — the legacy binary behavior). */ const RETRIEVAL_RAMP_FACTOR_DEFAULT = 2; -/** Maximum number of entries in the principal-scoped, LRU-ordered store. */ +/** + * Maximum number of entries in the LRU-ordered store, across every principal. The store + * is keyed per principal, but this cap is not: the only per-principal cap is + * `MAX_CCR_PRINCIPAL_BYTES`. Eviction under this cap takes the storing principal's own + * blocks first (see `enforceGlobalBudget`). + */ export const MAX_CCR_ENTRIES = 5_000; export const MAX_CCR_BLOCK_BYTES = 2 * 1024 * 1024; export const MAX_CCR_PRINCIPAL_BYTES = 16 * 1024 * 1024; @@ -105,6 +117,12 @@ export type StoreCcrBlockResult = reason: "block_too_large" | "principal_budget_exceeded" | "global_budget_exceeded"; }; +export function isCcrStoreRejection( + result: StoreCcrBlockResult +): result is Extract { + return result.stored === false; +} + export interface CcrStoreStats { storage: "memory"; entries: number; @@ -145,6 +163,151 @@ function buildStoreKey(hash: string, principalId?: string): string { return `${principalId ?? ANON} ${hash}`; } +// ─── durable second tier (#9061) ────────────────────────────────────────────── + +/** + * The map above is the hot cache. It loses entries to cross-principal LRU eviction, to + * the TTL, to restarts, and to a retrieve landing on another instance, while + * `fidelityGateStep` waives fidelity checks for sampling engines on the grounds that + * their drop is "CCR-recoverable", and the protocol instruction promises the model a + * verbatim block. These helpers put the block on disk so that promise survives. + * + * Every one of them is best-effort: a store without a usable database (compression + * preview, unit tests, a read-only volume) degrades to today's in-memory behaviour + * rather than failing the request. + * + * Three guards keep this from changing what the deployment stores at rest more than it + * has to. They follow the call-log artifact path, which faced the same question: + * + * 1. Blocks over `MAX_DURABLE_BLOCK_BYTES` stay memory-only. `MAX_CCR_BLOCK_BYTES` is + * 2 MB, and 5,000 of those would be 10 GB of prompt text in SQLite. 512 KB is the + * ceiling #1647 already set on call artifacts for this exact reason. + * 2. No durable tier on a cloud runtime, which has no local disk to write to. + * 3. `COMPRESSION_CCR_DURABLE_STORE=false` turns it off. The content is prompt text, and an + * operator who does not want that on disk needs a switch that is not a rebuild. + * + * The switch defaults to on because the model is already told, by the CCR protocol + * instruction, that it can retrieve the block verbatim. Leaving it off by default would + * keep that promise hollow for everyone who never reads this file. + */ +const MAX_DURABLE_BLOCK_BYTES = 512 * 1024; + +/** Matches the detection call-log artifacts use (`callLogArtifacts.ts`). */ +const isCloudRuntime = typeof globalThis.caches === "object" && globalThis.caches !== null; + +function durableTierEnabled(): boolean { + return !isCloudRuntime && process.env.COMPRESSION_CCR_DURABLE_STORE !== "false"; +} + +const loggedDurableErrors = new Set(); + +function warnDurableError(operation: string, error: unknown): void { + if (process.env.NODE_ENV === "test") return; + if (loggedDurableErrors.has(operation)) return; + if (loggedDurableErrors.size >= 20) { + const first = loggedDurableErrors.values().next().value; + if (first !== undefined) loggedDurableErrors.delete(first); + } + loggedDurableErrors.add(operation); + const message = error instanceof Error ? error.message : String(error); + console.warn(`[ccr] durable ${operation} failed: ${message}`); +} + +/** + * Writes are deferred off the request path. Measured on this repo, a synchronous + * `persistCcrBlock` costs 0.032 ms at the 600-char minimum block but 1.77 ms at 500 KB, + * past the 1 ms this engine declares in its metadata, and roughly 7x the sha256 it + * already pays over the same bytes. The block is in the map before the defer runs, so an + * in-process retrieve never waits for the disk; only a crash inside that tick loses the + * durable copy, and the client's next request re-stores it under the same hash. + * + * Persist and delete share this queue so they cannot reorder: `setImmediate` is FIFO, and + * a delete that overtook its own persist would resurrect the block it just removed. + */ +const MAX_PENDING_DURABLE_WRITES = 1_000; +let pendingDurableWrites = 0; +let droppedDurableWrites = 0; + +function deferDurable(operation: string, work: () => void, droppable = false): void { + // Backpressure. A burst faster than SQLite drains would otherwise queue without bound + // and hold every block's content live in the closure. Dropping a persist is safe: the + // block is still in the map, and the client re-stores it under the same hash on its + // next request. Deletes are never dropped, or a deleted block would come back. + if (droppable && pendingDurableWrites >= MAX_PENDING_DURABLE_WRITES) { + droppedDurableWrites++; + return; + } + pendingDurableWrites++; + setImmediate(() => { + pendingDurableWrites--; + try { + work(); + } catch (error) { + warnDurableError(operation, error); + } + }); +} + +function persistEntry(entry: CcrEntry): void { + if (!durableTierEnabled()) return; + if (entry.bytes > MAX_DURABLE_BLOCK_BYTES) return; + const snapshot = { ...entry }; + deferDurable("persist", () => persistCcrBlock(snapshot), true); +} + +function forgetEntry(hash: string, principalId: string): void { + if (!durableTierEnabled()) return; + deferDurable("delete", () => deleteCcrBlockRow(principalId, hash)); +} + +/** + * Read a block the map no longer holds and put it back in the map, so the LRU/byte + * accounting keeps working from there. Returns null when there is no durable row, which + * is also what a missing database looks like. + */ +function rehydrateEntry(hash: string, principalId: string, now: number): CcrEntry | null { + if (!durableTierEnabled()) return null; + let row: ReturnType; + try { + row = loadCcrBlock(principalId, hash, now); + } catch (error) { + warnDurableError("load", error); + return null; + } + if (!row) return null; + + const entry: CcrEntry = { + hash: row.hash, + principalId: row.principalId, + content: row.content, + bytes: row.bytes, + chars: row.chars, + lines: row.lines, + contentType: row.contentType, + source: row.source as CcrEntrySource, + createdAt: row.createdAt, + lastAccessedAt: now, + expiresAt: row.expiresAt, + }; + + // Re-admit through the same budgets a fresh store would face. If the block no longer + // fits, it stays on disk and is served straight from the row instead of being cached. + const { principalId: owner, bytes } = entry; + if (enforcePrincipalBudget(owner, bytes) && enforceGlobalBudget(owner, bytes)) { + const key = buildStoreKey(hash, principalId === ANON ? undefined : principalId); + ccrStore.set(key, entry); + ccrTotalBytes += entry.bytes; + principalBytesMap.set(entry.principalId, principalBytes(entry.principalId) + entry.bytes); + } + + try { + touchCcrBlock(entry.principalId, hash, now); + } catch (error) { + warnDurableError("touch", error); + } + return entry; +} + function readLifecycleCounters(principalId: string): CcrLifecycleCounters { return ( lifecycleByPrincipal.get(principalId) ?? { @@ -192,7 +355,12 @@ function removeEntry(key: string, reason?: "expired" | "capacity"): boolean { if (remainingPrincipalBytes === 0) principalBytesMap.delete(entry.principalId); else principalBytesMap.set(entry.principalId, remainingPrincipalBytes); const counters = mutableLifecycleCounters(entry.principalId); - if (reason === "expired") counters.expiredEvictions++; + if (reason === "expired") { + counters.expiredEvictions++; + // Expiry is the one eviction that means the block is finished. Capacity eviction is + // not: that block stays on disk, which is the point of the durable tier (#9061). + forgetEntry(entry.hash, entry.principalId); + } if (reason === "capacity") counters.capacityEvictions++; return true; } @@ -257,12 +425,30 @@ function enforcePrincipalBudget(owner: string, bytes: number): boolean { return principalBytes(owner) + bytes <= MAX_CCR_PRINCIPAL_BYTES; } -function enforceGlobalBudget(bytes: number): boolean { - while ( - (ccrStore.size >= MAX_CCR_ENTRIES || ccrTotalBytes + bytes > MAX_CCR_GLOBAL_BYTES) && - evictOldestMatching(() => true) - ) { - // Enforce both entry and global byte caps with LRU eviction. +/** + * Enforce the entry and global byte caps, giving up the storing principal's own + * least-recently-used blocks before anyone else's. + * + * The caps here are global while the only per-principal cap is `MAX_CCR_PRINCIPAL_BYTES`, + * so nothing bounds a principal's entry *count*. Blocks start at `DEFAULT_MIN_CHARS`, so + * 5,000 of them is around 3 MB, under a fifth of one principal's 16 MB byte allowance, + * and enough to exhaust the shared entry budget on its own. Evicting the globally oldest + * entry from there took a block from whoever had been quiet longest, because LRU keeps + * promoting the busy principal's own entries to the tail. + * + * Preferring `owner` keeps the global bound exactly as strict and makes a principal pay + * for its own pressure first. Falling back to any principal preserves the previous + * behaviour for the case that actually needs it: a newcomer storing into a store held + * entirely by others, which would otherwise never fit. + */ +function enforceGlobalBudget(owner: string, bytes: number): boolean { + const overBudget = () => + ccrStore.size >= MAX_CCR_ENTRIES || ccrTotalBytes + bytes > MAX_CCR_GLOBAL_BYTES; + + while (overBudget()) { + if (evictOldestMatching((entry) => entry.principalId === owner)) continue; + if (evictOldestMatching(() => true)) continue; + break; } return ccrTotalBytes + bytes <= MAX_CCR_GLOBAL_BYTES; } @@ -300,7 +486,7 @@ export function tryStoreBlock( return rejectStore(hash, owner, "principal_budget_exceeded"); } - if (!enforceGlobalBudget(bytes)) { + if (!enforceGlobalBudget(owner, bytes)) { return rejectStore(hash, owner, "global_budget_exceeded"); } @@ -321,6 +507,7 @@ export function tryStoreBlock( ccrStore.set(key, entry); ccrTotalBytes += bytes; principalBytesMap.set(owner, principalBytes(owner) + bytes); + persistEntry(entry); return { stored: true, hash, metadata: publicMetadata(entry) }; } @@ -330,7 +517,9 @@ export function storeBlock( options: StoreCcrBlockOptions = {} ): string { const result = tryStoreBlock(text, principalId, options); - if (!result.stored) throw new RangeError(`CCR store rejected block: ${result.reason}`); + if (isCcrStoreRejection(result)) { + throw new RangeError(`CCR store rejected block: ${result.reason}`); + } return result.hash; } @@ -341,7 +530,12 @@ export function storeBlock( export function retrieveBlock(hash: string, principalId?: string, now = Date.now()): string | null { const key = buildStoreKey(hash, principalId); const entry = getActiveEntry(key, now); - if (!entry) return null; + if (!entry) { + // Miss in the hot cache is not proof the block is gone (#9061): LRU eviction, the TTL + // sweep, a restart, or another instance all land here while the row is still on disk. + const restored = rehydrateEntry(hash, principalId ?? ANON, now); + return restored ? restored.content : null; + } entry.lastAccessedAt = now; ccrStore.delete(key); ccrStore.set(key, entry); @@ -404,6 +598,14 @@ export function resetCcrStore(): void { principalBytesMap.clear(); ccrTotalBytes = 0; lifecycleByPrincipal.clear(); + // Through the same queue as persist/delete, so a reset cannot overtake a write it was + // meant to clear. + deferDurable("reset", deleteAllCcrBlocks); +} + +/** Resolves once the deferred durable writes queued so far have run. */ +export function flushCcrDurableWrites(): Promise { + return new Promise((resolve) => setImmediate(resolve)); } export function inspectCcrBlock( @@ -438,7 +640,11 @@ export function listCcrBlocks( } export function deleteCcrBlock(hash: string, principalId?: string, _now = Date.now()): boolean { - return removeEntry(buildStoreKey(hash, principalId)); + const removedFromCache = removeEntry(buildStoreKey(hash, principalId)); + // An explicit delete must reach the durable tier too, otherwise the next retrieve + // rehydrates the block the caller just deleted. + forgetEntry(hash, principalId ?? ANON); + return removedFromCache; } export function getCcrStoreStats(principalId?: string, now = Date.now()): CcrStoreStats { diff --git a/open-sse/services/compression/engines/llmlingua/onnxWorker.ts b/open-sse/services/compression/engines/llmlingua/onnxWorker.ts index 61dfb69018..1552158607 100644 --- a/open-sse/services/compression/engines/llmlingua/onnxWorker.ts +++ b/open-sse/services/compression/engines/llmlingua/onnxWorker.ts @@ -84,7 +84,68 @@ async function getCompressor(entry: LlmlinguaModelEntry, modelPath?: string): Pr logger: () => {}, }); - return promptCompressor; + return { compressor: promptCompressor, oai }; +} + +/** + * Chunk-overflow guard for the BERT position-embedding table. + * + * The library's chunkContext() splits input at `max_seq_length - 2` = 510 + * o200k (tiktoken) tokens, then decodes each chunk to text and re-tokenizes it + * with the model's wordpiece tokenizer for inference. The round-trip can + * EXPAND (510 tiktoken tokens → 516 wordpiece tokens observed), and the + * expanded sequence (plus [CLS]/[SEP]) overruns the model's + * max_position_embeddings=512 → onnxruntime fails with a broadcast error on + * `/bert/embeddings/Add_1` (512 by 516) and the whole call fail-opens. + * + * Fix: never hand the library a single text larger than MAX_SEG_TOKENS + * o200k tokens. The library then emits one chunk per call and the wordpiece + * round-trip stays safely under 512. Sentence-boundary backtracking keeps the + * cuts at natural breaks so compression quality is unaffected. + * + * Empirically measured on the TinyBERT meetingbank model: o200k→wordpiece + * expansion ≈ 1.09x, so cap 450 → max ~494 wordpiece (incl. [CLS]/[SEP]), + * while cap 470 → ~514 and overflows the position-embedding table. + */ +const MAX_SEG_TOKENS = 450; + +async function compressSegmented( + // eslint-disable-next-line @typescript-eslint/no-explicit-any + compressor: any, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + oai: any, + text: string, + rate: number +): Promise { + const tokens = oai.encode(text); + if (tokens.length <= MAX_SEG_TOKENS) { + return compressor.compress(text, { rate }); + } + + const segments: string[] = []; + const END_TOKENS = new Set([".", "\n", "!", "?", ";"]); + let st = 0; + while (st < tokens.length) { + let ed = Math.min(st + MAX_SEG_TOKENS, tokens.length); + // Backtrack to the last sentence boundary inside the segment (≤ 80 tokens back). + for (let j = 0; j < Math.min(80, ed - st); j++) { + // js-tiktoken/lite exposes only encode/decode — decode a single-token slice. + const tok = oai.decode(tokens.slice(ed - 1 - j, ed - j)); + if (END_TOKENS.has(tok)) { + ed = ed - j; + break; + } + } + if (ed <= st) ed = Math.min(st + MAX_SEG_TOKENS, tokens.length); // no boundary — hard cut + segments.push(oai.decode(tokens.slice(st, ed))); + st = ed; + } + + const out: string[] = []; + for (const seg of segments) { + out.push(await compressor.compress(seg, { rate })); + } + return out.join("\n"); } if (parentPort) { @@ -104,9 +165,9 @@ if (parentPort) { }); } - const compressor = await pending; + const { compressor, oai } = await pending; const rate = typeof msg.compressionRate === "number" ? msg.compressionRate : 0.5; - const out: string = await compressor.compress(text, { rate }); + const out: string = await compressSegmented(compressor, oai, text, rate); parentPort!.postMessage({ id, ok: true, text: out }); } catch { diff --git a/open-sse/services/compression/engines/session-dedup/index.ts b/open-sse/services/compression/engines/session-dedup/index.ts index 0faafbb5a0..67424e1662 100644 --- a/open-sse/services/compression/engines/session-dedup/index.ts +++ b/open-sse/services/compression/engines/session-dedup/index.ts @@ -47,14 +47,19 @@ const DEFAULT_MIN_BLOCK_CHARS = 80; /** Minimum number of lines a block must span to be a dedup candidate. */ const MIN_BLOCK_LINES = 3; /** - * Request-wide ceiling for the suffix strings materialized by the exact pass. - * 32 MiB keeps ordinary sessions byte-identical while preventing line-rich inputs - * from retaining a quadratic graph of suffix copies. + * O(n²) guard for {@link findSuffixBlocks} (OOM incident): a single message with + * thousands of lines otherwise generates one full-length suffix string PER line, + * all retained at once. A real agent conversation embedding a large + * line-numbered file view (e.g. a tool result pasting a multi-thousand-line + * file back into the chat) drove ~1.7GB of live suffix strings and OOM-killed + * the 2GB heap (heap snapshot confirmed 6801 `{ block }` objects). These bound + * both the number of suffix starts scanned + * and the total bytes of retained blocks, so memory is O(budget) instead of O(n²). + * Dedup is best-effort — skipping the tail only forgoes some compression, never + * changes output correctness. */ -const MAX_SUFFIX_WORK_CHARS = 32 * 1024 * 1024; -const SUFFIX_WORK_BUDGET_WARNING = "session-dedup: skipped (suffix work budget exceeded)"; - -type SuffixWorkBudget = { remaining: number }; +const MAX_SUFFIX_STARTS = 2000; +const MAX_TOTAL_BLOCK_BYTES = 8 * 1024 * 1024; // ─── hash helper (SHA-256 prefix, collision-resistant) ─────────────────────── @@ -67,24 +72,6 @@ function hashBlock(text: string): string { // ─── suffix-block extraction ────────────────────────────────────────────────── -/** - * Reserves the characters that findSuffixBlocks() would materialize for one text. - * The scan observes line starts without splitting or constructing any suffix strings. - */ -function reserveSuffixWork(text: string, passCount: number, budget: SuffixWorkBudget): boolean { - let start = 0; - while (start <= text.length) { - const suffixChars = (text.length - start) * passCount; - if (suffixChars > budget.remaining) return false; - budget.remaining -= suffixChars; - - const nextNewline = text.indexOf("\n", start); - if (nextNewline === -1) break; - start = nextNewline + 1; - } - return true; -} - /** * For each starting line position, emit the suffix block `lines[start..end]` * (i.e. from `start` to the end of the line array). This ensures that any @@ -102,12 +89,19 @@ function findSuffixBlocks( const seen = new Set(); const results: Array<{ block: string; startLine: number }> = []; - for (let start = 0; start < n; start++) { + // O(n²) guard (#OOM): cap the number of suffix starts and the total retained + // block bytes so a huge message can't materialize thousands of full-length + // suffix strings at once. See MAX_SUFFIX_STARTS / MAX_TOTAL_BLOCK_BYTES. + const maxStarts = Math.min(n, MAX_SUFFIX_STARTS); + let totalBlockBytes = 0; + for (let start = 0; start < maxStarts; start++) { const block = lines.slice(start).join("\n"); const blockLines = n - start; if (blockLines >= MIN_BLOCK_LINES && block.length >= minBlockChars && !seen.has(block)) { seen.add(block); results.push({ block, startLine: start }); + totalBlockBytes += block.length; + if (totalBlockBytes >= MAX_TOTAL_BLOCK_BYTES) break; } } return results; @@ -145,9 +139,7 @@ function dedupeWithinMessage( for (const { block } of sortedBlocks) { // Only dedup blocks that appear 2+ times in the text. - const occurrences = ( - result.match(new RegExp(block.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"), "g")) || [] - ).length; + const occurrences = (result.match(new RegExp(block.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"), "g")) || []).length; if (occurrences < 2) continue; const sha = hashBlock(block); @@ -269,7 +261,7 @@ type MessageLike = { function processMessages( messages: MessageLike[], minBlockChars: number -): { messages: MessageLike[]; dedupCount: number; suffixWorkBudgetExceeded: boolean } { +): { messages: MessageLike[]; dedupCount: number } { // Collect (msgIdx, text) for non-system string-content messages. // For multipart, index each text part separately. const msgTexts: Array<{ msgIdx: number; text: string }> = []; @@ -291,24 +283,13 @@ function processMessages( } if (msgTexts.length === 0) { - return { messages, dedupCount: 0, suffixWorkBudgetExceeded: false }; - } - - // Single-message exact dedup enumerates suffixes once; cross-message dedup does so - // in both passes. Reserve the request-wide work up front so no quadratic suffix graph - // is partially materialized before the engine decides to fail open. - const suffixWorkBudget: SuffixWorkBudget = { remaining: MAX_SUFFIX_WORK_CHARS }; - const passCount = msgTexts.length === 1 ? 1 : 2; - for (const { text } of msgTexts) { - if (!reserveSuffixWork(text, passCount, suffixWorkBudget)) { - return { messages, dedupCount: 0, suffixWorkBudgetExceeded: true }; - } + return { messages, dedupCount: 0 }; } const { deduped, dedupCount } = dedupMessageTexts(msgTexts, minBlockChars); if (dedupCount === 0) { - return { messages, dedupCount: 0, suffixWorkBudgetExceeded: false }; + return { messages, dedupCount: 0 }; } const result = messages.map((msg, i) => { @@ -337,7 +318,7 @@ function processMessages( return { ...msg }; }); - return { messages: result, dedupCount, suffixWorkBudgetExceeded: false }; + return { messages: result, dedupCount }; } // ─── schema & validation ────────────────────────────────────────────────────── @@ -383,8 +364,7 @@ function validateSessionDedupConfig(config: Record): EngineVali const f = config["fuzzy"]; if (typeof f === "object" && f !== null) { const fe = (f as Record)["enabled"]; - if (fe !== undefined && typeof fe !== "boolean") - errors.push("fuzzy.enabled must be a boolean"); + if (fe !== undefined && typeof fe !== "boolean") errors.push("fuzzy.enabled must be a boolean"); } else if (typeof f !== "boolean") { errors.push("fuzzy must be an object { enabled } or a boolean"); } @@ -435,18 +415,10 @@ export const sessionDedupEngine: CompressionEngine = { } const start = performance.now(); - const { - messages: exactMessages, - dedupCount, - suffixWorkBudgetExceeded, - } = processMessages(messages as MessageLike[], minBlockChars); - - if (suffixWorkBudgetExceeded) { - const durationMs = Math.round(performance.now() - start); - const stats = createCompressionStats(body, body, "stacked", [], undefined, durationMs); - stats.validationWarnings = [SUFFIX_WORK_BUDGET_WARNING]; - return { body, compressed: false, stats }; - } + const { messages: exactMessages, dedupCount } = processMessages( + messages as MessageLike[], + minBlockChars + ); const { messages: finalMessages, fuzzyCount } = runFuzzyPass( exactMessages, diff --git a/open-sse/services/compression/languageDetector.ts b/open-sse/services/compression/languageDetector.ts index bbd4a79f83..9e1851443c 100644 --- a/open-sse/services/compression/languageDetector.ts +++ b/open-sse/services/compression/languageDetector.ts @@ -1,4 +1,5 @@ const LANGUAGE_HINTS: Record = { + it: [/\b(?:perche|perché|pero|però|cioe|cioè|quindi|potresti|vorrei|adesso|errore|grazie|devo|voglio|questo|quello|anche|sono|molto)\b/i], "pt-BR": [/\b(?:voce|você|preciso|arquivo|codigo|código|erro|falha|obrigado)\b/i], // NOTE: English-ambiguous words are intentionally excluded — "error" (es) and // "configuration" (fr) are identical in English and would misclassify English text. @@ -6,6 +7,7 @@ const LANGUAGE_HINTS: Record = { es: [/\b(?:necesito|archivo|codigo|código|fallo|gracias|puedes)\b/i], de: [/\b(?:ich|datei|fehler|bitte|kannst|konfiguration|danke)\b/i], fr: [/\b(?:fichier|erreur|merci|peux|besoin)\b/i], + ru: [/\b(?:\u044d\u0442\u043e|\u0447\u0442\u043e|\u043a\u0430\u043a|\u0435\u0441\u043b\u0438|\u0447\u0442\u043e\u0431\u044b|\u043a\u043e\u0442\u043e\u0440\u044b\u0439|\u043c\u043e\u0436\u0435\u0442|\u043d\u0443\u0436\u043d\u043e|\u0435\u0441\u0442\u044c|\u0431\u044b\u043b\u043e|\u0431\u0443\u0434\u0435\u0442|\u043c\u043e\u0436\u043d\u043e|\u0434\u043e\u043b\u0436\u0435\u043d|\u0444\u0430\u0439\u043b|\u043e\u0448\u0438\u0431\u043a\u0430|\u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430|\u0434\u0430\u043d\u043d\u044b\u0435)\b/i, /[\u0430-\u044f\u0451]/i], ja: [/[\u3040-\u30ff]/], id: [/\b(?:saya|kamu|anda|dengan|untuk|yang|tidak|bisa|terima\s+kasih|dari)\b/i], }; diff --git a/open-sse/services/compression/rules/it/context.json b/open-sse/services/compression/rules/it/context.json new file mode 100644 index 0000000000..745b6d0116 --- /dev/null +++ b/open-sse/services/compression/rules/it/context.json @@ -0,0 +1,70 @@ +{ + "language": "it", + "category": "context", + "rules": [ + { + "name": "it_context_setup", + "pattern": "\\b(?:ecco (?:qui )?il codice|questo è il codice|qui sotto (?:c'è |trovi )?il codice|di seguito il codice|ti allego il codice)\\b\\s*[:.]?\\s*", + "replacement": "Codice:", + "context": "user", + "category": "context", + "minIntensity": "lite" + }, + { + "name": "it_intent", + "pattern": "\\b(?:il mio obiettivo è|quello che (?:mi serve|voglio|devo fare) è|quello che sto cercando di fare è|l'idea è (?:quella di |))\\b\\s*", + "replacement": "Obiettivo:", + "context": "user", + "category": "context", + "minIntensity": "lite" + }, + { + "name": "it_error_report", + "pattern": "\\b(?:mi (?:dà|da) (?:questo |il seguente |)errore|ricevo (?:questo |il seguente |)errore|ottengo (?:questo |il seguente |)errore|l'errore che (?:mi dà|ricevo) è)\\b\\s*[:.]?\\s*", + "replacement": "Errore:", + "context": "user", + "category": "context", + "minIntensity": "lite" + }, + { + "name": "it_expected_behavior", + "pattern": "\\b(?:quello che mi aspetto è|dovrebbe (?:invece |)(?:fare|succedere|restituire)|il comportamento atteso è)\\b\\s*[:.]?\\s*", + "replacement": "Atteso:", + "context": "user", + "category": "context", + "minIntensity": "lite" + }, + { + "name": "it_already_tried", + "pattern": "\\b(?:ho (?:già |)provato a|ho tentato di|ho cercato di)\\b\\s*", + "replacement": "Provato:", + "context": "user", + "category": "context", + "minIntensity": "lite" + }, + { + "name": "it_question_directive", + "pattern": "\\b(?:mi (?:sapresti |sai |puoi |)dire (?:se|come|cosa|quando|perché)|(?:sai|sapresti) (?:dirmi )?(?:se|come|cosa|quando|perché))\\b\\s*", + "replacement": "", + "context": "user", + "category": "context", + "minIntensity": "lite" + }, + { + "name": "it_environment_preamble", + "pattern": "\\b(?:sto (?:lavorando|usando|utilizzando)|nel mio (?:progetto|sistema|ambiente))\\b\\s*", + "replacement": "", + "context": "user", + "category": "context", + "minIntensity": "full" + }, + { + "name": "it_scope_note", + "pattern": "\\b(?:tieni (?:presente|conto) che|considera che|nota che|da notare che)\\b\\s*", + "replacement": "NB:", + "context": "all", + "category": "context", + "minIntensity": "lite" + } + ] +} diff --git a/open-sse/services/compression/rules/it/dedup.json b/open-sse/services/compression/rules/it/dedup.json new file mode 100644 index 0000000000..8513e486d1 --- /dev/null +++ b/open-sse/services/compression/rules/it/dedup.json @@ -0,0 +1,38 @@ +{ + "language": "it", + "category": "dedup", + "rules": [ + { + "name": "it_repeated_context", + "pattern": "\\b(?:come (?:ti )?(?:ho )?(?:già |)(?:detto|accennato|scritto|spiegato) (?:prima|sopra|in precedenza)|come dicevo|come sopra|come menzionato)\\b[,.]?\\s*", + "replacement": "Vedi sopra. ", + "context": "all", + "category": "dedup", + "minIntensity": "lite" + }, + { + "name": "it_repeated_question", + "pattern": "\\b(?:stessa domanda di prima|te l'ho già chiesto|è la stessa domanda|come chiedevo prima)\\b[,.]?\\s*", + "replacement": "[stessa domanda] ", + "context": "user", + "category": "dedup", + "minIntensity": "lite" + }, + { + "name": "it_restating", + "pattern": "\\b(?:in altre parole|detto altrimenti|ovvero|vale a dire|cioè per essere chiari)\\b[,:]?\\s*", + "replacement": "cioè ", + "context": "all", + "category": "dedup", + "minIntensity": "full" + }, + { + "name": "it_recap_preamble", + "pattern": "\\b(?:ricapitolando|per ricapitolare|facciamo il punto|riepilogo)\\b[,:]?\\s*", + "replacement": "", + "context": "assistant", + "category": "dedup", + "minIntensity": "full" + } + ] +} diff --git a/open-sse/services/compression/rules/it/filler.json b/open-sse/services/compression/rules/it/filler.json new file mode 100644 index 0000000000..62649d7663 --- /dev/null +++ b/open-sse/services/compression/rules/it/filler.json @@ -0,0 +1,94 @@ +{ + "language": "it", + "category": "filler", + "rules": [ + { + "name": "it_polite_framing", + "pattern": "\\b(?:per favore|per cortesia|ti (?:pre|)gherei di|potresti|puoi|riusciresti a|ti dispiacerebbe|se puoi|se ti va|quando puoi|gentilmente)\\b\\s*", + "replacement": "", + "context": "all", + "category": "filler", + "minIntensity": "lite" + }, + { + "name": "it_pleasantries", + "pattern": "\\b(?:ciao|buongiorno|buonasera|buon pomeriggio|salve|grazie mille|grazie tante|ti ringrazio|grazie)\\b[,.!?\\s]*", + "replacement": "", + "context": "all", + "category": "filler", + "minIntensity": "lite" + }, + { + "name": "it_hedging", + "pattern": "\\b(?:credo che|penso che|mi sembra che|mi pare che|direi che|secondo me|a mio (?:parere|avviso)|forse|magari|probabilmente|presumibilmente|verosimilmente)\\b\\s*", + "replacement": "", + "context": "all", + "category": "filler", + "minIntensity": "lite" + }, + { + "name": "it_filler_adverbs", + "pattern": "\\b(?:sostanzialmente|essenzialmente|fondamentalmente|praticamente|in realtà|in effetti|letteralmente|semplicemente|diciamo|insomma|comunque|appunto|ovviamente|chiaramente)\\b\\s*", + "replacement": "", + "context": "all", + "category": "filler", + "minIntensity": "lite" + }, + { + "name": "it_self_reference", + "pattern": "^(?:sto cercando di|vorrei|volevo|avrei bisogno di|ho bisogno di|mi servirebbe|mi serve|vorrei sapere se|volevo sapere se|voglio)\\b\\s*", + "replacement": "", + "context": "user", + "category": "filler", + "minIntensity": "lite" + }, + { + "name": "it_verbose_request", + "pattern": "\\b(?:potresti spiegarmi|puoi spiegarmi|mi spieghi|mi puoi spiegare|potresti dettagliare|puoi dettagliare|mi sapresti dire|sapresti dirmi|mi dici)\\b\\s*", + "replacement": "spiega ", + "context": "user", + "category": "filler", + "minIntensity": "lite" + }, + { + "name": "it_assistant_servility", + "pattern": "\\b(?:certamente|assolutamente|volentieri|con piacere|sarei felice di aiutarti|sono felice di aiutarti|ottima domanda|bella domanda|buona domanda)\\b[,.!]?\\s*", + "replacement": "", + "context": "assistant", + "category": "filler", + "minIntensity": "lite" + }, + { + "name": "it_assistant_preamble", + "pattern": "^(?:ecco|ecco qui|ecco a te|allora|dunque|bene)\\b[,:]?\\s*", + "replacement": "", + "context": "assistant", + "category": "filler", + "minIntensity": "lite" + }, + { + "name": "it_closing_offer", + "pattern": "\\b(?:fammi sapere se (?:hai bisogno|ti serve|vuoi)[^.!?]*|se hai (?:altre |ulteriori )?(?:domande|dubbi)[^.!?]*|spero (?:che )?(?:questo )?(?:ti )?(?:sia (?:stato )?d'aiuto|aiuti)[^.!?]*)[.!?]\\s*", + "replacement": "", + "context": "assistant", + "category": "filler", + "minIntensity": "lite" + }, + { + "name": "it_apology", + "pattern": "\\b(?:mi scuso per|scusa per|chiedo scusa per|mi dispiace per)\\b[^.!?]*[.!?]\\s*", + "replacement": "", + "context": "assistant", + "category": "filler", + "minIntensity": "full" + }, + { + "name": "it_softeners", + "pattern": "\\b(?:un attimo|un momento|se non ti dispiace|se non è troppo disturbo|se possibile)\\b[,.]?\\s*", + "replacement": "", + "context": "all", + "category": "filler", + "minIntensity": "lite" + } + ] +} diff --git a/open-sse/services/compression/rules/it/structural.json b/open-sse/services/compression/rules/it/structural.json new file mode 100644 index 0000000000..1c87e76d3d --- /dev/null +++ b/open-sse/services/compression/rules/it/structural.json @@ -0,0 +1,102 @@ +{ + "language": "it", + "category": "structural", + "rules": [ + { + "name": "it_purpose", + "pattern": "\\b(?:al fine di|allo scopo di|con l'obiettivo di|in modo da poter|in modo da|così da|in maniera tale da)\\b\\s*", + "replacement": "per ", + "context": "all", + "category": "structural", + "minIntensity": "lite" + }, + { + "name": "it_causal", + "pattern": "\\b(?:a causa del fatto che|per il fatto che|dal momento che|visto che|dato che|in quanto)\\b\\s*", + "replacement": "perché ", + "context": "all", + "category": "structural", + "minIntensity": "lite" + }, + { + "name": "it_connectors", + "pattern": "\\b(?:inoltre|in aggiunta|per di più|d'altra parte|d'altro canto|oltre a ciò)\\b[,]?\\s*", + "replacement": "anche ", + "context": "all", + "category": "structural", + "minIntensity": "lite" + }, + { + "name": "it_emphasis", + "pattern": "\\b(?:molto|davvero|veramente|estremamente|parecchio|piuttosto|abbastanza|super)\\s+(?=[a-zàèéìòùA-Z])", + "replacement": "", + "context": "all", + "category": "structural", + "minIntensity": "full" + }, + { + "name": "it_redundant_phrasing", + "pattern": "\\bnel caso in cui\\b", + "replacement": "se", + "context": "all", + "category": "structural", + "minIntensity": "lite" + }, + { + "name": "it_time_redundancy", + "pattern": "\\b(?:nel momento in cui|nell'istante in cui|nel periodo in cui)\\b", + "replacement": "quando", + "context": "all", + "category": "structural", + "minIntensity": "lite" + }, + { + "name": "it_place_redundancy", + "pattern": "\\b(?:all'interno di|nell'ambito di|nel contesto di)\\b", + "replacement": "in", + "context": "all", + "category": "structural", + "minIntensity": "lite" + }, + { + "name": "it_recommendation", + "pattern": "\\b(?:ti (?:consiglierei|consiglio|suggerirei|suggerisco) di|sarebbe (?:meglio|opportuno|consigliabile)|converrebbe)\\b\\s*", + "replacement": "usa ", + "context": "assistant", + "category": "structural", + "minIntensity": "full" + }, + { + "name": "it_possibility", + "pattern": "\\b(?:è possibile che|potrebbe essere che|può darsi che)\\b\\s*", + "replacement": "forse ", + "context": "all", + "category": "structural", + "minIntensity": "full" + }, + { + "name": "it_necessity", + "pattern": "\\b(?:è necessario che|occorre che|bisogna che|è indispensabile che)\\b\\s*", + "replacement": "serve che ", + "context": "all", + "category": "structural", + "minIntensity": "lite" + }, + { + "name": "it_conclusion", + "pattern": "\\b(?:in conclusione|per concludere|riassumendo|in sintesi|tirando le somme)\\b[,:]?\\s*", + "replacement": "", + "context": "assistant", + "category": "structural", + "minIntensity": "full" + }, + { + "name": "it_double_negation", + "pattern": "\\bnon è (?:possibile|fattibile) (?:non |)\\b", + "replacement": "non si può ", + "context": "all", + "category": "structural", + "minIntensity": "full" + } + ] +} diff --git a/open-sse/services/compression/rules/it/ultra.json b/open-sse/services/compression/rules/it/ultra.json new file mode 100644 index 0000000000..6d8c486677 --- /dev/null +++ b/open-sse/services/compression/rules/it/ultra.json @@ -0,0 +1,106 @@ +{ + "language": "it", + "category": "ultra", + "rules": [ + { + "name": "it_articles", + "pattern": "\\b(?:[Ii]l|[Ll]o|[Ll]a|[Ii]|[Gg]li|[Ll]e|[Uu]n|[Uu]no|[Uu]na)\\s+(?=[a-zàèéìòù])", + "flags": "g", + "replacement": "", + "context": "all", + "category": "terse", + "minIntensity": "full" + }, + { + "name": "it_leader_phrases", + "pattern": "^(?:posso|possiamo|vado a|andiamo a|proviamo a|fammi|lasciami|si può)\\s+(?=[a-zàèéìòù])", + "replacement": "", + "context": "all", + "category": "terse", + "minIntensity": "full" + }, + { + "name": "it_ultra_database", + "pattern": "\\bbase(?:e|) dati\\b|\\bbase di dati\\b", + "replacement": "DB", + "context": "all", + "category": "terse", + "minIntensity": "full" + }, + { + "name": "it_ultra_config", + "pattern": "\\bconfigurazion(?:e|i)\\b", + "replacement": "config", + "context": "all", + "category": "terse", + "minIntensity": "full" + }, + { + "name": "it_ultra_function", + "pattern": "\\bfunzion(?:e|i)\\b", + "replacement": "fn", + "context": "all", + "category": "terse", + "minIntensity": "ultra" + }, + { + "name": "it_ultra_variable", + "pattern": "\\bvariabil(?:e|i)\\b", + "replacement": "var", + "context": "all", + "category": "terse", + "minIntensity": "ultra" + }, + { + "name": "it_ultra_application", + "pattern": "\\bapplicazion(?:e|i)\\b", + "replacement": "app", + "context": "all", + "category": "terse", + "minIntensity": "full" + }, + { + "name": "it_ultra_implementation", + "pattern": "\\bimplementazion(?:e|i)\\b", + "replacement": "impl", + "context": "all", + "category": "terse", + "minIntensity": "ultra" + }, + { + "name": "it_ultra_directory", + "pattern": "\\b(?:cartell(?:a|e)|director(?:y|ies))\\b", + "replacement": "dir", + "context": "all", + "category": "terse", + "minIntensity": "full" + }, + { + "name": "it_ultra_error", + "pattern": "\\bmessaggio di errore\\b", + "replacement": "errore", + "context": "all", + "category": "terse", + "minIntensity": "full" + }, + { + "name": "it_copula_drop", + "pattern": "\\b(?:che )?(?:è|sono) (?:un|una|il|la|lo|gli|le)\\s+(?=[a-zàèéìòù])", + "replacement": "", + "context": "all", + "category": "terse", + "minIntensity": "ultra" + }, + { + "name": "it_ultra_environment", + "pattern": "\\bambiente di (?:sviluppo|produzione)\\b", + "replacementMap": { + "ambiente di sviluppo": "dev", + "ambiente di produzione": "prod" + }, + "context": "all", + "category": "terse", + "minIntensity": "ultra" + } + ] +} diff --git a/open-sse/services/compression/rules/ru/context.json b/open-sse/services/compression/rules/ru/context.json new file mode 100644 index 0000000000..26534688ff --- /dev/null +++ b/open-sse/services/compression/rules/ru/context.json @@ -0,0 +1,38 @@ +{ + "language": "ru", + "category": "context", + "rules": [ + { + "name": "subject_omission", + "pattern": "^(?:Я |Мы |Вы )(?:можем|должны|будем|хотим|нужно)\\b\\s*", + "replacement": "", + "context": "all", + "category": "context", + "minIntensity": "full" + }, + { + "name": "known_fact_hedging", + "pattern": "(?<=\\.)\\s*(?:Возможно|Наверное|Может быть),\\s+", + "replacement": "", + "context": "assistant", + "category": "context", + "minIntensity": "full" + }, + { + "name": "redundant_clarification", + "pattern": "\\b(?:как я уже говорил|как уже упоминалось|как было сказано)\\b[,.!?\\s]*", + "replacement": "", + "context": "all", + "category": "context", + "minIntensity": "full" + }, + { + "name": "obvious_continuation", + "pattern": "\\b(?:далее|затем|после этого|в итоге)\\b[,.!?\\s]*", + "replacement": "", + "context": "all", + "category": "context", + "minIntensity": "ultra" + } + ] +} diff --git a/open-sse/services/compression/rules/ru/dedup.json b/open-sse/services/compression/rules/ru/dedup.json new file mode 100644 index 0000000000..6678979858 --- /dev/null +++ b/open-sse/services/compression/rules/ru/dedup.json @@ -0,0 +1,30 @@ +{ + "language": "ru", + "category": "dedup", + "rules": [ + { + "name": "thought_repetition", + "pattern": "([^.!?]+[.!?])\\s+\\1", + "replacement": "$1", + "context": "all", + "category": "dedup", + "minIntensity": "full" + }, + { + "name": "word_duplication", + "pattern": "\\b(\\w+)\\s+\\1\\b", + "replacement": "$1", + "context": "all", + "category": "dedup", + "minIntensity": "lite" + }, + { + "name": "synonymous_repetition", + "pattern": "\\b(проблема|ошибка)\\b[^.!?]*\\b(проблема|ошибка)\\b", + "replacement": "$1", + "context": "all", + "category": "dedup", + "minIntensity": "full" + } + ] +} diff --git a/open-sse/services/compression/rules/ru/filler.json b/open-sse/services/compression/rules/ru/filler.json new file mode 100644 index 0000000000..aa28ae6153 --- /dev/null +++ b/open-sse/services/compression/rules/ru/filler.json @@ -0,0 +1,86 @@ +{ + "language": "ru", + "category": "filler", + "rules": [ + { + "name": "pleasantries", + "pattern": "\\b(?:конечно|с радостью|рад помочь|могу помочь|обязательно|безусловно|разумеется)\\b[,.!?\\s]*", + "replacement": "", + "context": "all", + "category": "filler", + "minIntensity": "lite" + }, + { + "name": "polite_framing", + "pattern": "\\b(?:пожалуйста|если хотите|если можно|будьте добры|будьте любезны|прошу вас)\\b[,.!?\\s]*", + "replacement": "", + "context": "all", + "category": "filler", + "minIntensity": "lite" + }, + { + "name": "verbal_wrapping", + "pattern": "\\b(?:давайте разберём|давайте посмотрим|попробуем разобраться|постараюсь помочь)\\b[,.!?\\s]*", + "replacement": "", + "context": "assistant", + "category": "filler", + "minIntensity": "lite" + }, + { + "name": "hedging", + "pattern": "\\b(?:возможно|наверное|может быть|скорее всего|вероятно|видимо|похоже)\\b[,.!?\\s]*", + "replacement": "", + "context": "all", + "category": "filler", + "minIntensity": "lite" + }, + { + "name": "filler_adverbs", + "pattern": "\\b(?:в целом|на самом деле|в принципе|как правило|по сути|фактически|буквально)\\b[,.!?\\s]*", + "replacement": "", + "context": "all", + "category": "filler", + "minIntensity": "lite" + }, + { + "name": "empty_qualifiers", + "pattern": "\\b(?:удобный|хороший|эффективный|мощный|отличный|прекрасный)(?!\\s+(?:вариант|способ|решение|метод|инструмент))\\b", + "replacement": "", + "context": "all", + "category": "filler", + "minIntensity": "lite" + }, + { + "name": "redundant_openers", + "pattern": "^(?:Привет|Здравствуйте|Добрый день|Доброе утро|Добрый вечер)\\s*[,.!?\\s]?\\s*", + "replacement": "", + "context": "user", + "category": "filler", + "minIntensity": "lite" + }, + { + "name": "excessive_gratitude", + "pattern": "\\b(?:Большое спасибо|Огромное спасибо|Спасибо заранее|Заранее благодарю|Очень признателен)\\b[,.!?\\s]*", + "replacement": "", + "context": "all", + "category": "filler", + "minIntensity": "lite" + }, + { + "name": "softeners", + "pattern": "\\b(?:немного|немножко|чуть-чуть|слегка|несколько|как-то)\\b\\s*", + "replacement": "", + "context": "all", + "category": "filler", + "minIntensity": "lite" + }, + { + "name": "assistant_fillers", + "pattern": "^(?:Вот|Ниже|Это|Здесь)\\s+(?:есть|находится)?\\s*", + "replacement": "", + "context": "assistant", + "category": "filler", + "minIntensity": "lite" + } + ] +} diff --git a/open-sse/services/compression/rules/ru/structural.json b/open-sse/services/compression/rules/ru/structural.json new file mode 100644 index 0000000000..78bf745f29 --- /dev/null +++ b/open-sse/services/compression/rules/ru/structural.json @@ -0,0 +1,101 @@ +{ + "language": "ru", + "category": "structural", + "rules": [ + { + "name": "problem_phrasing", + "pattern": "\\b(?:проблема заключается в том, что|дело в том, что|суть в том, что)\\b\\s*", + "replacement": "проблема: ", + "context": "all", + "category": "structural", + "minIntensity": "full" + }, + { + "name": "causality_verbose", + "pattern": "\\b(?:это приводит к тому, что|это означает, что|из этого следует, что)\\b\\s*", + "replacement": "→ ", + "context": "all", + "category": "structural", + "minIntensity": "full" + }, + { + "name": "purpose_phrases", + "pattern": "\\b(?:для того чтобы|с целью того чтобы)\\b\\s*", + "replacement": "чтобы ", + "context": "all", + "category": "structural", + "minIntensity": "lite" + }, + { + "name": "causality_phrases", + "pattern": "\\b(?:в связи с тем, что|по причине того, что|ввиду того, что)\\b\\s*", + "replacement": "из-за ", + "context": "all", + "category": "structural", + "minIntensity": "full" + }, + { + "name": "concession_phrases", + "pattern": "\\b(?:несмотря на то, что|хотя и)\\b\\s*", + "replacement": "хотя ", + "context": "all", + "category": "structural", + "minIntensity": "lite" + }, + { + "name": "note_phrases", + "pattern": "\\b(?:стоит отметить, что|следует иметь в виду, что|важно понимать, что|необходимо учитывать, что)\\b\\s*", + "replacement": "", + "context": "all", + "category": "structural", + "minIntensity": "full" + }, + { + "name": "redundant_directive", + "pattern": "\\b(?:важно помнить|не забывайте|помните о том)\\b\\s*", + "replacement": "", + "context": "all", + "category": "structural", + "minIntensity": "full" + }, + { + "name": "approximation", + "pattern": "\\b(?:примерно|приблизительно)\\b\\s*", + "replacement": "≈ ", + "context": "all", + "category": "structural", + "minIntensity": "full" + }, + { + "name": "forbidden_abbreviations_dots", + "pattern": "\\b(?:т\\.к\\.|т\\.е\\.|и т\\.д\\.|и т\\.п\\.|см\\.|напр\\.|и др\\.|в т\\.ч\\.)\\b", + "replacement": "", + "replacementMap": { + "т.к.": "так как", + "т.е.": "то есть", + "и т.д.": "", + "и т.п.": "", + "см.": "см", + "напр.": "например", + "и др.": "", + "в т.ч.": "" + }, + "context": "all", + "category": "structural", + "minIntensity": "lite" + }, + { + "name": "forbidden_abbreviations_dash", + "pattern": "\\b(?:кол-во|к-рый|св-во)\\b", + "replacement": "", + "replacementMap": { + "кол-во": "количество", + "к-рый": "который", + "св-во": "свойство" + }, + "context": "all", + "category": "structural", + "minIntensity": "lite" + } + ] +} diff --git a/open-sse/services/compression/rules/ru/ultra.json b/open-sse/services/compression/rules/ru/ultra.json new file mode 100644 index 0000000000..6c9d3e6f32 --- /dev/null +++ b/open-sse/services/compression/rules/ru/ultra.json @@ -0,0 +1,46 @@ +{ + "language": "ru", + "category": "ultra", + "rules": [ + { + "name": "ultra_compression_conjunctions", + "pattern": "\\b(?:однако|тем не менее|в то время как)\\b\\s*", + "replacement": "—", + "context": "all", + "category": "ultra", + "minIntensity": "ultra" + }, + { + "name": "ultra_compression_articles", + "pattern": "\\b(?:является|представляет собой)\\b\\s*", + "replacement": "—", + "context": "all", + "category": "ultra", + "minIntensity": "ultra" + }, + { + "name": "ultra_compression_verbs", + "pattern": "\\b(?:необходимо|требуется|нужно)\\b\\s*", + "replacement": "", + "context": "all", + "category": "ultra", + "minIntensity": "ultra" + }, + { + "name": "ultra_punctuation", + "pattern": "[,:;]\\s+", + "replacement": " ", + "context": "all", + "category": "ultra", + "minIntensity": "ultra" + }, + { + "name": "ultra_lowercase", + "pattern": "(?<=\\.)\\s+([А-ЯЁ])", + "replacement": " $1", + "context": "all", + "category": "ultra", + "minIntensity": "ultra" + } + ] +} diff --git a/open-sse/services/contextManager.ts b/open-sse/services/contextManager.ts index c6d51211f7..cb34af4018 100644 --- a/open-sse/services/contextManager.ts +++ b/open-sse/services/contextManager.ts @@ -254,7 +254,7 @@ function extractImageTokens(node: unknown, seen: Set): { node: unknown; * budget instead of measuring its base64 payload as raw text, then the * remainder of the structure is measured normally via the char/4 heuristic. */ -export function estimateTokens(text: string | object | null | undefined): number { +export function estimateTokens(text: unknown): number { if (!text) return 0; if (typeof text === "string") { return Math.ceil(text.length / CHARS_PER_TOKEN); diff --git a/open-sse/services/cursorSessionManager.ts b/open-sse/services/cursorSessionManager.ts index 95af2b491b..74358c03ad 100644 --- a/open-sse/services/cursorSessionManager.ts +++ b/open-sse/services/cursorSessionManager.ts @@ -192,6 +192,29 @@ export class CursorSessionManager { if (oldest) this.close(oldest); } + /** + * Find a session that has one of the specified tool call IDs pending. + * Only matches sessions in "awaiting_tool_result" state. + * Transitions the found session to "running" (same as acquire). + * This is used when the client doesn't provide conversation_id + * (OpenAI-compatible clients), so we match by content instead of key. + * Returns undefined if no session has any of the given IDs pending. + */ + findByToolCallIds(toolCallIds: string[]): CursorSession | undefined { + this.evictExpired(); + for (const id of toolCallIds) { + for (const session of this.sessions.values()) { + if (session.state === "awaiting_tool_result" && session.pendingToolCalls.has(id)) { + this.clearIdleTimer(session); + session.state = "running"; + session.lastActivityTs = Date.now(); + return session; + } + } + } + return undefined; + } + // ─── Test / introspection helpers ──────────────────────────────────────── size(): number { diff --git a/open-sse/services/errorClassifier.ts b/open-sse/services/errorClassifier.ts index 7f1ff1dece..71bc81f5eb 100644 --- a/open-sse/services/errorClassifier.ts +++ b/open-sse/services/errorClassifier.ts @@ -245,6 +245,20 @@ export function classifyProviderError( if (recoverableProject403) { return PROVIDER_ERROR_TYPES.PROJECT_ROUTE_ERROR; } + // #8813 — ChatGPT Web's Cloudflare Sentinel/Turnstile 403 is a TERMINAL + // block: the user's IP/session needs a browser Turnstile challenge, and + // retrying the same connection will keep 403ing. Classify as FORBIDDEN so + // the connection gets banned and combo routing falls back to other providers. + // Must be checked BEFORE the generic apikey-403→null return below, which + // is designed for normal API-key auth 403s that ARE recoverable. + if ( + bodyStr.includes("SENTINEL_BLOCKED") || + /\bSentinel\b[^\n]{0,80}\bblocked\b/i.test(bodyStr) || + /\bTurnstile required\b/i.test(bodyStr) + ) { + return PROVIDER_ERROR_TYPES.FORBIDDEN; + } + if (provider && getProviderCategory(provider) === "apikey") { return null; } diff --git a/open-sse/services/firecrawlQuotaFetcher.ts b/open-sse/services/firecrawlQuotaFetcher.ts index d86e1ad116..021ccedfc9 100644 --- a/open-sse/services/firecrawlQuotaFetcher.ts +++ b/open-sse/services/firecrawlQuotaFetcher.ts @@ -104,15 +104,48 @@ export function parseFirecrawlCreditUsage(data: unknown): FirecrawlQuota | null }; } +export function getFirecrawlBaseUrl(connection?: Record): string | null { + const envBase = process.env.FIRECRAWL_BASE_URL?.trim(); + if (envBase && !envBase.includes("api.firecrawl.dev")) { + return envBase.replace(/\/+$/, ""); + } + const providerData = toRecord(connection?.providerSpecificData); + const connBase = + typeof connection?.baseUrl === "string" ? connection.baseUrl : providerData?.baseUrl; + if (typeof connBase === "string" && connBase.trim() && !connBase.includes("api.firecrawl.dev")) { + return connBase.trim().replace(/\/+$/, ""); + } + return null; +} + export async function fetchFirecrawlQuota( connectionId: string, connection?: Record -): Promise { + // FirecrawlQuota, not the base QuotaInfo: every return here is a full credit + // breakdown (remainingCredits / planCredits / extraCreditsInferred / overPlan), + // and the narrower annotation made the custom-base literal below an excess- + // property error. FirecrawlQuota extends QuotaInfo, so callers are unaffected. +): Promise { const cached = quotaCache.get(connectionId); if (cached && Date.now() - cached.fetchedAt < CACHE_TTL_MS) { return cached.quota; } + const customBase = getFirecrawlBaseUrl(connection); + if (customBase) { + return { + used: 0, + total: 0, + percentUsed: 0, + resetAt: null, + remainingCredits: 0, + planCredits: 0, + extraCreditsInferred: 0, + overPlan: false, + limitReached: false, + }; + } + const apiKey = extractFirecrawlApiKey(connection); if (!apiKey) { quotaCache.set(connectionId, { quota: null, fetchedAt: Date.now() }); diff --git a/open-sse/services/fusion.ts b/open-sse/services/fusion.ts index dd92c3bdbc..767da61531 100644 --- a/open-sse/services/fusion.ts +++ b/open-sse/services/fusion.ts @@ -20,7 +20,7 @@ */ import { errorResponse, sanitizeErrorMessage } from "../utils/error.ts"; import { extractTextContent } from "../translator/helpers/geminiHelper.ts"; -import type { ComboLogger, HandleSingleModel } from "./combo/types.ts"; +import type { ComboLogger, HandleSingleModel, ResolvedComboTarget } from "./combo/types.ts"; // Fusion tuning. Overridable per-combo via combo.config.fusionTuning. export const FUSION_DEFAULTS = { @@ -108,10 +108,7 @@ export function appendUserTurn(body: Body, text: string): Body { } else if (Array.isArray(body.input)) { next.input = [...(body.input as unknown[]), { role: "user", content: text }]; } else if (Array.isArray(body.contents)) { - next.contents = [ - ...(body.contents as unknown[]), - { role: "user", parts: [{ text }] }, - ]; + next.contents = [...(body.contents as unknown[]), { role: "user", parts: [{ text }] }]; } else { next.messages = [{ role: "user", content: text }]; } @@ -159,10 +156,7 @@ export function isToolBearingRequest(body: Body): boolean { type Sentinel = { __timeout?: true; __error?: unknown }; // Resolve a Response (or sentinel) within ms; the loser keeps running but is ignored. -function withTimeout( - promise: Promise, - ms: number -): Promise { +function withTimeout(promise: Promise, ms: number): Promise { return new Promise((resolve) => { const t = setTimeout(() => resolve({ __timeout: true }), ms); Promise.resolve(promise) @@ -224,16 +218,33 @@ export function collectPanel( }); } +export type FusionModel = ResolvedComboTarget | string; + export type HandleFusionChatOptions = { body: Body; - models: string[]; + models: FusionModel[]; handleSingleModel: HandleSingleModel; log: ComboLogger; comboName?: string; judgeModel?: string | null; + judgeTarget?: ResolvedComboTarget | null; tuning?: FusionTuning | null; }; +function getFusionModelString(model: FusionModel): string { + return typeof model === "string" ? model : model.modelStr; +} + +function dispatchFusionModel( + handleSingleModel: HandleSingleModel, + body: Body, + model: FusionModel +): Promise { + return typeof model === "string" + ? handleSingleModel(body, model) + : handleSingleModel(body, model.modelStr, model); +} + /** * Handle a fusion combo: fan the prompt out to every panel model in parallel, * then a judge model synthesizes one final answer from all panel responses. @@ -260,6 +271,7 @@ export async function handleFusionChat({ log, comboName, judgeModel, + judgeTarget, tuning, }: HandleFusionChatOptions): Promise { const panel = Array.isArray(models) ? models.filter(Boolean) : []; @@ -269,7 +281,7 @@ export async function handleFusionChat({ // A single-model fusion has nothing to fuse — just answer directly. if (panel.length === 1) { - return handleSingleModel(body, panel[0]); + return dispatchFusionModel(handleSingleModel, body, panel[0]); } // Reject an oversized panel BEFORE fan-out (issue #1905): fanning out N @@ -296,10 +308,10 @@ export async function handleFusionChat({ // gracefully via the answers.length===1 branch below (issue #6454). const minPanel = Math.min(Math.max(1, cfg.minPanel), panel.length); const hasExplicitJudge = Boolean(judgeModel && judgeModel.trim()); - const judge = hasExplicitJudge ? (judgeModel as string).trim() : panel[0]; + const judge = hasExplicitJudge ? (judgeModel as string).trim() : getFusionModelString(panel[0]); log.info( "FUSION", - `Combo "${comboName ?? ""}" | panel=${panel.length} [${panel.join(", ")}] | judge=${judge} | quorum=${minPanel}` + `Combo "${comboName ?? ""}" | panel=${panel.length} [${panel.map(getFusionModelString).join(", ")}] | judge=${judge} | quorum=${minPanel}` ); // Tool-bearing requests get no value from panel synthesis — panel members @@ -322,8 +334,8 @@ export async function handleFusionChat({ void _tc; const panelBody: Body = { ...rest, stream: false }; const t0 = Date.now(); - const calls = panel.map((m) => - withTimeout(handleSingleModel(panelBody, m), cfg.panelHardTimeoutMs) + const calls = panel.map((target) => + withTimeout(dispatchFusionModel(handleSingleModel, panelBody, target), cfg.panelHardTimeoutMs) ); const settled = await collectPanel(calls, { ...cfg, minPanel }); log.info("FUSION", `fan-out collected in ${Date.now() - t0}ms`); @@ -333,7 +345,7 @@ export async function handleFusionChat({ const failures: Array<{ model: string; reason: string }> = []; for (let i = 0; i < settled.length; i++) { const res = settled[i]; - const model = panel[i]; + const model = getFusionModelString(panel[i]); if (!res) { log.warn("FUSION", `Panel ${model} dropped (straggler/timeout)`); failures.push({ model, reason: "straggler_dropped" }); @@ -399,10 +411,7 @@ export async function handleFusionChat({ // synthesizing from a single source through itself would be redundant — // answer directly with the lone survivor (issue #6454). if (!hasExplicitJudge) { - log.info( - "FUSION", - `Only ${answers[0].model} succeeded — answering directly (no fusion)` - ); + log.info("FUSION", `Only ${answers[0].model} succeeded — answering directly (no fusion)`); return handleSingleModel(body, answers[0].model); } // An explicit judgeModel IS configured: honor it even with a single @@ -421,8 +430,8 @@ export async function handleFusionChat({ // SURVIVOR: prefer panel[0] when it survived, otherwise the first survivor. const effectiveJudge = hasExplicitJudge ? judge - : answers.some((a) => a.model === panel[0]) - ? panel[0] + : answers.some((a) => a.model === getFusionModelString(panel[0])) + ? getFusionModelString(panel[0]) : answers[0].model; if (answers.length === 1) { @@ -435,5 +444,7 @@ export async function handleFusionChat({ // 4. Judge analyzes + writes one final answer (streams to client if requested). const judgeBody = appendUserTurn(body, buildJudgePrompt(answers)); log.info("FUSION", `Judging ${answers.length} answers with ${effectiveJudge}`); - return handleSingleModel(judgeBody, effectiveJudge); + return judgeTarget + ? handleSingleModel(judgeBody, judgeTarget.modelStr, judgeTarget) + : handleSingleModel(judgeBody, effectiveJudge); } diff --git a/open-sse/services/kiroModels.ts b/open-sse/services/kiroModels.ts index dade388504..5a64410fc4 100644 --- a/open-sse/services/kiroModels.ts +++ b/open-sse/services/kiroModels.ts @@ -56,6 +56,12 @@ function toNonEmptyString(value: unknown): string | null { return trimmed.length > 0 ? trimmed : null; } +export type KiroPromptCaching = { + supportsPromptCaching: boolean; + minimumTokensPerCacheCheckpoint: number | null; + maximumCacheCheckpointsPerRequest: number | null; +}; + export type KiroModel = { id: string; name: string; @@ -68,8 +74,28 @@ export type KiroModel = { rateMultiplier?: number; upstreamModelId?: string; description?: string; + promptCaching?: KiroPromptCaching; }; +function toNonNegativeInteger(value: unknown): number | null { + return typeof value === "number" && Number.isInteger(value) && value >= 0 ? value : null; +} + +function parsePromptCaching(value: unknown): KiroPromptCaching | undefined { + const promptCaching = asRecord(value); + if (typeof promptCaching.supportsPromptCaching !== "boolean") return undefined; + + return { + supportsPromptCaching: promptCaching.supportsPromptCaching, + minimumTokensPerCacheCheckpoint: toNonNegativeInteger( + promptCaching.minimumTokensPerCacheCheckpoint + ), + maximumCacheCheckpointsPerRequest: toNonNegativeInteger( + promptCaching.maximumCacheCheckpointsPerRequest + ), + }; +} + export type KiroModelsResult = { models: KiroModel[]; /** "api" = live discovery; "fallback" = static catalog (offline/unauthed/error). */ @@ -98,7 +124,8 @@ export function parseKiroModels(data: unknown): KiroModel[] { if (!id || seen.has(id)) continue; seen.add(id); const name = toNonEmptyString(item.modelName) || toNonEmptyString(item.name) || id; - models.push({ id, name, owned_by: "kiro" }); + const promptCaching = parsePromptCaching(item.promptCaching); + models.push({ id, name, owned_by: "kiro", ...(promptCaching && { promptCaching }) }); } return models; @@ -162,6 +189,7 @@ function expandKiroModels(data: unknown): KiroModel[] { const tokenLimits = asRecord(item.tokenLimits); const contextLength = Number(tokenLimits.maxInputTokens) || 200000; const rateMultiplier = Number(item.rateMultiplier); + const promptCaching = parsePromptCaching(item.promptCaching); for (const variant of buildVariants(upstreamId, display)) { if (seen.has(variant.id)) continue; @@ -172,6 +200,7 @@ function expandKiroModels(data: unknown): KiroModel[] { rateMultiplier: Number.isFinite(rateMultiplier) ? rateMultiplier : 1.0, upstreamModelId: upstreamId, description: toNonEmptyString(item.description) || "", + ...(promptCaching && { promptCaching }), }); } } diff --git a/open-sse/services/model.ts b/open-sse/services/model.ts index 3249c72b41..9465529a27 100644 --- a/open-sse/services/model.ts +++ b/open-sse/services/model.ts @@ -1,5 +1,6 @@ import { PROVIDER_ID_TO_ALIAS, PROVIDER_MODELS } from "../config/providerModels.ts"; import { resolveWildcardAlias } from "./wildcardRouter.ts"; +import { getRegisteredProviderEffortBaseModelId } from "../utils/registeredEffortVariants.ts"; type ProviderModelAliasMap = Record>; type ModelAliasValue = string | { provider?: string; model?: string }; @@ -16,6 +17,16 @@ type ResolvedModelTarget = { model: string | null; }; +// Client context-window tags are routing hints, not part of provider model IDs. +const CONTEXT_WINDOW_SUFFIX_RE = /\[(\d+)([kKmM])?\]\s*$/; + +export function stripContextWindowSuffix( + modelStr: string | null | undefined +): string | null | undefined { + if (typeof modelStr !== "string" || !modelStr) return modelStr; + return modelStr.replace(CONTEXT_WINDOW_SUFFIX_RE, "").trimEnd(); +} + // Derive alias→provider mapping from the single source of truth (PROVIDER_ID_TO_ALIAS) // This prevents the two maps from drifting out of sync const ALIAS_TO_PROVIDER_ID: Record = {}; @@ -43,6 +54,10 @@ ALIAS_TO_PROVIDER_ID["xiaomi"] = "xiaomi-mimo"; ALIAS_TO_PROVIDER_ID["llamacpp"] = "llama-cpp"; // agy/ is the short alias for antigravity provider. ALIAS_TO_PROVIDER_ID["agy"] = "antigravity"; +// aq/ is the user-visible prefix for the Amazon Q (AWS Builder ID) provider. +// The canonical provider ID is "amazon-q". Register it so parseModel("aq/") +// resolves provider = "amazon-q" instead of falling through to the identity fallback. +ALIAS_TO_PROVIDER_ID["aq"] = "amazon-q"; // Provider-scoped legacy model aliases. Used to normalize provider/model inputs // and keep backward compatibility when upstream IDs change. @@ -331,6 +346,48 @@ async function getActiveSyncedProvidersForModel(modelId: string) { } } +async function reconcileInferredProvidersWithActiveCatalog(providerIds: string[], modelId: string) { + const uniqueProviders = Array.from(new Set(providerIds)); + + try { + const { reconcileProvidersWithActiveSyncedCatalog } = + await import("@/lib/db/models/activeSyncedCatalog"); + + const reconciliations = await Promise.all( + uniqueProviders.map(async (provider) => { + const effortBaseModelId = getRegisteredProviderEffortBaseModelId(provider, modelId); + + const catalogModelId = effortBaseModelId ?? modelId; + + const reconciliation = await reconcileProvidersWithActiveSyncedCatalog( + [provider], + catalogModelId + ); + + return { + provider, + allowed: reconciliation.providers.includes(provider), + excluded: reconciliation.excludedProviders.includes(provider), + }; + }) + ); + + return { + providers: reconciliations + .filter((result) => result.allowed) + .map((result) => result.provider), + excludedProviders: reconciliations + .filter((result) => result.excluded) + .map((result) => result.provider), + }; + } catch { + return { + providers: uniqueProviders, + excludedProviders: [], + }; + } +} + function isTruthyEnv(value: string | undefined) { return typeof value === "string" && /^(1|true|yes|on)$/i.test(value.trim()); } @@ -428,12 +485,12 @@ export function parseModel(modelStr: string | null | undefined): ParsedModel { }; } - // Extract [1m] suffix before parsing provider/model + // Extract the legacy [1m] marker while stripping all client context tags. let extendedContext = false; - let cleanStr = modelStr; - if (cleanStr.endsWith("[1m]")) { + const cleanStripped = stripContextWindowSuffix(modelStr) as string; + let cleanStr = cleanStripped; + if (/\[1m\]\s*$/i.test(modelStr)) { extendedContext = true; - cleanStr = cleanStr.slice(0, -4); } cleanStr = cleanStr.trim(); @@ -587,19 +644,22 @@ async function resolveModelByProviderInference(modelId: string, extendedContext: }; } } - // #FIX: synced catalogs (populated from `/v1/models` per connection) can - // claim ownership of models the provider does not actually serve (e.g. a - // `kiro` upstream briefly advertising `claude-opus-5` before it was - // vendored into the registry). Without this filter the bare-routing path - // would forward traffic to providers that 404 on the upstream call. - // Auto-discovery still wins when no static registry entry exists for the - // model id — only entries that conflict with the static catalog are dropped. - const staticCatalogProviders = MODEL_TO_PROVIDERS.get(modelId) || []; - const validatedSyncedProviders = - staticCatalogProviders.length > 0 - ? activeSyncedProviders.filter((p) => staticCatalogProviders.includes(p)) - : activeSyncedProviders; - const providers = getInferredProvidersForModel(modelId, validatedSyncedProviders); + + const candidateProviders = getInferredProvidersForModel(modelId, activeSyncedProviders); + const { providers, excludedProviders } = await reconcileInferredProvidersWithActiveCatalog( + candidateProviders, + modelId + ); + + if (providers.length === 0 && excludedProviders.length > 0) { + return { + provider: null, + model: modelId, + extendedContext, + errorType: "model_not_found", + errorMessage: `Model '${modelId}' is not available in the active live catalog for provider(s): ${excludedProviders.join(", ")}.`, + }; + } const nonOpenAIProviders = providers.filter((p) => p !== "openai"); // Bare model IDs from Codex CLI do not preserve OmniRoute's `cx/` prefix. @@ -665,7 +725,9 @@ async function resolveModelByProviderInference(modelId: string, extendedContext: // Canonicalize candidates (deduplicate alias providers pointing to the same provider ID) const canonicalCandidates = Array.from( - new Set(candidatesToUse.map((p) => resolveProviderAlias(p)).filter((p): p is string => p !== null)) + new Set( + candidatesToUse.map((p) => resolveProviderAlias(p)).filter((p): p is string => p !== null) + ) ); // Filter candidates by active connections configured in the database @@ -674,6 +736,25 @@ async function resolveModelByProviderInference(modelId: string, extendedContext: activeCandidates = canonicalCandidates.filter((p) => activeProviders.has(p)); } + // An authoritative active live catalog excluded at least one static + // candidate, and none of the remaining static candidates has an active + // connection. Do not escape the live-catalog decision by selecting an + // unrelated inactive provider that happens to share the same static model id. + if ( + activeProviders && + activeProviders.size > 0 && + activeCandidates.length === 0 && + excludedProviders.length > 0 + ) { + return { + provider: null, + model: modelId, + extendedContext, + errorType: "model_not_found", + errorMessage: `Model '${modelId}' is not available in the active live catalog for provider(s): ${excludedProviders.join(", ")}.`, + }; + } + // Auto-pick: // 1. If active providers match, pick from active candidates (first active provider). // 2. If no active providers filter applied, but canonical candidates deduplicate to 1 provider, pick it. diff --git a/open-sse/services/newApiAggregatorQuotaFetcher.ts b/open-sse/services/newApiAggregatorQuotaFetcher.ts new file mode 100644 index 0000000000..cdcfca3274 --- /dev/null +++ b/open-sse/services/newApiAggregatorQuotaFetcher.ts @@ -0,0 +1,225 @@ +/** + * newApiAggregatorQuotaFetcher.ts — Generalized New-API / One-API / Sub2API + * Aggregator Balance Quota Fetcher + * + * Generalizes the AgentRouter (agentrouterQuotaFetcher.ts) balance detection + * so any OpenAI/Anthropic-compatible custom node pointing at a self-hosted + * New-API / One-API / Sub2API gateway can report its balance. + * + * New-API (QuantumNous/new-api, a fork of One API) exposes: + * + * GET {base}/api/user/self + * Authorization: Bearer {systemAccessToken} + * New-Api-User: {userId} + * -> { "data": { "quota": } } (raw New-API credit units) + * + * `quota_per_unit` (units per $1) defaults to 500000, overridable via + * `providerSpecificData.quotaPerUnit`. + * + * Credentials: the System Access Token + New-Api-User id are read from + * `connection.providerSpecificData.consoleApiKey` (reusing the existing generic + * field, same precedent as AgentRouter/Bailian) and + * `connection.providerSpecificData.newApiUserId` respectively. + * + * The `newApiAggregatorBalance` boolean flag in providerSpecificData must be + * `true` for the fetcher to activate — this is the opt-in toggle. + * + * Cache: in-memory TTL (60s), same pattern as sibling fetchers. + * + * Registration: this module exports fetchNewApiAggregatorQuota for dynamic + * dispatch; it does NOT self-register against a static provider key. + * Dynamic dispatch is handled by quotaPreflight.ts + quotaMonitor.ts. + */ + +import type { QuotaInfo } from "./quotaPreflight.ts"; +import { throttleQuotaFetch } from "./quotaFetchThrottle.ts"; +import { toNumber } from "@/shared/utils/numeric"; + +const SELF_PATH = "/api/user/self"; + +// New-API-wide default: units per $1. See #6850 — can be hardcoded rather +// than fetched from /api/status on every call. +const DEFAULT_QUOTA_PER_UNIT = 500_000; + +const CACHE_TTL_MS = 60_000; // 60 seconds + +export interface NewApiAggregatorQuota extends QuotaInfo { + rawQuota: number; + dollarBalance: number; + limitReached: boolean; +} + +interface CacheEntry { + quota: NewApiAggregatorQuota; + fetchedAt: number; +} + +const quotaCache = new Map(); + +const _cacheCleanup = setInterval(() => { + const now = Date.now(); + for (const [key, entry] of quotaCache) { + if (now - entry.fetchedAt > CACHE_TTL_MS * 5) { + quotaCache.delete(key); + } + } +}, 5 * 60_000); + +if (typeof _cacheCleanup === "object" && "unref" in _cacheCleanup) { + (_cacheCleanup as { unref?: () => void }).unref?.(); +} + +function toRecord(value: unknown): Record { + return value && typeof value === "object" && !Array.isArray(value) + ? (value as Record) + : {}; +} + +/** + * Strip trailing `/v1` (or `/v1/`) from a baseUrl so that node URLs like + * `https://host/v1` still hit `{host}/api/user/self` rather than + * `{host}/v1/api/user/self`. + */ +function stripV1Suffix(baseUrl: string): string { + return baseUrl.replace(/\/v1\/?$/, ""); +} + +function extractCredentials(connection?: Record): { + systemAccessToken: string | null; + userId: string | null; + baseUrl: string | null; + quotaPerUnit: number; + aggregatorFlag: boolean; +} { + const providerSpecificData = toRecord(connection?.providerSpecificData); + const systemAccessToken = + typeof providerSpecificData.consoleApiKey === "string" && + providerSpecificData.consoleApiKey.trim().length > 0 + ? providerSpecificData.consoleApiKey + : null; + const userId = + typeof providerSpecificData.newApiUserId === "string" && + providerSpecificData.newApiUserId.trim().length > 0 + ? providerSpecificData.newApiUserId + : null; + const rawBaseUrl = + typeof providerSpecificData.baseUrl === "string" && + providerSpecificData.baseUrl.trim().length > 0 + ? providerSpecificData.baseUrl.trim() + : null; + const baseUrl = rawBaseUrl ? stripV1Suffix(rawBaseUrl) : null; + + const rawQuotaPerUnit = toNumber(providerSpecificData.quotaPerUnit, 0); + const quotaPerUnit = rawQuotaPerUnit > 0 ? rawQuotaPerUnit : DEFAULT_QUOTA_PER_UNIT; + + const aggregatorFlag = providerSpecificData.newApiAggregatorBalance === true; + + return { systemAccessToken, userId, baseUrl, quotaPerUnit, aggregatorFlag }; +} + +function parseNewApiAggregatorQuotaResponse( + data: unknown, + quotaPerUnit: number +): NewApiAggregatorQuota | null { + const obj = toRecord(data); + const dataObj = toRecord(obj.data); + + const rawQuotaValue = "quota" in dataObj ? dataObj.quota : obj.quota; + if (rawQuotaValue === undefined) return null; + + const rawQuota = toNumber(rawQuotaValue, -1); + if (rawQuota < 0) return null; + + const dollarBalance = rawQuota / quotaPerUnit; + const limitReached = rawQuota <= 0; + // No known upstream "total" grant to compute a real percentage against — follow + // DeepSeek's boolean-availability precedent (0% used = has balance, 100% = exhausted). + const percentUsed = limitReached ? 1 : 0; + + return { + used: percentUsed * 100, + total: 100, + percentUsed, + resetAt: null, + rawQuota, + dollarBalance, + limitReached, + }; +} + +/** + * Fetch current quota for a New-API / One-API / Sub2API aggregator connection. + * + * @param connectionId - Connection ID from the DB (used to key the cache) + * @param connection - Optional connection object with providerSpecificData credentials + * @returns NewApiAggregatorQuota or null if fetch fails / no credentials / not opted in + */ +export async function fetchNewApiAggregatorQuota( + connectionId: string, + connection?: Record +): Promise { + const cached = quotaCache.get(connectionId); + if (cached && Date.now() - cached.fetchedAt < CACHE_TTL_MS) { + return cached.quota; + } + + const { systemAccessToken, userId, baseUrl, quotaPerUnit, aggregatorFlag } = + extractCredentials(connection); + + if (!aggregatorFlag) return null; + if (!systemAccessToken || !userId || !baseUrl) return null; + + const url = `${baseUrl}${SELF_PATH}`; + + try { + await throttleQuotaFetch(); + + const response = await fetch(url, { + method: "GET", + headers: { + Authorization: `Bearer ${systemAccessToken}`, + "New-Api-User": userId, + "Content-Type": "application/json", + Accept: "application/json", + }, + signal: AbortSignal.timeout(8_000), + }); + + if (response.status === 401 || response.status === 403) { + quotaCache.delete(connectionId); + return null; + } + + if (!response.ok) { + return null; + } + + const data = await response.json(); + const quota = parseNewApiAggregatorQuotaResponse(data, quotaPerUnit); + + if (!quota) return null; + + quotaCache.set(connectionId, { quota, fetchedAt: Date.now() }); + return quota; + } catch { + return null; + } +} + +/** + * Force-invalidate the cache for a connection. + */ +export function invalidateNewApiAggregatorQuotaCache(connectionId: string): void { + quotaCache.delete(connectionId); +} + +/** + * Check whether a connection has opted in to New-API aggregator balance + * detection. Used by the dynamic dispatch in quotaPreflight / quotaMonitor. + */ +export function isNewApiAggregatorBalanceConnection( + connection?: Record +): boolean { + const providerSpecificData = toRecord(connection?.providerSpecificData); + return providerSpecificData.newApiAggregatorBalance === true; +} diff --git a/open-sse/services/payloadRules.ts b/open-sse/services/payloadRules.ts index 12bb32151d..ad9a6415ad 100644 --- a/open-sse/services/payloadRules.ts +++ b/open-sse/services/payloadRules.ts @@ -85,7 +85,7 @@ function clonePayloadRulesConfig(config: PayloadRulesConfig): PayloadRulesConfig function normalizeModelSpecs(value: unknown): PayloadRuleModelSpec[] { return toArray(value) - .map((item) => { + .map((item): PayloadRuleModelSpec | null => { const name = typeof item?.name === "string" ? item.name.trim() : ""; const protocol = typeof item?.protocol === "string" ? item.protocol.trim() : ""; if (!name) return null; diff --git a/open-sse/services/pipeline.ts b/open-sse/services/pipeline.ts index 03dec5dc94..a759ddfeec 100644 --- a/open-sse/services/pipeline.ts +++ b/open-sse/services/pipeline.ts @@ -40,14 +40,30 @@ * a bad-request or auth error wastes quota and will never succeed. */ import { errorResponse } from "../utils/error.ts"; -import type { ComboLogger, HandleSingleModel } from "./combo/types.ts"; +import type { ComboLogger, HandleSingleModel, ResolvedComboTarget } from "./combo/types.ts"; // extractPanelText is a generic assistant-text extractor (OpenAI chat / Claude / // Gemini / Responses) — reused here to read each step's output, not fusion-specific. import { extractPanelText } from "./fusion.ts"; type Body = Record; -export type PipelineStep = { model: string; prompt?: string | null }; +export type PipelineStep = + | { + target: ResolvedComboTarget; + prompt?: string | null; + } + | { + model: string; + prompt?: string | null; + }; + +function getStepModel(step: PipelineStep): string { + return "target" in step ? step.target.modelStr : step.model; +} + +function getStepTarget(step: PipelineStep): ResolvedComboTarget | undefined { + return "target" in step ? step.target : undefined; +} /** * Prepend a system instruction to the client's original conversation (format-aware), @@ -146,23 +162,32 @@ export async function handlePipelineChat({ maxRetries = 0, retryDelayMs = 1000, }: HandlePipelineChatOptions): Promise { - const chain = (Array.isArray(steps) ? steps : []).filter((s) => s && s.model); + const chain = (Array.isArray(steps) ? steps : []).filter((step): step is PipelineStep => + Boolean(step && getStepModel(step)) + ); if (chain.length === 0) { return errorResponse(400, "Pipeline combo has no models"); } log.info( "PIPELINE", - `Combo "${comboName ?? ""}" | steps=${chain.length} [${chain.map((s) => s.model).join(" -> ")}]` + `Combo "${comboName ?? ""}" | steps=${chain.length} [${chain.map(getStepModel).join(" -> ")}]` ); // Single-step pipeline: nothing to chain — run it directly (streams to client). if (chain.length === 1) { - return handleSingleModel(prependSystemInstruction(body, chain[0].prompt), chain[0].model); + const step = chain[0]; + return handleSingleModel( + prependSystemInstruction(body, step.prompt), + getStepModel(step), + getStepTarget(step) + ); } let prevOutput = ""; for (let i = 0; i < chain.length; i++) { const step = chain[i]; + const stepModel = getStepModel(step); + const stepTarget = getStepTarget(step); const isFinal = i === chain.length - 1; const isFirst = i === 0; @@ -174,46 +199,55 @@ export async function handlePipelineChat({ if (!isFinal) stepBody = stripStreaming(stepBody); const t0 = Date.now(); - let res = await handleSingleModel(stepBody, step.model); + let res = await handleSingleModel(stepBody, stepModel, stepTarget); if (isFinal) { - log.info("PIPELINE", `Final step ${step.model} responded (${Date.now() - t0}ms)`); + log.info("PIPELINE", `Final step ${stepModel} responded (${Date.now() - t0}ms)`); return res; } // Transient retry: if the intermediate step failed with a retryable status // (429/502/503/504), retry the same step up to maxRetries times before // giving up. Non-transient errors (400/401/403/404) fail immediately. - for (let attempt = 0; attempt < maxRetries && !res.ok && TRANSIENT_STATUS.has(res.status); attempt++) { + for ( + let attempt = 0; + attempt < maxRetries && !res.ok && TRANSIENT_STATUS.has(res.status); + attempt++ + ) { log.warn( "PIPELINE", - `Step ${i + 1} (${step.model}) transient ${res.status}, retrying ${attempt + 1}/${maxRetries} in ${retryDelayMs}ms` + `Step ${i + 1} (${stepModel}) transient ${res.status}, retrying ${attempt + 1}/${maxRetries} in ${retryDelayMs}ms` ); await sleep(retryDelayMs); - res = await handleSingleModel(stepBody, step.model); + res = await handleSingleModel(stepBody, stepModel, stepTarget); } // An intermediate step must succeed with usable text — otherwise fail the whole // pipeline (never silently swallow; the client gets a clear, sanitized error). if (!res.ok) { - log.warn("PIPELINE", `Step ${i + 1} (${step.model}) failed`, { status: res.status }); + log.warn("PIPELINE", `Step ${i + 1} (${stepModel}) failed`, { + status: res.status, + }); const status = res.status >= 400 && res.status <= 599 ? res.status : 502; - return errorResponse(status, `Pipeline step ${i + 1} (${step.model}) failed`); + return errorResponse(status, `Pipeline step ${i + 1} (${stepModel}) failed`); } try { const json = await res.clone().json(); prevOutput = extractPanelText(json); } catch { - log.warn("PIPELINE", `Step ${i + 1} (${step.model}) returned an unparseable body`); - return errorResponse(502, `Pipeline step ${i + 1} (${step.model}) returned an unparseable body`); + log.warn("PIPELINE", `Step ${i + 1} (${stepModel}) returned an unparseable body`); + return errorResponse( + 502, + `Pipeline step ${i + 1} (${stepModel}) returned an unparseable body` + ); } if (!prevOutput.trim()) { - log.warn("PIPELINE", `Step ${i + 1} (${step.model}) returned empty output`); - return errorResponse(502, `Pipeline step ${i + 1} (${step.model}) returned empty output`); + log.warn("PIPELINE", `Step ${i + 1} (${stepModel}) returned empty output`); + return errorResponse(502, `Pipeline step ${i + 1} (${stepModel}) returned empty output`); } log.info( "PIPELINE", - `Step ${i + 1} ${step.model} ok (${prevOutput.length} chars, ${Date.now() - t0}ms)` + `Step ${i + 1} ${stepModel} ok (${prevOutput.length} chars, ${Date.now() - t0}ms)` ); } diff --git a/open-sse/services/providerDefaultRateLimit.ts b/open-sse/services/providerDefaultRateLimit.ts index 5560c71e76..8df2ab9624 100644 --- a/open-sse/services/providerDefaultRateLimit.ts +++ b/open-sse/services/providerDefaultRateLimit.ts @@ -11,8 +11,10 @@ * API (#6846 Phase 1). Every other provider still gets zero behavior change; the * whole path is a no-op unless an entry (or a resolved override, see below) exists. * - * Wired as a pre-schedule gate in `withRateLimit` (rateLimitManager.ts). Bottleneck - * still applies on top — this only adds a floor for header-less providers. + * Composed into the rolling lease gate in `withRateLimit` (rateLimitManager.ts). + * The exported acquire helpers remain available for provider-specific callers + * and tests, while the main request path acquires global and provider scopes + * atomically. */ import { SlidingWindowLimiter, type RateLimitWindow } from "./slidingWindowLimiter.ts"; diff --git a/open-sse/services/quotaMonitor.ts b/open-sse/services/quotaMonitor.ts index da647c5f73..7fe91cd865 100644 --- a/open-sse/services/quotaMonitor.ts +++ b/open-sse/services/quotaMonitor.ts @@ -8,7 +8,11 @@ * Alertas deduplicados por sessão (janela de 5min). */ -import { registerQuotaFetcher, type QuotaFetcher } from "./quotaPreflight.ts"; +import { + registerQuotaFetcher, + resolveDynamicQuotaFetcher, + type QuotaFetcher, +} from "./quotaPreflight.ts"; import { getSessionInfo } from "./sessionManager.ts"; export { registerQuotaFetcher }; @@ -199,7 +203,12 @@ function scheduleNextPoll(sessionId: string, intervalMs: number): void { } try { - const fetcher = quotaFetcherRegistry.get(provider); + let fetcher = quotaFetcherRegistry.get(provider); + // Dynamic fallback: for compatible-provider connections with the + // aggregator flag + feature flag, use the generalized New-API fetcher. + if (!fetcher && current.connectionSnapshot) { + fetcher = resolveDynamicQuotaFetcher(provider, current.connectionSnapshot); + } if (!fetcher) { current.status = current.lastQuotaPercent === null ? "idle" : current.status; scheduleNextPoll(sessionId, NORMAL_INTERVAL_MS); diff --git a/open-sse/services/quotaPreflight.ts b/open-sse/services/quotaPreflight.ts index 9b0d7b8233..a7db736c29 100644 --- a/open-sse/services/quotaPreflight.ts +++ b/open-sse/services/quotaPreflight.ts @@ -18,6 +18,10 @@ * it — once you invoke preflight, it runs the fetcher and evaluates. */ +import { isCompatibleProviderConnectionId } from "@/shared/utils/compatibleProviderId"; +import { isFeatureFlagEnabled } from "@/shared/utils/featureFlags"; +import { fetchNewApiAggregatorQuota } from "./newApiAggregatorQuotaFetcher.ts"; + export interface PreflightQuotaResult { proceed: boolean; reason?: string; @@ -231,6 +235,29 @@ export function evaluateQuotaCutoff( return quotaPercentCutoffResult(quota, thresholds); } +/** + * Resolve a dynamic quota fetcher for compatible-provider connections that + * opt in to New-API / One-API / Sub2API aggregator balance detection. + * Returns the fetcher when both the feature flag and the connection's + * aggregator flag are true; otherwise returns undefined. + */ +export function resolveDynamicQuotaFetcher( + provider: string, + connection: Record +): QuotaFetcher | undefined { + // Dynamic dispatch only for compatible-provider connection IDs + if (!isCompatibleProviderConnectionId(provider)) return undefined; + + // Connection must opt in via providerSpecificData.newApiAggregatorBalance + const psd = connection?.providerSpecificData as Record | undefined; + if (!psd || psd.newApiAggregatorBalance !== true) return undefined; + + // Feature flag must be enabled + if (!isFeatureFlagEnabled("NEWAPI_AGGREGATOR_BALANCE")) return undefined; + + return fetchNewApiAggregatorQuota; +} + export async function preflightQuota( provider: string, connectionId: string, @@ -239,9 +266,14 @@ export async function preflightQuota( ): Promise { // No legacy enable-flag gate here — the caller decides when to invoke us // (see file-level docstring). When there's no fetcher we proceed silently. - const fetcher = getQuotaFetcher(provider); + let fetcher = getQuotaFetcher(provider); if (!fetcher) { - return { proceed: true }; + // Dynamic fallback: for compatible-provider connections with the + // aggregator flag + feature flag, use the generalized New-API fetcher. + fetcher = resolveDynamicQuotaFetcher(provider, connection); + if (!fetcher) { + return { proceed: true }; + } } let quota: QuotaInfo | null = null; diff --git a/open-sse/services/rateLimitManager.ts b/open-sse/services/rateLimitManager.ts index c39b39c18e..cb4350b2f8 100644 --- a/open-sse/services/rateLimitManager.ts +++ b/open-sse/services/rateLimitManager.ts @@ -13,7 +13,12 @@ import { parseRetryAfterFromBody } from "./accountFallback.ts"; import { getAntigravityQuotaFamily } from "./antigravityQuotaFamily.ts"; import { getProviderCategory } from "../config/providerRegistry.ts"; import { getCodexRateLimitKey } from "../executors/codex.ts"; -import { awaitProviderDefaultSlot, setProviderQuotaOverrides } from "./providerDefaultRateLimit.ts"; +import { + getProviderDefaultRateLimit, + setProviderQuotaOverrides, +} from "./providerDefaultRateLimit.ts"; +import { keyContainsConnection, RollingRpmGate } from "./rollingRpmGate.ts"; +import { toNumber } from "@/shared/utils/numeric"; import { DEFAULT_RESILIENCE_SETTINGS, resolveResilienceSettings, @@ -39,25 +44,36 @@ interface LearnedLimitEntry { interface LimiterUpdateSettings { maxConcurrent?: number | null; minTime: number; - reservoir?: number | null; - reservoirRefreshAmount?: number | null; - reservoirRefreshInterval?: number | null; } type JsonRecord = Record; +type QueueTimeoutReason = "local-queue" | "upstream-cooldown"; function toRecord(value: unknown): JsonRecord { return value && typeof value === "object" && !Array.isArray(value) ? (value as JsonRecord) : {}; } -function toNumber(value: unknown, fallback = 0): number { - const parsed = - typeof value === "number" - ? value - : typeof value === "string" && value.trim().length > 0 - ? Number(value) - : Number.NaN; - return Number.isFinite(parsed) ? parsed : fallback; +function createQueueTimeoutError( + provider: string, + model: string | null, + maxWaitMs: number, + reason: QueueTimeoutReason = "local-queue", + cause?: unknown +) { + const target = model ? `${provider}/${model}` : provider; + const message = + reason === "upstream-cooldown" + ? `Request dropped after waiting ${maxWaitMs}ms for an upstream rate-limit cooldown for ${target}. ` + + `The provider cooldown outlasted OmniRoute's local wait budget; this is not local queue saturation.` + : `Request dropped after exceeding the local rate-limit queue budget maxWaitMs (${maxWaitMs}ms) for ` + + `${target} — this is OmniRoute's request queue ` + + `(resilienceSettings.requestQueue.maxWaitMs), not an upstream timeout. Raise it in ` + + `Settings → Resilience if this is queue saturation rather than a slow provider.`; + const queueErr = new Error(message, cause === undefined ? undefined : { cause }) as Error & { + code?: string; + }; + queueErr.code = "RATE_LIMIT_QUEUE_TIMEOUT"; + return queueErr; } function isNodeTestRunnerChild(): boolean { @@ -101,16 +117,15 @@ let initialized = false; let currentRequestQueueSettings: RequestQueueSettings = DEFAULT_RESILIENCE_SETTINGS.requestQueue; // Watchdog: detect Bottleneck limiters that are wedged (queue has work, but no -// jobs are dispatched). When the reservoir/refresh state desyncs from reality, -// this catches it and force-resets so traffic isn't stuck forever. +// jobs are dispatched). RPM admission happens before Bottleneck, so a queued +// Bottleneck job with no active work is a concurrency scheduler failure. const lastDispatchAt = new Map(); +let nextJobTraceId = 1; let watchdogInterval: ReturnType | null = null; const WATCHDOG_INTERVAL_MS = 30_000; -// Threshold has to exceed any *legitimate* gap between dispatches: -// - default reservoirRefreshInterval is 60s -// - adaptive minTime can climb to ~60s for 1-RPM providers (see updateFromHeaders) -// 120s gives a 2× margin against both, while still catching the actual wedge -// case we observed (queue stalled for 3+ minutes with no progress). +// Threshold has to exceed any legitimate gap caused by adaptive minTime while +// still catching the actual wedge case we observed (queue stalled for 3+ +// minutes with no progress). const WEDGE_THRESHOLD_MS = 120_000; /** @@ -128,19 +143,10 @@ function isAutoEnableActive(settings: RequestQueueSettings): boolean { return settings.autoEnableApiKeyProviders; } -// Sentinels for "no rate limit" / effectively infinite capacity. The reservoir -// value uses Number.MAX_SAFE_INTEGER so the bucket can never realistically be -// exhausted; maxConcurrent uses a smaller-but-still-vast ceiling since -// Bottleneck tracks concurrent jobs in memory and an unbounded number would -// risk internal counter overflow under sustained pressure. -const EFFECTIVELY_INFINITE = Number.MAX_SAFE_INTEGER; +// Bottleneck handles concurrency and pacing. RPM is enforced by the rolling +// lease limiter above rather than by a fixed-window reservoir. const EFFECTIVELY_INFINITE_CONCURRENCY = 1000; -// Resolve an RPM override. 0 or missing means "infinite" (no rate cap). -function resolveRpm(override: number | undefined | null): number { - return typeof override === "number" && override > 0 ? override : EFFECTIVELY_INFINITE; -} - // Resolve a minTime override. 0 or missing means "no minimum gap". function resolveMinTime(override: number | undefined | null): number { return typeof override === "number" && override > 0 ? override : 0; @@ -152,25 +158,64 @@ function resolveMaxConcurrent(override: number | undefined | null): number { } function buildLimiterDefaults() { - // 0 or missing values mean "infinite" / no rate limit applies. This treats - // the global request-queue settings the same way per-connection overrides - // are interpreted (see resolveRpm / resolveMinTime / resolveMaxConcurrent). return { maxConcurrent: resolveMaxConcurrent(currentRequestQueueSettings.concurrentRequests), minTime: resolveMinTime(currentRequestQueueSettings.minTimeBetweenRequestsMs), - reservoir: resolveRpm(currentRequestQueueSettings.requestsPerMinute), - reservoirRefreshAmount: resolveRpm(currentRequestQueueSettings.requestsPerMinute), - reservoirRefreshInterval: 60 * 1000, }; } -function updateAllLimiterSettings() { - const defaults = buildLimiterDefaults(); - for (const limiter of limiters.values()) { - limiter.updateSettings(defaults); +/** + * Apply new settings to a Bottleneck limiter and re-arm its reservoir-refresh + * heartbeat. + * + * Bottleneck 2.19.5 (frozen upstream dependency, no release since 2019) has a + * bug in `LocalDatastore#_startHeartbeat()` + * (node_modules/bottleneck/lib/LocalDatastore.js:29,56): the guard + * `if (this.heartbeat == null && ...)` only (re)creates the periodic + * reservoir-refresh interval the FIRST time it runs. Every later call — + * including the one `updateSettings()` itself triggers internally — falls + * into the `else` branch and does `clearInterval(this.heartbeat)` WITHOUT + * resetting `this.heartbeat` back to `null`. Because the stale reference is + * left in place, every future `_startHeartbeat()` call keeps taking the same + * dead `else` branch: the periodic reservoir refresh is gone forever after + * the FIRST manual `updateSettings()` call on a limiter — every limiter here + * starts with a live heartbeat (buildLimiterDefaults() always sets + * reservoirRefreshInterval/reservoirRefreshAmount), so that "first call" is + * whichever of the 5 updateSettings() call sites in this file runs first. + * + * Work around it here instead of patching node_modules: null out the stale + * reference ourselves and re-invoke `_startHeartbeat()` so it takes the + * "start a fresh interval" branch again. Every `limiter.updateSettings(...)` + * call in this file MUST go through this helper, never Bottleneck's method + * directly. + */ +async function applyLimiterSettings( + limiter: Bottleneck, + updates: Bottleneck.ConstructorOptions +): Promise { + await limiter.updateSettings(updates); + const store = ( + limiter as unknown as { + _store?: { + heartbeat?: ReturnType | null; + _startHeartbeat?: () => void; + }; + } + )._store; + if (store && typeof store._startHeartbeat === "function") { + if (store.heartbeat != null) clearInterval(store.heartbeat); + store.heartbeat = null; + store._startHeartbeat(); } } +async function updateAllLimiterSettings() { + const defaults = buildLimiterDefaults(); + await Promise.all( + Array.from(limiters.values(), (limiter) => applyLimiterSettings(limiter, defaults)) + ); +} + function reconcileEnabledConnections( connectionsRaw: unknown[], requestQueueSettings: RequestQueueSettings @@ -226,12 +271,18 @@ function reconcileEnabledConnections( function watchdogTick() { const now = Date.now(); + rpmGate.cleanupExpired(now); // Clean up idle limiters that haven't been used recently for (const [key, limiter] of Array.from(limiters)) { const lastUsed = limiterLastUsed.get(key) ?? 0; if (now - lastUsed > INACTIVE_LIMITER_MS) { const counts = limiter.counts(); - if (counts.QUEUED === 0 && counts.RUNNING === 0 && counts.EXECUTING === 0) { + if ( + counts.RECEIVED === 0 && + counts.QUEUED === 0 && + counts.RUNNING === 0 && + counts.EXECUTING === 0 + ) { limiters.delete(key); lastDispatchAt.delete(key); limiterLastUsed.delete(key); @@ -244,7 +295,10 @@ function watchdogTick() { } for (const [key, limiter] of Array.from(limiters)) { const counts = limiter.counts(); - if (counts.QUEUED === 0) continue; + // RECEIVED-only work is still active and must not be evicted. Once a job + // is stably queued, Bottleneck reports it in QUEUED with RECEIVED=0; that + // is the state the wedge detector is designed to recover. + if (counts.RECEIVED > 0 || counts.QUEUED === 0) continue; if (counts.RUNNING > 0 || counts.EXECUTING > 0) continue; const lastDispatch = lastDispatchAt.get(key); // No heartbeat yet → seed it and skip this tick. Prevents false wedge @@ -257,7 +311,7 @@ function watchdogTick() { if (stalledMs < WEDGE_THRESHOLD_MS) continue; warnRateLimit( - `🚨 [RATE-LIMIT] WEDGED: ${key} queued=${counts.QUEUED} running=0 executing=0 stalled=${stalledMs}ms — force-resetting` + `🚨 [RATE-LIMIT] WEDGED: ${key} received=${counts.RECEIVED} queued=${counts.QUEUED} running=0 executing=0 stalled=${stalledMs}ms — force-resetting` ); // Live incident (log id 1784465227489-a2cbc0): disconnect() releases the // heartbeat timer but does NOT reject the QUEUED jobs already sitting on @@ -308,15 +362,38 @@ export function stopRateLimitWatchdog(): void { watchdogInterval = null; } +export function __installLimiterForTests( + provider: string, + connectionId: string, + limiter: Bottleneck, + model = null +): void { + const key = getLimiterKey(provider, connectionId, model); + limiters.set(key, limiter); + lastDispatchAt.set(key, Date.now()); + limiterLastUsed.set(key, Date.now()); +} + +export function __runRateLimitWatchdogForTests(): void { + watchdogTick(); +} + +export function __getLimiterForTests(provider: string, connectionId: string, model = null) { + return getLimiter(provider, connectionId, model); +} + +export function __setLastDispatchAtForTests( + provider: string, + connectionId: string, + model: string | null, + timestamp: number +): void { + lastDispatchAt.set(getLimiterKey(provider, connectionId, model), timestamp); +} + function evictWedgeLimiter(key: string, limiter: Bottleneck): void { if (limiters.get(key) !== limiter) return; - limiters.delete(key); - lastDispatchAt.delete(key); - limiterLastUsed.delete(key); - trackAsyncOperation(limiter.disconnect()); - trackAsyncOperation( - limiter.stop({ dropWaitingJobs: true, dropErrorMessage: "rate-limit-watchdog-wedge-reset" }) - ); + evictLimiterAndDropQueued(key, limiter, "rate-limit-watchdog-wedge-reset"); } /** @@ -377,13 +454,10 @@ export async function initializeRateLimits() { // budget + concurrency cap (nvidia today). No-op for every provider without // an entry in either providerQuotaOverrides or PROVIDER_DEFAULT_RATE_LIMITS. setProviderQuotaOverrides(resilience.providerQuotaOverrides); - const { explicitCount, autoCount } = reconcileEnabledConnections( - connections as unknown[], - currentRequestQueueSettings - ); - updateAllLimiterSettings(); - // Load per-connection rate limit overrides + // Load per-connection rate limit overrides before reconciliation can create + // any limiter. The RPM gate reads these overrides at admission time, and + // Bottleneck still needs the non-RPM connection settings immediately. connectionRateLimitOverrides.clear(); for (const conn of connections as Array>) { const overrides = conn.rateLimitOverrides; @@ -392,6 +466,12 @@ export async function initializeRateLimits() { } } + const { explicitCount, autoCount } = reconcileEnabledConnections( + connections as unknown[], + currentRequestQueueSettings + ); + updateAllLimiterSettings(); + if (explicitCount > 0 || autoCount > 0) { logRateLimit( `🛡️ [RATE-LIMIT] Loaded ${explicitCount} explicit + ${autoCount} auto-enabled protection(s)` @@ -414,7 +494,7 @@ export async function applyRequestQueueSettings(nextSettings: RequestQueueSettin const { getCachedProviderConnections } = await import("@/lib/localDb"); const connections = await getCachedProviderConnections(); reconcileEnabledConnections(connections as unknown[], currentRequestQueueSettings); - updateAllLimiterSettings(); + await updateAllLimiterSettings(); } /** @@ -429,22 +509,14 @@ export function enableRateLimitProtection(connectionId) { */ export function disableRateLimitProtection(connectionId) { enabledConnections.delete(connectionId); - // Evict limiters for this connection from the cache. Do NOT call limiter.stop() — - // it permanently rejects future .schedule() calls with "This limiter has been stopped", - // and in-flight requests holding a reference to the old instance would fail with 502. - // Call disconnect() (not stop()) to release Bottleneck's internal heartbeat timer - // without permanently poisoning the instance for any remaining in-flight jobs. - // Eviction-only would leak the heartbeat timer until GC; disconnect() releases it - // synchronously so the runtime memory footprint stays flat under heavy connection churn. - // .stop() is reserved exclusively for SIGTERM/SIGINT shutdown (see shutdownLimiters). + // Drop queued jobs before evicting the limiter. Otherwise disconnect() leaves + // callers waiting on an instance that is no longer reachable from the cache. for (const [key, limiter] of Array.from(limiters)) { - if (key.includes(connectionId)) { - limiters.delete(key); - lastDispatchAt.delete(key); - limiterLastUsed.delete(key); - trackAsyncOperation(limiter.disconnect()); + if (keyContainsConnection(key, connectionId)) { + evictLimiterAndDropQueued(key, limiter, "rate-limit-connection-disabled"); } } + rpmGate.clearConnection(connectionId); } /** @@ -472,13 +544,11 @@ export function refreshConnectionRateLimits(connectionId, overrides) { } // Evict limiters referencing this connection so they get recreated on next use for (const [key, limiter] of Array.from(limiters)) { - if (key.includes(connectionId)) { - limiters.delete(key); - lastDispatchAt.delete(key); - limiterLastUsed.delete(key); - trackAsyncOperation(limiter.disconnect()); + if (keyContainsConnection(key, connectionId)) { + evictLimiterAndDropQueued(key, limiter, "rate-limit-settings-refresh"); } } + rpmGate.clearConnection(connectionId); } /** @@ -501,6 +571,15 @@ function getLimiterKey(provider, connectionId, model = null) { return `${provider}:${connectionId}`; } +const rpmGate = new RollingRpmGate({ + getGlobalRpm: () => currentRequestQueueSettings.requestsPerMinute, + getProviderWindow: getProviderDefaultRateLimit, + getConnectionRpm: (connectionId) => connectionRateLimitOverrides.get(connectionId)?.rpm, + getLimiterKey, + createQueueTimeoutError: (provider, model, maxWaitMs, reason) => + createQueueTimeoutError(provider, model, maxWaitMs, reason), +}); + function getLimiter(provider, connectionId, model = null) { const key = getLimiterKey(provider, connectionId, model); @@ -509,23 +588,14 @@ function getLimiter(provider, connectionId, model = null) { const overrides = connectionRateLimitOverrides.get(connectionId); if (overrides) { // 0 (or missing) means "no override — fall through to buildLimiterDefaults()". - // Without this guard, an rpm of 0 sets reservoir=0, which Bottleneck treats - // as "depleted" and blocks ALL requests indefinitely. Treating 0 as "use - // default" lets users effectively disable per-connection limits without - // globally raising the system default. if (typeof overrides.maxConcurrent === "number" && overrides.maxConcurrent > 0) { defaults.maxConcurrent = overrides.maxConcurrent; } if (typeof overrides.minTime === "number" && overrides.minTime > 0) { defaults.minTime = overrides.minTime; } - if (typeof overrides.rpm === "number" && overrides.rpm > 0) { - defaults.reservoir = overrides.rpm; - defaults.reservoirRefreshAmount = overrides.rpm; - defaults.reservoirRefreshInterval = 60 * 1000; - } // TODO: TPM/TPD integration — requires a token-bucket vs request-bucket - // separation (Bottleneck's reservoir is request-count, not token-count). + // separation. RPM is handled by the rolling lease gate below. // When added, treat 0/missing the same way: fall through to system default. } const limiter = new Bottleneck({ @@ -548,6 +618,15 @@ function getLimiter(provider, connectionId, model = null) { return limiters.get(key); } +function evictLimiterAndDropQueued(key: string, limiter: Bottleneck, reason: string): void { + if (limiters.get(key) === limiter) { + limiters.delete(key); + lastDispatchAt.delete(key); + limiterLastUsed.delete(key); + } + trackAsyncOperation(limiter.stop({ dropWaitingJobs: true, dropErrorMessage: reason })); +} + /** * Acquire a rate limit slot before making a request. * If rate limiting is disabled for this connection, returns immediately. @@ -559,32 +638,7 @@ function getLimiter(provider, connectionId, model = null) { * @param {AbortSignal} signal - Optional abort signal to cancel waiting * @returns {Promise} Result of fn() */ -async function getQueueHealthSnapshot(key: string, limiter: Bottleneck) { - const counts = limiter.counts(); - let reservoirRemaining: number | null = null; - try { - reservoirRemaining = await limiter.currentReservoir(); - } catch { - // Snapshot logging must never affect request handling. - } - const lastDispatch = lastDispatchAt.get(key); - return { - queued: counts.QUEUED, - running: counts.RUNNING, - executing: counts.EXECUTING, - reservoirRemaining, - lastDispatchAgeMs: lastDispatch ? Date.now() - lastDispatch : null, - }; -} - -export async function withRateLimit( - provider, - connectionId, - model, - fn, - signal = null, - retryAfterWedge = true -) { +export async function withRateLimit(provider, connectionId, model, fn, signal = null) { if (!enabledConnections.has(connectionId)) { return fn(); } @@ -597,18 +651,20 @@ export async function withRateLimit( throw err; } - // Proactive sliding-window fallback for header-less providers with a declared cap - // (Fase 8.2). No-op unless PROVIDER_DEFAULT_RATE_LIMITS has an entry for `provider`. - await awaitProviderDefaultSlot( + const maxWaitMs = currentRequestQueueSettings.maxWaitMs; + const queueStartedAt = Date.now(); + const rpmLease = await rpmGate.acquire( provider, connectionId, + model, signal, - currentRequestQueueSettings.maxWaitMs + maxWaitMs, + queueStartedAt ); - const limiter = getLimiter(provider, connectionId, model); - const maxWaitMs = currentRequestQueueSettings.maxWaitMs; - const scheduleOpts = maxWaitMs && maxWaitMs > 0 ? { expiration: maxWaitMs } : {}; + const key = getLimiterKey(provider, connectionId, model); + const jobId = `${key}:job-${nextJobTraceId++}`; + const scheduleOpts = { id: jobId }; // Issue #6593: opt-in admission cap — fast-reject before Bottleneck's // schedule() (and before any downstream compression/prompt work runs) when @@ -619,30 +675,77 @@ export async function withRateLimit( model ? `${provider}/${model}` : provider ); if (admissionErr) { + rpmLease?.release(); logRateLimit( `🚧 [RATE-LIMIT] ${getLimiterKey(provider, connectionId, model)} — queue full, rejecting fast (maxQueueDepth=${currentRequestQueueSettings.maxQueueDepth})` ); throw admissionErr; } + let dispatched = false; + let queueExpired = false; + let dispatchCancelled = false; + let queueTimer: ReturnType | undefined; + const remainingWaitMs = + maxWaitMs > 0 ? Math.max(1, maxWaitMs - (Date.now() - queueStartedAt)) : 0; + const queueTimeoutPromise = + remainingWaitMs > 0 + ? new Promise((_, reject) => { + queueTimer = setTimeout(() => { + if (dispatched) return; + queueExpired = true; + logRateLimit( + `⏰ [RATE-LIMIT] ${key} — job exceeded ${Math.ceil(maxWaitMs / 1000)}s queue wait budget, dropping` + ); + reject(new Error("rate-limit-queue-timeout")); + }, remainingWaitMs); + }) + : null; + const scheduled = limiter.schedule(scheduleOpts, async () => { + if (queueExpired) { + throw createQueueTimeoutError(provider, model, maxWaitMs); + } + if (dispatchCancelled) { + const error = new Error("The operation was aborted before limiter dispatch"); + error.name = "AbortError"; + throw error; + } + if (signal?.aborted) { + const error = new Error("The operation was aborted before limiter dispatch"); + error.name = "AbortError"; + throw error; + } + dispatched = true; + if (queueTimer) clearTimeout(queueTimer); + return fn(); + }); + try { if (signal) { let abortListener: (() => void) | undefined; const abortPromise = new Promise((_, reject) => { const onAbort = () => { const reason = signal.reason; - // Preserve native Error reasons (including AbortController's - // read-only DOMException) instead of mutating or wrapping them. + // Reject before evicting the queued job so the caller observes its + // abort reason instead of Bottleneck's internal drop error. if (reason instanceof Error) { reject(reason); - return; + } else { + const err = new Error( + typeof reason === "string" ? reason : "The operation was aborted" + ); + err.name = "AbortError"; + if (reason !== undefined) { + (err as Error & { cause?: unknown }).cause = reason; + } + reject(err); } - const err = new Error(typeof reason === "string" ? reason : "The operation was aborted"); - err.name = "AbortError"; - if (reason !== undefined) { - (err as Error & { cause?: unknown }).cause = reason; + if (!dispatched) { + dispatchCancelled = true; + if (queueTimer) clearTimeout(queueTimer); + // Leave the cancelled job in Bottleneck so queued peers are not dropped. + // Its scheduled callback will consume one queue turn and exit before fn(). } - reject(err); }; if (signal.aborted) { onAbort(); @@ -653,51 +756,30 @@ export async function withRateLimit( }); try { - return await Promise.race([limiter.schedule(scheduleOpts, fn), abortPromise]); + const races: Promise[] = [scheduled, abortPromise]; + if (queueTimeoutPromise) races.push(queueTimeoutPromise); + return await Promise.race(races); } finally { if (abortListener) { signal.removeEventListener("abort", abortListener); } } } else { - return await limiter.schedule(scheduleOpts, fn); + return await (queueTimeoutPromise + ? Promise.race([scheduled, queueTimeoutPromise]) + : scheduled); } } catch (err) { - // Bottleneck's raw `This job timed out after ms.` is - // indistinguishable from an upstream gateway timeout, so it leaks into 502 - // bodies / call-log `last_error` and gets misdiagnosed as a provider outage - // (#4165). Rewrite it into a clear, OmniRoute-owned error (knob named, - // upstream disclaimed, original kept as `cause`, `code` for classification). - // If the limiter is idle with capacity after the expiry, the scheduler is wedged. - // Reset it and retry this never-dispatched function once on a fresh limiter. - if (err?.message?.includes("This job timed out")) { - const key = getLimiterKey(provider, connectionId, model); - const queueState = await getQueueHealthSnapshot(key, limiter); - logRateLimit( - `⏰ [RATE-LIMIT] ${key} — job expired after ${Math.ceil((maxWaitMs || 0) / 1000)}s in queue, dropping` - ); - const limiterIsWedged = - retryAfterWedge && - queueState.running === 0 && - queueState.executing === 0 && - typeof queueState.reservoirRemaining === "number" && - queueState.reservoirRemaining > 0 && - typeof queueState.lastDispatchAgeMs === "number" && - queueState.lastDispatchAgeMs >= Math.max(1, maxWaitMs || 0); - if (limiterIsWedged) { - logRateLimit(`🔄 [RATE-LIMIT] ${key} — recovering idle limiter after queue expiry`); - evictWedgeLimiter(key, limiter); - return withRateLimit(provider, connectionId, model, fn, signal, false); - } - const queueErr = new Error( - `Request dropped after exceeding the local rate-limit queue budget maxWaitMs (${maxWaitMs}ms) for ` + - `${model ? `${provider}/${model}` : provider} — this is OmniRoute's request queue ` + - `(resilienceSettings.requestQueue.maxWaitMs), not an upstream timeout. Raise it in ` + - `Settings → Resilience if this is queue saturation rather than a slow provider.`, + if (queueTimer) clearTimeout(queueTimer); + if (!dispatched) rpmLease?.release(); + if (err?.message === "rate-limit-upstream-429") { + const rateLimitErr = new Error( + `Request dropped while the ${provider} connection was under an upstream rate-limit cooldown`, { cause: err } - ) as Error & { code?: string }; - queueErr.code = "RATE_LIMIT_QUEUE_TIMEOUT"; - throw queueErr; + ) as Error & { code?: string; status?: number }; + rateLimitErr.code = "RATE_LIMIT_UPSTREAM_429"; + rateLimitErr.status = 429; + throw rateLimitErr; } // The watchdog's stop({ dropWaitingJobs: true }) wedge-recovery (above) rejects // queued jobs with this exact message. Rewrite it the same way as the timeout @@ -714,6 +796,9 @@ export async function withRateLimit( wedgeErr.code = "RATE_LIMIT_QUEUE_WEDGED"; throw wedgeErr; } + if (err?.message === "rate-limit-queue-timeout") { + throw createQueueTimeoutError(provider, model, maxWaitMs); + } throw err; } } @@ -757,20 +842,12 @@ export function updateFromHeaders(provider, connectionId, headers, status, model `🚫 [RATE-LIMIT] ${provider}:${connectionId.slice(0, 8)} — 429 received, pausing for ${Math.ceil(retryAfterMs / 1000)}s, dropping ${counts.QUEUED} queued request(s)` ); - // Evict from the cache so follow-up learning from the same error body - // can materialize a fresh limiter immediately. Do NOT call limiter.stop() — - // it permanently rejects future .schedule() calls with "This limiter has been stopped". - // In-flight requests holding a reference to the evicted instance will fail (they - // were already going to fail — the 429 means the API rejected them), but future - // requests will get a fresh Bottleneck instance via getLimiter(). - // Call disconnect() (not stop()) to release Bottleneck's internal heartbeat timer - // without permanently poisoning the instance for any remaining in-flight jobs. - // Without disconnect() here, every 429 leaks a heartbeat timer until GC reclaims - // the abandoned Bottleneck; under sustained quota pressure that is a real leak. - limiters.delete(limiterKey); - lastDispatchAt.delete(limiterKey); - limiterLastUsed.delete(limiterKey); - trackAsyncOperation(limiter.disconnect()); + rpmGate.block(provider, connectionId, model, retryAfterMs); + + // Evict from the cache before stopping so follow-up requests get a fresh + // instance. Stopping the unreachable instance rejects its queued jobs and + // releases its heartbeat without poisoning the replacement limiter. + evictLimiterAndDropQueued(limiterKey, limiter, "rate-limit-upstream-429"); return; } @@ -779,40 +856,41 @@ export function updateFromHeaders(provider, connectionId, headers, status, model logRateLimit( `⚠️ [RATE-LIMIT] ${provider}:${connectionId.slice(0, 8)} — near capacity, slowing down` ); - limiter.updateSettings({ - minTime: 200, // Add 200ms between requests - }); + trackAsyncOperation(applyLimiterSettings(limiter, { minTime: 200 })); return; } // Normal response — update limiter from headers if (!isNaN(limit) && limit > 0) { - const resetMs = parseResetTime(resetStr) || 60000; - // Calculate optimal minTime from RPM limit const minTime = Math.max(0, Math.floor(60000 / limit) - 10); // Small buffer const updates: LimiterUpdateSettings = { minTime }; + const resetMs = parseResetTime(resetStr) || 60000; - // If remaining is low (< 10% of limit), set reservoir to throttle immediately + // Keep adaptive pacing from response headers, but do not mutate an RPM + // reservoir. RPM admission is enforced by the rolling lease gate. if (!isNaN(remaining)) { if (remaining < limit * 0.1) { - updates.reservoir = remaining; - updates.reservoirRefreshAmount = limit; - updates.reservoirRefreshInterval = resetMs; + rpmGate.learnHeaderWindow( + provider, + connectionId, + model, + remaining, + resetMs, + Date.now() + resetMs + ); logRateLimit( `⚠️ [RATE-LIMIT] ${provider}:${connectionId.slice(0, 8)} — ${remaining}/${limit} remaining, throttling` ); } else if (remaining > limit * 0.5) { // Plenty of headroom — relax the limiter updates.minTime = 0; - updates.reservoir = null; - updates.reservoirRefreshAmount = null; - updates.reservoirRefreshInterval = null; + rpmGate.clearLearnedHeaderWindow(provider, connectionId, model); } } - limiter.updateSettings(updates); + trackAsyncOperation(applyLimiterSettings(limiter, updates)); // Persist learned limits (debounced) recordLearnedLimit( @@ -941,6 +1019,8 @@ export async function __resetRateLimitManagerForTests() { } limiters.clear(); enabledConnections.clear(); + connectionRateLimitOverrides.clear(); + rpmGate.reset(); initialized = false; lastDispatchAt.clear(); limiterLastUsed.clear(); @@ -1014,7 +1094,7 @@ async function loadPersistedLimits() { const limiter = limiters.get(key); if (limiter && limit > 0) { const inferredMinTime = minTime || Math.max(0, Math.floor(60000 / limit) - 10); - limiter.updateSettings({ minTime: inferredMinTime }); + await applyLimiterSettings(limiter, { minTime: inferredMinTime }); count++; } } @@ -1045,15 +1125,10 @@ export function updateFromResponseBody(provider, connectionId, responseBody, sta const { retryAfterMs, reason } = parseRetryAfterFromBody(responseBody); if (retryAfterMs && retryAfterMs > 0) { - const limiter = getLimiter(provider, connectionId, model); + getLimiter(provider, connectionId, model); logRateLimit( `🚫 [RATE-LIMIT] ${provider}:${connectionId.slice(0, 8)} — body-parsed retry: ${Math.ceil(retryAfterMs / 1000)}s (${reason})` ); - - limiter.updateSettings({ - reservoir: 0, - reservoirRefreshAmount: 60, - reservoirRefreshInterval: retryAfterMs, - }); + rpmGate.block(provider, connectionId, model, retryAfterMs); } } diff --git a/open-sse/services/raycast.ts b/open-sse/services/raycast.ts new file mode 100644 index 0000000000..801f2bf77a --- /dev/null +++ b/open-sse/services/raycast.ts @@ -0,0 +1,280 @@ +/** + * @file raycast.ts + * @description Raycast Pro AI reverse-engineered protocol (backend.raycast.com). + * Ported from szcharlesji/raycast-relay (Node, 2026-06) — V2 HMAC + V1 JWT signatures. + * + * @changes + * - [2026-07-27] [Composer] - Initial Raycast Pro local-dev provider protocol + */ + +import { createHmac, createHash, randomUUID } from "node:crypto"; + +import { resolvePublicCred } from "../utils/publicCreds.ts"; + +export const RAYCAST_CHAT_URL = "https://backend.raycast.com/api/v1/ai/chat_completions"; +export const RAYCAST_MODELS_URL = "https://backend.raycast.com/api/v1/ai/models"; +export const RAYCAST_DEFAULT_USER_AGENT = "Raycast/1.104.20 (macOS Version 26.5.1 (Build 25F80))"; +export const RAYCAST_DEFAULT_EXPERIMENTAL = "chatBranching, mcpHTTPServer"; + +/** + * Community-extracted default; override via providerSpecificData.sigSecret or + * RAYCAST_SIG_SECRET. Embedded through resolvePublicCred() per Hard Rule #11 — + * a public upstream credential must never be a string literal in the source + * (see docs/security/PUBLIC_CREDS.md). + */ +export const RAYCAST_DEFAULT_SIG_SECRET = resolvePublicCred( + "raycast_sig_secret", + "RAYCAST_SIG_SECRET" +); + +export type RaycastCredentials = { + accessToken?: string; + providerSpecificData?: { + deviceId?: string; + aid?: string; + sigSecret?: string; + userAgent?: string; + experimental?: string; + }; +}; + +export type RaycastModelEntry = { + id: string; + model: string; + name: string; + provider: string; + requires_better_ai?: boolean; + availability?: string; +}; + +type ChatMessage = { role?: string; content?: unknown }; + +export function rot13rot5(input: string): string { + return input.replace(/[A-Za-z0-9]/g, (char) => { + const code = char.charCodeAt(0); + if (code >= 65 && code <= 90) return String.fromCharCode(((code - 65 + 13) % 26) + 65); + if (code >= 97 && code <= 122) return String.fromCharCode(((code - 97 + 13) % 26) + 97); + return String.fromCharCode(((code - 48 + 5) % 10) + 48); + }); +} + +export function signatureV2( + timestamp: string, + deviceId: string, + payload: string, + secret: string +): string { + const bodyHash = createHash("sha256").update(payload).digest("hex"); + const message = [timestamp, deviceId, bodyHash].map(rot13rot5).join("."); + return createHmac("sha256", secret).update(message).digest("hex"); +} + +function base64UrlJson(value: Record): string { + return Buffer.from(JSON.stringify(value)).toString("base64url"); +} + +export function raycastJwt(aid: string, secret: string): string { + const iat = Date.now() / 1000; + const header = base64UrlJson({ typ: "JWT", alg: "HS256" }); + const payload = base64UrlJson({ aid, exp: iat + 60, iat }); + const signature = createHmac("sha256", secret).update(`${header}.${payload}`).digest("base64url"); + return `${header}.${payload}.${signature}`; +} + +export function decodeAidFromRaycastJwt(jwt: string): string | null { + const parts = jwt.trim().split("."); + if (parts.length < 2) return null; + try { + const payload = JSON.parse(Buffer.from(parts[1], "base64url").toString("utf8")) as { + aid?: string; + }; + return payload.aid || null; + } catch { + return null; + } +} + +export function resolveRaycastSecrets(credentials: RaycastCredentials): { + bearerToken: string; + deviceId: string; + aid: string; + sigSecret: string; +} { + const psd = credentials.providerSpecificData || {}; + const bearerToken = (credentials.accessToken || "").trim(); + const deviceId = (psd.deviceId || "").trim(); + const aid = (psd.aid || deviceId || "").trim(); + const sigSecret = ( + psd.sigSecret || + process.env.RAYCAST_SIG_SECRET || + RAYCAST_DEFAULT_SIG_SECRET + ).trim(); + + if (!bearerToken) throw new Error("Raycast bearer token is required"); + if (!deviceId) throw new Error("Raycast device ID is required"); + if (!sigSecret) throw new Error("Raycast signature secret is required"); + + return { bearerToken, deviceId, aid, sigSecret }; +} + +export function buildRaycastHeaders( + payload: string, + credentials: RaycastCredentials +): Record { + const { bearerToken, deviceId, aid, sigSecret } = resolveRaycastSecrets(credentials); + const psd = credentials.providerSpecificData || {}; + const timestamp = Math.floor(Date.now() / 1000).toString(); + + return { + Accept: "application/json", + Authorization: `Bearer ${bearerToken}`, + "X-Raycast-Timestamp": timestamp, + "Accept-Language": "en-US,en;q=0.9", + "X-Raycast-DeviceId": deviceId, + "Content-Type": "application/json", + "X-Raycast-Signature-v2": signatureV2(timestamp, deviceId, payload, sigSecret), + "X-Raycast-Experimental": psd.experimental || RAYCAST_DEFAULT_EXPERIMENTAL, + "X-Raycast-Signature": raycastJwt(aid, sigSecret), + "User-Agent": psd.userAgent || RAYCAST_DEFAULT_USER_AGENT, + }; +} + +export function contentToText(content: unknown): string { + if (typeof content === "string") return content; + if (!Array.isArray(content)) return JSON.stringify(content ?? ""); + + return content + .map((part) => { + if (typeof part === "string") return part; + if ( + part && + typeof part === "object" && + "type" in part && + (part as { type?: string }).type === "text" + ) { + return String((part as { text?: string }).text || ""); + } + return ""; + }) + .filter(Boolean) + .join("\n"); +} + +export function convertOpenAiMessages(messages: ChatMessage[]): { + raycastMessages: Array<{ author: string; content: { text: string } }>; + systemInstruction: string; +} { + let systemInstruction = "markdown"; + const raycastMessages: Array<{ author: string; content: { text: string } }> = []; + + for (const [index, message] of messages.entries()) { + if (message.role === "system" && index === 0) { + systemInstruction = contentToText(message.content); + continue; + } + + if (message.role === "user" || message.role === "assistant") { + raycastMessages.push({ + author: message.role, + content: { text: contentToText(message.content) }, + }); + } + } + + return { raycastMessages, systemInstruction }; +} + +export function inferProviderInfo(modelId: string): { provider: string; model: string } { + if (modelId.startsWith("openai_o1-")) { + return { provider: "openai", model: modelId.slice("openai_o1-".length) }; + } + + const providers = [ + "anthropic", + "baseten", + "google", + "groq", + "mistral", + "openai", + "perplexity", + "raycast", + "together", + "xai", + ]; + + for (const provider of providers) { + const prefix = `${provider}-`; + if (modelId.startsWith(prefix)) { + return { provider, model: modelId.slice(prefix.length) }; + } + } + + if (modelId.includes("/")) return { provider: "baseten", model: modelId }; + return { provider: "openai", model: modelId || "gpt-5-mini" }; +} + +export function buildRaycastChatBody( + modelId: string, + messages: ChatMessage[], + temperature?: number +): string { + const { provider, model } = inferProviderInfo(modelId); + const { raycastMessages, systemInstruction } = convertOpenAiMessages(messages); + + if (raycastMessages.length === 0) { + throw new Error("Raycast requires at least one user or assistant message"); + } + + return JSON.stringify({ + model, + provider, + messages: raycastMessages, + system_instruction: systemInstruction, + temperature: temperature ?? 0.5, + additional_system_instructions: "", + debug: false, + locale: "en-US", + source: "ai_chat", + thread_id: randomUUID(), + tools: [], + }); +} + +export function parseRaycastSseText(responseText: string): string { + let fullText = ""; + + for (const line of responseText.split("\n")) { + if (!line.startsWith("data:")) continue; + try { + const data = JSON.parse(line.slice(5).trim()) as { text?: string }; + if (data.text) fullText += data.text; + } catch { + // Ignore non-JSON SSE lines. + } + } + + return fullText; +} + +export async function fetchRaycastModels( + credentials: RaycastCredentials, + options?: { includePremium?: boolean; includeDeprecated?: boolean } +): Promise { + const payload = "{}"; + const headers = buildRaycastHeaders(payload, credentials); + const res = await fetch(RAYCAST_MODELS_URL, { method: "GET", headers }); + if (!res.ok) { + const text = await res.text(); + throw new Error(`Raycast models error [${res.status}]: ${text.slice(0, 300)}`); + } + + const data = (await res.json()) as { models?: RaycastModelEntry[] }; + const includePremium = options?.includePremium ?? true; + const includeDeprecated = options?.includeDeprecated ?? true; + + return (data.models || []).filter((model) => { + if (!includePremium && model.requires_better_ai) return false; + if (!includeDeprecated && model.availability === "deprecated") return false; + return true; + }); +} diff --git a/open-sse/services/reasoningCache.ts b/open-sse/services/reasoningCache.ts index 3d4a715fe0..e23a388d6a 100644 --- a/open-sse/services/reasoningCache.ts +++ b/open-sse/services/reasoningCache.ts @@ -22,6 +22,7 @@ import { getReasoningCacheStats, setReasoningCache, } from "../../src/lib/db/reasoningCache.ts"; +import { isInternalReasoningPlaceholder } from "../utils/reasoningPlaceholder.ts"; // ──────────────── Provider/Model Detection ──────────────── @@ -194,6 +195,9 @@ export function cacheReasoningByKey( reasoning: string ): void { if (!key || !reasoning) return; + // ponytail: never store the internal replay placeholder — models echo it + // and it poisons the cache (upstream echo loop, OmniRoute #9573). + if (isInternalReasoningPlaceholder(reasoning)) return; if (reasoning.length > MAX_ENTRY_BYTES) { reasoning = reasoning.slice(0, MAX_ENTRY_BYTES); @@ -259,6 +263,8 @@ export function cacheReasoningFromAssistantMessage( ? message.reasoning : ""; if (!reasoning) return 0; + // ponytail: don't capture the echoed placeholder into the cache. + if (isInternalReasoningPlaceholder(reasoning)) return 0; const toolCallIds = Array.isArray(message.tool_calls) ? (message.tool_calls as ToolCallLike[]) @@ -299,6 +305,12 @@ export function lookupReasoning(toolCallId: string): string | null { const mem = memoryCache.get(toolCallId); if (mem) { if (Date.now() < mem.expiresAt) { + // ponytail: never replay the internal placeholder from memory. + if (isInternalReasoningPlaceholder(mem.reasoning)) { + memoryCache.delete(toolCallId); + misses++; + return null; + } hits++; return mem.reasoning; } @@ -314,6 +326,11 @@ export function lookupReasoning(toolCallId: string): string | null { // DB lookup failure is non-fatal; treat it as a cache miss. } if (dbResult) { + // ponytail: never promote/replay the internal placeholder from DB. + if (isInternalReasoningPlaceholder(dbResult.reasoning)) { + misses++; + return null; + } hits++; let promotedReasoning = dbResult.reasoning; if (promotedReasoning.length > MAX_ENTRY_BYTES) { diff --git a/open-sse/services/reasoningTokenBuffer.ts b/open-sse/services/reasoningTokenBuffer.ts index 8cce846d14..4c5ce88059 100644 --- a/open-sse/services/reasoningTokenBuffer.ts +++ b/open-sse/services/reasoningTokenBuffer.ts @@ -45,6 +45,12 @@ export function resolveReasoningBufferedMaxTokens( // request. Respect it verbatim instead of inflating (e.g. 1 -> 1001). if (current < REASONING_BUFFER_MIN_TRIGGER) return current; - const buffered = Math.max(current + 1000, Math.ceil(current * 1.5)); - return buffered > maxOutputTokens ? current : buffered; + // Issue #9507: never enlarge a client's explicit max_tokens. The #3587 + // headroom heuristic (Math.ceil(current * 1.5)) silently rewrote reasoning + // budgets upward (64000 -> 96000 on claude-opus-5), violating the #1761 + // contract that upward adjustment must be opt-in. The over-cap clamp above + // (line 42) already narrows, and the model's own output cap is the only + // legitimate ceiling; any headroom beyond the client-declared value is a + // silent cost increase the client did not authorize. + return current; } diff --git a/open-sse/services/rollingRpmGate.ts b/open-sse/services/rollingRpmGate.ts new file mode 100644 index 0000000000..e62912ba5a --- /dev/null +++ b/open-sse/services/rollingRpmGate.ts @@ -0,0 +1,236 @@ +import { + SlidingWindowLimiter, + type RateLimitScope, + type RateLimitWindow, + type SlidingWindowLease, +} from "./slidingWindowLimiter.ts"; + +type GetLimiterKey = (provider: string, connectionId: string, model?: string | null) => string; +type QueueTimeoutReason = "local-queue" | "upstream-cooldown"; +type QueueTimeoutErrorFactory = ( + provider: string, + model: string | null, + maxWaitMs: number, + reason?: QueueTimeoutReason +) => Error; + +export interface RollingRpmGateOptions { + getGlobalRpm: () => number | null | undefined; + getProviderWindow: (provider: string) => RateLimitWindow | undefined; + getConnectionRpm: (connectionId: string) => number | null | undefined; + getLimiterKey: GetLimiterKey; + createQueueTimeoutError: QueueTimeoutErrorFactory; +} + +interface LearnedHeaderWindow { + window: RateLimitWindow; + expiresAt: number; +} + +function createAbortError(signal: AbortSignal): Error { + const reason = signal.reason; + if (reason instanceof Error) return reason; + const error = new Error(typeof reason === "string" ? reason : "The operation was aborted"); + error.name = "AbortError"; + if (reason !== undefined) (error as Error & { cause?: unknown }).cause = reason; + return error; +} + +function sleepOrAbort(ms: number, signal: AbortSignal | null): Promise { + return new Promise((resolve, reject) => { + const timer = setTimeout(() => { + signal?.removeEventListener("abort", onAbort); + resolve(); + }, ms); + const onAbort = () => { + clearTimeout(timer); + signal?.removeEventListener("abort", onAbort); + reject(createAbortError(signal as AbortSignal)); + }; + if (signal) { + if (signal.aborted) onAbort(); + else signal.addEventListener("abort", onAbort, { once: true }); + } + }); +} + +/** + * Process-local trailing-window RPM admission. Distributed deployments need a + * shared coordination store before this scope can be treated as cluster-wide. + */ +export function keyContainsConnection(key: string, connectionId: string): boolean { + const marker = `:${connectionId}`; + return key.endsWith(marker) || key.includes(`${marker}:`); +} + +export class RollingRpmGate { + private readonly limiter = new SlidingWindowLimiter(); + private readonly blockedUntil = new Map(); + private readonly learnedHeaderWindows = new Map(); + private readonly windowMs = 60_000; + + constructor(private readonly options: RollingRpmGateOptions) {} + + async acquire( + provider: string, + connectionId: string, + model: string | null, + signal: AbortSignal | null, + maxWaitMs: number, + startedAt: number + ): Promise { + const blockKey = this.options.getLimiterKey(provider, connectionId, model); + let scopes = this.getScopes(provider, connectionId, model); + if (scopes.length === 0 && (this.blockedUntil.get(blockKey) ?? 0) <= Date.now()) { + return null; + } + for (;;) { + if (signal?.aborted) throw createAbortError(signal); + + scopes = this.getScopes(provider, connectionId, model); + if (scopes.length === 0 && (this.blockedUntil.get(blockKey) ?? 0) <= Date.now()) { + return null; + } + + const now = Date.now(); + const blockedUntil = this.blockedUntil.get(blockKey) ?? 0; + if (blockedUntil <= now) this.blockedUntil.delete(blockKey); + let scopeBlockedUntil = 0; + for (const scope of scopes) { + const scopeBlocked = this.blockedUntil.get(scope.key) ?? 0; + if (scopeBlocked > now) scopeBlockedUntil = Math.max(scopeBlockedUntil, scopeBlocked); + else if (scopeBlocked > 0) this.blockedUntil.delete(scope.key); + } + const forcedWaitMs = Math.max(0, blockedUntil - now, scopeBlockedUntil - now); + + if (forcedWaitMs === 0) { + const result = this.limiter.tryAcquireMany(scopes); + if (result.allowed) return result.lease ?? null; + const retryAfterMs = Math.max(1, result.retryAfterMs); + const remainingMs = maxWaitMs > 0 ? maxWaitMs - (now - startedAt) : retryAfterMs; + if (maxWaitMs > 0 && remainingMs <= 0) { + throw this.options.createQueueTimeoutError(provider, model, maxWaitMs); + } + await sleepOrAbort( + Math.min(retryAfterMs, maxWaitMs > 0 ? remainingMs : retryAfterMs), + signal + ); + continue; + } + + const remainingMs = maxWaitMs > 0 ? maxWaitMs - (now - startedAt) : forcedWaitMs; + if (maxWaitMs > 0 && remainingMs <= 0) { + throw this.options.createQueueTimeoutError(provider, model, maxWaitMs, "upstream-cooldown"); + } + await sleepOrAbort( + Math.min(forcedWaitMs, maxWaitMs > 0 ? remainingMs : forcedWaitMs), + signal + ); + } + } + + block(provider: string, connectionId: string, model: string | null, retryAfterMs: number): void { + if (retryAfterMs > 0) { + const key = this.options.getLimiterKey(provider, connectionId, model); + this.blockedUntil.set(key, Date.now() + retryAfterMs); + } + } + + learnHeaderWindow( + provider: string, + connectionId: string, + model: string | null, + requests: number, + windowMs: number, + expiresAt: number + ): void { + const key = `header:${this.options.getLimiterKey(provider, connectionId, model)}`; + if (requests <= 0) { + this.learnedHeaderWindows.delete(key); + this.blockedUntil.set(key, expiresAt); + return; + } + this.blockedUntil.delete(key); + this.learnedHeaderWindows.set(key, { + window: { requests, windowMs }, + expiresAt, + }); + } + + clearLearnedHeaderWindow(provider: string, connectionId: string, model: string | null): void { + const key = `header:${this.options.getLimiterKey(provider, connectionId, model)}`; + this.learnedHeaderWindows.delete(key); + this.blockedUntil.delete(key); + } + + clearConnection(connectionId: string): void { + for (const key of this.blockedUntil.keys()) { + if (keyContainsConnection(key, connectionId)) this.blockedUntil.delete(key); + } + for (const key of this.learnedHeaderWindows.keys()) { + if (keyContainsConnection(key, connectionId)) this.learnedHeaderWindows.delete(key); + } + } + + reset(): void { + this.limiter.reset(); + this.blockedUntil.clear(); + this.learnedHeaderWindows.clear(); + } + + cleanupExpired(now = Date.now()): void { + for (const [key, expiresAt] of this.blockedUntil) { + if (expiresAt <= now) this.blockedUntil.delete(key); + } + for (const [key, window] of this.learnedHeaderWindows) { + if (window.expiresAt <= now) this.learnedHeaderWindows.delete(key); + } + } + + private getScopes( + provider: string, + connectionId: string, + model: string | null + ): RateLimitScope[] { + const scopes: RateLimitScope[] = []; + const globalRpm = this.options.getGlobalRpm(); + if (typeof globalRpm === "number" && globalRpm > 0) { + scopes.push({ + key: "global", + window: { requests: globalRpm, windowMs: this.windowMs }, + }); + } + + const providerWindow = this.options.getProviderWindow(provider); + if (providerWindow) scopes.push({ key: `provider:${provider}`, window: providerWindow }); + + const connectionRpm = this.options.getConnectionRpm(connectionId); + if (typeof connectionRpm === "number" && connectionRpm > 0) { + scopes.push({ + key: `provider-account:${provider}:${connectionId}`, + window: { requests: connectionRpm, windowMs: this.windowMs }, + }); + } + + const headerKey = `header:${this.options.getLimiterKey(provider, connectionId, model)}`; + const headerBlockedUntil = this.blockedUntil.get(headerKey) ?? 0; + const headerRemainingMs = headerBlockedUntil - Date.now(); + if (headerRemainingMs > 0) { + scopes.push({ + key: headerKey, + window: { requests: 1, windowMs: headerRemainingMs }, + }); + return scopes; + } + if (headerBlockedUntil > 0) this.blockedUntil.delete(headerKey); + const headerWindow = this.learnedHeaderWindows.get(headerKey); + if (headerWindow) { + if (headerWindow.expiresAt > Date.now()) { + scopes.push({ key: headerKey, window: headerWindow.window }); + } else { + this.learnedHeaderWindows.delete(headerKey); + } + } + return scopes; + } +} diff --git a/open-sse/services/slidingWindowLimiter.ts b/open-sse/services/slidingWindowLimiter.ts index 71be85870f..651e82c2cc 100644 --- a/open-sse/services/slidingWindowLimiter.ts +++ b/open-sse/services/slidingWindowLimiter.ts @@ -27,13 +27,33 @@ export interface AcquireResult { retryAfterMs: number; } +export interface RateLimitScope { + key: string; + window: RateLimitWindow; +} + +export interface SlidingWindowLease { + /** Release a lease that was acquired but never dispatched upstream. */ + release(): void; +} + +export interface MultiAcquireResult extends AcquireResult { + lease?: SlidingWindowLease; +} + +interface Hit { + id: number; + timestamp: number; +} + // Hard ceiling on distinct keys tracked, so a pathological key space (e.g. a // per-request id leaking into the key) can never grow the map without bound. const MAX_KEYS = 5000; export class SlidingWindowLimiter { - private readonly hits = new Map(); + private readonly hits = new Map(); private readonly now: () => number; + private nextHitId = 1; constructor(opts: { now?: () => number } = {}) { this.now = opts.now ?? Date.now; @@ -45,26 +65,60 @@ export class SlidingWindowLimiter { * (without recording) when the trailing window is saturated. */ tryAcquire(key: string, window: RateLimitWindow): AcquireResult { - const { requests, windowMs } = window; - // A non-positive cap or window means "no limit configured" → always allow. - if (!(requests > 0) || !(windowMs > 0)) return { allowed: true, retryAfterMs: 0 }; + const result = this.tryAcquireMany([{ key, window }]); + return { allowed: result.allowed, retryAfterMs: result.retryAfterMs }; + } + + /** + * Acquire all supplied scopes atomically. No scope is recorded unless every + * configured scope has capacity, preventing a global lease from being held + * while a narrower provider/account lease is unavailable. + */ + tryAcquireMany(scopes: readonly RateLimitScope[]): MultiAcquireResult { + const activeScopes = scopes.filter(({ window }) => window.requests > 0 && window.windowMs > 0); + if (activeScopes.length === 0) return { allowed: true, retryAfterMs: 0 }; const now = this.now(); - const cutoff = now - windowMs; - const previous = this.hits.get(key); - // Drop timestamps that have aged out of the trailing window. - const live = previous ? previous.filter((ts) => ts > cutoff) : []; + const prepared = activeScopes.map((scope) => { + const cutoff = now - scope.window.windowMs; + const previous = this.hits.get(scope.key); + const live = previous ? previous.filter((hit) => hit.timestamp > cutoff) : []; + const retryAfterMs = + live.length >= scope.window.requests + ? Math.max(0, live[0].timestamp + scope.window.windowMs - now) + : 0; + return { scope, live, retryAfterMs }; + }); - if (live.length >= requests) { - // The oldest in-window hit is the first to expire and free a slot. - const retryAfterMs = Math.max(0, live[0] + windowMs - now); - this.hits.set(key, live); // persist the pruned list; do NOT record a blocked attempt - return { allowed: false, retryAfterMs }; - } + const retryAfterMs = prepared.reduce((max, entry) => Math.max(max, entry.retryAfterMs), 0); + for (const entry of prepared) this.set(entry.scope.key, entry.live); + if (retryAfterMs > 0) return { allowed: false, retryAfterMs }; - live.push(now); - this.set(key, live); - return { allowed: true, retryAfterMs: 0 }; + const entries = prepared.map((entry) => { + const hit = { id: this.nextHitId++, timestamp: now }; + entry.live.push(hit); + this.set(entry.scope.key, entry.live); + return { key: entry.scope.key, id: hit.id }; + }); + + let released = false; + return { + allowed: true, + retryAfterMs: 0, + lease: { + release: () => { + if (released) return; + released = true; + for (const entry of entries) { + const live = this.hits.get(entry.key); + if (!live) continue; + const remaining = live.filter((hit) => hit.id !== entry.id); + if (remaining.length > 0) this.hits.set(entry.key, remaining); + else this.hits.delete(entry.key); + } + }, + }, + }; } /** Clear history for one key, or all keys when called with no argument. */ @@ -73,7 +127,11 @@ export class SlidingWindowLimiter { else this.hits.delete(key); } - private set(key: string, live: number[]): void { + private set(key: string, live: Hit[]): void { + if (live.length === 0) { + this.hits.delete(key); + return; + } if (!this.hits.has(key) && this.hits.size >= MAX_KEYS) { // Evict the least-recently-inserted key (Map preserves insertion order). const oldest = this.hits.keys().next().value; diff --git a/open-sse/services/specificityTypes.ts b/open-sse/services/specificityTypes.ts index 84c3da59b0..c85c1dbe21 100644 --- a/open-sse/services/specificityTypes.ts +++ b/open-sse/services/specificityTypes.ts @@ -30,6 +30,7 @@ export interface RuleInput { messages: Array<{ role?: string; content?: string | unknown }>; systemPrompt?: string; tools?: Array<{ + type?: string; function?: { name: string; description?: string; parameters?: unknown }; }>; model?: string; diff --git a/open-sse/services/systemTransforms.ts b/open-sse/services/systemTransforms.ts index 813bd5350f..e7542619e3 100644 --- a/open-sse/services/systemTransforms.ts +++ b/open-sse/services/systemTransforms.ts @@ -341,9 +341,17 @@ function applyObfuscateWords(body: RequestBody, op: ObfuscateWordsOp): void { if (typeof content === "string") { msg.content = obfuscateWithList(content, words); } else if (Array.isArray(content)) { - for (const block of content as Array>) { - if (typeof block.text === "string") { - block.text = obfuscateWithList(block.text, words); + // A signed Anthropic thinking turn covers its text siblings too. Leave + // the entire turn byte-for-byte intact so its signature remains valid. + const blocks = content as Array>; + const hasSignedThinking = blocks.some( + (block) => block?.type === "thinking" || block?.type === "redacted_thinking" + ); + if (!hasSignedThinking) { + for (const block of blocks) { + if (typeof block.text === "string") { + block.text = obfuscateWithList(block.text, words); + } } } } diff --git a/open-sse/services/tokenRefresh/providers/copilot.ts b/open-sse/services/tokenRefresh/providers/copilot.ts index 92fe9d8b39..44e05b647f 100644 --- a/open-sse/services/tokenRefresh/providers/copilot.ts +++ b/open-sse/services/tokenRefresh/providers/copilot.ts @@ -5,12 +5,24 @@ import { getGitHubCopilotRefreshHeaders } from "../../../config/providerHeaderPr import { runWithProxyContext } from "../../../utils/proxyFetch.ts"; /** - * Refresh GitHub Copilot token using GitHub access token + * Refresh GitHub Copilot token using a GitHub access token. + * + * `baseUrl` defaults to github.com's Copilot API but can be overridden to a + * GitHub Enterprise host's `/api/v3` so the same helper serves both + * the `github` and `ghe-copilot` providers (GHE has its own per-enterprise + * Copilot token endpoint; api.github.com never issues a token scoped to a + * GHE account). */ -export async function refreshCopilotToken(githubAccessToken, log, proxyConfig: unknown = null) { +export async function refreshCopilotToken( + githubAccessToken, + log, + proxyConfig: unknown = null, + baseUrl: string = "https://api.github.com" +) { try { + const tokenUrl = `${baseUrl.replace(/\/+$/, "")}/copilot_internal/v2/token`; const response = await runWithProxyContext(proxyConfig, () => - fetch("https://api.github.com/copilot_internal/v2/token", { + fetch(tokenUrl, { headers: getGitHubCopilotRefreshHeaders(`token ${githubAccessToken}`), }) ); diff --git a/open-sse/services/usage.ts b/open-sse/services/usage.ts index 1123ca4951..679d4f263d 100644 --- a/open-sse/services/usage.ts +++ b/open-sse/services/usage.ts @@ -228,7 +228,7 @@ export async function getUsageForProvider( case "ha": return await getHyperAgentUsage(apiKey || accessToken, providerSpecificData); case "firecrawl": - return await getFirecrawlUsage(id || "", apiKey); + return await getFirecrawlUsage(id || "", apiKey, connection); default: return { message: `Usage API not implemented for ${provider}` }; } diff --git a/open-sse/services/usage/antigravity.ts b/open-sse/services/usage/antigravity.ts index 7b2f2ce13a..693771d681 100644 --- a/open-sse/services/usage/antigravity.ts +++ b/open-sse/services/usage/antigravity.ts @@ -272,21 +272,24 @@ async function fetchAntigravityUserQuotaCached( const promise = (async () => { try { - const response = await fetch( - "https://cloudcode-pa.googleapis.com/v1internal:retrieveUserQuota", - { - method: "POST", - headers: getAntigravityContentHeaders(clientProfile, accessToken), - body: JSON.stringify({ project: projectId }), - signal: AbortSignal.timeout(10000), - } - ); + for (const baseUrl of ANTIGRAVITY_RUNTIME_BASE_URLS) { + const response = await fetch( + `${baseUrl}/v1internal:retrieveUserQuota`, + { + method: "POST", + headers: getAntigravityContentHeaders(clientProfile, accessToken), + body: JSON.stringify({ project: projectId }), + signal: AbortSignal.timeout(10000), + } + ); - if (!response.ok) return null; + if (!response.ok) continue; - const data = await response.json(); - _antigravityUserQuotaCache.set(cacheKey, { data, fetchedAt: Date.now() }); - return data; + const data = await response.json(); + _antigravityUserQuotaCache.set(cacheKey, { data, fetchedAt: Date.now() }); + return data; + } + return null; } catch { return null; } diff --git a/open-sse/services/usage/antigravityWeeklyQuota.ts b/open-sse/services/usage/antigravityWeeklyQuota.ts index 3aa4e78d18..a806eb4645 100644 --- a/open-sse/services/usage/antigravityWeeklyQuota.ts +++ b/open-sse/services/usage/antigravityWeeklyQuota.ts @@ -17,6 +17,7 @@ * `fetchAntigravityUserQuotaCached` pattern. */ +import { ANTIGRAVITY_RUNTIME_BASE_URLS } from "../../config/antigravityUpstream.ts"; import { toRecord, toNumber } from "./scalars.ts"; import { type UsageQuota, parseResetTime } from "./quota.ts"; import { getAntigravityContentHeaders } from "../antigravityHeaders.ts"; @@ -81,21 +82,24 @@ export async function fetchAntigravityUserQuotaSummaryCached( const promise = (async () => { try { - const response = await fetch( - "https://cloudcode-pa.googleapis.com/v1internal:retrieveUserQuotaSummary", - { - method: "POST", - headers: getAntigravityContentHeaders(clientProfile, accessToken), - body: JSON.stringify({ project: projectId }), - signal: AbortSignal.timeout(10000), - } - ); + for (const baseUrl of ANTIGRAVITY_RUNTIME_BASE_URLS) { + const response = await fetch( + `${baseUrl}/v1internal:retrieveUserQuotaSummary`, + { + method: "POST", + headers: getAntigravityContentHeaders(clientProfile, accessToken), + body: JSON.stringify({ project: projectId }), + signal: AbortSignal.timeout(10000), + } + ); - if (!response.ok) return null; + if (!response.ok) continue; - const data = await response.json(); - _weeklyQuotaCache.set(cacheKey, { data, fetchedAt: Date.now() }); - return data; + const data = await response.json(); + _weeklyQuotaCache.set(cacheKey, { data, fetchedAt: Date.now() }); + return data; + } + return null; } catch { return null; } diff --git a/open-sse/services/usage/firecrawl.ts b/open-sse/services/usage/firecrawl.ts index ea2ae1618f..793df7e673 100644 --- a/open-sse/services/usage/firecrawl.ts +++ b/open-sse/services/usage/firecrawl.ts @@ -5,7 +5,11 @@ * credits into the standard `{ plan, quotas }` response. */ -import { fetchFirecrawlQuota, type FirecrawlQuota } from "../firecrawlQuotaFetcher.ts"; +import { + fetchFirecrawlQuota, + getFirecrawlBaseUrl, + type FirecrawlQuota, +} from "../firecrawlQuotaFetcher.ts"; import { createQuotaFromUsage, parseResetTime } from "./quota.ts"; function createFirecrawlPlanQuota(q: FirecrawlQuota) { @@ -29,13 +33,31 @@ function createFirecrawlPlanQuota(q: FirecrawlQuota) { }; } -export async function getFirecrawlUsage(connectionId: string, apiKey?: string) { +export async function getFirecrawlUsage( + connectionId: string, + apiKey?: string, + connection?: Record +) { if (!connectionId) { return { message: "Firecrawl: connection id unavailable." }; } + const customBase = getFirecrawlBaseUrl(connection); + if (customBase) { + return { + plan: "Firecrawl · Self-Hosted Local", + quotas: {}, + message: `Connected to self-hosted Firecrawl instance (${customBase})`, + }; + } + try { - const live = await fetchFirecrawlQuota(connectionId, { apiKey }); + // The explicit `apiKey` argument was silently dropped when #91bb6aa619 moved + // this to fetchFirecrawlQuota(connectionId, connection): the fetcher reads the + // key off the connection record, so a caller that passes the key directly — + // without a connection carrying it — always got "API key not available". + const resolvedConnection = apiKey ? { ...(connection || {}), apiKey } : connection; + const live = await fetchFirecrawlQuota(connectionId, resolvedConnection); if (!live) { return { message: "Firecrawl API key not available or credit usage unavailable." }; } diff --git a/open-sse/services/webSearchFallback.ts b/open-sse/services/webSearchFallback.ts index 7ae1749803..0cc33fdac7 100644 --- a/open-sse/services/webSearchFallback.ts +++ b/open-sse/services/webSearchFallback.ts @@ -1,7 +1,10 @@ import { FORMATS } from "../translator/formats.ts"; export const OMNIROUTE_WEB_SEARCH_FALLBACK_TOOL_NAME = "omniroute_web_search"; -const WEB_SEARCH_TOOL_TYPES = new Set(["web_search", "web_search_preview"]); +// Prefix match — Anthropic sends date-suffixed variants (web_search_20250305, …). +// The other two detectors (openai-responses/helpers.ts, webSearchRouting.ts) already +// use /^web_search/ prefix matching; this aligns the fallback detector with them. +const WEB_SEARCH_TOOL_TYPES = /^web_search/; const SEARCH_CONTEXT_DEFAULTS: Record = { low: 5, medium: 8, @@ -27,13 +30,13 @@ function toRecord(value: unknown): JsonRecord { function isBuiltInWebSearchTool(tool: unknown): tool is JsonRecord { const toolRecord = toRecord(tool); const toolType = typeof toolRecord.type === "string" ? toolRecord.type : ""; - return WEB_SEARCH_TOOL_TYPES.has(toolType) && !toolRecord.function; + return WEB_SEARCH_TOOL_TYPES.test(toolType) && !toolRecord.function; } function isBuiltInWebSearchToolChoice(toolChoice: unknown): boolean { const choice = toRecord(toolChoice); const toolType = typeof choice.type === "string" ? choice.type : ""; - return WEB_SEARCH_TOOL_TYPES.has(toolType); + return WEB_SEARCH_TOOL_TYPES.test(toolType); } function buildFallbackDescription(tool: JsonRecord): string { diff --git a/open-sse/transformer/responsesTransformer.ts b/open-sse/transformer/responsesTransformer.ts index 70b62a04e3..dca61a31fa 100644 --- a/open-sse/transformer/responsesTransformer.ts +++ b/open-sse/transformer/responsesTransformer.ts @@ -87,7 +87,7 @@ export function createResponsesLogger(model, logsDir = null) { export function createResponsesApiTransformStream( logger = null, keepaliveIntervalMs = 3000, - options = {} + options: { customToolNames?: Iterable } = {} ) { const customToolNames = new Set(options.customToolNames || []); const state = { diff --git a/open-sse/translator/helpers/claudeHelper.ts b/open-sse/translator/helpers/claudeHelper.ts index e34704651c..b490fe4bd5 100644 --- a/open-sse/translator/helpers/claudeHelper.ts +++ b/open-sse/translator/helpers/claudeHelper.ts @@ -153,8 +153,18 @@ export function splitMisplacedToolResults(messages: ClaudeMessage[]): ClaudeMess // Fix tool_use/tool_result ordering for Claude API // 1. Assistant message with tool_use: remove text AFTER tool_use (Claude doesn't allow) // 2. Merge consecutive same-role messages +// 3. Reconcile tool_result blocks against the immediately previous tool_use message export function fixToolUseOrdering(messages: ClaudeMessage[]): ClaudeMessage[] { - if (messages.length <= 1) return messages; + if (messages.length === 0) return messages; + if ( + messages.length === 1 && + !( + Array.isArray(messages[0]?.content) && + messages[0].content.some((block) => block.type === "tool_result") + ) + ) { + return messages; + } // Pass 1: Fix assistant messages with tool_use - remove text after tool_use for (const msg of messages) { @@ -218,6 +228,53 @@ export function fixToolUseOrdering(messages: ClaudeMessage[]): ClaudeMessage[] { } } + // Claude accepts tool_result only for a tool_use in the immediately previous + // assistant message. Compacted cross-model history can retain an output after + // dropping its call; keep that output as user text instead of sending an + // invalid structured reference or discarding useful context. + for (let i = 0; i < merged.length; i++) { + const msg = merged[i]; + if (msg.role !== "user" || !Array.isArray(msg.content)) continue; + + const previous = merged[i - 1]; + const validIds = new Set( + previous?.role === "assistant" && Array.isArray(previous.content) + ? previous.content.flatMap((block) => + block.type === "tool_use" && typeof block.id === "string" && block.id ? [block.id] : [] + ) + : [] + ); + const pairedById = new Map(); + const otherContent: ClaudeContentBlock[] = []; + + for (const block of msg.content) { + if (block.type !== "tool_result") { + otherContent.push(block); + continue; + } + + const toolUseId = typeof block.tool_use_id === "string" ? block.tool_use_id : ""; + if (validIds.has(toolUseId) && !pairedById.has(toolUseId)) { + pairedById.set(toolUseId, block); + continue; + } + + const serialized = + typeof block.content === "string" + ? block.content + : (JSON.stringify(block.content ?? "") ?? ""); + otherContent.push({ + type: "text", + text: `[Unpaired tool result ${toolUseId || "unknown"}]\n${serialized}`, + }); + } + + const pairedResults = [...validIds].map( + (id) => pairedById.get(id) ?? { type: "tool_result", tool_use_id: id, content: "" } + ); + msg.content = [...pairedResults, ...otherContent]; + } + return merged; } diff --git a/open-sse/translator/helpers/responsesApiHelper.ts b/open-sse/translator/helpers/responsesApiHelper.ts index 179ae39344..1f856b11f1 100644 --- a/open-sse/translator/helpers/responsesApiHelper.ts +++ b/open-sse/translator/helpers/responsesApiHelper.ts @@ -3,7 +3,15 @@ * Delegates to the canonical translator to avoid logic duplication. */ import { openaiResponsesToOpenAIRequest } from "../request/openai-responses.ts"; +import { toRecord } from "../request/openai-responses/helpers.ts"; export function convertResponsesApiFormat(body, credentials = null, provider = null) { - return openaiResponsesToOpenAIRequest(provider, body, null, credentials); + const bodyModel = toRecord(body).model; + const requestedModel = + typeof bodyModel === "string" && bodyModel.trim().length > 0 + ? bodyModel.includes("/") || typeof provider !== "string" || provider.length === 0 + ? bodyModel + : `${provider}/${bodyModel}` + : provider; + return openaiResponsesToOpenAIRequest(requestedModel, body, null, credentials); } diff --git a/open-sse/translator/helpers/toolCallHelper.ts b/open-sse/translator/helpers/toolCallHelper.ts index caf69dd184..817aabbf57 100644 --- a/open-sse/translator/helpers/toolCallHelper.ts +++ b/open-sse/translator/helpers/toolCallHelper.ts @@ -1,7 +1,161 @@ +import { createHash } from "node:crypto"; + // Tool call helper functions for translator const ALPHANUM9 = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; +type JsonRecord = Record; +type ToolNameAliases = Map; + +interface ToolFunction extends JsonRecord { + name?: unknown; + arguments?: unknown; +} + +interface ToolCallRecord extends JsonRecord { + id?: unknown; + type?: unknown; + function?: ToolFunction; +} + +interface ToolContentBlock extends JsonRecord { + type?: unknown; + id?: unknown; + tool_use_id?: unknown; +} + +interface ToolMessage extends JsonRecord { + role?: unknown; + tool_calls?: ToolCallRecord[]; + tool_call_id?: unknown; + content?: unknown; +} + +interface ToolCallBody extends JsonRecord { + messages?: ToolMessage[]; +} + +function toRecord(value: unknown): JsonRecord | null { + return value && typeof value === "object" && !Array.isArray(value) ? (value as JsonRecord) : null; +} + +function aliasOpenAIToolName(name: unknown, maxLength: number, aliases: ToolNameAliases): unknown { + if (typeof name !== "string" || name.length === 0) return name; + + const safe = name.replace(/[^A-Za-z0-9_-]/g, "_"); + if (safe === name && safe.length <= maxLength) return safe; + + const hash = createHash("sha256").update(name).digest("hex").slice(0, 12); + const prefixLength = Math.max(0, maxLength - hash.length - 1); + const shortened = + prefixLength > 0 ? `${safe.slice(0, prefixLength)}_${hash}` : hash.slice(0, maxLength); + aliases.set(shortened, name); + return shortened; +} + +/** + * Mutates an OpenAI-compatible request so every function name satisfies a + * provider's maximum length and `[A-Za-z0-9_-]` character constraints. + * Returns alias → original entries for response restoration. + */ +export function normalizeOpenAIToolNames(body: unknown, maxLength: number): ToolNameAliases { + const aliases: ToolNameAliases = new Map(); + const root = toRecord(body); + if (!root || !Number.isInteger(maxLength) || maxLength < 1) return aliases; + + const alias = (name: unknown): unknown => aliasOpenAIToolName(name, maxLength, aliases); + + if (Array.isArray(root.tools)) { + for (const tool of root.tools) { + const fn = toRecord(toRecord(tool)?.function); + if (fn && typeof fn.name === "string") fn.name = alias(fn.name); + } + } + + const toolChoiceFunction = toRecord(toRecord(root.tool_choice)?.function); + if (toolChoiceFunction && typeof toolChoiceFunction.name === "string") { + toolChoiceFunction.name = alias(toolChoiceFunction.name); + } + + if (Array.isArray(root.messages)) { + for (const message of root.messages) { + const msg = toRecord(message); + if (!msg) continue; + if (Array.isArray(msg.tool_calls)) { + for (const toolCall of msg.tool_calls) { + const fn = toRecord(toRecord(toolCall)?.function); + if (fn && typeof fn.name === "string") fn.name = alias(fn.name); + } + } + if (msg.role === "tool" && typeof msg.name === "string") { + msg.name = alias(msg.name); + } + } + } + + return aliases; +} + +/** + * Case-insensitive fallback for tool name lookups from upstream responses. + * + * Many upstream providers/models return tool call names in lowercase (e.g., "bash") + * even when the tool definition used PascalCase ("Bash"). This helper tries an exact + * match first (fast path for well-behaved providers), then falls back to a + * case-insensitive scan over the map entries. + * + * Returns the mapped value on match, or `undefined` when no entry matches. + */ +export function caseInsensitiveToolNameLookup( + name: string, + map: Map | null | undefined +): string | undefined { + if (!map || !name) return undefined; + + // Fast path: exact match (PascalCase-preserving providers) + const exact = map.get(name); + if (exact !== undefined) return exact; + + // Fallback: case-insensitive scan + const lowerName = name.toLowerCase(); + for (const [key, value] of map) { + if (key.toLowerCase() === lowerName) { + return value; + } + } + + return undefined; +} + +/** Restore normalized function names in OpenAI Chat Completions responses. */ +export function restoreOpenAIToolNames(body: unknown, aliases: unknown): boolean { + if (!(aliases instanceof Map) || aliases.size === 0) return false; + const root = toRecord(body); + if (!root || !Array.isArray(root.choices)) return false; + + let changed = false; + const restoreCalls = (calls: unknown): void => { + if (!Array.isArray(calls)) return; + for (const toolCall of calls) { + const fn = toRecord(toRecord(toolCall)?.function); + if (!fn || typeof fn.name !== "string") continue; + const original = caseInsensitiveToolNameLookup(fn.name, aliases); + if (typeof original !== "string" || original === fn.name) continue; + fn.name = original; + changed = true; + } + }; + + for (const choice of root.choices) { + const record = toRecord(choice); + if (!record) continue; + restoreCalls(toRecord(record.delta)?.tool_calls); + restoreCalls(toRecord(record.message)?.tool_calls); + } + + return changed; +} + // Fallback streaming tool_call id when a provider response omits one (index optional). // `call_` when no index is given; `call__` when an index is supplied. export function fallbackToolCallId(index?: number): string { @@ -23,7 +177,10 @@ function generateToolCallId9(): string { } /** @param options.use9CharId - When true, normalize ids to 9-char [a-zA-Z0-9] (e.g. Mistral); when false, only fix type/arguments, leave ids as-is */ -export function ensureToolCallIds(body, options?: { use9CharId?: boolean }) { +export function ensureToolCallIds( + body: T, + options?: { use9CharId?: boolean } +): T { if (!body.messages || !Array.isArray(body.messages)) return body; const use9CharId = options?.use9CharId === true; @@ -59,8 +216,11 @@ export function ensureToolCallIds(body, options?: { use9CharId?: boolean }) { } } - // Tool responses (role "tool") follow in same order as tool_calls; set tool_call_id by index. - // Stop when we hit another assistant so we only link tool messages that immediately follow this one. + // Tool responses (role "tool") follow in the same order as tool_calls. Rewrite + // every id only when the provider requires generated 9-char ids; otherwise keep + // explicit client ids and fill only missing ones. Overwriting a compacted orphan's + // explicit id by position can make it impersonate a different parallel call. + // Stop at the next assistant so we only link responses belonging to this turn. if (newIdsInOrder.length > 0) { let idx = 0; for (let j = i + 1; j < body.messages.length; j++) { @@ -68,7 +228,13 @@ export function ensureToolCallIds(body, options?: { use9CharId?: boolean }) { if (later.role === "assistant") break; if (later.role !== "tool") continue; if (idx < newIdsInOrder.length) { - later.tool_call_id = newIdsInOrder[idx]; + if ( + use9CharId || + later.tool_call_id == null || + String(later.tool_call_id).trim() === "" + ) { + later.tool_call_id = newIdsInOrder[idx]; + } idx++; } } @@ -79,23 +245,23 @@ export function ensureToolCallIds(body, options?: { use9CharId?: boolean }) { } // Get tool_call ids from assistant message (OpenAI format: tool_calls, Claude format: tool_use in content) -export function getToolCallIds(msg) { +export function getToolCallIds(msg: ToolMessage): string[] { if (msg.role !== "assistant") return []; - const ids = []; + const ids: string[] = []; // OpenAI format: tool_calls array if (msg.tool_calls && Array.isArray(msg.tool_calls)) { for (const tc of msg.tool_calls) { - if (tc.id) ids.push(tc.id); + if (tc.id) ids.push(String(tc.id)); } } // Claude format: tool_use blocks in content if (Array.isArray(msg.content)) { - for (const block of msg.content) { + for (const block of msg.content as ToolContentBlock[]) { if (block.type === "tool_use" && block.id) { - ids.push(block.id); + ids.push(String(block.id)); } } } @@ -104,18 +270,25 @@ export function getToolCallIds(msg) { } // Check if user message has tool_result for given ids (OpenAI format: role=tool, Claude format: tool_result in content) -export function hasToolResults(msg, toolCallIds) { +export function hasToolResults( + msg: ToolMessage | null | undefined, + toolCallIds: string[] +): boolean { if (!msg || !toolCallIds.length) return false; // OpenAI format: role = "tool" with tool_call_id if (msg.role === "tool" && msg.tool_call_id) { - return toolCallIds.includes(msg.tool_call_id); + return toolCallIds.includes(String(msg.tool_call_id)); } // Claude format: tool_result blocks in user message content if (msg.role === "user" && Array.isArray(msg.content)) { - for (const block of msg.content) { - if (block.type === "tool_result" && toolCallIds.includes(block.tool_use_id)) { + for (const block of msg.content as ToolContentBlock[]) { + if ( + block.type === "tool_result" && + block.tool_use_id && + toolCallIds.includes(String(block.tool_use_id)) + ) { return true; } } @@ -127,10 +300,10 @@ export function hasToolResults(msg, toolCallIds) { // Fix missing tool responses - insert empty tool_result if assistant has tool_use but next message has no tool_result. // Inserts in the same shape as the opening assistant message: OpenAI tool_calls → role:"tool"; // Claude tool_use blocks → role:"user" with tool_result content blocks. -export function fixMissingToolResponses(body) { +export function fixMissingToolResponses(body: T): T { if (!body.messages || !Array.isArray(body.messages)) return body; - const newMessages = []; + const newMessages: ToolMessage[] = []; for (let i = 0; i < body.messages.length; i++) { const msg = body.messages[i]; @@ -179,7 +352,7 @@ export function fixMissingToolResponses(body) { // role:"tool" messages and Claude-format tool_result content blocks. Drops a // user message entirely if stripping empties its content array. Returns the // same body reference when nothing needs to change (no-op fast path). -export function stripOrphanedToolResults(body) { +export function stripOrphanedToolResults(body: T): T { if (!body.messages || !Array.isArray(body.messages)) return body; const knownCallIds = new Set(); @@ -190,11 +363,11 @@ export function stripOrphanedToolResults(body) { } let changed = false; - const filteredMessages = []; + const filteredMessages: ToolMessage[] = []; for (const msg of body.messages) { if (msg.role === "tool" && msg.tool_call_id) { - if (knownCallIds.has(msg.tool_call_id)) { + if (knownCallIds.has(String(msg.tool_call_id))) { filteredMessages.push(msg); } else { changed = true; @@ -203,7 +376,7 @@ export function stripOrphanedToolResults(body) { } if (Array.isArray(msg.content)) { - const cleanedContent = msg.content.filter((block) => { + const cleanedContent = (msg.content as ToolContentBlock[]).filter((block) => { if (block?.type !== "tool_result") return true; return typeof block.tool_use_id === "string" && knownCallIds.has(block.tool_use_id); }); diff --git a/open-sse/translator/index.ts b/open-sse/translator/index.ts index d7f107fbb7..8497989f09 100644 --- a/open-sse/translator/index.ts +++ b/open-sse/translator/index.ts @@ -14,6 +14,7 @@ import { resolveConnectionCacheOverride, } from "../utils/cacheControlPolicy.ts"; import { requiresAuthenticReasoningContent } from "../utils/reasoningContentInjector.ts"; +import { isInternalReasoningPlaceholder } from "../utils/reasoningPlaceholder.ts"; import { coerceToolSchemas, injectEmptyReasoningContentForToolCalls, @@ -25,6 +26,7 @@ import { bootstrapTranslatorRegistry } from "./bootstrap.ts"; import { hasThinkingConfig, normalizeThinkingConfig } from "../services/provider.ts"; import { applyThinkingBudget } from "../services/thinkingBudget.ts"; import { applyReasoningRuleDirective } from "@/lib/reasoningRouting/policy"; +import { getModelPreserveVideoUrl } from "@/lib/db/models/modelPreserveVideoUrl"; import { getResolvedModelCapabilities, supportsReasoning } from "../services/modelCapabilities.ts"; import { normalizeRoles } from "../services/roleNormalizer.ts"; import { hoistLeadingSystemMessage } from "./helpers/strictSystemHoist.ts"; @@ -164,6 +166,29 @@ function isReasoningOnlyReplayTarget(provider: unknown, model: unknown): boolean ); } +/** + * Upstreams that reject an ABSENT reasoning_content on replay turns, so the + * placeholder must survive the cache miss. + * + * #9573/#9610 removed the placeholder globally because the model echoed it as + * its own reasoning and stopped (empty turns). That holds for DeepSeek, where + * an absent field was verified to be accepted — but Xiaomi MiMo still 400s + * ("Param Incorrect: The reasoning_content in the thinking mode must be passed + * back to the API", 9router#1321/#1337), so omitting the field there trades one + * live bug for another. Keep the placeholder only for those providers; the echo + * that comes back is still stripped on the way in by + * isInternalReasoningPlaceholder(), so it never re-poisons cache or history. + */ +function requiresReasoningContentPresence(provider: unknown, model: unknown): boolean { + const normalizedProvider = String(provider ?? "") + .trim() + .toLowerCase(); + const normalizedModel = String(model ?? "") + .trim() + .toLowerCase(); + return normalizedProvider === "xiaomi-mimo" || /(^|\/)mimo/i.test(normalizedModel); +} + /** @param options.normalizeToolCallId - When true, use 9-char tool call ids (e.g. Mistral); when false, leave ids as-is */ /** @param options.preserveDeveloperRole - undefined/true: keep developer for OpenAI format (default); false: map to system */ /** @param options.preserveCacheControl - When true, preserve client-side cache_control markers (for Claude Code, etc.) */ @@ -224,8 +249,12 @@ export function translateRequest( // Fix missing tool responses (insert empty tool_result if needed) fixMissingToolResponses(result); - // Strip orphaned tool results (tool_result/role:tool with no matching tool_call) - stripOrphanedToolResults(result); + // Claude reconciliation preserves orphaned tool output as labelled user text. + // Keep the raw result carriers until the target translator can perform that + // lossless conversion; other target formats retain the strict orphan filter. + if (targetFormat !== FORMATS.CLAUDE) { + stripOrphanedToolResults(result); + } // Normalize roles: developer→system unless preserved, system→user for incompatible models. // This handles (1) sourceFormat openai with messages containing developer → non-openai target @@ -258,11 +287,16 @@ export function translateRequest( if (directTranslator && sourceFormat !== FORMATS.OPENAI && targetFormat !== FORMATS.OPENAI) { // Thread the routed provider id so target translators can apply provider-specific // quirks (e.g. Vertex rejects function_call.id — #3440). + // Also thread signatureNamespace so Claude→Gemini can re-attach cached + // thoughtSignature on tool-use history (#8979 / #2504 parity with the hub path). + const hasNs = options?.signatureNamespace != null; + const hasProvider = provider != null; const directCredentials = - provider != null + hasNs || hasProvider ? { ...(credentials && typeof credentials === "object" ? credentials : {}), - _provider: provider, + ...(hasProvider ? { _provider: provider } : {}), + ...(hasNs ? { _signatureNamespace: options.signatureNamespace } : {}), } : credentials; result = directTranslator(model, result, stream, directCredentials); @@ -359,8 +393,11 @@ export function translateRequest( providerHonorsOpenAIFormatCacheControl(provider, connectionCacheOverride), // #4849 regression guard: keep client reasoning_content for replay providers. preserveReasoningContent: isReasoner, - // Moonshot's Chat API accepts its own OpenAI-compatible `video_url` block. - preserveVideoUrl: normalizedProvider === "moonshot" || normalizedProvider === "kimi", + // Per-provider/model preserveVideoUrl flag from compat overrides. + // Falls back to true for moonshot/kimi when unset (legacy behavior). + preserveVideoUrl: + getModelPreserveVideoUrl(normalizedProvider, normalizedModel) ?? + (normalizedProvider === "moonshot" || normalizedProvider === "kimi"), }); } @@ -472,10 +509,11 @@ export function translateRequest( !hasNonEmptyReasoningContent(msg); if (!hasToolCalls && !hasToolUseBlocks && !shouldReplayReasoningOnly) { - // Strip empty reasoning_content on non-tool-call messages we are NOT - // replaying (e.g. non-DeepSeek targets); an empty string has no meaningful - // value to send and may confuse some upstreams. - if (msg.reasoning_content === "") { + // Strip empty or placeholder reasoning_content on non-tool-call messages + // we are NOT replaying. The placeholder is request scaffolding, never + // real reasoning — forwarding it makes the model continue its chain of + // thought FROM that text (echo → empty stop, #9573). + if (msg.reasoning_content === "" || isInternalReasoningPlaceholder(msg.reasoning_content)) { delete msg.reasoning_content; } continue; @@ -517,9 +555,17 @@ export function translateRequest( } // ── OpenAI-format message ── - // Skip if client already provided real reasoning_content + // Skip if client already provided real reasoning_content. The internal + // replay placeholder is NOT real reasoning: drop it and fall through to + // the cache lookup so it can be replaced with genuine cached reasoning. + // Forwarding it makes the model continue its chain of thought from that + // text (echo → empty stop), and the echo re-poisons cache + client + // history (#9573). if (hasNonEmptyReasoningContent(msg)) { - continue; + if (!isInternalReasoningPlaceholder(msg.reasoning_content)) { + continue; + } + delete msg.reasoning_content; } const cacheKey = hasToolCalls @@ -542,19 +588,21 @@ export function translateRequest( continue; } - // Cache miss fallback — use a non-empty placeholder. - // Empty string causes DeepSeek V4+ to reject with 400: - // "reasoning_content in the thinking mode must be passed back to the API." - // Note: injectEmptyReasoningContentForToolCalls may have pre-set - // reasoning_content="" before the cache lookup, so we check for - // both undefined AND empty string here. - // - // Applies to tool-call messages AND to plain (non-tool-call) assistant turns - // on DeepSeek replay targets (#1682). Without the placeholder on plain turns, - // a multi-turn text conversation whose reasoning_content the client stripped - // is forwarded to DeepSeek without the field and rejected with 400. + // Cache miss fallback — previously injected a non-empty placeholder + // (NON_ANTHROPIC_THINKING_PLACEHOLDER) to dodge an alleged DeepSeek V4 400 + // on missing reasoning_content. The placeholder is the root cause of this + // bug: the model echoes it as its own reasoning and stops (empty turns), + // and the echo re-poisons the cache + client history (#9573). Empirically, + // deepseek-v4-flash accepts an ABSENT reasoning_content field (the 400 is + // specific to empty-string, and even that is endpoint-dependent). Omit + // the field instead; providers that genuinely enforce the contract + // (kimi-coding, moonshot authentic-reasoning) have their own paths above. if ((hasToolCalls || shouldReplayReasoningOnly) && !msg.reasoning_content) { - msg.reasoning_content = NON_ANTHROPIC_THINKING_PLACEHOLDER; + if (requiresReasoningContentPresence(normalizedProvider, normalizedModel)) { + msg.reasoning_content = NON_ANTHROPIC_THINKING_PLACEHOLDER; + } else { + delete msg.reasoning_content; + } } } } else if ( diff --git a/open-sse/translator/request/claude-to-gemini.ts b/open-sse/translator/request/claude-to-gemini.ts index 21d8192271..a69540e49d 100644 --- a/open-sse/translator/request/claude-to-gemini.ts +++ b/open-sse/translator/request/claude-to-gemini.ts @@ -5,10 +5,14 @@ import { tryParseJSON, cleanJSONSchemaForAntigravity, } from "../helpers/geminiHelper.ts"; -import { DEFAULT_THINKING_GEMINI_SIGNATURE } from "../../config/defaultThinkingSignature.ts"; import { buildGeminiTools, sanitizeGeminiToolName } from "../helpers/geminiToolsSanitizer.ts"; +import { + buildGeminiThoughtSignatureKey, + resolveGeminiThoughtSignature, +} from "../../services/geminiThoughtSignatureStore.ts"; import { capMaxOutputTokens, capThinkingBudget } from "../../../src/lib/modelCapabilities.ts"; import { getModelSpec } from "../../../src/shared/constants/modelSpecs.ts"; +import { buildHistoricalToolResultContext } from "./openai-to-gemini/helpers.ts"; /** * Direct Claude → Gemini request translator. @@ -26,6 +30,16 @@ export function claudeToGeminiRequest(model, body, stream, credentials = null) { // is scoped to the routed vertex provider only (threaded via credentials._provider). const provider = credentials && typeof credentials === "object" ? credentials._provider : null; const stripFunctionCallId = provider === "vertex" || provider === "vertex-partner"; + // Thread the signature namespace so a thinking model's thoughtSignature (cached on the + // Gemini→Claude response turn under `:`) is found and + // re-attached on the follow-up Claude→Gemini request. Without this, Claude Desktop + // combo turns hit HTTP 400 "missing thought_signature" (#8979 / #2504 parity). + const signatureNamespace = + credentials && + typeof credentials === "object" && + typeof credentials._signatureNamespace === "string" + ? credentials._signatureNamespace + : null; const result: { model: string; contents: Array>; @@ -81,14 +95,30 @@ export function claudeToGeminiRequest(model, body, stream, credentials = null) { } } - // ── Build tool_use name lookup (for tool_result matching) ────── - const toolUseNames = {}; + // ── Build tool_use name lookup + resolve thought signatures ──── + // Standard Gemini rejects signature-less native functionCall parts with + // HTTP 400 (#8979). Match the OPENAI→GEMINI "context" policy (#3688): only + // emit native functionCall/functionResponse when a real signature is + // available; otherwise represent history as context text. + const toolUseNames: Record = {}; + const resolvedSignatures = new Map(); if (body.messages && Array.isArray(body.messages)) { for (const msg of body.messages) { if (msg.role === "assistant" && Array.isArray(msg.content)) { for (const block of msg.content) { if (block.type === "tool_use" && block.id && block.name) { toolUseNames[block.id] = sanitizeToolName(block.name); + const clientSignature = + (typeof block.thoughtSignature === "string" && block.thoughtSignature) || + (typeof block.thought_signature === "string" && block.thought_signature) || + null; + const resolved = resolveGeminiThoughtSignature( + buildGeminiThoughtSignatureKey(signatureNamespace, block.id), + clientSignature + ); + if (typeof resolved === "string" && resolved.length > 0) { + resolvedSignatures.set(block.id, resolved); + } } } } @@ -97,8 +127,12 @@ export function claudeToGeminiRequest(model, body, stream, credentials = null) { // ── Convert messages ─────────────────────────────────────────── if (body.messages && Array.isArray(body.messages)) { + // Tool-ids whose functionCall was omitted (no stored thought_signature) so the + // matching tool_result becomes text instead of a Gemini-400'd functionResponse. + const omittedToolCallIds = new Set(); for (const msg of body.messages) { const parts = []; + let shouldUseEmbeddedSignature = true; if (Array.isArray(msg.content)) { for (const block of msg.content) { @@ -114,8 +148,23 @@ export function claudeToGeminiRequest(model, body, stream, credentials = null) { } break; - case "tool_use": + case "tool_use": { + const signatureForToolCall = resolvedSignatures.get(block.id); + // Signature-less historical tool_use → omit native functionCall + // (context mode). Matching tool_result becomes context text below. + if (!signatureForToolCall) { + break; + } + + const embeddedThoughtSignature = shouldUseEmbeddedSignature + ? signatureForToolCall + : undefined; + if (embeddedThoughtSignature) { + shouldUseEmbeddedSignature = false; + } + parts.push({ + ...(embeddedThoughtSignature ? { thoughtSignature: embeddedThoughtSignature } : {}), functionCall: { ...(stripFunctionCallId ? {} : { id: block.id }), name: sanitizeToolName(block.name), @@ -123,6 +172,7 @@ export function claudeToGeminiRequest(model, body, stream, credentials = null) { }, }); break; + } case "tool_result": { let content = block.content; @@ -137,10 +187,24 @@ export function claudeToGeminiRequest(model, body, stream, credentials = null) { } else if (typeof parsedContent !== "object") { parsedContent = { result: parsedContent }; } + + const toolUseId = block.tool_use_id; + const name = toolUseNames[toolUseId] || "unknown"; + + // Signature-less history: represent as context text so Gemini 3+ + // does not reject a native functionResponse without a matching + // signed functionCall (#8979 / #3688). + if (!resolvedSignatures.has(toolUseId)) { + parts.push({ + text: buildHistoricalToolResultContext(name, content), + }); + break; + } + parts.push({ functionResponse: { - ...(stripFunctionCallId ? {} : { id: block.tool_use_id }), - name: toolUseNames[block.tool_use_id] || "unknown", + ...(stripFunctionCallId ? {} : { id: toolUseId }), + name, response: { result: parsedContent }, }, }); @@ -167,14 +231,6 @@ export function claudeToGeminiRequest(model, body, stream, credentials = null) { if (parts.length > 0) { // Map Claude roles to Gemini roles const geminiRole = msg.role === "assistant" ? "model" : "user"; - - // Gemini 3+ expects the signature on all functionCall parts in a tool-call - // batch. If there is no real signature, we don't inject a fake one because - // Gemini API strictly validates it and returns 400. - if (geminiRole === "model") { - // No operation needed since we no longer inject fake signatures. - } - result.contents.push({ role: geminiRole, parts }); } } diff --git a/open-sse/translator/request/openai-responses.ts b/open-sse/translator/request/openai-responses.ts index ab4182b746..6d7a79b8a4 100644 --- a/open-sse/translator/request/openai-responses.ts +++ b/open-sse/translator/request/openai-responses.ts @@ -20,6 +20,7 @@ import { RESPONSES_STORE_MARKER, COPILOT_REASONING_SUMMARY_MARKER, WEB_SEARCH_TOOL_TYPES, + X_SEARCH_TOOL_TYPES, TOOL_SEARCH_TOOL_TYPES, IMAGE_GENERATION_TOOL_TYPES, toRecord, @@ -103,7 +104,7 @@ export function openaiResponsesToOpenAIRequest( // namespace tools (MCP tool groups used by Codex/OpenAI Responses API), and web_search server tools // (Anthropic versioned: web_search_20250305, web_search_20250101, etc. — or plain web_search). // tool_search is a Responses API built-in sent by newer Codex clients; silently skip it here - // (it will be filtered out during tools conversion below). + // (it will be filtered out during tools conversion below). x_search (#8964) same pattern. if ( toolType && toolType !== "function" && @@ -112,6 +113,7 @@ export function openaiResponsesToOpenAIRequest( toolType !== "namespace" && toolType !== "local_shell" && !WEB_SEARCH_TOOL_TYPES.test(toolType) && + !X_SEARCH_TOOL_TYPES.test(toolType) && !TOOL_SEARCH_TOOL_TYPES.test(toolType) && !IMAGE_GENERATION_TOOL_TYPES.test(toolType) && !tool.function @@ -531,6 +533,9 @@ export function openaiResponsesToOpenAIRequest( if (WEB_SEARCH_TOOL_TYPES.test(toolType)) { return toolValue; } + if (X_SEARCH_TOOL_TYPES.test(toolType)) { + return []; + } // local_shell is a Responses API built-in (Codex CLI injects it for shell // execution). Non-OpenAI upstreams (Kiro/Claude) have no local_shell type, // so map it to a regular "shell" function tool. The response translator @@ -719,7 +724,7 @@ export function openaiResponsesToOpenAIRequest( const reasoningRec = toRecord(root.reasoning); const effort = toString(reasoningRec.effort); if (effort && result.reasoning_effort === undefined) { - result.reasoning_effort = normalizeResponsesReasoningEffort(effort); + result.reasoning_effort = normalizeResponsesReasoningEffort(effort, model ?? root.model); } if ( credentialRecord._copilotClient === true && diff --git a/open-sse/translator/request/openai-responses/helpers.ts b/open-sse/translator/request/openai-responses/helpers.ts index a65a7fe86b..7f31eb99ea 100644 --- a/open-sse/translator/request/openai-responses/helpers.ts +++ b/open-sse/translator/request/openai-responses/helpers.ts @@ -7,6 +7,7 @@ export const COPILOT_REASONING_SUMMARY_MARKER = "_omnirouteCopilotReasoningSumma // Forward-compatible regex: matches web_search, web_search_20250305, and future versioned names. export const WEB_SEARCH_TOOL_TYPES = /^web_search/; +export const X_SEARCH_TOOL_TYPES = /^x_search/; // tool_search is a Responses API built-in sent by newer Codex clients; it has no Chat Completions // equivalent and must be silently dropped (not rejected with 400). export const TOOL_SEARCH_TOOL_TYPES = /^tool_search/; @@ -51,13 +52,18 @@ export function imageUrlToText(value: unknown): string { const CODEX_GPT_5_6_MODEL_PATTERN = /^gpt-5\.6-(?:sol|terra|luna)(?:-(?:none|low|medium|high|xhigh|max|ultra))?$/; +const KIRO_GPT_5_6_MODEL_PATTERN = + /^(?:kiro|kr)\/gpt-5\.6-(?:sol|terra|luna)(?:-(?:none|low|medium|high|xhigh|max))?$/; function supportsNativeMaxReasoningEffort(model: unknown): boolean { const normalizedModel = toString(model) .trim() .toLowerCase() .replace(/^(?:codex|cx)\//, ""); - return CODEX_GPT_5_6_MODEL_PATTERN.test(normalizedModel); + return ( + CODEX_GPT_5_6_MODEL_PATTERN.test(normalizedModel) || + KIRO_GPT_5_6_MODEL_PATTERN.test(toString(model).trim().toLowerCase()) + ); } export function normalizeResponsesReasoningEffort(value: unknown, model?: unknown): string { diff --git a/open-sse/translator/request/openai-to-claude/toolResultAdjacency.ts b/open-sse/translator/request/openai-to-claude/toolResultAdjacency.ts index 9b40385df3..d2b2757432 100644 --- a/open-sse/translator/request/openai-to-claude/toolResultAdjacency.ts +++ b/open-sse/translator/request/openai-to-claude/toolResultAdjacency.ts @@ -7,19 +7,14 @@ type ClaudeMessage = { // Anthropic requires each user tool_result turn to immediately follow the // assistant turn containing the matching tool_use. OpenAI-compatible clients can // send intervening user text before a later role:"tool" message, so repair the -// ordering here and drop true orphan results. +// ordering here while preserving unmatched output for the Claude-format pass. export function enforceToolResultAdjacency(messages: ClaudeMessage[]): ClaudeMessage[] { const assistantByToolUseId = indexAssistantToolUses(messages); const resultsByAssistant = new Map(); const strippedMessages: ClaudeMessage[] = []; for (const msg of messages) { - stripAndCollectToolResults( - msg, - assistantByToolUseId, - resultsByAssistant, - strippedMessages - ); + stripAndCollectToolResults(msg, assistantByToolUseId, resultsByAssistant, strippedMessages); } return insertAdjacentToolResults(strippedMessages, resultsByAssistant); @@ -53,8 +48,19 @@ function stripAndCollectToolResults( for (const block of msg.content) { if (block.type !== "tool_result") { remainingBlocks.push(block); - } else { - collectMatchedToolResult(block, assistantByToolUseId, resultsByAssistant); + continue; + } + + if (!collectMatchedToolResult(block, assistantByToolUseId, resultsByAssistant)) { + const toolUseId = typeof block.tool_use_id === "string" ? block.tool_use_id : ""; + const serialized = + typeof block.content === "string" + ? block.content + : (JSON.stringify(block.content ?? "") ?? ""); + remainingBlocks.push({ + type: "text", + text: `[Unpaired tool result ${toolUseId || "unknown"}]\n${serialized}`, + }); } } @@ -67,16 +73,17 @@ function collectMatchedToolResult( block: ClaudeContentBlock, assistantByToolUseId: Map, resultsByAssistant: Map -): void { +): boolean { const toolUseId = typeof block.tool_use_id === "string" ? block.tool_use_id : ""; const assistant = toolUseId ? assistantByToolUseId.get(toolUseId) : undefined; - if (!assistant) return; + if (!assistant) return false; const grouped = resultsByAssistant.get(assistant) ?? []; - if (grouped.some((toolResult) => toolResult.tool_use_id === toolUseId)) return; + if (grouped.some((toolResult) => toolResult.tool_use_id === toolUseId)) return false; grouped.push(block); resultsByAssistant.set(assistant, grouped); + return true; } function insertAdjacentToolResults( diff --git a/open-sse/translator/request/openai-to-gemini.ts b/open-sse/translator/request/openai-to-gemini.ts index f34ed7d082..14cc4d4e5e 100644 --- a/open-sse/translator/request/openai-to-gemini.ts +++ b/open-sse/translator/request/openai-to-gemini.ts @@ -734,11 +734,24 @@ function wrapInCloudCodeEnvelope(model, cloudCodeRequest, credentials = null) { envelope._toolNameMap = cloudCodeRequest._toolNameMap; } + // #9030 — Client system content must NOT be combined with default in systemInstruction + // + // The upstream Antigravity / Cloud Code endpoint rejects oversized systemInstruction + // with 429 RESOURCE_EXHAUSTED. Keep only the lightweight ANTIGRAVITY_DEFAULT_SYSTEM + // in systemInstruction and relocate any client system content (which can be very + // large — Hermes ~125k tokens) to the first user message. const defaultPart: GeminiPart = { text: ANTIGRAVITY_DEFAULT_SYSTEM }; - if (envelope.request.systemInstruction?.parts) { - envelope.request.systemInstruction.parts.unshift(defaultPart); - } else { - envelope.request.systemInstruction = { role: "system", parts: [defaultPart] }; + const clientParts = envelope.request.systemInstruction?.parts?.slice() ?? []; + envelope.request.systemInstruction = { role: "system", parts: [defaultPart] }; + + if (clientParts.length > 0) { + // Prepend client system parts to the first user message so they still guide + // the model's behavior early in the conversation. + if (envelope.request.contents && envelope.request.contents.length > 0) { + envelope.request.contents[0].parts.unshift(...clientParts); + } else { + envelope.request.contents = [{ role: "user", parts: [...clientParts] }]; + } } // Strip Gemini built-in tool *names* out of functionDeclarations: Antigravity's diff --git a/open-sse/translator/request/openai-to-gemini/helpers.ts b/open-sse/translator/request/openai-to-gemini/helpers.ts index 3dfd35cef1..810620d8f9 100644 --- a/open-sse/translator/request/openai-to-gemini/helpers.ts +++ b/open-sse/translator/request/openai-to-gemini/helpers.ts @@ -37,10 +37,22 @@ type OpenAIToolCallLike = { export function buildChangedToolNameMap( toolNameMap: Map ): Map | null { - const changedEntries = [...toolNameMap.entries()].filter( - ([sanitizedName, originalName]) => sanitizedName !== originalName - ); - return changedEntries.length > 0 ? new Map(changedEntries) : null; + if (toolNameMap.size === 0) return null; + + const result = new Map(); + for (const [sanitizedName, originalName] of toolNameMap.entries()) { + result.set(sanitizedName, originalName); + // Add lowercase-keyed alias so Gemini's lowercased tool names find the original. + // Gemini always lowercases tool names in functionCall responses, so even identity + // entries (Bash → Bash) need a lowercase key ("bash" → "Bash") for the response + // translator to look them up (#9568). + const lower = sanitizedName.toLowerCase(); + if (lower !== sanitizedName && !result.has(lower)) { + result.set(lower, originalName); + } + } + + return result; } export function extractClientThoughtSignature(toolCall: unknown): string | null { diff --git a/open-sse/translator/request/openai-to-kiro.ts b/open-sse/translator/request/openai-to-kiro.ts index f6de86b49f..03bae61bb1 100644 --- a/open-sse/translator/request/openai-to-kiro.ts +++ b/open-sse/translator/request/openai-to-kiro.ts @@ -14,6 +14,7 @@ import { import { resolveKiroModelAlias, supportsKiroAdaptiveThinking, + supportsKiroNativeReasoning, } from "./openai-to-kiro/adaptiveThinking.ts"; /** @@ -46,6 +47,122 @@ function wrapSystemReminder(text: string): string { return `\n${text}\n`; } +/** Kiro rejects a `toolSpecification.description` longer than ~10000 chars. */ +const KIRO_TOOL_DESC_MAX = 10000; + +/** OpenAI- and Anthropic-shaped tool declarations, as clients actually send them. */ +type KiroToolInput = { + name?: string; + description?: string; + parameters?: unknown; + input_schema?: unknown; + function?: { name?: string; description?: string; parameters?: unknown }; +}; + +/** + * Build Kiro `toolSpecification` entries, relocating any oversized description + * out of the schema and returning it separately. + * + * Kiro answers a raw upstream 400 for a description over + * {@link KIRO_TOOL_DESC_MAX}, so the schema keeps a pointer and the full text is + * handed back to be prepended to the current turn's content — the same + * relocation kiro-gateway performs in + * `converters_core.py::process_tools_with_long_descriptions`. + * + * The docs are *returned* rather than stashed on the message object, because the + * tool-bearing user turn is moved into `history` on every multi-turn request + * (see the currentMessage promotion below). Carrying them on the message lost + * them there — the model then saw only the pointer and no documentation — and + * also leaked an unknown `_toolDocs` field into the upstream payload, which Kiro + * rejects. + */ +function buildKiroToolSpecs(tools: KiroToolInput[]): { + specs: Array>; + docs: string; +} { + const docs: string[] = []; + const specs = tools.map((t) => { + const name = t.function?.name || t.name; + let description = t.function?.description || t.description || ""; + + if (!description.trim()) { + description = `Tool: ${name}`; + } + + if (description.length > KIRO_TOOL_DESC_MAX) { + docs.push(`## Tool: ${name}\n\n${description}`); + description = `[Full documentation in system prompt under '## Tool: ${name}']`; + } + + return { + toolSpecification: { + name, + description, + inputSchema: { + json: normalizeKiroToolSchema( + t.function?.parameters || t.parameters || t.input_schema || {} + ), + }, + }, + }; + }); + + return { specs, docs: docs.join("\n\n---\n\n") }; +} + +/** + * Does this message carry Anthropic-style `tool_result` content blocks? Such a + * user message is part of an open tool-result batch rather than new user input. + */ +function carriesToolResults(msg): boolean { + return Array.isArray(msg?.content) && msg.content.some((c) => c.type === "tool_result"); +} + +/** + * Lookahead for issue #8903: is the text-only assistant message at `index` + * genuinely sandwiched inside a tool-result batch? + * + * True only when a later `tool` message (or a `tool_result` content block on a + * user message) still belongs to the same assistant turn — i.e. it appears + * before the conversation moves on with real user text or a new assistant + * tool-call turn. Consecutive text-only assistant messages are skipped so a + * `tool -> assistant -> assistant -> tool` run still counts as interleaved. + * + * Returning false for the ordinary `tool -> assistant(final reply)` shape is + * what keeps that reply on the normal flush path instead of being deferred. + */ +function hasFollowingToolResult(messages, index: number): boolean { + for (let j = index + 1; j < messages.length; j++) { + const next = messages[j]; + if (next.role === "tool") return true; + + if (next.role === "user") { + const blocks = Array.isArray(next.content) ? next.content : []; + // A user message carrying only tool_result blocks is still part of the + // batch; one with real text ends it. + if (blocks.some((c) => c.type === "tool_result")) { + const hasText = blocks.some((c) => (c.type === "text" || c.text) && c.text?.trim()); + if (!hasText) return true; + } + return false; + } + + if (next.role === "assistant") { + const isTextOnly = + (!next.tool_calls || next.tool_calls.length === 0) && + !(Array.isArray(next.content) && next.content.some((c) => c.type === "tool_use")); + // Skip further text-only assistant messages; a new tool-call turn ends + // the current batch. + if (isTextOnly) continue; + return false; + } + + // system or any other role ends the batch + return false; + } + return false; +} + /** * Convert OpenAI messages to Kiro format * Rules: system/tool/user -> user role, merge consecutive same roles @@ -57,9 +174,15 @@ function convertMessages(messages, tools, model) { let pendingUserContent = []; let pendingAssistantContent = []; let pendingToolResults = []; + // Text-only assistant turns that arrived in the middle of an open tool-result + // batch. They are held back so the batch stays contiguous, then emitted as + // their own assistant turn right after the batch flushes — see + // `interruptsOpenToolBatch` below (issue #8903). + let deferredAssistantContent: string[] = []; let pendingImages: Array<{ format: string; source: { bytes: string } }> = []; let currentRole = null; let toolsAttached = false; + let toolDocs = ""; // Only Claude models support images in Kiro. Kiro also routes non-Claude // models (deepseek, minimax, glm, qwen3-coder-next) that do not accept image @@ -89,7 +212,6 @@ function convertMessages(messages, tools, model) { tools?: Array>; }; }; - _toolDocs?: string; } = { userInputMessage: { content: content, @@ -118,39 +240,9 @@ function convertMessages(messages, tools, model) { if (!userMsg.userInputMessage.userInputMessageContext) { userMsg.userInputMessage.userInputMessageContext = {}; } - // Kiro API rejects requests with tool descriptions > ~10000 chars. - // Move long descriptions to system prompt (same approach as kiro-gateway). - const TOOL_DESC_MAX = 10000; - const toolDocs: string[] = []; - userMsg.userInputMessage.userInputMessageContext.tools = tools.map((t) => { - const name = t.function?.name || t.name; - let description = t.function?.description || t.description || ""; - - if (!description.trim()) { - description = `Tool: ${name}`; - } - - if (description.length > TOOL_DESC_MAX) { - toolDocs.push(`## Tool: ${name}\n\n${description}`); - description = `[Full documentation in system prompt under '## Tool: ${name}']`; - } - - return { - toolSpecification: { - name, - description, - inputSchema: { - json: normalizeKiroToolSchema( - t.function?.parameters || t.parameters || t.input_schema || {} - ), - }, - }, - }; - }); - // Attach tool docs to message so buildKiroPayload can prepend to content - if (toolDocs.length > 0) { - userMsg._toolDocs = toolDocs.join("\n\n---\n\n"); - } + const built = buildKiroToolSpecs(tools); + userMsg.userInputMessage.userInputMessageContext.tools = built.specs; + if (built.docs) toolDocs = built.docs; toolsAttached = true; } @@ -159,6 +251,19 @@ function convertMessages(messages, tools, model) { pendingUserContent = []; pendingToolResults = []; pendingImages = []; + + // The tool batch is now closed, so any assistant text that was held back + // to keep it contiguous can be emitted as its own turn (issue #8903). + // Without this the deferred text would sit in a queue nothing drains and + // be silently dropped from the transcript. + if (deferredAssistantContent.length > 0) { + history.push({ + assistantResponseMessage: { + content: deferredAssistantContent.join("\n\n").trim() || "(empty)", + }, + }); + deferredAssistantContent = []; + } } else if (currentRole === "assistant") { const content = pendingAssistantContent.join("\n\n").trim() || "(empty)"; const assistantMsg = { @@ -181,11 +286,64 @@ function convertMessages(messages, tools, model) { } // If role changes, flush pending + // + // Exception: a text-only assistant message must not split a batch of tool + // results that answers a single assistant turn. `tool` is normalized to + // `user` above, so `tool -> assistant -> tool` looks like two role changes + // and the interleaved flush would emit the first tool result and drop the + // rest, leaving advertised `toolUses` without matching `toolResults`. + // Bedrock rejects that transcript with 400 "Expected toolResult blocks" + // (issue #8903). Defer the assistant text instead so the tool batch stays + // contiguous; the text is re-emitted as its own assistant turn as soon as + // the batch flushes. + // + // The lookahead matters: without it, an ordinary trailing assistant reply + // (`tool -> assistant`, with no further tool message) would also be + // deferred and its text lost. Only a genuine sandwich qualifies. + const isTextOnlyAssistant = + msg.role === "assistant" && + (!msg.tool_calls || msg.tool_calls.length === 0) && + !(Array.isArray(msg.content) && msg.content.some((c) => c.type === "tool_use")); + const interruptsOpenToolBatch = + isTextOnlyAssistant && + currentRole === "user" && + pendingToolResults.length > 0 && + hasFollowingToolResult(messages, i); + + if (interruptsOpenToolBatch) { + const deferredText = + typeof msg.content === "string" + ? msg.content.trim() + : Array.isArray(msg.content) + ? msg.content + .filter((c) => c.type === "text" || c.text) + .map((c) => c.text || "") + .join("\n") + .trim() + : ""; + if (deferredText) deferredAssistantContent.push(deferredText); + continue; + } + + // Once assistant text has been deferred, the tool batch is logically over + // as soon as a message arrives that is not itself a tool result. Flush now + // so the pending batch + deferred assistant turn are emitted before the new + // user text, instead of that text merging into the tool-result turn and + // leaving the deferred reply stranded after it (issue #8903). + if ( + deferredAssistantContent.length > 0 && + currentRole === "user" && + msg.role !== "tool" && + !carriesToolResults(msg) + ) { + flushPending(); + currentRole = null; + } + if (role !== currentRole && currentRole !== null) { flushPending(); } currentRole = role; - if (role === "user") { // Extract content let content = ""; @@ -370,21 +528,9 @@ function convertMessages(messages, tools, model) { if (!currentMessage.userInputMessage.userInputMessageContext) { currentMessage.userInputMessage.userInputMessageContext = {}; } - currentMessage.userInputMessage.userInputMessageContext.tools = tools.map((t) => { - const name = t.function?.name || t.name; - const description = t.function?.description || t.description || `Tool: ${name}`; - return { - toolSpecification: { - name, - description, - inputSchema: { - json: normalizeKiroToolSchema( - t.function?.parameters || t.parameters || t.input_schema || {} - ), - }, - }, - }; - }); + const built = buildKiroToolSpecs(tools); + currentMessage.userInputMessage.userInputMessageContext.tools = built.specs; + if (built.docs) toolDocs = built.docs; toolsAttached = true; } @@ -577,7 +723,7 @@ function convertMessages(messages, tools, model) { alternatingHistory.push(item); } - return { history: alternatingHistory, currentMessage, toolsAttached }; + return { history: alternatingHistory, currentMessage, toolsAttached, toolDocs }; } /** Kiro's accepted reasoning-effort levels (`output_config.effort`). */ @@ -723,7 +869,7 @@ export function buildKiroPayload(model, body, stream, credentials) { } } - const { history, currentMessage, toolsAttached } = convertMessages( + const { history, currentMessage, toolsAttached, toolDocs } = convertMessages( messages, tools, normalizedModel @@ -735,8 +881,10 @@ export function buildKiroPayload(model, body, stream, credentials) { const timestamp = new Date().toISOString(); finalContent = `[Context: Current time is ${timestamp}]\n\n${finalContent}`; - // Prepend tool documentation for tools with long descriptions (moved from toolSpecification) - const toolDocs = (currentMessage as { _toolDocs?: string } | null)?._toolDocs; + // Prepend documentation for tools whose description was relocated out of + // `toolSpecification` (see buildKiroToolSpecs). Driven by convertMessages' + // return value, not the message object, so the docs survive the tool-bearing + // turn being moved into `history` on a multi-turn request. if (toolDocs) { finalContent = `# Tool Documentation\n\n${toolDocs}\n\n---\n\n${finalContent}`; } @@ -763,6 +911,7 @@ export function buildKiroPayload(model, body, stream, credentials) { topP?: number; }; additionalModelRequestFields?: { + reasoning?: { effort: string }; thinking?: { type: string; display?: string }; output_config?: { effort: string }; max_tokens?: number; @@ -847,29 +996,43 @@ export function buildKiroPayload(model, body, stream, credentials) { // thinking:{type:"adaptive"} + a clamped max_tokens), forwarded to AWS by // the Kiro executor's transformRequest allowlist — the graded effort lever, // gated on Kiro's adaptive-thinking allowlist (#6576), not supportsReasoning(). + // GPT-5.6 models use the native `reasoning:{effort}` field instead. They must + // not receive the Claude `output_config`/`thinking` envelope: Kiro rejects it + // as an unknown field for the GPT-5.6 family. const requestedEffort = resolveKiroEffort(body) || (modelRequestsThinking ? "high" : ""); - const kiroEffort = supportsKiroAdaptiveThinking(normalizedModel) ? requestedEffort : ""; + const usesNativeReasoning = supportsKiroNativeReasoning(normalizedModel); + const usesAdaptiveThinking = supportsKiroAdaptiveThinking(normalizedModel); + const kiroEffort = usesNativeReasoning || usesAdaptiveThinking ? requestedEffort : ""; if (kiroEffort) { - // `` / `` are Kiro/CodeWhisperer prompt - // conventions (NOT Anthropic API params); the length is a soft hint (the hard - // enable signal is ``), clamped to the model's thinking cap. - const thinkingLength = capThinkingBudget(normalizedModel, thinkingLengthForEffort(kiroEffort)); - const directive = - `enabled` + - `${thinkingLength}`; - payload.conversationState.currentMessage.userInputMessage.content = `${directive}\n\n${payload.conversationState.currentMessage.userInputMessage.content}`; - const fields: { - output_config: { effort: string }; - thinking: { type: string; display: string }; + reasoning?: { effort: string }; + output_config?: { effort: string }; + thinking?: { type: string; display: string }; max_tokens?: number; - } = { - output_config: { effort: kiroEffort }, - thinking: { type: "adaptive", display: "summarized" }, - }; + } = usesNativeReasoning + ? { reasoning: { effort: kiroEffort } } + : { + output_config: { effort: kiroEffort }, + thinking: { type: "adaptive", display: "summarized" }, + }; + + if (usesAdaptiveThinking) { + // `` / `` are Kiro/CodeWhisperer prompt + // conventions (NOT Anthropic API params); the length is a soft hint (the hard + // enable signal is ``), clamped to the model's thinking cap. + const thinkingLength = capThinkingBudget( + normalizedModel, + thinkingLengthForEffort(kiroEffort) + ); + const directive = + `enabled` + + `${thinkingLength}`; + payload.conversationState.currentMessage.userInputMessage.content = `${directive}\n\n${payload.conversationState.currentMessage.userInputMessage.content}`; + } + // Forward max_tokens only when the client set one, clamped to the model's // output window (floor 1024) — matches pi-kiro and avoids an over-budget reject. - if (maxTokens > 0) { + if (usesAdaptiveThinking && maxTokens > 0) { const capped = capMaxOutputTokens(normalizedModel, maxTokens) ?? maxTokens; fields.max_tokens = Math.max(Math.floor(capped), 1024); } diff --git a/open-sse/translator/request/openai-to-kiro/adaptiveThinking.ts b/open-sse/translator/request/openai-to-kiro/adaptiveThinking.ts index 338768f8d6..72ccc81951 100644 --- a/open-sse/translator/request/openai-to-kiro/adaptiveThinking.ts +++ b/open-sse/translator/request/openai-to-kiro/adaptiveThinking.ts @@ -7,17 +7,21 @@ * rejects the field for `claude-sonnet-4.5` and `claude-haiku-4.5` with a raw * upstream 400 (`additionalModelRequestFields is not supported for this * model`, issue #6576) even though both ARE thinking-capable on Anthropic's - * direct API. Only `claude-sonnet-5` is confirmed to accept the adaptive - * envelope on Kiro today — keep this allowlist in sync with - * `open-sse/config/providers/registry/kiro/index.ts` if Kiro's catalog or - * upstream behavior changes. + * direct API. `claude-sonnet-5` is confirmed to accept the adaptive envelope + * on Kiro today. GPT-5.6 models use Kiro's separate `reasoning.effort` shape, + * not this Claude adaptive envelope. */ const KIRO_ADAPTIVE_THINKING_MODELS = new Set(["claude-sonnet-5"]); +const KIRO_NATIVE_REASONING_MODELS = new Set(["gpt-5.6-sol", "gpt-5.6-terra", "gpt-5.6-luna"]); export function supportsKiroAdaptiveThinking(normalizedModel: string): boolean { return KIRO_ADAPTIVE_THINKING_MODELS.has(normalizedModel); } +export function supportsKiroNativeReasoning(normalizedModel: string): boolean { + return KIRO_NATIVE_REASONING_MODELS.has(normalizedModel); +} + const KIRO_UNSUPPORTED_AGENTIC_MESSAGE = "Kiro agentic aliases are not supported. The '-agentic' suffix did not change the " + "upstream request; select a real Kiro model instead."; diff --git a/open-sse/translator/response/claude-to-openai.ts b/open-sse/translator/response/claude-to-openai.ts index 725799d026..026a3e1f3e 100644 --- a/open-sse/translator/response/claude-to-openai.ts +++ b/open-sse/translator/response/claude-to-openai.ts @@ -5,10 +5,14 @@ type OpenAIUsage = { prompt_tokens: number; completion_tokens: number; total_tokens: number; + reasoning_tokens?: number; prompt_tokens_details?: { cached_tokens?: number; cache_creation_tokens?: number; }; + completion_tokens_details?: { + reasoning_tokens?: number; + }; }; // Create OpenAI chunk helper @@ -153,6 +157,10 @@ export function claudeToOpenAIResponse(chunk, state) { typeof chunk.usage.input_tokens === "number" ? chunk.usage.input_tokens : 0; const outputTokens = typeof chunk.usage.output_tokens === "number" ? chunk.usage.output_tokens : 0; + const thinkingTokens = + typeof chunk.usage.output_tokens_details?.thinking_tokens === "number" + ? chunk.usage.output_tokens_details.thinking_tokens + : undefined; const cacheReadTokens = typeof chunk.usage.cache_read_input_tokens === "number" ? chunk.usage.cache_read_input_tokens @@ -181,6 +189,14 @@ export function claudeToOpenAIResponse(chunk, state) { output_tokens: outputTokens, }; + // Anthropic includes thinking in output_tokens. Surface the separately + // reported portion without adding it to completion_tokens a second time. + if (thinkingTokens !== undefined) { + state.usage.reasoning_tokens = thinkingTokens; + state.usage.completion_tokens_details = { reasoning_tokens: thinkingTokens }; + state.usage.output_tokens_details = { thinking_tokens: thinkingTokens }; + } + // Store cache tokens if present (needed for prompt_tokens_details in final chunk) const effectiveCacheReadTokens = cacheReadTokens || previousCacheReadTokens; const effectiveCacheCreationTokens = cacheCreationTokens || previousCacheCreationTokens; @@ -252,6 +268,14 @@ export function claudeToOpenAIResponse(chunk, state) { total_tokens: totalTokens, }; + const reasoningTokens = state.usage.reasoning_tokens; + if (typeof reasoningTokens === "number") { + finalChunk.usage.reasoning_tokens = reasoningTokens; + finalChunk.usage.completion_tokens_details = { + reasoning_tokens: reasoningTokens, + }; + } + // Add prompt_tokens_details if cached tokens exist if (cachedTokens > 0 || cacheCreationTokens > 0) { finalChunk.usage.prompt_tokens_details = {}; @@ -281,6 +305,14 @@ export function claudeToOpenAIResponse(chunk, state) { prompt_tokens: state.usage.input_tokens || 0, completion_tokens: state.usage.output_tokens || 0, total_tokens: (state.usage.input_tokens || 0) + (state.usage.output_tokens || 0), + ...(typeof state.usage.reasoning_tokens === "number" + ? { + reasoning_tokens: state.usage.reasoning_tokens, + completion_tokens_details: { + reasoning_tokens: state.usage.reasoning_tokens, + }, + } + : {}), }, } : {}; diff --git a/open-sse/translator/response/gemini-to-claude.ts b/open-sse/translator/response/gemini-to-claude.ts index 2307edd61e..3af3c48418 100644 --- a/open-sse/translator/response/gemini-to-claude.ts +++ b/open-sse/translator/response/gemini-to-claude.ts @@ -2,6 +2,10 @@ import { register } from "../registry.ts"; import { FORMATS } from "../formats.ts"; import { isAbortFinishReason } from "../../utils/finishReason.ts"; import { REVERSE_MAP } from "../../services/claudeCodeToolRemapper.ts"; +import { + buildGeminiThoughtSignatureKey, + storeGeminiThoughtSignature, +} from "../../services/geminiThoughtSignatureStore.ts"; function normalizeToolName(name: string): string { return REVERSE_MAP[name] ?? name; @@ -56,6 +60,12 @@ export function geminiToClaudeResponse(chunk, state) { const hasThoughtSig = part.thoughtSignature || part.thought_signature; const isThought = part.thought === true; + // Capture thoughtSignature so the next functionCall (or same-part call) + // can persist it for Claude→Gemini follow-up turns (#8979 / #2504 parity). + if (typeof hasThoughtSig === "string" && hasThoughtSig.length > 0) { + state.pendingThoughtSignature = hasThoughtSig; + } + // Thinking content → thinking block (always open+close per chunk) if (isThought && part.text) { // Close any open text block first @@ -78,6 +88,17 @@ export function geminiToClaudeResponse(chunk, state) { continue; } + // Standalone thoughtSignature part (no text / no functionCall): keep + // pending and wait for the following functionCall — do not emit to Claude. + if ( + typeof hasThoughtSig === "string" && + hasThoughtSig.length > 0 && + (part.text === undefined || part.text === "") && + !part.functionCall + ) { + continue; + } + // Function call → tool_use block if (part.functionCall) { // Close any open text block first @@ -87,10 +108,28 @@ export function geminiToClaudeResponse(chunk, state) { } const fc = part.functionCall; const rawToolName = fc.name; - const restoredToolName = normalizeToolName(state.toolNameMap?.get(rawToolName) || rawToolName); + const mappedName = state.toolNameMap?.get(rawToolName); + // When the toolNameMap provides a match (e.g., lowercase "bash" → "Bash"), + // use it directly without passing through normalizeToolName(), which would + // reverse TitleCase back to lowercase via REVERSE_MAP (#9568). + const restoredToolName = mappedName || normalizeToolName(rawToolName); const idx = state.contentBlockIndex++; const toolId = fc.id || `toolu_${Date.now()}_${idx}`; + const signatureForToolCall = + (typeof hasThoughtSig === "string" && hasThoughtSig.length > 0 ? hasThoughtSig : null) || + (typeof state.pendingThoughtSignature === "string" && + state.pendingThoughtSignature.length > 0 + ? state.pendingThoughtSignature + : null); + if (signatureForToolCall) { + storeGeminiThoughtSignature( + buildGeminiThoughtSignatureKey(state.signatureNamespace, toolId), + signatureForToolCall + ); + state.pendingThoughtSignature = null; + } + results.push({ type: "content_block_start", index: idx, diff --git a/open-sse/translator/response/gemini-to-openai.ts b/open-sse/translator/response/gemini-to-openai.ts index 3f915b5ec2..2a8240e290 100644 --- a/open-sse/translator/response/gemini-to-openai.ts +++ b/open-sse/translator/response/gemini-to-openai.ts @@ -4,6 +4,7 @@ import { buildGeminiThoughtSignatureKey, storeGeminiThoughtSignature, } from "../../services/geminiThoughtSignatureStore.ts"; +import { caseInsensitiveToolNameLookup } from "../helpers/toolCallHelper.ts"; import { parseTextualToolCallCandidate, containsTextualToolCallMarker, @@ -256,7 +257,7 @@ function emitFunctionCallPart( results: Array> ) { const rawToolName = part.functionCall.name; - const fcName = state.toolNameMap?.get(rawToolName) || rawToolName; + const fcName = caseInsensitiveToolNameLookup(rawToolName, state.toolNameMap) ?? rawToolName; const fcArgs = normalizeToolCallArgs(part.functionCall.args || {}); const toolCallIndex = state.functionIndex++; const toolCall = { diff --git a/open-sse/translator/response/openai-responses.ts b/open-sse/translator/response/openai-responses.ts index 112355381f..4533b30958 100644 --- a/open-sse/translator/response/openai-responses.ts +++ b/open-sse/translator/response/openai-responses.ts @@ -726,6 +726,37 @@ function markResponsesReasoningDeltaEmitted(state, itemId) { state.reasoningItemsWithDelta.add(id); } +// #9500 — streaming separator helper. When summary_index increments mid-stream +// for a given item_id, a new reasoning segment begins; prefix "\n\n" so segments +// don't arrive back-to-back. Only prefixes when a delta was already emitted for +// the item AND the index advanced — never on the first segment. Lives here (not +// in pureHelpers.ts) because it reads and mutates stream state, which the pure +// leaf must not hold. +function buildResponsesReasoningSummaryDelta(state, data, reasoningDelta) { + const itemId = data.item_id != null ? String(data.item_id) : ""; + const summaryIndex = typeof data.summary_index === "number" ? data.summary_index : null; + if (!(state.reasoningSummaryIndex instanceof Map)) { + state.reasoningSummaryIndex = new Map(); + } + const lastIndex = itemId ? state.reasoningSummaryIndex.get(itemId) : undefined; + const alreadyEmittedForItem = itemId + ? state.reasoningItemsWithDelta instanceof Set && state.reasoningItemsWithDelta.has(itemId) + : Boolean(state.reasoningDeltaEmitted); + let deltaText = reasoningDelta; + if ( + summaryIndex !== null && + lastIndex !== undefined && + summaryIndex > lastIndex && + alreadyEmittedForItem + ) { + deltaText = `\n\n${reasoningDelta}`; + } + if (itemId && (lastIndex === undefined || summaryIndex > lastIndex)) { + state.reasoningSummaryIndex.set(itemId, summaryIndex); + } + return deltaText; +} + // #5786 — build a Chat-format reasoning delta chunk in the shape the client renders in // its thinking panel (`reasoning_content`, or `reasoning_text` for Copilot-compatible // clients). Mirrors the `response.reasoning_summary_text.delta` branch. @@ -1122,17 +1153,16 @@ function openaiResponsesToOpenAIResponseStream(chunk, state) { }; } - // Handle true reasoning summary ("Thought for 15s"). - // Emit as `delta.reasoning_content` — matches the shape used by the - // `reasoning_content_text.delta` branch above and is what Chat clients - // (OpenCode, Claude Code, Cursor, etc.) actually render in their thinking - // panel. A nested `delta.reasoning.summary` object is swallowed by most - // stream mergers and never reaches the user. + // Handle true reasoning summary ("Thought for 15s"). Emit as `delta.reasoning_content` + // — matches the `reasoning_content_text.delta` branch above and is what Chat clients + // (OpenCode, Claude Code, Cursor, etc.) render in their thinking panel. A nested + // `delta.reasoning.summary` object is swallowed by most stream mergers. if (eventType === "response.reasoning_summary_text.delta") { const reasoningDelta = data.delta || ""; if (!reasoningDelta) return null; markResponsesReasoningDeltaEmitted(state, data.item_id); - return buildResponsesReasoningDeltaChunk(state, reasoningDelta); + const deltaText = buildResponsesReasoningSummaryDelta(state, data, reasoningDelta); + return buildResponsesReasoningDeltaChunk(state, deltaText); } // #5786 — reasoning summary exposed ONLY as a terminal snapshot on @@ -1155,10 +1185,8 @@ function openaiResponsesToOpenAIResponseStream(chunk, state) { !(state.reasoningItemsWithDelta instanceof Set && state.reasoningItemsWithDelta.size > 0); if (emittedForItem || emittedWithoutItemId) return null; - // #7095/#7176 reconciliation: computed WITHOUT mutating `item`, so an - // encrypted-only reasoning item (and its `encrypted_content`) is never - // rewritten with a fabricated `summary` — the placeholder only feeds this - // synthetic client-facing delta chunk. + // #7176/#7243: only synthesize from real upstream plaintext — never mutate + // `item` and never fabricate placeholder text for encrypted-only reasoning. const summaryText = getVisibleResponsesReasoningSummaryText(item); if (!summaryText) return null; return buildResponsesReasoningDeltaChunk(state, summaryText); diff --git a/open-sse/translator/response/openai-responses/pureHelpers.ts b/open-sse/translator/response/openai-responses/pureHelpers.ts index e2cc70fce4..01999f9ac9 100644 --- a/open-sse/translator/response/openai-responses/pureHelpers.ts +++ b/open-sse/translator/response/openai-responses/pureHelpers.ts @@ -166,34 +166,30 @@ export function normalizeUpstreamFailure(data, fallbackType = "server_error") { export function extractResponsesReasoningSummaryText(item) { if (!item || !Array.isArray(item.summary)) return ""; + // #9500 — reasoning summary parts are discrete segments; join with "\n\n" + // (matches extractThinkingFromContent convention). Filter empties so an + // empty summary_text element does not produce a dangling separator. return item.summary .map((part) => part && typeof part === "object" && typeof part.text === "string" ? part.text : "" ) - .join(""); + .filter((text) => text.length > 0) + .join("\n\n"); } -// #7095/#7176 — when Codex exposes a reasoning item only as encrypted private -// reasoning (no plaintext summary), chat clients would otherwise see nothing in -// their thinking panel. Reconciles two goals that used to be in tension: -// - #7095 wants a visible placeholder in the chat client. -// - #7176 wants the upstream response item left untouched, so `encrypted_content` -// (needed by Codex for subsequent requests) is never overwritten by a -// fabricated `summary`. -// This function computes the placeholder text WITHOUT mutating `item` — callers -// use the returned text for synthetic client-facing events only. -const ENCRYPTED_REASONING_PLACEHOLDER = - "Codex is reasoning, but the upstream Responses API exposed this reasoning block only as encrypted private reasoning. OmniRoute cannot recover the plaintext."; - +// #7095/#7176/#7243 — when Codex exposes a reasoning item only as encrypted +// private reasoning (no plaintext summary), callers may synthesize client-facing +// reasoning summary events from this helper. Reconciles three goals: +// - #7176: never mutate the upstream item — `encrypted_content` (needed by +// Codex for subsequent requests) must not be overwritten with a fabricated +// `summary`. +// - #7095: real plaintext summaries from upstream are forwarded to chat +// clients that render a thinking panel. +// - #7243: when upstream provides no plaintext summary, do NOT fabricate an +// alarming error-like paragraph into `reasoning_summary_text.delta` — clients +// would display it as if it were real reasoning. Return empty so synthetic +// summary events are suppressed; the reasoning item (with `encrypted_content`) +// still arrives on `response.output_item.done`. export function getVisibleResponsesReasoningSummaryText(item) { - const existingSummary = extractResponsesReasoningSummaryText(item); - if (existingSummary) return existingSummary; - - const hasEncryptedReasoning = - item && - item.type === "reasoning" && - typeof item.encrypted_content === "string" && - item.encrypted_content.length > 0; - - return hasEncryptedReasoning ? ENCRYPTED_REASONING_PLACEHOLDER : ""; + return extractResponsesReasoningSummaryText(item); } diff --git a/open-sse/translator/response/openai-to-claude.ts b/open-sse/translator/response/openai-to-claude.ts index 15b481da74..cac48d5848 100644 --- a/open-sse/translator/response/openai-to-claude.ts +++ b/open-sse/translator/response/openai-to-claude.ts @@ -1,6 +1,7 @@ import { register } from "../registry.ts"; import { FORMATS } from "../formats.ts"; import { CLAUDE_OAUTH_TOOL_PREFIX } from "../request/openai-to-claude.ts"; +import { caseInsensitiveToolNameLookup } from "../helpers/toolCallHelper.ts"; import { hasToolCallShim, applyToolCallShimToBuffer } from "../helpers/toolCallShim.ts"; import { appendToolCallArgumentDelta } from "../../utils/toolCallArguments.ts"; import { isAbortFinishReason } from "../../utils/finishReason.ts"; @@ -284,6 +285,7 @@ export function openaiToClaudeResponse(chunk, state) { // Strip the Claude OAuth prefix from an incoming tool name (if any). const incomingName = (() => { let n = tc.function?.name || ""; + n = caseInsensitiveToolNameLookup(n, state.toolNameMap) ?? n; if (n.startsWith(CLAUDE_OAUTH_TOOL_PREFIX)) n = n.slice(CLAUDE_OAUTH_TOOL_PREFIX.length); return n; })(); diff --git a/open-sse/translator/webTools.ts b/open-sse/translator/webTools.ts index ecc291ce26..7ae5c7732b 100644 --- a/open-sse/translator/webTools.ts +++ b/open-sse/translator/webTools.ts @@ -356,24 +356,18 @@ export function toArgumentsString(value: unknown): string { } } -/** - * Serialize an OpenAI `tools` array into a system-prompt block that instructs the - * web UI model how to invoke a tool (emit a `{...}` block). Returns an - * empty string when there are no usable tools. - * - * Each invocation generates a per-request nonce that is embedded in the tool format - * instructions. The parser (parseToolCallsFromText) requires this nonce in the model's - * `` JSON to distinguish legitimate tool calls from bare JSON, code-fenced JSON, - * or copy-attacked envelopes (#9343). - */ -export function serializeToolsToPrompt(tools: unknown): string { - if (!Array.isArray(tools) || tools.length === 0) return ""; +export interface SerializeToolOptions { + /** Hardened mode for thinking/reasoning models: repeat the instruction + * both before AND after the tool list, use a more distinctive tag format, + * and explicitly tell the model not to claim tools are unavailable. */ + hardened?: boolean; +} - const nonce = getToolNonce(tools); - if (!nonce) return ""; +// ── Tool list rendering (shared between standard and hardened) ───────────────── +function renderToolList(tools: OpenAIToolDef[]): string[] { const lines: string[] = []; - for (const t of tools as OpenAIToolDef[]) { + for (const t of tools) { const fn = t?.function; if (!fn?.name) continue; const desc = typeof fn.description === "string" && fn.description ? fn.description : ""; @@ -387,9 +381,47 @@ export function serializeToolsToPrompt(tools: unknown): string { `- ${fn.name}${desc ? `: ${desc}` : ""}${params ? `\n parameters: ${params}` : ""}` ); } + return lines; +} +/** + * Serialize an OpenAI `tools` array into a system-prompt block that instructs the + * web UI model how to invoke a tool (emit a `{...}` block). Returns an + * empty string when there are no usable tools. + * + * When `options.hardened` is set (intended for thinking/reasoning models), the + * contract is more emphatic: the `` format example is shown before the tool + * list, an explicit "IMPORTANT" directive is appended after the list, and the + * model is told not to claim tools are unavailable. + */ +export function serializeToolsToPrompt(tools: unknown, options?: SerializeToolOptions): string { + if (!Array.isArray(tools) || tools.length === 0) return ""; + + // #9343: the per-request nonce is mandatory in BOTH modes — the parser rejects + // any JSON without the matching `_nonce` binding. + const nonce = getToolNonce(tools); + if (!nonce) return ""; + + const defs = tools as OpenAIToolDef[]; + const lines = renderToolList(defs); if (lines.length === 0) return ""; + if (options?.hardened) { + return [ + "You have access to the following tools and you MUST use them when appropriate.", + "", + `{"name": "", "arguments": { ... }, "_nonce": "${nonce}"}`, + `Every tool call MUST include the secret binding "_nonce": "${nonce}" exactly as shown.`, + "", + "Available tools:", + ...lines, + "", + "IMPORTANT: You CAN and MUST use these tools. Do NOT say you cannot use tools or that", + "tools are unavailable — you have them and they are ready. If a task requires a tool,", + "call it using the TOOL block format described above.", + ].join("\n"); + } + return [ "You can call tools. To call a tool, reply with a single line containing a block", `with JSON that includes the secret binding "_nonce": "${nonce}":`, @@ -514,13 +546,14 @@ interface ToolPrepResult { */ export function prepareToolMessages( bodyObj: Record, - messages: Array<{ role: string; content: unknown }> + messages: Array<{ role: string; content: unknown }>, + options?: SerializeToolOptions ): ToolPrepResult { const requestedTools = bodyObj.tools; const hasTools = Array.isArray(requestedTools) && requestedTools.length > 0; if (!hasTools) return { hasTools: false, requestedTools, effectiveMessages: messages }; - const toolPrompt = serializeToolsToPrompt(requestedTools); + const toolPrompt = serializeToolsToPrompt(requestedTools, options); return { hasTools: true, requestedTools, diff --git a/open-sse/utils/aiSdkCompat.ts b/open-sse/utils/aiSdkCompat.ts index fb26394a4b..2973ac06a0 100644 --- a/open-sse/utils/aiSdkCompat.ts +++ b/open-sse/utils/aiSdkCompat.ts @@ -130,6 +130,16 @@ export function resolveStreamFlag( return false; } + // OpenAI Chat Completions: omitted `stream` defaults to false per the OpenAI + // contract. A client that says nothing is asking for a JSON object, not an + // SSE event stream. Honor a pure text/event-stream Accept as an explicit SSE + // opt-in; otherwise default to non-stream. The application/json check above + // already handles the Vercel/OpenAI SDK mixed-signature case. + if (sourceFormat === "openai") { + if (acceptsEventStream) return true; + return false; + } + // No explicit stream param — preserve OmniRoute's streaming default unless // the client explicitly asks for JSON and does not also accept SSE. return !clientWantsJsonResponse(acceptHeader); diff --git a/open-sse/utils/earlyStreamKeepalive.ts b/open-sse/utils/earlyStreamKeepalive.ts index 2a7fe25dff..b8c3c631f8 100644 --- a/open-sse/utils/earlyStreamKeepalive.ts +++ b/open-sse/utils/earlyStreamKeepalive.ts @@ -1,13 +1,18 @@ /** - * Early SSE keepalive wrapper for streaming route handlers. + * @file earlyStreamKeepalive.ts + * @description Early SSE keepalive wrapper so short idle-read clients stay connected + * while the handler waits on upstream first-byte (reasoning models, combo failover). + * + * @changes + * - [2026-07-28] [Cursor Grok 4.5] - Scrub omniroute from client-facing keepalive id/model/comment frames + * - [2026-07-28] [Cursor Grok 4.5] - Neutralize Responses startup thinking text (no OmniRoute brand leak) * * Strict HTTP clients (notably Codex CLI's `reqwest`, which has a ~5s idle-read * timeout) drop the connection if no bytes arrive shortly after the request. - * OmniRoute, however, holds the streaming response until `ensureStreamReadiness` - * observes the upstream's first useful byte — which can exceed 5s for reasoning - * models that "think" before emitting any token (#2544). `curl` has no such - * idle timeout, so it was never affected, which is why the bug looked - * client-specific. + * The proxy holds the streaming response until `ensureStreamReadiness` observes + * the upstream's first useful byte — which can exceed 5s for reasoning models + * that "think" before emitting any token (#2544). `curl` has no such idle + * timeout, so it was never affected, which is why the bug looked client-specific. * * This wrapper keeps the connection warm without disturbing the handler's * internal logic (combo failover, stream readiness, account cooldown all still @@ -27,12 +32,13 @@ */ const ENCODER = new TextEncoder(); -const KEEPALIVE_FRAME = ENCODER.encode(": omniroute-keepalive\n\n"); +const KEEPALIVE_FRAME = ENCODER.encode(": keepalive\n\n"); // OpenAI-compatible keepalive: a syntactically valid empty streaming chunk. // Some OpenAI-compatible clients parse every non-empty SSE line as JSON and // reject legal SSE comments before their first provider chunk arrives. +// id/model stay brand-neutral — these frames go to the client, not upstream. export const OPENAI_KEEPALIVE_FRAME = ENCODER.encode( - 'data: {"id":"omniroute-keepalive","object":"chat.completion.chunk","created":0,"model":"omniroute","choices":[{"index":0,"delta":{},"finish_reason":null}]}\n\n' + 'data: {"id":"chatcmpl-keepalive","object":"chat.completion.chunk","created":0,"model":"keepalive","choices":[{"index":0,"delta":{},"finish_reason":null}]}\n\n' ); // The first slow-path frame must be a valid OpenAI chunk without creating // visible reasoning that clients persist into the conversation. @@ -51,8 +57,9 @@ export const ANTHROPIC_PING_FRAME = ENCODER.encode('event: ping\ndata: {"type":" // real upstream response — once it arrives — starts its own independent // response.created lifecycle from scratch; this placeholder item never // carries a response_id and isn't meant to be continued. -const RESPONSES_STARTUP_ITEM_ID = "rs_omniroute_keepalive"; -const STARTUP_THINKING_TEXT = "OmniRoute: got request, sending to provider"; +const RESPONSES_STARTUP_ITEM_ID = "rs_keepalive"; +// Brand-neutral placeholder — clients persist this as visible reasoning. +const STARTUP_THINKING_TEXT = "✨"; export const RESPONSES_STARTUP_THINKING_FRAME = ENCODER.encode( [ { @@ -144,7 +151,7 @@ export type EarlyStreamKeepaliveOptions = { signal?: AbortSignal | null; /** * Frame emitted on each keepalive tick. Defaults to an SSE comment - * (`: omniroute-keepalive`). Anthropic-format routes (/v1/messages) must pass + * (`: keepalive`). Anthropic-format routes (/v1/messages) must pass * `ANTHROPIC_PING_FRAME` instead, because Anthropic clients ignore SSE comments * for their stream watchdog and only a real `event: ping` keeps them from aborting. */ diff --git a/open-sse/utils/mediaParts.ts b/open-sse/utils/mediaParts.ts new file mode 100644 index 0000000000..1a52ef003d --- /dev/null +++ b/open-sse/utils/mediaParts.ts @@ -0,0 +1,250 @@ +/** + * Unified media-part detection for request messages. + * Single source of truth shared by the vision/audio bridge guardrails (src/) + * and the combo compatibility filter (open-sse/) — the two previously kept + * divergent copies (guardrail missed input_image; combo saw it). + */ +export type MediaKind = "image" | "audio"; + +export interface MediaPart { + kind: MediaKind; + /** URL, data URI, or base64 payload reference for the media content. */ + ref: string; + /** + * Location of the top-level content part this hit belongs to. For nested + * hits (`nested: true`) these indexes point at the CONTAINER part — the + * entry of `message.content` under which the media was found — not at the + * media object itself. + */ + messageIndex: number; + partIndex: number; + /** + * True when the media was found below the top level of the content part + * (inside another object/array, e.g. an image nested in an audio payload + * or a data URI inside a text field). Splice-style consumers can only + * replace top-level parts, so they must skip nested hits. + */ + nested: boolean; + /** Original wire shape, for callers that need format-specific handling. */ + shape: + | "image_url" + | "image_base64" + | "image_source_url" + | "input_image" + | "data_uri_string" + | "input_audio" + | "audio_url" + /** Audio detected via `source.media_type: audio/*` (no explicit type). */ + | "audio_source" + /** + * Combo-parity indicator: the value looks like an image part (image-ish + * `type` in any casing, a bare `image_url`/`input_image` key, or a + * `source.media_type` of image/*) but carries no extractable ref — `ref` + * may be "". Boolean callers (combo compatibility filter) count it; + * ref-consuming callers (vision bridge) must skip empty refs. + */ + | "image_indicator"; +} + +const MAX_DEPTH = 8; + +interface DetectCtx { + out: MediaPart[]; + messageIndex: number; + partIndex: number; + /** When set, `found` flips true on the first part of this kind (early exit). */ + stopAtKind?: MediaKind; + found?: boolean; +} + +/** Extract a URL from either a bare string or a `{ url }` object. */ +function urlFrom(raw: unknown): string | undefined { + if (typeof raw === "string") return raw; + const url = (raw as Record | undefined)?.url; + return typeof url === "string" ? url : undefined; +} + +function pushPart( + ctx: DetectCtx, + kind: MediaKind, + ref: string, + shape: MediaPart["shape"], + depth: number +): void { + ctx.out.push({ + kind, + ref, + messageIndex: ctx.messageIndex, + partIndex: ctx.partIndex, + nested: depth > 0, + shape, + }); + if (ctx.stopAtKind === kind) ctx.found = true; +} + +/** Strict image shapes with an extractable ref. Returns true when one was pushed. */ +function inspectImageShapes( + obj: Record, + type: string | undefined, + ctx: DetectCtx, + depth: number +): boolean { + if (type === "image_url" || type === "input_image") { + const url = urlFrom(obj.image_url); + if (url) { + pushPart(ctx, "image", url, type === "input_image" ? "input_image" : "image_url", depth); + return true; + } + } + if (type === "image") { + const source = obj.source as Record | undefined; + if (source?.type === "base64" && typeof source.data === "string") { + const media = typeof source.media_type === "string" ? source.media_type : "image/png"; + pushPart(ctx, "image", `data:${media};base64,${source.data}`, "image_base64", depth); + return true; + } + // Non-empty url required: an empty `source.url` is not an extractable image + // (mirrors the guardrail's historical `if (url)` guard). + if (source?.type === "url" && typeof source.url === "string" && source.url) { + pushPart(ctx, "image", source.url, "image_source_url", depth); + return true; + } + } + return false; +} + +/** + * Audio shapes. Returns true when a part was pushed (at most one per object). + * Callers must NOT early-return on audio: the same object can also carry + * image indicators or nest image parts inside its payload. + */ +function inspectAudioShapes( + obj: Record, + type: string | undefined, + mediaType: unknown, + ctx: DetectCtx, + depth: number +): boolean { + if (type === "input_audio") { + const audio = obj.input_audio as Record | undefined; + if (typeof audio?.data === "string") { + pushPart(ctx, "audio", audio.data, "input_audio", depth); + return true; + } + } + if (type === "audio_url") { + const url = urlFrom(obj.audio_url); + if (url) { + pushPart(ctx, "audio", url, "audio_url", depth); + return true; + } + } + if (typeof mediaType === "string" && mediaType.startsWith("audio/")) { + const data = (obj.source as Record).data; + if (typeof data === "string") { + pushPart(ctx, "audio", data, "audio_source", depth); + return true; + } + } + return false; +} + +/** + * Combo-parity image indicators: the legacy valueContainsImagePart + * (comboStructure) matched image-ish `type` names case-insensitively, bare + * `image_url`/`input_image` keys, and `source.media_type` image/* — all + * without needing an extractable ref. Emit an indicator part (ref + * best-effort, possibly "") so boolean callers keep seeing those requests as + * vision requests. Returns true when one was pushed. + */ +function inspectImageIndicators( + obj: Record, + type: string | undefined, + mediaType: unknown, + ctx: DetectCtx, + depth: number +): boolean { + const lowerType = type?.toLowerCase(); + const looksLikeImage = + lowerType === "image" || + lowerType === "image_url" || + lowerType === "input_image" || + "image_url" in obj || + "input_image" in obj; + const imageMediaType = + typeof mediaType === "string" && mediaType.toLowerCase().startsWith("image/"); + if (!looksLikeImage && !imageMediaType) return false; + pushPart(ctx, "image", urlFrom(obj.image_url ?? obj.input_image) ?? "", "image_indicator", depth); + return true; +} + +function inspect(value: unknown, ctx: DetectCtx, depth: number): void { + if (ctx.found || depth > MAX_DEPTH || value == null) return; + if (typeof value === "string") { + if (value.startsWith("data:image/")) pushPart(ctx, "image", value, "data_uri_string", depth); + return; + } + if (Array.isArray(value)) { + for (const entry of value) { + inspect(entry, ctx, depth + 1); + if (ctx.found) return; + } + return; + } + if (typeof value !== "object") return; + const obj = value as Record; + const type = typeof obj.type === "string" ? obj.type : undefined; + + if (inspectImageShapes(obj, type, ctx, depth)) return; + + const mediaType = (obj.source as Record | undefined)?.media_type; + // Audio does not early-return: the same object can also carry image + // indicators (bare `image_url`/`input_image` keys the legacy combo filter + // matched) or nest image parts inside its payload. + inspectAudioShapes(obj, type, mediaType, ctx, depth); + if (ctx.found) return; + if (inspectImageIndicators(obj, type, mediaType, ctx, depth)) return; + for (const nested of Object.values(obj)) { + inspect(nested, ctx, depth + 1); + if (ctx.found) return; + } +} + +export function detectMediaParts( + messages: ReadonlyArray<{ role?: string; content?: unknown }> | undefined | null +): MediaPart[] { + const out: MediaPart[] = []; + if (!Array.isArray(messages)) return out; + for (let messageIndex = 0; messageIndex < messages.length; messageIndex++) { + const content = messages[messageIndex]?.content; + if (!Array.isArray(content)) continue; + for (let partIndex = 0; partIndex < content.length; partIndex++) { + inspect(content[partIndex], { out, messageIndex, partIndex }, 0); + } + } + return out; +} + +/** + * Early-exit presence check: returns true as soon as the FIRST part of the + * requested kind is found, without collecting the full part list or finishing + * the traversal. Prefer this on hot paths (e.g. the combo compatibility + * filter runs on every request) over `detectMediaParts(...).some(...)`. + */ +export function containsMediaKind( + messages: ReadonlyArray<{ role?: string; content?: unknown }> | undefined | null, + kind: MediaKind +): boolean { + if (!Array.isArray(messages)) return false; + const out: MediaPart[] = []; + for (let messageIndex = 0; messageIndex < messages.length; messageIndex++) { + const content = messages[messageIndex]?.content; + if (!Array.isArray(content)) continue; + for (let partIndex = 0; partIndex < content.length; partIndex++) { + const ctx: DetectCtx = { out, messageIndex, partIndex, stopAtKind: kind }; + inspect(content[partIndex], ctx, 0); + if (ctx.found) return true; + } + } + return false; +} diff --git a/open-sse/utils/openAIStreamChunk.ts b/open-sse/utils/openAIStreamChunk.ts new file mode 100644 index 0000000000..d249d78ff8 --- /dev/null +++ b/open-sse/utils/openAIStreamChunk.ts @@ -0,0 +1,33 @@ +import { restoreOpenAIToolNames } from "../translator/helpers/toolCallHelper.ts"; + +type JsonRecord = Record; + +export function normalizeFinalOpenAIStreamChunk( + parsed: JsonRecord, + toolNameMap: unknown +): { changed: boolean; hasFinishReason: boolean } { + let changed = false; + if (parsed.id != null && typeof parsed.id !== "string") { + parsed.id = String(parsed.id); + changed = true; + } + + if (Array.isArray(parsed.choices)) { + for (const choice of parsed.choices as JsonRecord[]) { + const delta = (choice as JsonRecord | null | undefined)?.delta as JsonRecord | undefined; + if (!Array.isArray(delta?.tool_calls)) continue; + for (const toolCall of delta.tool_calls as JsonRecord[]) { + if (toolCall?.id != null && typeof toolCall.id !== "string") { + toolCall.id = String(toolCall.id); + changed = true; + } + } + } + } + + changed = restoreOpenAIToolNames(parsed, toolNameMap) || changed; + const firstChoice = Array.isArray(parsed.choices) + ? (parsed.choices[0] as JsonRecord | undefined) + : undefined; + return { changed, hasFinishReason: Boolean(firstChoice?.finish_reason) }; +} diff --git a/open-sse/utils/passthroughTailProcessor.ts b/open-sse/utils/passthroughTailProcessor.ts index 732e09cb4f..23d04e8a27 100644 --- a/open-sse/utils/passthroughTailProcessor.ts +++ b/open-sse/utils/passthroughTailProcessor.ts @@ -45,6 +45,7 @@ export type PassthroughTailProcessorContext = { setPassthroughResponsesCurrentFunctionCallKey: (value: string | null) => void; hasPassthroughToolCalls: () => boolean; toResponsesCompletedWithToolCalls: (parsed: JsonRecord) => JsonRecord; + restoreOpenAIToolNames: (parsed: JsonRecord) => boolean; }; function asRecord(value: unknown): JsonRecord { @@ -290,7 +291,9 @@ export function processBufferedPassthroughLine( if (isResponses) { output = handleResponsesTailPayload(parsed, output, context); } else if (!isClaude) { + const restoredToolName = context.restoreOpenAIToolNames(parsed); handleOpenAiTailPayload(parsed, context); + if (restoredToolName) output = `data: ${JSON.stringify(parsed)}\n\n`; } context.pushClientPayload(parsed); diff --git a/open-sse/utils/proxyDispatcher.ts b/open-sse/utils/proxyDispatcher.ts index ebf6b53f1b..25d065a2c9 100644 --- a/open-sse/utils/proxyDispatcher.ts +++ b/open-sse/utils/proxyDispatcher.ts @@ -11,6 +11,7 @@ import { getDispatcherCache, getRetryCachedDispatcher, setDefaultCachedDispatcher, + setDispatcherCacheEntry, setRetryCachedDispatcher, } from "./proxyDispatcherCache.ts"; @@ -96,20 +97,27 @@ export function getProxyDispatcherConnectionLimit( function getProxyDispatcherOptions(env: Record = process.env) { const options = getDispatcherOptions(); - // Disable keep-alive and pipelining for proxy connections. - // Cheap proxy servers aggressively drop idle sockets without sending TCP RST, - // causing "socket hang up" or "Client network socket disconnected" errors - // on subsequent requests that try to reuse the pooled connection. + // #9100: restore keep-alive on the proxy path. The previous hard-coded + // keepAliveTimeout: 1 (1ms) destroyed the pooled socket right after every + // response, forcing a fresh TCP+TLS+CONNECT handshake per request. Proxies + // that throttle connection churn then serialized concurrent requests behind + // ~30s stalls (5 concurrent → 1 fast + 4× ~29.5s). The socket now stays + // alive for at least 30s (the default fetchKeepAliveTimeoutMs is 4s), and + // keepAliveMaxTimeout is raised so an upstream Keep-Alive header cannot + // clamp it back down to a sub-second value. // - // Keep multiple connections available anyway: with pipelining disabled, long - // SSE streams such as Codex /v1/responses otherwise bottleneck through the - // cached proxy dispatcher under concurrency (#4163). + // Stale pooled sockets (a proxy that silently drops idle ones) are recovered + // by the retry-once-with-fresh-socket path in proxyFetch.ts (mirrors the + // direct-path #4252 fix) instead of by killing all idle sockets after 1ms. + // + // Pipelining 4 lets concurrent SSE streams multiplex over the pooled + // connection instead of each opening its own socket (#4163 regression). return { ...options, connections: getProxyDispatcherConnectionLimit(env), - keepAliveTimeout: 1, - keepAliveMaxTimeout: 1, - pipelining: 0, + keepAliveTimeout: Math.max(options.keepAliveTimeout, 30_000), + keepAliveMaxTimeout: Math.max(options.keepAliveMaxTimeout, 60_000), + pipelining: 4, }; } @@ -429,14 +437,15 @@ export function __createRoundRobinDispatcherForTest(dispatchers: Dispatcher[]): return createRoundRobinDispatcher(dispatchers); } -export function createProxyDispatcher(proxyUrl: string): Dispatcher { - const normalizedUrl = normalizeProxyUrl(proxyUrl, "proxy dispatcher"); - const dispatcherCache = getDispatcherCache(); - const proxyDispatcherOptions = getProxyDispatcherOptions(); - - let dispatcher = dispatcherCache.get(normalizedUrl); - if (dispatcher) return dispatcher; - +/** + * Build a ProxyAgent / socks dispatcher for a normalized proxy URL using the + * given options. Shared by the pooled dispatcher (keep-alive, pipelining 4) + * and the retry dispatcher (fresh no-keep-alive socket, mirrors #4252). + */ +function buildProxyDispatcher( + normalizedUrl: string, + options: ReturnType +): Dispatcher { const parsed = new URL(normalizedUrl); const family = resolveDispatcherFamily(parsed); parsed.searchParams.delete("family"); @@ -452,40 +461,89 @@ export function createProxyDispatcher(proxyUrl: string): Dispatcher { }; if (parsed.username) socksOptions.userId = decodeURIComponent(parsed.username); if (parsed.password) socksOptions.password = decodeURIComponent(parsed.password); - dispatcher = - family === null - ? (socksDispatcher( - socksOptions as Parameters[0], - proxyDispatcherOptions - ) as Dispatcher) - : createSocksDispatcherWithFamily( - socksOptions as unknown as Parameters[0], - family, - proxyDispatcherOptions - ); - } else { - // ProxyAgent omits `connect`; the client->proxy socket is built from `proxyTls`. - // undici 8.4.1 types `proxyTls?: buildConnector.BuildOptions`, a union whose - // `TcpNetConnectOpts` member nominally requires `port` — so TS rejects a bare - // `{ family, autoSelectFamily }` pin. At runtime undici merges these options into - // net.connect (the uri already carries the host:port), so the partial pin is - // valid; the cast suppresses the spurious missing-`port` error. - dispatcher = new ProxyAgent({ - uri: cleanUri, - // undici 8.6+ forwards plain-HTTP requests through the proxy as an origin - // request (GET http://host/…) instead of a CONNECT tunnel; upstream proxies - // that only speak CONNECT then reject it (501). OmniRoute tunnels ALL proxied - // traffic (HTTP + HTTPS) via CONNECT, so force tunneling. Unknown option on - // undici <8.6 → silently ignored (that version already tunneled by default). - proxyTunnel: true, - ...proxyDispatcherOptions, - ...(family !== null - ? { proxyTls: { family, autoSelectFamily: false } as ProxyAgent.Options["proxyTls"] } - : {}), - }); + return family === null + ? (socksDispatcher( + socksOptions as Parameters[0], + options + ) as Dispatcher) + : createSocksDispatcherWithFamily( + socksOptions as unknown as Parameters[0], + family, + options + ); } - dispatcherCache.set(normalizedUrl, dispatcher); + // ProxyAgent omits `connect`; the client->proxy socket is built from `proxyTls`. + // undici 8.4.1 types `proxyTls?: buildConnector.BuildOptions`, a union whose + // `TcpNetConnectOpts` member nominally requires `port` — so TS rejects a bare + // `{ family, autoSelectFamily }` pin. At runtime undici merges these options into + // net.connect (the uri already carries the host:port), so the partial pin is + // valid; the cast suppresses the spurious missing-`port` error. + return new ProxyAgent({ + uri: cleanUri, + // undici 8.6+ forwards plain-HTTP requests through the proxy as an origin + // request (GET http://host/…) instead of a CONNECT tunnel; upstream proxies + // that only speak CONNECT then reject it (501). OmniRoute tunnels ALL proxied + // traffic (HTTP + HTTPS) via CONNECT, so force tunneling. Unknown option on + // undici <8.6 → silently ignored (that version already tunneled by default). + proxyTunnel: true, + ...options, + ...(family !== null + ? { proxyTls: { family, autoSelectFamily: false } as ProxyAgent.Options["proxyTls"] } + : {}), + }); +} + +export function createProxyDispatcher(proxyUrl: string): Dispatcher { + const normalizedUrl = normalizeProxyUrl(proxyUrl, "proxy dispatcher"); + const dispatcherCache = getDispatcherCache(); + + let dispatcher = dispatcherCache.get(normalizedUrl); + if (dispatcher) return dispatcher; + + dispatcher = buildProxyDispatcher(normalizedUrl, getProxyDispatcherOptions()); + + // A concurrent caller may have built + cached the same URL while we were + // building. If so, drop our duplicate (avoid leaking sockets) and reuse theirs. + const winner = dispatcherCache.get(normalizedUrl); + if (winner) { + void dispatcher.close().catch(() => {}); + return winner; + } + setDispatcherCacheEntry(normalizedUrl, dispatcher); + return dispatcher; +} + +/** + * Dispatcher for RETRYING a proxied request that just failed with a transient + * socket error. Mirrors {@link getRetryDispatcher} for the direct path (#4252): + * the retry forces a FRESH socket by disabling keep-alive and pipelining, so a + * stale pooled socket (a proxy that silently dropped it) is recovered instead + * of re-hitting the dead connection. Cached per normalized proxy URL. + */ +export function getProxyRetryDispatcher(proxyUrl: string): Dispatcher { + const normalizedUrl = normalizeProxyUrl(proxyUrl, "proxy dispatcher"); + const dispatcherCache = getDispatcherCache(); + const retryKey = `retry:${normalizedUrl}`; + + let dispatcher = dispatcherCache.get(retryKey); + if (dispatcher) return dispatcher; + + dispatcher = buildProxyDispatcher(normalizedUrl, { + ...getProxyDispatcherOptions(), + // Retry needs exactly one fresh socket (not the inherited connection pool). + connections: 1, + keepAliveTimeout: 1, + keepAliveMaxTimeout: 1, + pipelining: 0, + }); + + const winner = dispatcherCache.get(retryKey); + if (winner) { + void dispatcher.close().catch(() => {}); + return winner; + } + setDispatcherCacheEntry(retryKey, dispatcher); return dispatcher; } diff --git a/open-sse/utils/proxyDispatcherCache.ts b/open-sse/utils/proxyDispatcherCache.ts index 3a2688fd77..c98f8dd2c4 100644 --- a/open-sse/utils/proxyDispatcherCache.ts +++ b/open-sse/utils/proxyDispatcherCache.ts @@ -4,6 +4,9 @@ const DISPATCHER_CACHE_KEY = Symbol.for("omniroute.proxyDispatcher.cache"); const DEFAULT_DISPATCHER_KEY = Symbol.for("omniroute.proxyDispatcher.default"); const RETRY_DISPATCHER_KEY = Symbol.for("omniroute.proxyDispatcher.retry"); +/** Upper bound on cached per-URL proxy dispatchers; oldest entries are evicted first. */ +const MAX_DISPATCHER_CACHE_ENTRIES = 512; + type DispatcherCache = Map; type GlobalWithDispatcherCache = typeof globalThis & { [DISPATCHER_CACHE_KEY]?: DispatcherCache; @@ -122,3 +125,22 @@ export function clearDispatcherCache(): void { export function __cacheProxyDispatcherForTest(key: string, dispatcher: Dispatcher): void { getDispatcherCache().set(key, dispatcher); } + +/** + * Insert a dispatcher into the per-URL cache, evicting the oldest entry (and + * closing it) first when the cache is at capacity. This keeps the cache bounded + * on proxies that rotate through many URLs while guaranteeing that + * `clearDispatcherCache()` can still close every registered dispatcher. + */ +export function setDispatcherCacheEntry(key: string, dispatcher: Dispatcher): void { + const cache = getDispatcherCache(); + if (cache.size >= MAX_DISPATCHER_CACHE_ENTRIES) { + const oldest = cache.keys().next().value; + if (oldest !== undefined) { + const evicted = cache.get(oldest); + cache.delete(oldest); + closeDispatcher(evicted); + } + } + cache.set(key, dispatcher); +} diff --git a/open-sse/utils/proxyFallback.ts b/open-sse/utils/proxyFallback.ts index c40df9ba74..6d7590034c 100644 --- a/open-sse/utils/proxyFallback.ts +++ b/open-sse/utils/proxyFallback.ts @@ -68,10 +68,9 @@ export function __setProxyFallbackTestHooks(hooks: ProxyFallbackTestHooks | null * Build a full proxy URL string from a proxy record's fields. */ function proxyRecordToUrl(proxy: ProxyShape): string { - const auth = - proxy.username - ? `${encodeURIComponent(proxy.username)}:${encodeURIComponent(proxy.password || "")}@` - : ""; + const auth = proxy.username + ? `${encodeURIComponent(proxy.username)}:${encodeURIComponent(proxy.password || "")}@` + : ""; return `${proxy.type}://${auth}${proxy.host}:${proxy.port}`; } @@ -278,9 +277,7 @@ export async function testProxiesAgainstTarget( ); return results.map((r) => - r.status === "fulfilled" - ? r.value - : { proxyUrl: "unknown", ok: false, latencyMs: null } + r.status === "fulfilled" ? r.value : { proxyUrl: "unknown", ok: false, latencyMs: null } ); } @@ -288,6 +285,14 @@ export async function testProxiesAgainstTarget( // Find working proxy (with caching) // --------------------------------------------------------------------------- +// #9100: single-flight probe dedup. Under concurrent failures (e.g. 5 parallel +// chat requests all hitting a dead pinned proxy), every request would otherwise +// probe the whole proxy pool simultaneously — a thundering herd of TCP connects +// that throttles the very proxies it is trying to reach. Concurrent +// findWorkingProxy calls for the same cache key share ONE probe promise; +// mirrors the proxyHealthInflight pattern in src/lib/proxyHealth.ts. +const inflightProbes = new Map>(); + /** * Find a working proxy for the given target hostname and URL. * @@ -318,46 +323,64 @@ export async function findWorkingProxy( PROXY_FALLBACK_CACHE.delete(cacheKey); } - // Collect candidates - const candidates = await (proxyFallbackTestHooks?.getProxyCandidates ?? getProxyCandidates)( - targetUrl - ); - if (candidates.length === 0) { - return null; + // #9100: single-flight — if a probe for this cache key is already running, + // share its promise instead of starting another (thundering-herd guard). + const existingProbe = inflightProbes.get(cacheKey); + if (existingProbe) { + return existingProbe; } - // Test all in parallel, return first that works - const results = await Promise.allSettled( - candidates.map(async (proxyUrl) => { - const { ok } = await (proxyFallbackTestHooks?.testSingleProxy ?? testSingleProxy)( + const probe = (async (): Promise => { + // Collect candidates + const candidates = await (proxyFallbackTestHooks?.getProxyCandidates ?? getProxyCandidates)( + targetUrl + ); + if (candidates.length === 0) { + return null; + } + + // Test all in parallel, return first that works + const results = await Promise.allSettled( + candidates.map(async (proxyUrl) => { + const { ok } = await (proxyFallbackTestHooks?.testSingleProxy ?? testSingleProxy)( + proxyUrl, + targetUrl + ); + return { proxyUrl, ok }; + }) + ); + + const working = results.find((r) => r.status === "fulfilled" && r.value.ok); + + if (working && working.status === "fulfilled") { + const proxyUrl = working.value.proxyUrl; + // Cache the working proxy + PROXY_FALLBACK_CACHE.set(cacheKey, { proxyUrl, - targetUrl - ); - return { proxyUrl, ok }; - }) - ); + expiresAt: Date.now() + CACHE_TTL_MS, + }); + return proxyUrl; + } - const working = results.find( - (r) => r.status === "fulfilled" && r.value.ok - ); - - if (working && working.status === "fulfilled") { - const proxyUrl = working.value.proxyUrl; - // Cache the working proxy + // All failed — cache the negative result to avoid re-probing too often PROXY_FALLBACK_CACHE.set(cacheKey, { - proxyUrl, + proxyUrl: "", expiresAt: Date.now() + CACHE_TTL_MS, }); - return proxyUrl; + + return null; + })(); + + inflightProbes.set(cacheKey, probe); + try { + return await probe; + } finally { + // Only the owning caller removes the entry — a later caller that picked up + // the shared promise must not delete it out from under the first caller. + if (inflightProbes.get(cacheKey) === probe) { + inflightProbes.delete(cacheKey); + } } - - // All failed — cache the negative result to avoid re-probing too often - PROXY_FALLBACK_CACHE.set(cacheKey, { - proxyUrl: "", - expiresAt: Date.now() + CACHE_TTL_MS, - }); - - return null; } // --------------------------------------------------------------------------- @@ -373,9 +396,7 @@ export async function findWorkingProxy( * @param _connectionId Optional connection ID (reserved for future use). * @returns A proxy resolution result with level "autoSelect", or null. */ -export async function selectWorkingProxyFallback( - _connectionId?: string -): Promise<{ +export async function selectWorkingProxyFallback(_connectionId?: string): Promise<{ proxy: { type: string; host: string; port: number; username: string; password: string } | null; level: string; levelId: string | null; diff --git a/open-sse/utils/proxyFamilyResolve.ts b/open-sse/utils/proxyFamilyResolve.ts index 2b18e0849d..98236927c7 100644 --- a/open-sse/utils/proxyFamilyResolve.ts +++ b/open-sse/utils/proxyFamilyResolve.ts @@ -7,10 +7,28 @@ export type FamilyLookupFn = ( const defaultLookup: FamilyLookupFn = (hostname) => dns.lookup(hostname, { all: true }); +/** Positive family checks are trusted for 5 minutes (DNS TTLs are typically short). */ +const FAMILY_CHECK_POSITIVE_TTL_MS = 300_000; +/** Negative results change fast (DNS provisioning) — only 2 seconds. */ +const FAMILY_CHECK_NEGATIVE_TTL_MS = 2_000; + +interface FamilyCheckCacheEntry { + lookupFn: FamilyLookupFn; + checkedAt: number; + ok: boolean; + message?: string; +} + +/** Cached family-check results keyed by `${host}:${family}`. */ +const familyCheckCache = new Map(); +/** In-flight family checks keyed by `${host}:${family}` — dedupes concurrent probes. */ +const familyCheckInflight = new Map>(); + /** * Fail-closed guarantee for an IPv6-only (or IPv4-only) proxy given as a hostname: * refuse early if the hostname has no record in the required family. No-op for IP - * literals (their family is intrinsic). + * literals (their family is intrinsic). Results are cached per (host, family, + * lookupFn) and concurrent checks for the same key are single-flighted. */ export async function assertHostnameSupportsFamily( host: string, @@ -18,22 +36,57 @@ export async function assertHostnameSupportsFamily( lookupFn: FamilyLookupFn = defaultLookup ): Promise { if (detectIpLiteralFamily(host) !== null) return; - let records: Array<{ address: string; family: number }>; - try { - records = await lookupFn(stripIpv6Brackets(host)); - } catch (err) { - throw new Error( - `[ProxyFamily] DNS resolution failed for ${host}; refusing to egress (fail-closed): ${ - err instanceof Error ? err.message : String(err) - }` - ); + const cacheKey = `${host}:${family}`; + const cached = familyCheckCache.get(cacheKey); + if (cached && cached.lookupFn === lookupFn) { + const ttl = cached.ok ? FAMILY_CHECK_POSITIVE_TTL_MS : FAMILY_CHECK_NEGATIVE_TTL_MS; + if (Date.now() - cached.checkedAt < ttl) { + if (!cached.ok) throw new Error(cached.message); + return; + } + familyCheckCache.delete(cacheKey); } - const hasFamily = records.some((r) => r.family === family); - if (!hasFamily) { - throw new Error( - `[ProxyFamily] Proxy host ${host} has no ${family === 6 ? "IPv6 (AAAA)" : "IPv4 (A)"} record; refusing ${ + + const inflight = familyCheckInflight.get(cacheKey); + if (inflight) { + await inflight; + return; + } + + const probe = (async () => { + let records: Array<{ address: string; family: number }>; + try { + records = await lookupFn(stripIpv6Brackets(host)); + } catch (err) { + const message = `[ProxyFamily] DNS resolution failed for ${host}; refusing to egress (fail-closed): ${ + err instanceof Error ? err.message : String(err) + }`; + familyCheckCache.set(cacheKey, { lookupFn, checkedAt: Date.now(), ok: false, message }); + throw new Error(message); + } + const hasFamily = records.some((r) => r.family === family); + if (!hasFamily) { + const message = `[ProxyFamily] Proxy host ${host} has no ${family === 6 ? "IPv6 (AAAA)" : "IPv4 (A)"} record; refusing ${ family === 6 ? "IPv6" : "IPv4" - }-only egress (fail-closed)` - ); + }-only egress (fail-closed)`; + familyCheckCache.set(cacheKey, { lookupFn, checkedAt: Date.now(), ok: false, message }); + throw new Error(message); + } + familyCheckCache.set(cacheKey, { lookupFn, checkedAt: Date.now(), ok: true }); + })(); + + familyCheckInflight.set(cacheKey, probe); + try { + await probe; + } finally { + if (familyCheckInflight.get(cacheKey) === probe) { + familyCheckInflight.delete(cacheKey); + } } } + +/** Test hook: drop all cached and in-flight family checks. */ +export function __clearFamilyCheckCacheForTest(): void { + familyCheckCache.clear(); + familyCheckInflight.clear(); +} diff --git a/open-sse/utils/proxyFetch.ts b/open-sse/utils/proxyFetch.ts index 754e3cdf3f..a5080c6fbb 100644 --- a/open-sse/utils/proxyFetch.ts +++ b/open-sse/utils/proxyFetch.ts @@ -1,11 +1,12 @@ // @ts-nocheck import "./setupPolyfill.ts"; import { AsyncLocalStorage } from "node:async_hooks"; -import { fetch as undiciFetch } from "undici"; +import { fetch as undiciFetch, Agent } from "undici"; import { buildVercelRelayHeaders, createProxyDispatcher, getDefaultDispatcher, + getProxyRetryDispatcher, getRetryDispatcher, isRelayType, normalizeProxyUrl, @@ -18,6 +19,62 @@ import { isControlPlaneProxyDirectFallbackEnabled, isFeatureFlagEnabled, } from "@/shared/utils/featureFlags"; + +// #9100: relay egress (Vercel / Deno / Cloudflare edge functions) used to go +// through bare `originalFetch` — NO connection pooling, NO timeout, NO retry. +// Every relay request opened a fresh TCP+TLS handshake and a throttled edge +// relay serialized concurrent requests behind ~30s stalls. This module-level +// singleton Agent gives the relay path the same pooling the HTTP-proxy path +// gets from createProxyDispatcher: reused TCP connections per relay host. +// +// `connections: 4` removes head-of-line blocking on h1-only relays: undici never +// pipelines POST (SSE is POST), so a single socket would serialize every +// concurrent stream; 4 sockets give 4 parallel streams. h2 relays are +// unaffected — streams multiplex over one socket, so the pool stays at a single +// connection while streams drain. `allowH2: true` keeps that h2 fast path for +// Vercel / Deno / Cloudflare. +const RELAY_POOL_AGENT_OPTIONS = { + keepAliveTimeout: 30_000, + keepAliveMaxTimeout: 60_000, + pipelining: 4, + connections: 4, + allowH2: true, +} as const; +const RELAY_POOL_AGENT = new Agent(RELAY_POOL_AGENT_OPTIONS); + +// Retry path for a relay that just failed with a transient socket error: a +// FRESH socket (keep-alive disabled) so a stale pooled connection is recovered +// instead of re-hitting the dead one (mirrors the proxy/direct retry paths). +const RELAY_RETRY_AGENT = new Agent({ + keepAliveTimeout: 1, + keepAliveMaxTimeout: 1, + pipelining: 0, + connections: 1, + allowH2: true, +}); + +// A hung relay must fail BEFORE the client/agent timeout (typically 30s) so the +// caller sees a relay-specific failure instead of a generic upstream timeout. +// Overridable via OMNIROUTE_RELAY_FETCH_TIMEOUT_MS (capped at 29s so the +// relay-specific timeout always fires first). +function readRelayFetchTimeoutMs(): number { + const raw = process.env.OMNIROUTE_RELAY_FETCH_TIMEOUT_MS; + if (raw == null || raw.trim() === "") return 25_000; + const parsed = Number(raw); + if (!Number.isFinite(parsed) || parsed < 1) { + console.warn( + `[ProxyFetch] Invalid OMNIROUTE_RELAY_FETCH_TIMEOUT_MS="${raw}". Using default 25000.` + ); + return 25_000; + } + return Math.min(Math.floor(parsed), 29_000); +} +const RELAY_FETCH_TIMEOUT_MS = readRelayFetchTimeoutMs(); + +// Shared retry backoff for the direct / relay / proxy retry-once paths. +// Overridable via OMNIROUTE_RETRY_BACKOFF_MS (0 = retry immediately). +const RETRY_BACKOFF_MS = Math.max(Number(process.env.OMNIROUTE_RETRY_BACKOFF_MS) || 10, 0); + function isTlsFingerprintEnabled() { return process.env.ENABLE_TLS_FINGERPRINT === "true"; } @@ -325,6 +382,10 @@ export function resolveProxyForRequest(targetUrl) { const contextProxy = proxyContext.getStore(); if (contextProxy) { + // #9551: NO_PROXY must bypass context-proxy too + if (target && noProxyMatch(targetUrl)) { + return { source: "direct", proxyUrl: null }; + } return { source: "context", proxyUrl: proxyConfigToUrl(contextProxy) }; } @@ -377,31 +438,39 @@ export async function runWithProxyContext( // Run fn with the proxy context cleared so the request egresses directly. const runDirect = () => proxyContext.run(null, fn); - // T14: Proxy Fast-Fail - // Perform a short TCP reachability check before issuing upstream requests. + // T14: Proxy Fast-Fail (non-blocking, #9100) + // Perform a short TCP reachability check BEFORE issuing upstream requests. // Skip for edge-relay types (vercel / deno): proxyConfigToUrl returns // "https://" which is the relay endpoint itself, not an HTTP proxy — // the actual routing is handled via x-relay-* headers below. + // + // Previously the probe was AWAITED before dispatch: every 30s healthy-TTL + // window, the first request paid a full TCP+DNS round trip, and under + // concurrent failures a throttled proxy turned that into queueing. Now the + // probe fires WITHOUT awaiting and the request dispatches optimistically; + // only if the probe resolves UNREACHABLE while the request is still in flight + // do we fail fast with PROXY_UNREACHABLE (503). const isVercelRelay = isRelayType((effectiveProxyConfig as { type?: string })?.type); - if (resolvedProxyUrl && !isVercelRelay) { - const reachable = await isProxyReachable(resolvedProxyUrl); - if (!reachable) { - const proxyLabel = proxyUrlForLogs(resolvedProxyUrl); - if (directFallbackOnUnreachable) { + let unreachableProbe: Promise | null = null; + // Nested same-context call (the active proxyContext already IS this config): + // skip the reachability probe and family pre-check — the outer scope already + // ran them for this exact proxy, so re-probing only adds latency per layer. + if (resolvedProxyUrl && !isVercelRelay && effectiveProxyConfig !== currentContext) { + if (directFallbackOnUnreachable) { + // Opt-in control-plane direct-fallback path: keep the BLOCKING probe — + // this path must decide direct-vs-proxy BEFORE dispatch, so the probe + // result is load-bearing here. Unchanged behavior. + const reachable = await isProxyReachable(resolvedProxyUrl); + if (!reachable) { + const proxyLabel = proxyUrlForLogs(resolvedProxyUrl); console.warn( `[ProxyFetch] Proxy unreachable (${proxyLabel}); using a direct connection for this request.` ); return runDirect(); } - const err = new Error(`[Proxy Fast-Fail] Proxy unreachable: ${proxyLabel}`) as Error & { - code?: string; - errorCode?: string; - statusCode?: number; - }; - err.code = "PROXY_UNREACHABLE"; - err.errorCode = "proxy_unreachable"; - err.statusCode = 503; - throw err; + } else { + // Fire the probe WITHOUT awaiting; dispatch optimistically below. + unreachableProbe = isProxyReachable(resolvedProxyUrl); } } @@ -409,7 +478,9 @@ export async function runWithProxyContext( // (set for HOSTNAME proxies by proxyConfigToUrl), verify the hostname actually has a // record in that family before egressing. Refuse early rather than silently fall back // to the other family. No-op for IP literals (their family is intrinsic). - if (resolvedProxyUrl && !isVercelRelay) { + // Nested same-context call: skip the family pre-check too — the outer scope + // already verified this exact proxy (mirrors the probe gate above). + if (resolvedProxyUrl && !isVercelRelay && effectiveProxyConfig !== currentContext) { try { const u = new URL(resolvedProxyUrl); const fam = u.searchParams.get("family"); @@ -433,9 +504,14 @@ export async function runWithProxyContext( return proxyContext.run(effectiveProxyConfig, async () => { if (resolvedProxyUrl && effectiveProxyConfig !== currentContext) { - console.log( - `[ProxyFetch] Applied request proxy context: ${proxyUrlForLogs(resolvedProxyUrl)}` - ); + // #9158: this fires on EVERY proxied request (innermost context wins). + // Gate it behind the same env flag as the relay routing log so request + // traffic doesn't spam stdout at production log levels. + if (process.env.OMNIROUTE_PROXY_FETCH_DEBUG === "true") { + console.log( + `[ProxyFetch] Applied request proxy context: ${proxyUrlForLogs(resolvedProxyUrl)}` + ); + } } // #5217: record the proxy actually applied so a post-execution egress logger // reflects the real egress (executors that pin a per-account proxy internally @@ -445,7 +521,44 @@ export async function runWithProxyContext( const sink = appliedProxyContext.getStore(); if (sink) sink.proxy = effectiveProxyConfig; } - return fn(); + + const requestPromise = Promise.resolve().then(() => fn()); + if (!unreachableProbe) return requestPromise; + + // #9100: non-blocking fast-fail — race the background probe against the + // request. Only if the probe resolves UNREACHABLE while the request is + // still in flight do we abort it with PROXY_UNREACHABLE (503). If the + // request already settled (or the probe found the proxy reachable), the + // request wins and the stale probe result is ignored — the first dispatch + // is NEVER gated on the probe. + const winner = await Promise.race([ + unreachableProbe.then((reachable) => ({ kind: "probe" as const, reachable })), + requestPromise.then((value) => ({ kind: "request" as const, value })), + ]); + + if (winner.kind === "probe" && !winner.reachable) { + // Proxy is dead and the request is still in flight → fail fast with the + // standard PROXY_UNREACHABLE error (503). The in-flight request's own + // result is discarded (its executor-level signal will still fire); the + // caller observes this fast failure instead of the ~30s timeout stall. + requestPromise.catch(() => {}); + const proxyLabel = proxyUrlForLogs(resolvedProxyUrl); + const err = new Error(`[Proxy Fast-Fail] Proxy unreachable: ${proxyLabel}`) as Error & { + code?: string; + errorCode?: string; + statusCode?: number; + }; + err.code = "PROXY_UNREACHABLE"; + err.errorCode = "proxy_unreachable"; + err.statusCode = 503; + throw err; + } + + if (winner.kind === "probe") { + // Probe said reachable but the request is still pending — keep waiting. + return await requestPromise; + } + return winner.value; }); } @@ -562,9 +675,12 @@ async function patchedFetch( msg.includes("UND_ERR") ) { if (attempt === 0 && maxAttempts > 1) { - // First failure — retry once with a short jittered delay before giving up. + // First failure — retry once after a short backoff before giving up. + // Delay is OMNIROUTE_RETRY_BACKOFF_MS (default 10ms): a fixed backoff + // beats random jitter here because the retry opens a fresh socket, so + // jitter was pure added latency with no herd benefit. lastDispatcherError = dispatcherError; - await new Promise((r) => setTimeout(r, 25 + Math.random() * 50)); + await new Promise((r) => setTimeout(r, RETRY_BACKOFF_MS)); continue; } if (hasNonReplayableBody) { @@ -657,30 +773,132 @@ async function patchedFetch( if (process.env.OMNIROUTE_PROXY_FETCH_DEBUG === "true") { console.debug(`[ProxyFetch] Routing via ${vc.type || "edge"} relay: ${hostForLogs}`); } - return await originalFetch(`https://${vc.host}`, { - ...options, - headers: mergedHeaders, - duplex: "half", - }); + + // #9100/#9158: pooled, timed, retried relay egress. Bare `originalFetch` had + // no pooling — a throttled relay serialized concurrent requests behind ~30s + // stalls. Route through the module-level RELAY_POOL_AGENT (FOUR reused TCP + // connections per relay host, pipelining 4 — a single connection let one + // long SSE stream monopolize the pool, HOL-blocking every other request), + // cap EACH attempt at RELAY_FETCH_TIMEOUT_MS (default 25s, before the typical + // 30s client/agent timeout), and retry ONCE on transport failure through a + // FRESH no-keep-alive RELAY_RETRY_AGENT. An internal per-attempt timeout is + // NOT retried — it fails fast as RELAY_TIMEOUT (504). Do NOT fall back to + // native fetch for the relay path: it has no pooling and would churn + // connections again. + const _undiciRelay = + deps.undiciFetch ?? (undiciFetch as unknown as (...args: unknown[]) => Promise); + const hasNonReplayableRelayBody = requestHasNonReplayableBody(input, options); + const maxRelayAttempts = hasNonReplayableRelayBody ? 1 : 2; + const relayUrl = `https://${vc.host}`; + let lastRelayError: unknown = null; + for (let attempt = 0; attempt < maxRelayAttempts; attempt++) { + // A fresh timeout signal per attempt: RELAY_FETCH_TIMEOUT_MS is per-try, + // so a hung relay that survives the first attempt still gets a full + // window on retry. Manual AbortController instead of + // AbortSignal.any([...]) so the relay branch stays free of the literal + // word `any` (T11 any-budget checker). + const relayController = new AbortController(); + const relayTimer = setTimeout(() => relayController.abort(), RELAY_FETCH_TIMEOUT_MS); + const onCallerAbort = () => relayController.abort(); + options.signal?.addEventListener("abort", onCallerAbort, { once: true }); + try { + return await _undiciRelay(relayUrl, { + ...options, + headers: mergedHeaders, + duplex: "half", + dispatcher: attempt === 0 ? RELAY_POOL_AGENT : RELAY_RETRY_AGENT, + signal: relayController.signal, + }); + } catch (relayError) { + // #9158: classify an internal per-attempt timeout FIRST — a relay that + // hangs past RELAY_FETCH_TIMEOUT_MS must fail fast as RELAY_TIMEOUT (504) + // and NOT be retried, instead of surviving into the caller's ~30s stall. + // The manual relayController fires only on this branch's own timer, so + // `relayController.signal.aborted` alone cannot be a caller abort; when + // BOTH fire, the caller abort wins (guarded by the check below). + const isRelayTimeout = relayController.signal.aborted && options?.signal?.aborted !== true; + if (isRelayTimeout) { + const timeoutErr = new Error( + `[ProxyFetch] Relay timed out after ${RELAY_FETCH_TIMEOUT_MS}ms (${proxyUrlForLogs(relayUrl)})` + ) as Error & { code?: string; errorCode?: string; statusCode?: number }; + timeoutErr.code = "RELAY_TIMEOUT"; + timeoutErr.errorCode = "relay_timeout"; + timeoutErr.statusCode = 504; + throw timeoutErr; + } + if (isCallerAbort(relayError, options?.signal)) throw relayError; + const msg = relayError instanceof Error ? relayError.message : String(relayError); + const errCode = (relayError as { code?: unknown })?.code; + const isTransportFailure = + msg.includes("fetch failed") || + errCode === "ECONNREFUSED" || + msg.includes("ECONNREFUSED") || + (typeof errCode === "string" && errCode.startsWith("UND_ERR")) || + msg.includes("UND_ERR"); + if (attempt === 0 && maxRelayAttempts > 1 && isTransportFailure) { + lastRelayError = relayError; + // #9158: fixed OMNIROUTE_RETRY_BACKOFF_MS backoff — the retry uses a + // FRESH no-keep-alive RELAY_RETRY_AGENT (connections: 1, keepAliveTimeout: + // 1ms) instead of reusing the pooled agent, so a stale pooled socket + // that the relay half-closed is guaranteed a clean TCP handshake. + // Jitter is unnecessary: there is no herd on a per-host singleton. + await new Promise((r) => setTimeout(r, RETRY_BACKOFF_MS)); + continue; + } + throw relayError; + } finally { + clearTimeout(relayTimer); + options.signal?.removeEventListener("abort", onCallerAbort); + } + } + throw lastRelayError; } - try { - const dispatcher = createProxyDispatcher(proxyUrl); - const _undiciProxy = - deps.undiciFetch ?? (undiciFetch as unknown as (...args: unknown[]) => Promise); - return await _undiciProxy(input, { - ...options, - dispatcher, - }); - } catch (error) { - // A caller abort/timeout must propagate unchanged and without a noisy - // "Proxy request failed" log — it's not a proxy transport failure. - if (!isCallerAbort(error, options?.signal)) { - const message = error instanceof Error ? error.message : String(error); - console.error(`[ProxyFetch] Proxy request failed (${source}, fail-closed): ${message}`); + // #9100: proxy path — attempt 0 uses the pooled keep-alive dispatcher + // (pipelining 4, ONE reused TCP connection per proxy host). A transient + // socket error on a stale pooled socket is retried ONCE on a fresh + // no-keep-alive dispatcher (mirrors the direct-path #4252 pattern) instead + // of killing all idle sockets after 1ms or surfacing a bare 502. + const _undiciProxy = + deps.undiciFetch ?? (undiciFetch as unknown as (...args: unknown[]) => Promise); + const hasNonReplayableProxyBody = requestHasNonReplayableBody(input, options); + const maxProxyAttempts = hasNonReplayableProxyBody ? 1 : 2; + let lastProxyError: unknown = null; + for (let attempt = 0; attempt < maxProxyAttempts; attempt++) { + try { + return await _undiciProxy(input, { + ...options, + dispatcher: + attempt === 0 ? createProxyDispatcher(proxyUrl) : getProxyRetryDispatcher(proxyUrl), + }); + } catch (error) { + const msg = error instanceof Error ? error.message : String(error); + const errCode = (error as { code?: unknown })?.code; + const isTransportFailure = + msg.includes("fetch failed") || + errCode === "ECONNREFUSED" || + msg.includes("ECONNREFUSED") || + (typeof errCode === "string" && errCode.startsWith("UND_ERR")) || + msg.includes("UND_ERR"); + if (attempt === 0 && maxProxyAttempts > 1 && isTransportFailure) { + lastProxyError = error; + // #9158: fixed OMNIROUTE_RETRY_BACKOFF_MS backoff — the retry uses a + // fresh no-keep-alive dispatcher (getProxyRetryDispatcher), so the old + // random jitter was pure latency on every recovered request with no + // herd risk (per-host pool). + await new Promise((r) => setTimeout(r, RETRY_BACKOFF_MS)); + continue; + } + // A caller abort/timeout must propagate unchanged and without a noisy + // "Proxy request failed" log — it's not a proxy transport failure. + if (!isCallerAbort(error, options?.signal)) { + const message = error instanceof Error ? error.message : String(error); + console.error(`[ProxyFetch] Proxy request failed (${source}, fail-closed): ${message}`); + } + throw error; } - throw error; } + throw lastProxyError; } /** @@ -726,4 +944,9 @@ export function getOriginalFetch(): typeof globalThis.fetch { return originalFetch; } +/** Test-only: exposes the relay Agent options for config assertions (#9100). */ +export function __getRelayPoolAgentOptionsForTest() { + return RELAY_POOL_AGENT_OPTIONS; +} + export default isCloud ? originalFetch : patchedFetch; diff --git a/open-sse/utils/publicCreds.ts b/open-sse/utils/publicCreds.ts index 4f77a5591c..688cd759ac 100644 --- a/open-sse/utils/publicCreds.ts +++ b/open-sse/utils/publicCreds.ts @@ -207,6 +207,15 @@ const EMBEDDED_DEFAULTS = { // Firefly credits balance endpoint public x-api-key (`SunbreakWebUI1`) from // GET firefly.adobe.io/v1/credits/balance browser traffic. adobe_firefly_balance_api_key: [60, 24, 0, 11, 0, 10, 20, 31, 50, 72, 18, 32, 43, 93], + // Raycast Pro V2 request-signature secret (#8895). Community-extracted from the + // public Raycast macOS client — the SAME value ships to every install, so it is + // public by design, not a per-user credential. Overridable via RAYCAST_SIG_SECRET + // or providerSpecificData.sigSecret. + raycast_sig_secret: [ + 89, 15, 13, 93, 71, 90, 65, 67, 86, 24, 71, 67, 1, 9, 91, 0, 73, 64, 87, 88, 93, 90, 91, 68, 12, + 20, 18, 3, 21, 70, 66, 3, 13, 11, 1, 72, 69, 87, 88, 95, 87, 88, 17, 94, 20, 67, 92, 27, 72, 68, + 3, 10, 92, 6, 21, 21, 84, 95, 14, 15, 88, 70, 95, 77, + ], } as const; export type EmbeddedDefaultKey = keyof typeof EMBEDDED_DEFAULTS; diff --git a/open-sse/utils/reasoningFields.ts b/open-sse/utils/reasoningFields.ts index e0d045e10b..a8b858e25e 100644 --- a/open-sse/utils/reasoningFields.ts +++ b/open-sse/utils/reasoningFields.ts @@ -1,3 +1,5 @@ +import { stripInternalReasoningPlaceholder } from "./reasoningPlaceholder.ts"; + type JsonRecord = Record; export function asReasoningRecord(value: unknown): JsonRecord { @@ -69,4 +71,17 @@ export function copyOpenAICompatibleReasoningFields(source: JsonRecord, target: const mirrored = getUnsupportedReasoningValue(source); if (mirrored) target.reasoning_content = mirrored; } + // ponytail: the internal replay placeholder is request scaffolding, never + // real reasoning — models echo it and it poisons client history + the cache + // (#8081 echo). Strip it from anything we forward to the client. + if (typeof target.reasoning_content === "string") { + const stripped = stripInternalReasoningPlaceholder(target.reasoning_content); + if (stripped === "") delete target.reasoning_content; + else if (stripped !== target.reasoning_content) target.reasoning_content = stripped; + } + if (typeof target.reasoning === "string") { + const stripped = stripInternalReasoningPlaceholder(target.reasoning); + if (stripped === "") delete target.reasoning; + else if (stripped !== target.reasoning) target.reasoning = stripped; + } } diff --git a/open-sse/utils/reasoningPlaceholder.ts b/open-sse/utils/reasoningPlaceholder.ts index 915af48c92..4e0ab3646c 100644 --- a/open-sse/utils/reasoningPlaceholder.ts +++ b/open-sse/utils/reasoningPlaceholder.ts @@ -21,6 +21,8 @@ export function isInternalReasoningPlaceholder(value: unknown): boolean { * real content, or streamed deltas glue together with their spaces eaten. */ export function stripInternalReasoningPlaceholder(value: string): string { + if (!value.includes(NON_ANTHROPIC_THINKING_PLACEHOLDER)) return value; + const stripped = value.replaceAll(NON_ANTHROPIC_THINKING_PLACEHOLDER, ""); return stripped.trim() === "" ? "" : stripped; } diff --git a/open-sse/utils/registeredEffortVariants.ts b/open-sse/utils/registeredEffortVariants.ts new file mode 100644 index 0000000000..06e2d5dfc6 --- /dev/null +++ b/open-sse/utils/registeredEffortVariants.ts @@ -0,0 +1,36 @@ +import { getProviderModels } from "../config/providerModels.ts"; + +const REGISTERED_EFFORT_SUFFIXES = ["none", "low", "medium", "high", "max", "xhigh"] as const; + +/** + * Return the registered base model for an explicit effort variant. + * + * Both the exact variant and its base must exist in the provider registry. + * Callers with an authoritative live catalog must additionally verify that + * the returned base model is present in that live catalog. + */ +export function getRegisteredProviderEffortBaseModelId( + providerId: string, + modelId: string +): string | null { + const providerModels = getProviderModels(providerId); + + if (!providerModels.some((candidate) => candidate.id === modelId)) { + return null; + } + + for (const effort of REGISTERED_EFFORT_SUFFIXES) { + const suffix = `-${effort}`; + if (!modelId.endsWith(suffix)) continue; + + const baseModelId = modelId.slice(0, -suffix.length); + + return providerModels.some((candidate) => candidate.id === baseModelId) ? baseModelId : null; + } + + return null; +} + +export function isRegisteredProviderEffortVariant(providerId: string, modelId: string): boolean { + return getRegisteredProviderEffortBaseModelId(providerId, modelId) !== null; +} diff --git a/open-sse/utils/responsesEndpoint.ts b/open-sse/utils/responsesEndpoint.ts new file mode 100644 index 0000000000..216152f483 --- /dev/null +++ b/open-sse/utils/responsesEndpoint.ts @@ -0,0 +1,5 @@ +export function isResponsesEndpointPath(endpointPath?: string | null): boolean { + let normalizedEndpoint = String(endpointPath || ""); + while (normalizedEndpoint.endsWith("/")) normalizedEndpoint = normalizedEndpoint.slice(0, -1); + return normalizedEndpoint.split("/").includes("responses"); +} diff --git a/open-sse/utils/responsesInputNormalization.ts b/open-sse/utils/responsesInputNormalization.ts index 7c176d9ab0..490080c3db 100644 --- a/open-sse/utils/responsesInputNormalization.ts +++ b/open-sse/utils/responsesInputNormalization.ts @@ -1,5 +1,36 @@ type JsonRecord = Record; +function normalizeAgentMessageForChat(item: JsonRecord): JsonRecord | null { + if (item.type !== "agent_message") return null; + + if (!Array.isArray(item.content)) return null; + + const textParts: string[] = []; + for (const partValue of item.content) { + if (!partValue || typeof partValue !== "object" || Array.isArray(partValue)) { + return null; + } + + const part = partValue as JsonRecord; + if (part.type === "encrypted_content") { + // Chat Completions has no encrypted agent-message equivalent. Do not leak a + // partial plaintext envelope or forward an opaque payload the model cannot use. + return null; + } + if (part.type !== "input_text" || typeof part.text !== "string") return null; + textParts.push(part.text); + } + + const text = textParts.join("\n"); + if (!text.trim()) return null; + + return { + type: "message", + role: "assistant", + content: [{ type: "input_text", text }], + }; +} + function textPartTypeForRole(role: string): "input_text" | "output_text" { return role === "assistant" ? "output_text" : "input_text"; } @@ -46,8 +77,17 @@ function normalizeCodexResponsesInputItem(itemValue: unknown): unknown { const role = typeof item.role === "string" ? item.role : "user"; const type = typeof item.type === "string" ? item.type : ""; + if (type === "additional_tools") { + delete item.content; + return item; + } + if (!type && item.content === undefined && typeof item.text === "string") { - return { type: "message", role, content: [{ type: textPartTypeForRole(role), text: item.text }] }; + return { + type: "message", + role, + content: [{ type: textPartTypeForRole(role), text: item.text }], + }; } if (!type && role) item.type = "message"; @@ -82,6 +122,15 @@ function normalizeResponsesInputItemForChat(value: unknown): unknown { const item = { ...(value as JsonRecord) }; const hasType = typeof item.type === "string" && item.type.length > 0; const hasRole = typeof item.role === "string" && item.role.length > 0; + + const agentMessage = normalizeAgentMessageForChat(item); + if (agentMessage) return agentMessage; + if (item.type === "agent_message") { + // Encrypted or malformed agent messages have no lossless Chat equivalent. + // Treat them like other Responses-only metadata instead of failing the whole turn. + return { type: "reasoning" }; + } + if (hasType || hasRole) { if (!hasType && hasRole) item.type = "message"; return item; diff --git a/open-sse/utils/responsesStreamHelpers.ts b/open-sse/utils/responsesStreamHelpers.ts index 85eff8ccd4..ce40999eb8 100644 --- a/open-sse/utils/responsesStreamHelpers.ts +++ b/open-sse/utils/responsesStreamHelpers.ts @@ -201,7 +201,10 @@ export function stripResponsesLifecycleEcho(parsed: unknown): boolean { delete r.instructions; changed = true; } - if ("tools" in r) { + // Preserve tools on the terminal snapshot: response.completed is what + // Codex CLI rebuilds its tool list from (#8990). Same special-case as + // backfillResponsesCompletedOutput. Still stripped on created/in_progress. + if (obj.type !== "response.completed" && "tools" in r) { delete r.tools; changed = true; } diff --git a/open-sse/utils/sseHeartbeat.ts b/open-sse/utils/sseHeartbeat.ts index a8c48a8732..5fb415ea8b 100644 --- a/open-sse/utils/sseHeartbeat.ts +++ b/open-sse/utils/sseHeartbeat.ts @@ -1,3 +1,10 @@ +/** + * @file sseHeartbeat.ts + * @description Mid-stream SSE heartbeat transform (comment / Anthropic ping / OpenAI chunk). + * + * @changes + * - [2026-07-28] [Cursor Grok 4.5] - Brand-neutral default OpenAI keepalive id/model + */ export const DEFAULT_SSE_HEARTBEAT_INTERVAL_MS = 15_000; export const HEARTBEAT_SHAPES = { @@ -37,10 +44,10 @@ function buildHeartbeatPayload( return 'data: {"type":"response.in_progress"}\n\n'; case HEARTBEAT_SHAPES.OPENAI_CHUNK: { const payload = { - id: opts.chunkId ?? "omniroute-keepalive", + id: opts.chunkId ?? "chatcmpl-keepalive", object: "chat.completion.chunk", created: Math.floor(Date.now() / 1000), - model: opts.chunkModel ?? "omniroute", + model: opts.chunkModel ?? "keepalive", choices: [{ index: 0, delta: {}, finish_reason: null }], }; return `data: ${JSON.stringify(payload)}\n\n`; @@ -72,7 +79,8 @@ export function sseCommentsEnabled(): boolean { if (typeof process === "undefined") return true; const v = process.env.OMNIROUTE_SSE_COMMENTS; if (v === undefined || v === "") return true; - return v.trim().toLowerCase() !== "off"; + const normalized = v.trim().toLowerCase(); + return normalized !== "off" && normalized !== "false" && normalized !== "0" && normalized !== "no"; } export function createSseHeartbeatTransform({ diff --git a/open-sse/utils/stream.ts b/open-sse/utils/stream.ts index 3958745e02..ca6e9efe53 100644 --- a/open-sse/utils/stream.ts +++ b/open-sse/utils/stream.ts @@ -21,9 +21,11 @@ import { appendBoundedText, buildSyntheticChatChunk, hasActiveDeltaValue, + injectThinkingSignature, } from "./streamHelpers.ts"; import { calculateCost } from "@/lib/usage/costCalculator"; import { buildOmniRouteSseMetadataComment } from "@/domain/omnirouteResponseMeta"; +import { sseCommentsEnabled } from "./sseHeartbeat.ts"; import { createStructuredSSECollector, buildStreamSummaryFromEvents, @@ -40,6 +42,11 @@ import { } from "./responsesCommentaryDrop.ts"; import { buildErrorBody } from "./error.ts"; import { parseTextualToolCallCandidate, isValidToolCallHeaderPrefix } from "./textualToolCall.ts"; +import { + formatTranslatedStreamError, + normalizeStreamFailurePayload, + type StreamFailurePayload, +} from "./streamErrorFormat.ts"; import { recordToolLatency } from "../services/toolLatencyTracker.ts"; import { extractToolSchemaMap } from "../translator/response/openai-responses/toolSchemas.ts"; import { @@ -64,6 +71,11 @@ import { hasUnsupportedReasoningSignal, } from "./reasoningFields.ts"; import { applyThinkTag, flushThink, initThinkState } from "./thinkTagParser.ts"; +import { + caseInsensitiveToolNameLookup, + restoreOpenAIToolNames, +} from "../translator/helpers/toolCallHelper.ts"; +import { normalizeFinalOpenAIStreamChunk } from "./openAIStreamChunk.ts"; /** * Race a response body read against a timeout. @@ -115,13 +127,6 @@ type StreamCompletePayload = { ttft?: number | null; }; -type StreamFailurePayload = { - status: number; - message: string; - code?: string; - type?: string; -}; - type StreamOptions = { mode?: string; targetFormat?: string; @@ -226,8 +231,8 @@ function restoreResponsesPassthroughFunctionCallIdentity( return restoreItem(parsed.item); } - if (parsed.type === "response.completed" && Array.isArray(parsed.response?.output)) { - return (parsed.response as JsonRecord).output.reduce( + if (parsed.type === "response.completed" && Array.isArray(asRecord(parsed.response).output)) { + return (asRecord(parsed.response).output as unknown[]).reduce( (changed: boolean, item: unknown) => restoreItem(item) || changed, false ); @@ -401,63 +406,6 @@ function toResponsesCompletedWithToolCalls(parsed: JsonRecord, toolCalls: ToolCa }; } -function toStreamFailureStatus(value: unknown): number | null { - if (typeof value === "number" && Number.isInteger(value) && value >= 400 && value <= 599) { - return value; - } - if (typeof value === "string" && /^\d{3}$/.test(value.trim())) { - const parsed = Number(value.trim()); - return parsed >= 400 && parsed <= 599 ? parsed : null; - } - return null; -} - -function looksLikeStreamRateLimit(code: string, type: string, message: string): boolean { - const haystack = `${code} ${type} ${message}`.toLowerCase(); - return ( - haystack.includes("usage_limit_reached") || - haystack.includes("rate_limit") || - haystack.includes("rate limit") || - haystack.includes("quota") || - haystack.includes("too many requests") || - haystack.includes("limit reached") || - haystack.includes("limit has been reached") - ); -} - -function normalizeStreamFailurePayload(payload: unknown): StreamFailurePayload | null { - const record = payload && typeof payload === "object" ? (payload as JsonRecord) : {}; - const response = asRecord(record.response); - const error = Object.keys(asRecord(response.error)).length - ? asRecord(response.error) - : Object.keys(asRecord(record.error)).length - ? asRecord(record.error) - : record; - const code = typeof error.code === "string" ? error.code : "upstream_error"; - const type = typeof error.type === "string" ? error.type : undefined; - const message = - typeof error.message === "string" && error.message.trim() - ? error.message - : typeof record.message === "string" && record.message.trim() - ? record.message - : "Upstream failure"; - const status = - toStreamFailureStatus(error.status_code) ?? - toStreamFailureStatus(error.status) ?? - toStreamFailureStatus(response.status_code) ?? - toStreamFailureStatus(response.status) ?? - toStreamFailureStatus(record.status_code) ?? - toStreamFailureStatus(record.status) ?? - (looksLikeStreamRateLimit(code, type || "", message) ? 429 : 502); - - return { - status, - message, - code, - ...(type ? { type } : {}), - }; -} - type ClaudeEmptyResponseLifecycle = { hasMessageStart: boolean; hasContentBlock: boolean; @@ -634,7 +582,7 @@ function restoreClaudePassthroughToolUseName(parsed: JsonRecord, toolNameMap: un : null; if (!block || block.type !== "tool_use" || typeof block.name !== "string") return false; - const restoredName = toolNameMap.get(block.name) ?? block.name; + const restoredName = caseInsensitiveToolNameLookup(block.name, toolNameMap) ?? block.name; if (restoredName === block.name) return false; block.name = restoredName; return true; @@ -709,11 +657,9 @@ export function createSSEStream(options: StreamOptions = {}) { } // Drop internal commentary-phase Responses output before forwarding (#6199). - // Explicit option wins; otherwise read the feature flag (default on). Resolved - // once per stream — never on the hot per-chunk path. + // Explicit option wins; otherwise read the feature flag (default on) — resolved once per stream. const shouldDropResponsesCommentary = dropResponsesCommentary ?? isFeatureFlagEnabled("RESPONSES_PASSTHROUGH_DROP_COMMENTARY"); - const clientExpectsResponsesStream = (mode === STREAM_MODE.PASSTHROUGH ? clientResponseFormat === FORMATS.OPENAI_RESPONSES @@ -730,11 +676,23 @@ export function createSSEStream(options: StreamOptions = {}) { ? clientResponseFormat === FORMATS.CLAUDE : sourceFormat === FORMATS.CLAUDE) === true; + // Antigravity/cloudcode streams terminate naturally on their last + // `data: {"response":{...}}` event, not on a `[DONE]` marker. Emitting + // `[DONE]` to the Antigravity IDE causes a protobuf parse failure + // (proto: syntax error (line 1:1): unexpected token [) because the + // Go binary's protobuf deserializer receives `[DONE]` as input. + const clientExpectsAntigravityStream = + (mode === STREAM_MODE.PASSTHROUGH + ? clientResponseFormat === FORMATS.ANTIGRAVITY + : sourceFormat === FORMATS.ANTIGRAVITY) === true; + // Single source of truth for the [DONE] decision, used at both emission // sites below. Only OpenAI Chat Completions clients expect [DONE]; - // Responses API and Anthropic SSE terminate on their own protocol events - // (response.completed / message_stop respectively). - const shouldEmitDoneTerminator = !clientExpectsResponsesStream && !clientExpectsClaudeStream; + // Responses API, Anthropic SSE, and Antigravity/cloudcode terminate on + // their own protocol events (response.completed / message_stop / last + // response candidate respectively). + const shouldEmitDoneTerminator = + !clientExpectsResponsesStream && !clientExpectsClaudeStream && !clientExpectsAntigravityStream; let buffer = ""; let usage: UsageTokenRecord | null = null; @@ -819,6 +777,7 @@ export function createSSEStream(options: StreamOptions = {}) { // Guard against duplicate [DONE] events — ensures exactly one per stream let doneSent = false; + let upstreamErrorForwarded = false; const providerPayloadCollector = createStructuredSSECollector({ stage: "provider_response", }); @@ -1043,6 +1002,11 @@ export function createSSEStream(options: StreamOptions = {}) { controller: TransformStreamDefaultController, finalUsage: UsageTokenRecord | Record | null | undefined ) => { + // Skip SSE metadata comment lines when OMNIROUTE_SSE_COMMENTS is disabled + // (e.g., "off", "false", "0", "no"). Strict OpenAI-compatible clients that + // JSON.parse every SSE line will crash on `: x-omniroute-*` comment lines. + if (!sseCommentsEnabled()) return; + const costUsd = finalUsage ? await calculateCost(provider, model, finalUsage) : 0; const comment = buildOmniRouteSseMetadataComment({ provider, @@ -1093,9 +1057,9 @@ export function createSSEStream(options: StreamOptions = {}) { return; } - // #7095/#7176 reconciliation: compute the visible placeholder WITHOUT - // mutating `item` — the encrypted reasoning item (and its `encrypted_content`, - // required by Codex for subsequent requests) is forwarded to the client intact. + // #7176/#7243: only synthesize summary events from real upstream plaintext — + // never mutate `item` and never fabricate alarming placeholder text for + // encrypted-only reasoning (`encrypted_content` still forwards intact). const visibleSummary = getVisibleResponsesReasoningSummaryText(item); if (!visibleSummary) { @@ -1595,6 +1559,7 @@ export function createSSEStream(options: StreamOptions = {}) { } } else if (isClaudeSSE) { // Claude SSE: extract usage, track content, forward as-is + const thinkingSignatureInjected = injectThinkingSignature(parsed, provider); const extracted = extractUsage(parsed); if (extracted) { // Non-destructive merge: never overwrite a positive value with 0 @@ -1636,7 +1601,7 @@ export function createSSEStream(options: StreamOptions = {}) { parsed.delta.thinking ); } - if (restoredToolName) { + if (restoredToolName || thinkingSignatureInjected) { output = `data: ${JSON.stringify(parsed)}\n\n`; injectedUsage = true; } @@ -1724,6 +1689,7 @@ export function createSSEStream(options: StreamOptions = {}) { continue; } + const restoredOpenAIToolName = restoreOpenAIToolNames(parsed, toolNameMap); const idFixed = hadNonStringTopLevelId ? false : fixInvalidId(parsed); if (!hasValuableContent(parsed, FORMATS.OPENAI)) { @@ -1912,7 +1878,8 @@ export function createSSEStream(options: StreamOptions = {}) { needsReserialization || toolCallIdCoerced || hadNonStringToolCallId || - hadNonStringTopLevelId + hadNonStringTopLevelId || + restoredOpenAIToolName ) { output = `data: ${JSON.stringify(parsed)}\n\n`; injectedUsage = true; @@ -1978,6 +1945,17 @@ export function createSSEStream(options: StreamOptions = {}) { const parsed = parseSSELine(trimmed); if (!parsed) continue; + if (upstreamErrorForwarded) continue; + + if (parsed.error) { + const output = formatTranslatedStreamError(parsed, sourceFormat); + reqLogger?.appendConvertedChunk?.(output); + controller.enqueue(encoder.encode(output)); + upstreamErrorForwarded = true; + doneSent = true; + continue; + } + // #5786 — drop replayed Responses-API events (identical/lower sequence_number // re-sent on an upstream reconnect) so their deltas are not glued twice into // the translated client stream. @@ -2169,6 +2147,10 @@ export function createSSEStream(options: StreamOptions = {}) { if (streamTimedOut) { return; } + if (upstreamErrorForwarded) { + clearPendingRequestFromStream(); + return; + } try { const remaining = decoder.decode(); if (remaining) buffer += remaining; @@ -2242,6 +2224,8 @@ export function createSSEStream(options: StreamOptions = {}) { toResponsesCompletedWithToolCalls(parsed, [ ...passthroughToolCalls.values(), ]) as JsonRecord, + restoreOpenAIToolNames: (parsed: JsonRecord) => + restoreOpenAIToolNames(parsed, toolNameMap), }; for (const line of normalizedTailLines) { @@ -2289,36 +2273,12 @@ export function createSSEStream(options: StreamOptions = {}) { output = `data: ${JSON.stringify(flushedParsed)}\n\n`; } } else if (!isClaude) { - let flushChanged = false; - const flushedHadNonStringTopLevelId = - flushedParsed?.id != null && typeof flushedParsed.id !== "string"; - if (flushedHadNonStringTopLevelId) { - flushedParsed.id = String(flushedParsed.id); - flushChanged = true; - } - if (Array.isArray(flushedParsed.choices)) { - for (const choice of flushedParsed.choices as JsonRecord[]) { - const tcs = (choice as JsonRecord | undefined)?.delta as - JsonRecord | undefined; - if (Array.isArray(tcs?.tool_calls)) { - for (const tc of tcs.tool_calls as JsonRecord[]) { - if (tc?.id != null && typeof tc.id !== "string") { - tc.id = String(tc.id); - flushChanged = true; - } - } - } - } - } + const { changed: flushChanged, hasFinishReason } = + normalizeFinalOpenAIStreamChunk(flushedParsed, toolNameMap); // #7800: track finish_reason in the flush path too, so a // final chunk without trailing newline still suppresses the // synthetic finish_reason synthesis. - if ( - Array.isArray(flushedParsed.choices) && - (flushedParsed.choices[0] as JsonRecord | undefined)?.finish_reason - ) { - passthroughSawFinishReason = true; - } + if (hasFinishReason) passthroughSawFinishReason = true; if (flushChanged) { output = `data: ${JSON.stringify(flushedParsed)}\n\n`; } @@ -2487,6 +2447,8 @@ export function createSSEStream(options: StreamOptions = {}) { console.warn( `[STREAM] Empty assistant response after tool_calls completion (${provider || "provider"}:${model || "unknown"}) — sessionId=${sessionId}` ); + } else if (passthroughHasToolCalls && !content.trim() && reasoning.trim()) { + message.content = ""; } const responseBody = { @@ -2507,12 +2469,18 @@ export function createSSEStream(options: StreamOptions = {}) { status: 200, usage, responseBody, + // #9315 switched the summary to the accumulated responseBody to avoid + // stale/truncated event data — but responseBody here is synthesized in + // chat-completion shape, which loses the Responses API `response` object. + // Keep the events-derived summary for OPENAI_RESPONSES only. providerPayload: providerPayloadCollector.build( - buildStreamSummaryFromEvents( - providerPayloadCollector.getEvents(), - sourceFormat, - model - ), + sourceFormat === FORMATS.OPENAI_RESPONSES + ? buildStreamSummaryFromEvents( + providerPayloadCollector.getEvents(), + sourceFormat, + model + ) + : responseBody, { includeEvents: false } ), clientPayload: clientPayloadCollector.build(responseBody, { @@ -2782,12 +2750,16 @@ export function createSSEStream(options: StreamOptions = {}) { status: 200, usage: state?.usage, responseBody, + // Same OPENAI_RESPONSES carve-out as the passthrough branch above — + // the synthesized chat-shaped responseBody drops the `response` object. providerPayload: providerPayloadCollector.build( - buildStreamSummaryFromEvents( - providerPayloadCollector.getEvents(), - targetFormat, - model - ), + targetFormat === FORMATS.OPENAI_RESPONSES + ? buildStreamSummaryFromEvents( + providerPayloadCollector.getEvents(), + targetFormat, + model + ) + : responseBody, { includeEvents: false } ), clientPayload: clientPayloadCollector.build(responseBody, { @@ -2830,7 +2802,7 @@ export function createSSETransformStreamWithLogger( body: unknown = null, onComplete: ((payload: StreamCompletePayload) => void) | null = null, apiKeyInfo: unknown = null, - onFailure: ((payload: StreamFailurePayload) => void | Promise) | null = null, + onFailure: ((payload: StreamFailurePayload) => boolean | void | Promise) | null = null, copilotCompatibleReasoning = false, suppressThinkClose = false, customToolNames: ReadonlySet = new Set(), @@ -2865,7 +2837,7 @@ export function createPassthroughStreamWithLogger( body: unknown = null, onComplete: ((payload: StreamCompletePayload) => void) | null = null, apiKeyInfo: unknown = null, - onFailure: ((payload: StreamFailurePayload) => void | Promise) | null = null, + onFailure: ((payload: StreamFailurePayload) => boolean | void | Promise) | null = null, clientResponseFormat: string | null = null, requestToolIdentityMap: Map | null = null ) { diff --git a/open-sse/utils/streamErrorFormat.ts b/open-sse/utils/streamErrorFormat.ts new file mode 100644 index 0000000000..56b747f4e4 --- /dev/null +++ b/open-sse/utils/streamErrorFormat.ts @@ -0,0 +1,115 @@ +import { FORMATS } from "../translator/formats.ts"; +import { buildErrorBody } from "./error.ts"; + +/** + * Upstream stream-failure normalization + client-format error framing. + * + * Extracted from stream.ts (file-size gate, #9314) — pure functions operating only + * on plain payload objects, no dependency on the SSE stream/controller state. + */ + +type JsonRecord = Record; + +export type StreamFailurePayload = { + status: number; + message: string; + code?: string; + type?: string; +}; + +function asRecord(value: unknown): JsonRecord { + return value && typeof value === "object" && !Array.isArray(value) ? (value as JsonRecord) : {}; +} + +function toStreamFailureStatus(value: unknown): number | null { + if (typeof value === "number" && Number.isInteger(value) && value >= 400 && value <= 599) { + return value; + } + if (typeof value === "string" && /^\d{3}$/.test(value.trim())) { + const parsed = Number(value.trim()); + return parsed >= 400 && parsed <= 599 ? parsed : null; + } + return null; +} + +function looksLikeStreamRateLimit(code: string, type: string, message: string): boolean { + const haystack = `${code} ${type} ${message}`.toLowerCase(); + return ( + haystack.includes("usage_limit_reached") || + haystack.includes("rate_limit") || + haystack.includes("rate limit") || + haystack.includes("quota") || + haystack.includes("too many requests") || + haystack.includes("limit reached") || + haystack.includes("limit has been reached") + ); +} + +export function normalizeStreamFailurePayload(payload: unknown): StreamFailurePayload | null { + const record = payload && typeof payload === "object" ? (payload as JsonRecord) : {}; + const response = asRecord(record.response); + const error = Object.keys(asRecord(response.error)).length + ? asRecord(response.error) + : Object.keys(asRecord(record.error)).length + ? asRecord(record.error) + : record; + const code = typeof error.code === "string" ? error.code : "upstream_error"; + const type = typeof error.type === "string" ? error.type : undefined; + const message = + typeof error.message === "string" && error.message.trim() + ? error.message + : typeof record.message === "string" && record.message.trim() + ? record.message + : "Upstream failure"; + const status = + toStreamFailureStatus(error.status_code) ?? + toStreamFailureStatus(error.status) ?? + toStreamFailureStatus(response.status_code) ?? + toStreamFailureStatus(response.status) ?? + toStreamFailureStatus(record.status_code) ?? + toStreamFailureStatus(record.status) ?? + (looksLikeStreamRateLimit(code, type || "", message) ? 429 : 502); + + return { + status, + message, + code, + ...(type ? { type } : {}), + }; +} + +export function formatTranslatedStreamError(payload: unknown, sourceFormat?: string): string { + const failure = normalizeStreamFailurePayload(payload) ?? { + status: 502, + message: "Upstream stream error", + code: "stream_error", + type: "server_error", + }; + const errorBody = buildErrorBody(failure.status, failure.message, undefined, { + type: failure.type ?? "server_error", + code: failure.code ?? "stream_error", + }); + + if (sourceFormat === FORMATS.OPENAI_RESPONSES) { + const failed = { + type: "response.failed", + response: { + id: `resp_error_${Date.now()}`, + object: "response", + created_at: Math.floor(Date.now() / 1000), + status: "failed", + background: false, + error: errorBody.error, + output: [], + }, + sequence_number: 0, + }; + return `event: response.failed\ndata: ${JSON.stringify(failed)}\n\n`; + } + + if (sourceFormat === FORMATS.CLAUDE) { + return `event: error\ndata: ${JSON.stringify({ type: "error", error: errorBody.error })}\n\n`; + } + + return `data: ${JSON.stringify(errorBody)}\n\ndata: [DONE]\n\n`; +} diff --git a/open-sse/utils/streamHelpers.ts b/open-sse/utils/streamHelpers.ts index 5e5000094e..d9fb78415b 100644 --- a/open-sse/utils/streamHelpers.ts +++ b/open-sse/utils/streamHelpers.ts @@ -13,6 +13,7 @@ import { FORMATS } from "../translator/formats.ts"; import { hasAnyReasoningSignal } from "./reasoningFields.ts"; +import { getRegistryEntry } from "../config/providerRegistry.ts"; type SSEPayloadOptions = { eventType?: string; @@ -523,3 +524,24 @@ export function hasActiveDeltaValue(value: unknown): boolean { } return value !== null && value !== undefined; } + +// Claude SSE content_block_start normalization for providers (e.g. MiniMax) whose thinking +// blocks omit `signature` on the opening event. Strict Anthropic Messages clients deserialize +// this field before a later signature_delta arrives — inject only the empty envelope +// placeholder, never synthesize/replace a provider-supplied signature. +export function injectThinkingSignature( + parsed: { type?: string; content_block?: { type?: string; signature?: string } }, + provider: string | null +): boolean { + if ( + provider !== null && + getRegistryEntry(provider)?.ensureThinkingSignature === true && + parsed.type === "content_block_start" && + parsed.content_block?.type === "thinking" && + parsed.content_block.signature === undefined + ) { + parsed.content_block.signature = ""; + return true; + } + return false; +} diff --git a/open-sse/utils/thinkingBudget.ts b/open-sse/utils/thinkingBudget.ts new file mode 100644 index 0000000000..b97078f782 --- /dev/null +++ b/open-sse/utils/thinkingBudget.ts @@ -0,0 +1,72 @@ +/** + * Thinking-budget helpers extracted from base.ts. + * + * Pure utilities for reading / clamping the thinking budget fields that + * different providers nest inside the request body. + */ + +export function hasActiveClaudeThinking(body: Record): boolean { + const thinking = body.thinking as Record | undefined; + return thinking?.type === "enabled" || thinking?.type === "adaptive"; +} + +/** + * Collect every `thinkingConfig` object in a transformed request body that holds + * a thinking budget, wherever the provider's envelope nests it: + * - body.generationConfig.thinkingConfig (native Gemini / openai→gemini) + * - body.request.generationConfig.thinkingConfig (Antigravity Cloud Code envelope) + * Returns only objects that actually carry a `thinkingBudget`/`thinking_budget` + * field — a request without thinking config is never mutated. + */ +export function collectThinkingConfigs(body: unknown): Array> { + if (!body || typeof body !== "object") return []; + const root = body as Record; + const configs: Array> = []; + const envelopes: unknown[] = [ + root.generationConfig, + (root.request as Record | undefined)?.generationConfig, + ]; + for (const env of envelopes) { + if (!env || typeof env !== "object") continue; + const tc = (env as Record).thinkingConfig; + if (tc && typeof tc === "object") { + const tcr = tc as Record; + if ("thinkingBudget" in tcr || "thinking_budget" in tcr) configs.push(tcr); + } + } + return configs; +} + +/** + * Read the first thinking budget found in the body (any supported nest / naming). + * Returns null when the body carries no readable numeric budget. + */ +export function readNestedThinkingBudget(body: unknown): number | null { + for (const tc of collectThinkingConfigs(body)) { + const raw = tc.thinkingBudget ?? tc.thinking_budget; + const n = Number(raw); + if (Number.isFinite(n)) return n; + } + return null; +} + +/** + * Clamp every thinking budget in the body down to `max` (only lowers; never + * raises a budget already below max). Mutates in place. Returns true when at + * least one budget was actually lowered (i.e. a retry would send a different + * body) — false means the 400 was not caused by an over-max budget we hold, so + * retrying would resend an identical body and loop. + */ +export function clampNestedThinkingBudget(body: unknown, max: number): boolean { + let changed = false; + for (const tc of collectThinkingConfigs(body)) { + for (const key of ["thinkingBudget", "thinking_budget"] as const) { + const n = Number(tc[key]); + if (Number.isFinite(n) && n > max) { + tc[key] = max; + changed = true; + } + } + } + return changed; +} diff --git a/open-sse/utils/usageTracking.ts b/open-sse/utils/usageTracking.ts index 90f457b77e..398d1d5906 100644 --- a/open-sse/utils/usageTracking.ts +++ b/open-sse/utils/usageTracking.ts @@ -6,6 +6,7 @@ import { appendRequestLog } from "@/lib/usageDb"; import { getLoggedInputTokens, getLoggedOutputTokens, + getNoCacheTokens, getPromptCacheCreationTokens, getPromptCacheReadTokens, } from "@/lib/usage/tokenAccounting"; @@ -217,6 +218,7 @@ export function filterUsageForFormat(usage, targetFormat) { [FORMATS.CLAUDE]: [ "input_tokens", "output_tokens", + "output_tokens_details", "cache_read_input_tokens", "cache_creation_input_tokens", "estimated", @@ -232,9 +234,13 @@ export function filterUsageForFormat(usage, targetFormat) { [FORMATS.OPENAI_RESPONSES]: [ "input_tokens", "output_tokens", + "total_tokens", "input_tokens_details", "output_tokens_details", "estimated", + "cost_in_usd_ticks", + "server_side_tool_usage_details", + "server_side_tool_usage", ], // OpenAI format (default for OPENAI, CODEX, KIRO, etc.) default: [ @@ -285,6 +291,7 @@ export function normalizeUsage(usage) { assignNumber("cache_read_input_tokens", usage?.cache_read_input_tokens); assignNumber("cache_creation_input_tokens", usage?.cache_creation_input_tokens); assignNumber("cached_tokens", usage?.cached_tokens); + assignNumber("no_cache_tokens", usage?.no_cache_tokens); assignNumber("reasoning_tokens", usage?.reasoning_tokens); // xAI's exact provider-reported cost (port of decolua/9router#2453, capability A — // @ryanngit). Ticks → USD conversion happens in costCalculator.ts, not here. @@ -371,6 +378,7 @@ export function extractUsage(chunk) { output_tokens: chunk.usage.output_tokens || 0, cache_read_input_tokens: chunk.usage.cache_read_input_tokens, cache_creation_input_tokens: chunk.usage.cache_creation_input_tokens, + reasoning_tokens: chunk.usage.output_tokens_details?.thinking_tokens, }); } @@ -410,6 +418,9 @@ export function extractUsage(chunk) { chunk.usage.input_tokens_details?.cached_tokens ?? chunk.usage.prompt_cache_hit_tokens ?? chunk.usage.cached_tokens, + cache_read_input_tokens: chunk.usage.cache_read_input_tokens, + cache_creation_input_tokens: chunk.usage.cache_creation_input_tokens, + no_cache_tokens: chunk.usage.no_cache_tokens, reasoning_tokens: chunk.usage.completion_tokens_details?.reasoning_tokens ?? chunk.usage.output_tokens_details?.reasoning_tokens ?? @@ -425,12 +436,15 @@ export function extractUsage(chunk) { // chunks do not silently drop token usage. const usageMeta = chunk.usageMetadata || chunk.response?.usageMetadata; if (usageMeta && typeof usageMeta === "object") { + // Gemini reports thoughts outside candidates. Fold them into completion so + // every provider keeps reasoning as a subset of completion tokens. + const thoughts = usageMeta.thoughtsTokenCount || 0; return normalizeUsage({ prompt_tokens: usageMeta.promptTokenCount || 0, - completion_tokens: usageMeta.candidatesTokenCount || 0, + completion_tokens: (usageMeta.candidatesTokenCount || 0) + thoughts, total_tokens: usageMeta.totalTokenCount, cached_tokens: usageMeta.cachedContentTokenCount, - reasoning_tokens: usageMeta.thoughtsTokenCount, + reasoning_tokens: thoughts, }); } @@ -600,6 +614,11 @@ export function logUsage( const cacheCreation = getPromptCacheCreationTokens(usage); if (cacheCreation) msg += ` | cache_create=${cacheCreation}`; + // Non-cached (fresh) input tokens — informational only, already included in + // prompt_tokens (Command Code reports inputTokenDetails.noCacheTokens). + const noCache = getNoCacheTokens(usage); + if (noCache) msg += ` | no_cache=${noCache}`; + const reasoning = usage.reasoning_tokens; if (reasoning) msg += ` | reasoning=${reasoning}`; diff --git a/package-lock.json b/package-lock.json index 4e42863a02..5fa43f17a8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -31,7 +31,7 @@ "clsx": "^2.1.1", "commander": "^15.0.0", "csv-stringify": "^6.7.0", - "dompurify": "^3.4.12", + "dompurify": "^3.4.13", "express": "^5.2.1", "fetch-socks": "^1.3.3", "fflate": "^0.8.3", @@ -79,7 +79,7 @@ "sqlite-vec": "^0.1.9", "tailwind-merge": "^3.6.0", "tsx": "^4.23.0", - "undici": "^8.3.0", + "undici": "^8.10.0", "update-notifier": "^7.3.1", "uuid": "^14.0.0", "ws": "^8.18.0", @@ -132,6 +132,7 @@ "lint-staged": "^17.0.8", "lockfile-lint": "^5.0.0", "node-loader": "^2.1.0", + "opencode-ai": "1.18.8", "playwright-ctrf-json-reporter": "^0.0.29", "prettier": "^3.8.3", "promptfoo": "^0.121.18", @@ -151,7 +152,7 @@ "@atjsh/llmlingua-2": "2.0.3", "@huggingface/transformers": "3.5.2", "@tensorflow/tfjs": "4.22.0", - "better-sqlite3": "^13.0.1", + "better-sqlite3": "^13.0.2", "js-tiktoken": "^1.0.20", "keytar": "^7.9.0", "tls-client-node": "^0.2.0", @@ -461,9 +462,9 @@ } }, "node_modules/@apidevtools/json-schema-ref-parser/node_modules/js-yaml": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.3.0.tgz", - "integrity": "sha512-1td788aAnnZ5qs7V2QIRl1owjtYpbKt749Y3xauqQgwIIGF/xXWz1wMTEBx5O3LK3lXLVuqXPdPxj2BoFHaW9Q==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.3.1.tgz", + "integrity": "sha512-CY6crGq313MX8GkwvB7tzgp99vjQxY1++5y10/BKN/GUfHqWaOGQMNZkBvqSzsZKWk/ijwHlWzzkLulsGHhjWQ==", "dev": true, "funding": [ { @@ -3074,9 +3075,9 @@ } }, "node_modules/@eslint/eslintrc/node_modules/js-yaml": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.3.0.tgz", - "integrity": "sha512-1td788aAnnZ5qs7V2QIRl1owjtYpbKt749Y3xauqQgwIIGF/xXWz1wMTEBx5O3LK3lXLVuqXPdPxj2BoFHaW9Q==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.3.1.tgz", + "integrity": "sha512-CY6crGq313MX8GkwvB7tzgp99vjQxY1++5y10/BKN/GUfHqWaOGQMNZkBvqSzsZKWk/ijwHlWzzkLulsGHhjWQ==", "dev": true, "funding": [ { @@ -3692,9 +3693,6 @@ "cpu": [ "arm" ], - "libc": [ - "glibc" - ], "license": "LGPL-3.0-or-later", "optional": true, "os": [ @@ -3711,9 +3709,6 @@ "cpu": [ "arm64" ], - "libc": [ - "glibc" - ], "license": "LGPL-3.0-or-later", "optional": true, "os": [ @@ -3730,9 +3725,6 @@ "cpu": [ "ppc64" ], - "libc": [ - "glibc" - ], "license": "LGPL-3.0-or-later", "optional": true, "os": [ @@ -3749,9 +3741,6 @@ "cpu": [ "riscv64" ], - "libc": [ - "glibc" - ], "license": "LGPL-3.0-or-later", "optional": true, "os": [ @@ -3768,9 +3757,6 @@ "cpu": [ "s390x" ], - "libc": [ - "glibc" - ], "license": "LGPL-3.0-or-later", "optional": true, "os": [ @@ -3787,9 +3773,6 @@ "cpu": [ "x64" ], - "libc": [ - "glibc" - ], "license": "LGPL-3.0-or-later", "optional": true, "os": [ @@ -3806,9 +3789,6 @@ "cpu": [ "arm64" ], - "libc": [ - "musl" - ], "license": "LGPL-3.0-or-later", "optional": true, "os": [ @@ -3825,9 +3805,6 @@ "cpu": [ "x64" ], - "libc": [ - "musl" - ], "license": "LGPL-3.0-or-later", "optional": true, "os": [ @@ -3844,9 +3821,6 @@ "cpu": [ "arm" ], - "libc": [ - "glibc" - ], "license": "Apache-2.0", "optional": true, "os": [ @@ -3869,9 +3843,6 @@ "cpu": [ "arm64" ], - "libc": [ - "glibc" - ], "license": "Apache-2.0", "optional": true, "os": [ @@ -3894,9 +3865,6 @@ "cpu": [ "ppc64" ], - "libc": [ - "glibc" - ], "license": "Apache-2.0", "optional": true, "os": [ @@ -3919,9 +3887,6 @@ "cpu": [ "riscv64" ], - "libc": [ - "glibc" - ], "license": "Apache-2.0", "optional": true, "os": [ @@ -3944,9 +3909,6 @@ "cpu": [ "s390x" ], - "libc": [ - "glibc" - ], "license": "Apache-2.0", "optional": true, "os": [ @@ -3969,9 +3931,6 @@ "cpu": [ "x64" ], - "libc": [ - "glibc" - ], "license": "Apache-2.0", "optional": true, "os": [ @@ -3994,9 +3953,6 @@ "cpu": [ "arm64" ], - "libc": [ - "musl" - ], "license": "Apache-2.0", "optional": true, "os": [ @@ -4019,9 +3975,6 @@ "cpu": [ "x64" ], - "libc": [ - "musl" - ], "license": "Apache-2.0", "optional": true, "os": [ @@ -5393,9 +5346,6 @@ "cpu": [ "arm64" ], - "libc": [ - "glibc" - ], "license": "MIT", "optional": true, "os": [ @@ -5412,9 +5362,6 @@ "cpu": [ "arm64" ], - "libc": [ - "musl" - ], "license": "MIT", "optional": true, "os": [ @@ -5431,9 +5378,6 @@ "cpu": [ "x64" ], - "libc": [ - "glibc" - ], "license": "MIT", "optional": true, "os": [ @@ -5450,9 +5394,6 @@ "cpu": [ "x64" ], - "libc": [ - "musl" - ], "license": "MIT", "optional": true, "os": [ @@ -10670,9 +10611,6 @@ "arm64" ], "dev": true, - "libc": [ - "glibc" - ], "license": "MIT", "optional": true, "os": [ @@ -10690,9 +10628,6 @@ "arm64" ], "dev": true, - "libc": [ - "musl" - ], "license": "MIT", "optional": true, "os": [ @@ -10710,9 +10645,6 @@ "x64" ], "dev": true, - "libc": [ - "glibc" - ], "license": "MIT", "optional": true, "os": [ @@ -10730,9 +10662,6 @@ "x64" ], "dev": true, - "libc": [ - "musl" - ], "license": "MIT", "optional": true, "os": [ @@ -12710,9 +12639,9 @@ } }, "node_modules/@yarnpkg/parsers/node_modules/js-yaml": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.3.0.tgz", - "integrity": "sha512-1td788aAnnZ5qs7V2QIRl1owjtYpbKt749Y3xauqQgwIIGF/xXWz1wMTEBx5O3LK3lXLVuqXPdPxj2BoFHaW9Q==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.3.1.tgz", + "integrity": "sha512-CY6crGq313MX8GkwvB7tzgp99vjQxY1++5y10/BKN/GUfHqWaOGQMNZkBvqSzsZKWk/ijwHlWzzkLulsGHhjWQ==", "dev": true, "funding": [ { @@ -12779,9 +12708,6 @@ "arm" ], "dev": true, - "libc": [ - "glibc" - ], "optional": true, "os": [ "linux" @@ -12795,9 +12721,6 @@ "arm" ], "dev": true, - "libc": [ - "musl" - ], "optional": true, "os": [ "linux" @@ -12811,9 +12734,6 @@ "arm64" ], "dev": true, - "libc": [ - "glibc" - ], "optional": true, "os": [ "linux" @@ -12827,9 +12747,6 @@ "arm64" ], "dev": true, - "libc": [ - "musl" - ], "optional": true, "os": [ "linux" @@ -12843,9 +12760,6 @@ "x64" ], "dev": true, - "libc": [ - "glibc" - ], "optional": true, "os": [ "linux" @@ -12859,9 +12773,6 @@ "x64" ], "dev": true, - "libc": [ - "musl" - ], "optional": true, "os": [ "linux" @@ -13759,10 +13670,9 @@ } }, "node_modules/better-sqlite3": { - "version": "13.0.1", - "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-13.0.1.tgz", - "integrity": "sha512-LYpmOXdkpQYf4wmlxkdzW01XGlOXNIbjLg45yNkh0FQ4814VbK9PdOFmhZpYbej+EZtR/i3FDdhEG98HqZdgnA==", - "hasInstallScript": true, + "version": "13.0.2", + "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-13.0.2.tgz", + "integrity": "sha512-jW6oufeDhXZaiX9Lw5A+oerVClx4iFrI6uDj1zu7SqUAjak9vbJvA0NEcKLNxHiQHb6kYCoFzzXYV0YOauhV3g==", "license": "MIT", "optional": true, "dependencies": { @@ -17069,9 +16979,9 @@ "license": "MIT" }, "node_modules/dompurify": { - "version": "3.4.12", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.4.12.tgz", - "integrity": "sha512-zQvGet8Z2sWbQhCmfFz/T5QWH2oBmjnqK3qvOjaqaNLrLEF912WamU+ohnTp0TCep/MFVHpdJuCZEdFOdTnEFg==", + "version": "3.4.13", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.4.13.tgz", + "integrity": "sha512-2vmYIoqjze2d+kakP8S/nS5shfsl587kzwEjcGlTdiksUVgFHnFCsLYDVj/JNqJVOQZGSYBTmuycv0PodwmnMQ==", "license": "(MPL-2.0 OR Apache-2.0)", "optionalDependencies": { "@types/trusted-types": "^2.0.7" @@ -25286,9 +25196,9 @@ } }, "node_modules/lockfile-lint/node_modules/js-yaml": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.3.0.tgz", - "integrity": "sha512-1td788aAnnZ5qs7V2QIRl1owjtYpbKt749Y3xauqQgwIIGF/xXWz1wMTEBx5O3LK3lXLVuqXPdPxj2BoFHaW9Q==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.3.1.tgz", + "integrity": "sha512-CY6crGq313MX8GkwvB7tzgp99vjQxY1++5y10/BKN/GUfHqWaOGQMNZkBvqSzsZKWk/ijwHlWzzkLulsGHhjWQ==", "dev": true, "funding": [ { @@ -26095,9 +26005,9 @@ } }, "node_modules/mermaid": { - "version": "11.16.0", - "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-11.16.0.tgz", - "integrity": "sha512-Zvm3kbstgdpvIJPPItlL7fppIZ3kibvc1oZIGxdvk9t6UFz6flv+Jw7FtRGKwfcI8OckmH04LqG6LlS6X4B1pA==", + "version": "11.16.1", + "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-11.16.1.tgz", + "integrity": "sha512-TQsq6u22fAn3rek5VOubrhKPo1g5hwC3FXUN9hiyupTckcYiGuuKGkNQrKYwGJkXUxZdojwRG46gsSCFZMDp4g==", "license": "MIT", "dependencies": { "@braintree/sanitize-url": "^7.1.2", @@ -27618,9 +27528,9 @@ "optional": true }, "node_modules/nanoid": { - "version": "3.3.16", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.16.tgz", - "integrity": "sha512-bzlKTyNJ7+LdGIIwy8ijFpIqEQIvafahV7eYykJ8Cvh42EdJeODoJ6gUJXpQJvej1BddH8OqTXZNE/KfbWAu8Q==", + "version": "3.3.18", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.18.tgz", + "integrity": "sha512-DTg4MJbGMWkfi6VZFdNt2/caMbQy4Ou+Op/hJQvGEWcnVfoA1QA+xzRKAzw9jD6+GVOOeYr/mIcuDSdug6F6+w==", "funding": [ { "type": "github", @@ -28829,6 +28739,205 @@ } } }, + "node_modules/opencode-ai": { + "version": "1.18.8", + "resolved": "https://registry.npmjs.org/opencode-ai/-/opencode-ai-1.18.8.tgz", + "integrity": "sha512-eZvYK0rIc/NUDQ+s3LsO9gyUU3MswsbNOLZz06iPwVhbg/2jF6bkTaroBgiIdFWKwUn5sj+kSMc4TBYxFkMrNQ==", + "cpu": [ + "arm64", + "x64" + ], + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "os": [ + "darwin", + "linux", + "win32" + ], + "bin": { + "opencode": "bin/opencode.exe" + }, + "optionalDependencies": { + "opencode-darwin-arm64": "1.18.8", + "opencode-darwin-x64": "1.18.8", + "opencode-darwin-x64-baseline": "1.18.8", + "opencode-linux-arm64": "1.18.8", + "opencode-linux-arm64-musl": "1.18.8", + "opencode-linux-x64": "1.18.8", + "opencode-linux-x64-baseline": "1.18.8", + "opencode-linux-x64-baseline-musl": "1.18.8", + "opencode-linux-x64-musl": "1.18.8", + "opencode-windows-arm64": "1.18.8", + "opencode-windows-x64": "1.18.8", + "opencode-windows-x64-baseline": "1.18.8" + } + }, + "node_modules/opencode-darwin-arm64": { + "version": "1.18.8", + "resolved": "https://registry.npmjs.org/opencode-darwin-arm64/-/opencode-darwin-arm64-1.18.8.tgz", + "integrity": "sha512-ZZCIEgTvHxOHk52Aeqhq59t/R0aqs29bPIgu45XE4rkgjmn/XCkTWalCPtyzJHipdcEbq/g0lqsE1OlJV0oNbA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/opencode-darwin-x64": { + "version": "1.18.8", + "resolved": "https://registry.npmjs.org/opencode-darwin-x64/-/opencode-darwin-x64-1.18.8.tgz", + "integrity": "sha512-2EXRMJbRKnFPWI9oDU9tb7jDGmKiPmfjCLtwJMe3EF57h5wfcdEH9sP25bR3Og5NbE2M+PtMcJm0jMeHn2XoLQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/opencode-darwin-x64-baseline": { + "version": "1.18.8", + "resolved": "https://registry.npmjs.org/opencode-darwin-x64-baseline/-/opencode-darwin-x64-baseline-1.18.8.tgz", + "integrity": "sha512-eLXa2tK9LRuZ5e20QG2k4dmWAA5xnLgJ1afRTSD0/ybE6CAeK02i8vFCnFFDaxuBo+gnq+yqO8AkqvN1m64V/Q==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/opencode-linux-arm64": { + "version": "1.18.8", + "resolved": "https://registry.npmjs.org/opencode-linux-arm64/-/opencode-linux-arm64-1.18.8.tgz", + "integrity": "sha512-7kj3c9JEdryHgK+o8zE/N9KzTOdbiDn6KpY8dl+hM9n5Cnmxezx4IAlgJeC9QxpIx8Omop6CYuZ+17KfrKdKLw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/opencode-linux-arm64-musl": { + "version": "1.18.8", + "resolved": "https://registry.npmjs.org/opencode-linux-arm64-musl/-/opencode-linux-arm64-musl-1.18.8.tgz", + "integrity": "sha512-tww5TF/LIOv/GoTNyzGYgqDRhbJrhoMu8R+p5yD/SpnXPg3rcfYREw2wRy9yikyPU9sAQksuIIteTsyGerPjlA==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "musl" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/opencode-linux-x64": { + "version": "1.18.8", + "resolved": "https://registry.npmjs.org/opencode-linux-x64/-/opencode-linux-x64-1.18.8.tgz", + "integrity": "sha512-Sm4fbQ9BdLI6hgN6FYYX8Nql+Sqe/2EKHJu3iWg0UYs93AXN4ROi0rvOmRbMk+ycYgOchb0hL6Ti2opxLx17sg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/opencode-linux-x64-baseline": { + "version": "1.18.8", + "resolved": "https://registry.npmjs.org/opencode-linux-x64-baseline/-/opencode-linux-x64-baseline-1.18.8.tgz", + "integrity": "sha512-egeEF4tk1rK9flIQjjeSVB9cR/X3zUti0pNAHW6ROJkNkj72z2C2FmjK1hZbfjtteCueMXPLptS23JROHGWL1w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/opencode-linux-x64-baseline-musl": { + "version": "1.18.8", + "resolved": "https://registry.npmjs.org/opencode-linux-x64-baseline-musl/-/opencode-linux-x64-baseline-musl-1.18.8.tgz", + "integrity": "sha512-S+438BXs48gLeXX/ya4TSNytDy9mliU3sOAf6j9rfFjzGiF/S08LedemSAnHkr0riBtamik1aRPSmTjhQ0dOBg==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "musl" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/opencode-linux-x64-musl": { + "version": "1.18.8", + "resolved": "https://registry.npmjs.org/opencode-linux-x64-musl/-/opencode-linux-x64-musl-1.18.8.tgz", + "integrity": "sha512-c+E4Zsp0DYVcuqcDtgxw/4YcFLrVYWdGBR8x4CzpW48ga3RshaH+BlmUiy+GY0yr1x6UR+e2V3w4uzvzm/L9UQ==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "musl" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/opencode-windows-arm64": { + "version": "1.18.8", + "resolved": "https://registry.npmjs.org/opencode-windows-arm64/-/opencode-windows-arm64-1.18.8.tgz", + "integrity": "sha512-7NjdtEIiX28kmsKD9jHbFG4bbwBB5T4dAe2UwdnOqCBb2cl+ETV5eO6kbdC/xWxrgOghgZM1Wtw791T5pQPyag==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/opencode-windows-x64": { + "version": "1.18.8", + "resolved": "https://registry.npmjs.org/opencode-windows-x64/-/opencode-windows-x64-1.18.8.tgz", + "integrity": "sha512-G+NEgEMvu/dEYshH5IaqHVTmsHVuGdORBvVmgphFiknT7q/NXPuoZCMtMIdfNlEFbu54BlzRDdJCR3Mqe98gUw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/opencode-windows-x64-baseline": { + "version": "1.18.8", + "resolved": "https://registry.npmjs.org/opencode-windows-x64-baseline/-/opencode-windows-x64-baseline-1.18.8.tgz", + "integrity": "sha512-IGbjFyWoSN9rdGUJX7TWkQ1Yl673Q3dDna54b5NtqeRcZ839p+Z47zzM5m883HKAxrdKCC6Z22HYuDcXLV0laA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, "node_modules/opener": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", @@ -35048,9 +35157,9 @@ "license": "MIT" }, "node_modules/undici": { - "version": "8.9.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-8.9.0.tgz", - "integrity": "sha512-aWZpUj7XoGonMClx4gdDRfgBjqeA+F473aDmROQQbM9n6PRfK/u1q/a0X4wMTgcHfT8H6fpbt98PFuDUwFg2YA==", + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-8.10.0.tgz", + "integrity": "sha512-HvltHd7avK13QIw/oLe4qoOLyoVSoafqJ2jYOrtMRBkbYT31eiBQ8O0ehRKZiEZCMEyLFQNIADpgCWC5fALvYQ==", "license": "MIT", "engines": { "node": ">=22.19.0" @@ -36499,9 +36608,9 @@ } }, "node_modules/xmlbuilder2/node_modules/js-yaml": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.3.0.tgz", - "integrity": "sha512-1td788aAnnZ5qs7V2QIRl1owjtYpbKt749Y3xauqQgwIIGF/xXWz1wMTEBx5O3LK3lXLVuqXPdPxj2BoFHaW9Q==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.3.1.tgz", + "integrity": "sha512-CY6crGq313MX8GkwvB7tzgp99vjQxY1++5y10/BKN/GUfHqWaOGQMNZkBvqSzsZKWk/ijwHlWzzkLulsGHhjWQ==", "dev": true, "funding": [ { @@ -36841,12 +36950,7 @@ }, "open-sse": { "name": "@omniroute/open-sse", - "version": "3.8.50", - "dependencies": { - "@toon-format/toon": "^4.1.0", - "safe-regex": "^2.1.1", - "smol-toml": "1.7.1" - } + "version": "3.8.50" } } } diff --git a/package.json b/package.json index 380889a66d..ba0b667569 100644 --- a/package.json +++ b/package.json @@ -23,6 +23,7 @@ ".env.example", "scripts/build/postinstall.mjs", "scripts/build/fixTlsClientNodeBinary.mjs", + "scripts/build/fixPlaywrightAndroid.mjs", "bin/cli/runtime/", "scripts/postinstall.mjs", "scripts/build/postinstallSupport.mjs", @@ -189,6 +190,7 @@ "check:bundle-size": "node scripts/check/check-bundle-size.mjs", "check:circular-deps": "node scripts/check/check-circular-deps.mjs", "check:mutation-ratchet": "node scripts/check/check-mutation-ratchet.mjs", + "check:rtl-ratchet": "node scripts/check/check-rtl-ratchet.mjs", "check:licenses": "node scripts/check/check-licenses.mjs", "check:pr-evidence": "node scripts/check/check-pr-evidence.mjs", "check:vuln-ratchet": "node scripts/check/check-vuln-ratchet.mjs", @@ -205,9 +207,11 @@ "typecheck:core": "tsc --pretty false -p tsconfig.typecheck-core.json", "typecheck:noimplicit:core": "tsc --pretty false -p tsconfig.typecheck-noimplicit-core.json", "check:dashboard-typecheck": "node scripts/check/check-dashboard-typecheck.mjs", + "check:open-sse-typecheck": "node scripts/check/check-open-sse-typecheck.mjs", "backfill-aggregation": "node --import tsx src/scripts/backfillAggregation.ts", "env:sync": "node scripts/dev/sync-env.mjs", "test:integration": "cross-env DISABLE_SQLITE_AUTO_BACKUP=true node --import tsx/esm --import ./open-sse/utils/setupPolyfill.ts --import ./tests/_setup/isolateDataDir.ts --test --test-force-exit --test-concurrency=1 tests/integration/*.test.ts \"tests/integration/combo-matrix/*.test.ts\"", + "test:integration:ci": "cross-env DISABLE_SQLITE_AUTO_BACKUP=true node --import tsx/esm --import ./open-sse/utils/setupPolyfill.ts --import ./tests/_setup/isolateDataDir.ts --test --test-force-exit --test-concurrency=1 --test-shard=$TEST_SHARD tests/integration/*.test.ts \"tests/integration/combo-matrix/*.test.ts\"", "test:combo:matrix": "cross-env DISABLE_SQLITE_AUTO_BACKUP=true node --import tsx/esm --import ./open-sse/utils/setupPolyfill.ts --import ./tests/_setup/isolateDataDir.ts --test --test-force-exit --test-concurrency=1 \"tests/integration/combo-matrix/*.test.ts\"", "test:combo:live": "cross-env RUN_COMBO_LIVE=1 DISABLE_SQLITE_AUTO_BACKUP=true node --import tsx/esm --import ./open-sse/utils/setupPolyfill.ts --import ./tests/_setup/isolateDataDir.ts --test --test-force-exit --test-concurrency=1 \"tests/integration/combo-live/*.live.test.ts\"", "test:combo:live:vps": "node scripts/test/combo-live-vps.mjs", @@ -237,6 +241,7 @@ "prepare": "husky", "system-info": "node scripts/dev/system-info.mjs", "build:cli-api": "node --import tsx/esm scripts/cli/generate-api-commands.mjs", + "postbuild": "node scripts/build/colocate-standalone.mjs", "release:contributors": "node scripts/release/gen-contributors.mjs", "release:uncovered": "node scripts/release/list-uncovered-commits.mjs", "test:coverage:runner": "node --max-old-space-size=8192 --import tsx/esm --import ./open-sse/utils/setupPolyfill.ts --import ./tests/_setup/isolateDataDir.ts --test --test-force-exit --test-concurrency=8 tests/unit/*.test.ts \"tests/unit/{api,auth,authz,build,cli,cli-helper,combo,compression,correctness,cors,db,db-adapters,docs,gamification,guardrails,lib,mcp,memory,runtime,security,services,settings,shared,ui,usage}/**/*.test.ts\" \"tests/unit/**/*.test.mjs\" && cross-env DISABLE_SQLITE_AUTO_BACKUP=true NODE_OPTIONS=--max-old-space-size=8192 c8 --merge-async --output-dir coverage --exclude=tests/** --exclude=**/*.test.* --reporter=text-summary --reporter=html --reporter=json-summary --reporter=lcov --check-coverage --statements 60 --lines 60 --functions 60 --branches 60 node --max-old-space-size=8192 --import tsx --import ./open-sse/utils/setupPolyfill.ts --import ./tests/_setup/isolateDataDir.ts --test --test-force-exit --test-concurrency=8 \"tests/unit/dashboard/**/*.test.ts\" && npm run test:unit:serial", @@ -261,7 +266,7 @@ "clsx": "^2.1.1", "commander": "^15.0.0", "csv-stringify": "^6.7.0", - "dompurify": "^3.4.12", + "dompurify": "^3.4.13", "express": "^5.2.1", "fetch-socks": "^1.3.3", "fflate": "^0.8.3", @@ -309,7 +314,7 @@ "sqlite-vec": "^0.1.9", "tailwind-merge": "^3.6.0", "tsx": "^4.23.0", - "undici": "^8.3.0", + "undici": "^8.10.0", "update-notifier": "^7.3.1", "uuid": "^14.0.0", "ws": "^8.18.0", @@ -322,7 +327,7 @@ "@atjsh/llmlingua-2": "2.0.3", "@huggingface/transformers": "3.5.2", "@tensorflow/tfjs": "4.22.0", - "better-sqlite3": "^13.0.1", + "better-sqlite3": "^13.0.2", "js-tiktoken": "^1.0.20", "keytar": "^7.9.0", "tls-client-node": "^0.2.0", @@ -368,6 +373,7 @@ "lint-staged": "^17.0.8", "lockfile-lint": "^5.0.0", "node-loader": "^2.1.0", + "opencode-ai": "1.18.8", "playwright-ctrf-json-reporter": "^0.0.29", "prettier": "^3.8.3", "promptfoo": "^0.121.18", @@ -399,8 +405,16 @@ "sharp" ] }, + "allowScripts": { + "better-sqlite3": true, + "esbuild": true, + "@swc/core": true, + "@parcel/watcher": true, + "keytar": true, + "protobufjs": true, + "unrs-resolver": true + }, "overrides": { - "dompurify": "^3.4.12", "fast-xml-parser": "^5.10.1", "sharp": "^0.35.0", "postcss": "^8.5.18", @@ -416,7 +430,7 @@ "fast-uri": "^3.1.5", "body-parser": "^2.3.0", "@yarnpkg/parsers": { - "js-yaml": "^4.2.0" + "js-yaml": "^4.3.1" }, "jsdom": { "undici": "^7.29.0" @@ -431,11 +445,27 @@ "promptfoo": { "js-yaml": "^5.2.2", "@apidevtools/json-schema-ref-parser": { - "js-yaml": "^4.2.0" + "js-yaml": "^4.3.1" }, "undici": "^7.29.0" }, "socket.io-parser": "^4.2.7", - "tar": "^7.5.21" + "tar": "^7.5.21", + "nanoid": "^3.3.17", + "@eslint/eslintrc": { + "js-yaml": "^4.3.1" + }, + "lockfile-lint": { + "js-yaml": "^4.3.1" + }, + "xmlbuilder2": { + "js-yaml": "^4.3.1" + }, + "monaco-editor": { + "dompurify": "^3.4.13" + }, + "@apidevtools/json-schema-ref-parser": { + "js-yaml": "^4.3.1" + } } } diff --git a/public/providers/soniox.svg b/public/providers/soniox.svg new file mode 100644 index 0000000000..343c3d5f33 --- /dev/null +++ b/public/providers/soniox.svg @@ -0,0 +1 @@ +Soniox diff --git a/public/providers/unorouter.svg b/public/providers/unorouter.svg new file mode 100644 index 0000000000..a9f5f22200 --- /dev/null +++ b/public/providers/unorouter.svg @@ -0,0 +1 @@ +UnoRouterU diff --git a/public/providers/zoocode.png b/public/providers/zoocode.png new file mode 100644 index 0000000000..57c9ae8515 Binary files /dev/null and b/public/providers/zoocode.png differ diff --git a/scripts/build/assembleStandalone.mjs b/scripts/build/assembleStandalone.mjs index 27faa6c5cf..3b9842e45a 100644 --- a/scripts/build/assembleStandalone.mjs +++ b/scripts/build/assembleStandalone.mjs @@ -48,6 +48,10 @@ import fs from "node:fs/promises"; import fsSync from "node:fs"; import path from "node:path"; +import { + colocateLlmlinguaOptionals, + SEED_PACKAGES, +} from "./colocateOptionals.mjs"; /** * Check whether a path exists (async). @@ -116,6 +120,25 @@ const EXTRA_MODULE_ENTRIES = [ { label: "split2", src: ["node_modules", "split2"], dest: ["node_modules", "split2"] }, { label: "migrations", src: ["src", "lib", "db", "migrations"], dest: ["migrations"] }, { label: "MITM server", src: ["src", "mitm", "server.cjs"], dest: ["src", "mitm", "server.cjs"] }, + { + // #9451: server.cjs requires 6 shims from ./_internal/ (bypass, ingest, + // forwardTarget, aliasConfig, standaloneRouting, rootCaShim) which the MITM + // child process loads via require(). Next.js's standalone tracer never sees + // them (server.cjs is a separate node process, not imported by the main + // server), so the _internal/ directory must be copied explicitly or the MITM + // child crashes with MODULE_NOT_FOUND at boot. + label: "MITM _internal shims (#9451)", + src: ["src", "mitm", "_internal"], + dest: ["src", "mitm", "_internal"], + }, + { + // #9451: rootCaShim.cjs does `await import("selfsigned")` for dynamic SSL + // certificate generation. The MITM child is not traced by Next.js, so the + // package is absent from the Docker standalone bundle without this entry. + label: "selfsigned (MITM rootCaShim dynamic import — #9451)", + src: ["node_modules", "selfsigned"], + dest: ["node_modules", "selfsigned"], + }, { label: "run-standalone script", src: ["scripts", "dev", "run-standalone.mjs"], @@ -717,6 +740,19 @@ export function assembleStandalone({ // 6. Optionally copy native assets + extra modules (synchronous) if (copyNatives) { copyNativeAssetsAndExtraModules(projectRoot, resolvedOutDir); + + // #9166: dynamically imported LLMLingua packages are not reliably traced + // into the standalone bundle. Copy their complete dependency closure from + // the installed root tree without overwriting packages already traced by + // Next.js. Include transformers here so its ONNX runtime closure is also + // guaranteed in Docker/standalone builds. + colocateLlmlinguaOptionals({ + rootDir: projectRoot, + targetNodeModulesDir: path.join(resolvedOutDir, "node_modules"), + seeds: [...SEED_PACKAGES, "@huggingface/transformers"], + log: (message) => + console.log(`[assembleStandalone] ${message.trim()}`), + }); } // 7. Optionally dereference Turbopack hashed-module symlinks so the bundle is diff --git a/scripts/build/colocate-standalone.mjs b/scripts/build/colocate-standalone.mjs new file mode 100644 index 0000000000..b1bf44f8c0 --- /dev/null +++ b/scripts/build/colocate-standalone.mjs @@ -0,0 +1,100 @@ +#!/usr/bin/env node +/** + * OmniRoute — Co-locate the LLMLingua-2 runtime into the raw Next standalone build. + * + * WHY: `npm run build` produces `.build/next/standalone/` and THIS machine's PM2 + * deployment runs `server.js` from that directory directly (not the assembled + * `dist/` bundle). The standalone trace: + * - does NOT bundle `open-sse/services/compression/engines/llmlingua/onnxWorker.js` + * (dynamically spawned via worker_threads — untraceable by webpack), and + * - does NOT include the optional SLM deps (`@atjsh/llmlingua-2`, + * `@tensorflow/tfjs`, `js-tiktoken`) — they are optionalDependencies and are + * only installed at the ROOT `node_modules`. + * + * Result: after every plain `npm run build`, the LLMLingua engine silently + * fail-opens (text returned unchanged, no error) because the worker's runtime + * anchors (`process.cwd()` = the standalone dir) find neither the worker file + * nor the deps. This script re-applies both, mirroring what prepublish.ts + + * colocateOptionals.mjs do for the `dist/` bundle. + * + * Idempotent + fail-soft: skips quietly when the optional deps are absent at the + * root (the common slim-install case) and never throws into the build. + * + * Run manually after a build, or automatically via the `postbuild` npm hook. + */ +import { cpSync, existsSync, mkdirSync } from "node:fs"; +import { dirname, join } from "node:path"; +import { execFileSync } from "node:child_process"; +import { fileURLToPath } from "node:url"; +import { computeDependencyClosure } from "./colocateOptionals.mjs"; + +const ROOT = dirname(dirname(dirname(fileURLToPath(import.meta.url)))); +const STANDALONE = join(ROOT, ".build", "next", "standalone"); + +const WORKER_REL = join( + "open-sse", + "services", + "compression", + "engines", + "llmlingua", + "onnxWorker.js" +); +const GATE_PKG = join("node_modules", "@atjsh", "llmlingua-2", "package.json"); + +const hasOptionals = existsSync( + join(ROOT, "node_modules", "@atjsh", "llmlingua-2", "package.json") +); + +if (!existsSync(STANDALONE)) { + console.log("[colocate-standalone] .build/next/standalone not found — nothing to do."); + process.exit(0); +} +if (!hasOptionals) { + console.log( + "[colocate-standalone] optional SLM deps absent at root node_modules — LLMLingua stays fail-open (slim install)." + ); + process.exit(0); +} + +// 1) Bundle the worker the resolver expects: /open-sse/.../onnxWorker.js +const workerDest = join(STANDALONE, WORKER_REL); +if (!existsSync(workerDest)) { + mkdirSync(dirname(workerDest), { recursive: true }); + try { + execFileSync( + join(ROOT, "node_modules", ".bin", "esbuild"), + [ + join(ROOT, "open-sse", "services", "compression", "engines", "llmlingua", "onnxWorker.ts"), + "--bundle", + "--platform=node", + "--packages=external", + "--format=esm", + `--outfile=${workerDest}`, + ], + { stdio: "inherit" } + ); + console.log("[colocate-standalone] ✅ LLMLingua worker bundled into standalone tree"); + } catch (err) { + console.warn("[colocate-standalone] ⚠️ worker bundle error:", err.message); + } +} else { + console.log("[colocate-standalone] worker already present (skipping bundle)"); +} + +// 2) Co-locate the optional-dep closure (NO-CLOBBER, same semantics as colocateOptionals.mjs) +const srcNm = join(ROOT, "node_modules"); +const dstNm = join(STANDALONE, "node_modules"); +const closure = computeDependencyClosure(srcNm); +let copied = 0; +for (const pkg of closure) { + const src = join(srcNm, pkg); + const dst = join(dstNm, pkg); + if (!existsSync(src)) continue; + if (existsSync(dst)) continue; // no-clobber: keep traced instances (e.g. pinned @huggingface/transformers) + mkdirSync(dirname(dst), { recursive: true }); + cpSync(src, dst, { recursive: true }); + copied++; +} +console.log( + `[colocate-standalone] ✅ optional-dep closure: ${closure.length} packages (copied ${copied})` +); diff --git a/scripts/build/colocateOptionals.mjs b/scripts/build/colocateOptionals.mjs index 5317d2fe8a..367a95c112 100644 --- a/scripts/build/colocateOptionals.mjs +++ b/scripts/build/colocateOptionals.mjs @@ -47,7 +47,8 @@ */ import { cpSync, existsSync, mkdirSync, readFileSync } from "node:fs"; -import { dirname, join } from "node:path"; +import { createRequire } from "node:module"; +import { dirname, join, sep } from "node:path"; /** * Entry packages of the SLM optional stack (the closure roots). `@huggingface/transformers` is @@ -97,47 +98,116 @@ export function computeDependencyClosure(nodeModulesDir, seeds = SEED_PACKAGES) } /** - * Co-locate the SLM optional closure from `/node_modules` into - * `/dist/node_modules`. No-op when the standalone `dist` bundle or the optional seeds are - * absent, and idempotent once co-located. Never throws. + * A package in the target tree counts as PRESENT only when its entrypoint + * resolves from inside that tree — the same contract the Dockerfile's + * post-build guard enforces. Next's file tracing can materialize a package + * PARTIALLY (the package.json lands, the files its `main` points at do not), + * and a directory-level `existsSync` check then skips the package forever + * while the runtime dies with "Cannot find module /dist/index.js". * - * @param {{ rootDir: string, log?: (message: string) => void }} opts + * @param {string} targetNodeModulesDir + * @param {string} name + * @returns {boolean} + */ +function isPackageIntact(targetNodeModulesDir, name) { + if (!existsSync(join(targetNodeModulesDir, name))) return false; + try { + const probe = createRequire( + join(targetNodeModulesDir, "__colocate_probe__.js") + ); + const resolved = probe.resolve(name); + // A resolution that walked past the target into an ancestor tree does not + // prove the target copy is usable. + return resolved.startsWith(targetNodeModulesDir + sep); + } catch { + return false; + } +} + +/** + * Co-locate the SLM optional dependency closure from `/node_modules` + * into a standalone bundle's `node_modules`. + * + * The default destination remains `/dist/node_modules` for the npm + * postinstall path. Standalone builders, including Docker, may provide + * `targetNodeModulesDir`. + * + * Packages already present in the destination are never overwritten. This + * preserves the standalone bundle's pinned dependency instances while filling + * dynamically imported packages that Next.js did not trace. + * + * @param {{ + * rootDir: string, + * targetNodeModulesDir?: string, + * seeds?: string[], + * log?: (message: string) => void + * }} opts * @returns {{ skipped: true, reason: string } * | { skipped: false, copied: number, closure: number }} */ -export function colocateLlmlinguaOptionals({ rootDir, log = () => {} }) { +export function colocateLlmlinguaOptionals({ + rootDir, + targetNodeModulesDir, + seeds = SEED_PACKAGES, + log = () => {}, +}) { const rootNm = join(rootDir, "node_modules"); - const distNm = join(rootDir, "dist", "node_modules"); + const targetNm = targetNodeModulesDir ?? join(rootDir, "dist", "node_modules"); - if (!existsSync(distNm)) { - return { skipped: true, reason: "no standalone dist/node_modules" }; + if (!existsSync(targetNm)) { + return { + skipped: true, + reason: targetNodeModulesDir + ? "no target node_modules" + : "no standalone dist/node_modules", + }; } - // Gate: only run when the optional stack was actually installed (`npm install --include=optional`). - if (!SEED_PACKAGES.every((seed) => existsSync(join(rootNm, seed)))) { + + // Only run when every requested closure root was installed. + if (!seeds.every((seed) => existsSync(join(rootNm, seed)))) { return { skipped: true, reason: "SLM optionals not installed at root" }; } - // Idempotent: the entry package is already co-located → nothing to do. - if (existsSync(join(distNm, "@atjsh", "llmlingua-2"))) { + + const closure = computeDependencyClosure(rootNm, seeds); + + // Check the complete closure rather than only the entry package, and judge + // presence by entrypoint integrity — a partially traced directory (see + // isPackageIntact) must still receive its missing files. + if ( + closure.length > 0 && + closure.every((name) => isPackageIntact(targetNm, name)) + ) { return { skipped: true, reason: "already co-located" }; } - const closure = computeDependencyClosure(rootNm); let copied = 0; for (const name of closure) { - const dest = join(distNm, name); - if (existsSync(dest)) continue; // no-clobber: keep dist's pinned copy (transformers 3.5.2, …) + const dest = join(targetNm, name); + if (isPackageIntact(targetNm, name)) continue; + try { mkdirSync(dirname(dest), { recursive: true }); - cpSync(join(rootNm, name), dest, { recursive: true }); + // force:false merges into a partially traced directory: files the trace + // already materialized are kept, missing ones (the package payload) are + // filled in from the root tree. + cpSync(join(rootNm, name), dest, { + recursive: true, + force: false, + errorOnExist: false, + }); copied++; } catch (err) { - log(` ⚠️ LLMLingua optional co-location failed for ${name}: ${err.message}`); + log( + ` ⚠️ LLMLingua optional co-location failed for ${name}: ${err.message}` + ); } } if (copied > 0) { - log(` ✅ Co-located ${copied} LLMLingua SLM optional package(s) into dist/node_modules.\n`); + log( + ` ✅ Co-located ${copied} LLMLingua SLM optional package(s) into standalone node_modules.\n` + ); } return { skipped: false, copied, closure: closure.length }; diff --git a/scripts/build/fixPlaywrightAndroid.mjs b/scripts/build/fixPlaywrightAndroid.mjs new file mode 100644 index 0000000000..bfacfad723 --- /dev/null +++ b/scripts/build/fixPlaywrightAndroid.mjs @@ -0,0 +1,90 @@ +#!/usr/bin/env node + +/** + * playwright-core Android/Termux platform patch (#7265). + * + * playwright-core's bundled coreBundle.js has three IIFEs that compute the + * browser-cache directory by checking `process.platform` for "linux", "darwin", + * or "win32". On Android (Termux), Node.js may report process.platform as + * "android", causing each IIFE to throw "Unsupported platform: android" at + * module load time — crashing the entire server before any browser is launched. + * + * This script patches the three platform checks to also accept "android", + * treating it identically to "linux" (same XDG_CACHE_HOME convention). + * + * The patch is applied to both root node_modules (for dev/build) and + * dist/node_modules (for the standalone bundle). It is idempotent — running + * multiple times is safe. + * + * Fixes: https://github.com/diegosouzapw/OmniRoute/issues/7265 + */ + +import { existsSync, readFileSync, writeFileSync } from "node:fs"; +import { join } from "node:path"; + +const PATCHED_MARKER = "/* omniroute-android-patch */"; + +/** + * Patch coreBundle.js to accept Android as a valid platform. + * Returns true if the file was modified, false if already patched or not found. + */ +function patchCoreBundle(filePath) { + if (!existsSync(filePath)) return false; + + let content = readFileSync(filePath, "utf8"); + + // Already patched — skip + if (content.includes(PATCHED_MARKER)) return false; + + // The three platform-check patterns in coreBundle.js: + // 1. defaultCacheDirectory IIFE (line ~28594) + // 2. defaultCacheDirectory2 IIFE (line ~51278) + // 3. daemon session dir computation (line ~68847) + // + // Original pattern: if (process.platform === "linux") + // Patched pattern: if (process.platform === "linux" || process.platform === "android") + // + // We use a regex that matches the exact pattern and only replaces the first + // occurrence in each of the three IIFEs. The marker comment is appended once + // to signal idempotency. + + const original = /if \(process\.platform === "linux"\)/g; + const patched = `if (process.platform === "linux" || process.platform === "android") ${PATCHED_MARKER}`; + + const count = (content.match(original) || []).length; + if (count === 0) { + // Either already patched or different version — check for our marker + return false; + } + + content = content.replace(original, patched); + writeFileSync(filePath, content, "utf8"); + return true; +} + +export function fixPlaywrightAndroid({ rootDir, log = (m) => console.log(m) } = {}) { + const targets = [ + join(rootDir, "node_modules", "playwright-core", "lib", "coreBundle.js"), + join(rootDir, "dist", "node_modules", "playwright-core", "lib", "coreBundle.js"), + ]; + + let patched = 0; + for (const target of targets) { + if (patchCoreBundle(target)) { + patched++; + log(` ✅ Patched playwright-core for Android: ${target}`); + } + } + + if (patched > 0) { + log(` ✅ playwright-core Android patch applied (${patched} file(s))\n`); + } + + return patched; +} + +// When run directly (not imported), execute the patch +if (process.argv[1] && process.argv[1].endsWith("fixPlaywrightAndroid.mjs")) { + const rootDir = process.argv[2] || process.cwd(); + fixPlaywrightAndroid({ rootDir }); +} diff --git a/scripts/build/pack-artifact-policy.ts b/scripts/build/pack-artifact-policy.ts index 54f47487a7..a464cd516b 100644 --- a/scripts/build/pack-artifact-policy.ts +++ b/scripts/build/pack-artifact-policy.ts @@ -93,6 +93,10 @@ export const PACK_ARTIFACT_ROOT_ALLOWED_EXACT_PATHS: string[] = [ // runtime; shipped via package.json "files", so it must be allowed here. "bin/aliasResolverHook.mjs", "bin/mcp-server.mjs", + // #9281: stdout/stderr console guard preloaded via `node --import` by + // bin/mcp-server.mjs before the MCP entry's module graph evaluates — without it + // the published CLI's `omniroute --mcp` crashes on the pathToFileURL() import. + "bin/mcpStdioConsoleGuard.mjs", "bin/nodeRuntimeSupport.mjs", "bin/omniroute.mjs", "bin/reset-password.mjs", @@ -126,6 +130,9 @@ export const PACK_ARTIFACT_ROOT_ALLOWED_EXACT_PATHS: string[] = [ // #7802: imported by scripts/build/postinstall.mjs to repair tls-client-node's // native binary (chatgpt-web/claude-web/grok-web/lmarena/perplexity-web transport). "scripts/build/fixTlsClientNodeBinary.mjs", + // #8859: imported by scripts/build/postinstall.mjs to repair playwright-core's + // browser resolution on Termux/Android (no glibc, no bundled browsers). + "scripts/build/fixPlaywrightAndroid.mjs", // #5227: imported at runtime by bin/cli/commands/serve.mjs (heap auto-calibration). "scripts/build/runtime-env.mjs", "scripts/build/sync-env.mjs", @@ -180,6 +187,10 @@ export const PACK_ARTIFACT_REQUIRED_PATHS: string[] = [ "bin/cli/utils/storageKeyProvision.mjs", "bin/cli/utils/versionFastPath.mjs", "bin/mcp-server.mjs", + // #9281: stdout/stderr console guard preloaded via `node --import` by + // bin/mcp-server.mjs before the MCP entry's module graph evaluates — without it + // the published CLI's `omniroute --mcp` crashes on the pathToFileURL() import. + "bin/mcpStdioConsoleGuard.mjs", "bin/nodeRuntimeSupport.mjs", "bin/omniroute.mjs", // #7808: aliasResolver + its hook file. bin/omniroute.mjs imports diff --git a/scripts/build/postinstall.mjs b/scripts/build/postinstall.mjs index 9972e4771e..9570691b46 100644 --- a/scripts/build/postinstall.mjs +++ b/scripts/build/postinstall.mjs @@ -24,7 +24,15 @@ * Fixes: https://github.com/diegosouzapw/OmniRoute/issues/7802 */ -import { copyFileSync, cpSync, existsSync, mkdirSync, readdirSync } from "node:fs"; +import { + copyFileSync, + cpSync, + existsSync, + mkdirSync, + readFileSync, + readdirSync, + writeFileSync, +} from "node:fs"; import { dirname, join } from "node:path"; import { fileURLToPath } from "node:url"; @@ -32,11 +40,62 @@ import { PUBLISHED_BUILD_ARCH, PUBLISHED_BUILD_PLATFORM } from "./native-binary- import { hasStandaloneAppBundle, isTermux } from "./postinstallSupport.mjs"; import { colocateLlmlinguaOptionals } from "./colocateOptionals.mjs"; import { fixTlsClientNodeBinary } from "./fixTlsClientNodeBinary.mjs"; +import { fixPlaywrightAndroid } from "./fixPlaywrightAndroid.mjs"; const __filename = fileURLToPath(import.meta.url); const __dirname = dirname(__filename); const ROOT = join(__dirname, "..", ".."); +/** + * Patch node-gyp's common.gypi to include the android_ndk_path variable. + * + * On Termux/Android, node-gyp's bundled common.gypi (in ~/.cache/node-gyp//) + * does not define the `android_ndk_path` variable that the build system expects. + * Setting GYP_DEFINES="android_ndk_path=''" is not enough because common.gypi + * is parsed separately and the variable must be declared in the 'variables' section. + * + * This function finds and patches the common.gypi for the current Node.js version, + * adding `'android_ndk_path%': ''` to the variables block. The patch is idempotent. + */ +function patchNodeGypCommonGypi() { + try { + const nodeVersion = process.version; // e.g. "v26.4.0" + const gypDir = join( + process.env.HOME || process.env.USERPROFILE || "/root", + ".cache", + "node-gyp", + nodeVersion.replace(/^v/, "") + ); + const commonGypi = join(gypDir, "include", "node", "common.gypi"); + + if (!existsSync(commonGypi)) { + console.warn(` ⚠️ common.gypi not found at ${commonGypi}, skipping patch`); + return; + } + + let content = readFileSync(commonGypi, "utf8"); + + // Check if already patched + if (content.includes("android_ndk_path")) { + return; + } + + // Find the variables section and add android_ndk_path + // The pattern is: 'variables': { 'node_use_openssl%': ... } + // We insert our variable right after the opening of the variables block + const variablesMatch = content.match(/('variables'\s*:\s*\{)/); + if (variablesMatch) { + const insertPos = content.indexOf(variablesMatch[0]) + variablesMatch[0].length; + content = + content.slice(0, insertPos) + "\n 'android_ndk_path%': ''," + content.slice(insertPos); + writeFileSync(commonGypi, content, "utf8"); + console.log(` ✅ Patched common.gypi for Android at ${commonGypi}`); + } + } catch (err) { + console.warn(` ⚠️ Could not patch common.gypi: ${err.message}`); + } +} + const appBinary = join( ROOT, "dist", @@ -148,6 +207,9 @@ async function fixBetterSqliteBinary() { const env = { ...process.env }; if (isAndroid) { env.GYP_DEFINES = "android_ndk_path=''"; + // Patch node-gyp's common.gypi to include android_ndk_path variable + // so the gyp build system doesn't fail with "Unknown variable" + patchNodeGypCommonGypi(); } execSync(rebuildCmd, { @@ -345,9 +407,41 @@ async function ensureLlmlinguaOptionals() { } } +/** + * Preflight check for development installs (when standalone dist/ bundle is not present). + * Warns or errors if critical native dependencies like better-sqlite3 were skipped by npm >= 11 + * allowScripts restrictions. + */ +async function verifyDevNativeModules() { + if (hasStandaloneAppBundle(ROOT)) { + return; + } + + const criticalModules = [ + { name: "better-sqlite3", fatal: true }, + { name: "esbuild", fatal: true }, + ]; + + for (const { name, fatal } of criticalModules) { + if (!existsSync(join(ROOT, "node_modules", name))) { + const level = fatal ? "🔴 CRITICAL" : "⚠️ WARNING"; + console.error(`\n ${level}: '${name}' is missing from node_modules/`); + console.error(` This usually happens with npm ≥ 11, which blocks install`); + console.error(` scripts for optional dependencies by default.`); + console.error(`\n Fix options:`); + console.error(` 1. npm approve-scripts ${name} && npm install`); + console.error(` 2. npm pack ${name} && tar -xzf ${name}-*.tgz -C node_modules`); + console.error(` && mv node_modules/package node_modules/${name}`); + console.error(` 3. Downgrade to npm 10: npm install -g npm@10\n`); + } + } +} + +await verifyDevNativeModules(); await fixBetterSqliteBinary(); await fixWreqJsBinary(); await fixTlsClientNodeBinary({ rootDir: ROOT }); +await fixPlaywrightAndroid({ rootDir: ROOT }); await ensureSwcHelpers(); await ensureLlmlinguaOptionals(); await syncProjectEnv(); diff --git a/scripts/build/prepublish.ts b/scripts/build/prepublish.ts index bd8612adfa..50cdaf8cbf 100644 --- a/scripts/build/prepublish.ts +++ b/scripts/build/prepublish.ts @@ -22,11 +22,15 @@ import { readdirSync, statSync, chmodSync, + openSync, + readSync, + closeSync, } from "node:fs"; import { join, dirname } from "node:path"; import { fileURLToPath } from "node:url"; import { assembleStandalone } from "./assembleStandalone.mjs"; +import { resolveBundledNpmEntry } from "./resolveNpmEntry.ts"; import { APP_STAGING_ALLOWED_EXACT_PATHS, APP_STAGING_ALLOWED_PATH_PREFIXES, @@ -39,6 +43,88 @@ const __dirname = dirname(__filename); const ROOT = join(__dirname, "..", ".."); const NPX_BIN = process.platform === "win32" ? "npx.cmd" : "npx"; +// On Windows the npm/npx entry points are `.cmd` shims, and Node >= 20 refuses to +// spawn a `.cmd` without a shell (EINVAL, from the CVE-2024-27980 hardening). On +// Node 24 that makes every `execFileSync(NPX_BIN, ...)` in this script fail, which +// silently skipped the MITM utilities, the MCP server bundle, the LLMLingua worker +// and the OpenCode plugin while the build still reported success. +// +// `shell: true` would fix the spawn but disables argument escaping (DEP0190), so it +// is only the last resort. Preferred order: run the tool's own JS entry point with +// this Node binary — no shim, no shell, nothing to escape. +function resolveLocalBinEntry(packageName: string, binName: string): string | null { + try { + const packageJsonPath = join(ROOT, "node_modules", packageName, "package.json"); + if (!existsSync(packageJsonPath)) return null; + const meta = JSON.parse(readFileSync(packageJsonPath, "utf8")) as { + bin?: string | Record; + }; + const relative = typeof meta.bin === "string" ? meta.bin : meta.bin?.[binName]; + if (!relative) return null; + const absolute = join(ROOT, "node_modules", packageName, relative); + return existsSync(absolute) ? absolute : null; + } catch { + return null; + } +} + +/** + * Runs a build tool without ever touching a `.cmd` shim. `packageName` is where the + * tool lives in the local dependency tree; when it is not installed there the call + * falls back to the Node-resolved `npx` entry point, and only then to the shim. + */ +/** + * esbuild ≥0.25 ships its `bin/esbuild` as the NATIVE platform executable on + * Linux/macOS (ELF / Mach-O) instead of a JS shim — running it through + * `process.execPath` makes Node parse machine code as JavaScript and crash with + * "SyntaxError: Invalid or unexpected token". Sniff the magic bytes and exec + * native entries directly; JS entries keep going through this Node binary. + */ +function isNativeExecutable(entryPath: string): boolean { + try { + const fd = openSync(entryPath, "r"); + const head = Buffer.alloc(4); + readSync(fd, head, 0, 4, 0); + closeSync(fd); + return ( + (head[0] === 0x7f && head[1] === 0x45 && head[2] === 0x4c && head[3] === 0x46) || // ELF + head.readUInt32BE(0) === 0xfeedfacf || // Mach-O 64 + head.readUInt32BE(0) === 0xcffaedfe || // Mach-O 64 (LE on disk) + (head[0] === 0x4d && head[1] === 0x5a) // PE (Windows MZ) + ); + } catch { + return false; + } +} + +function runBuildTool( + packageName: string, + binName: string, + args: readonly string[], + options: Parameters[2] +): void { + const localEntry = resolveLocalBinEntry(packageName, binName); + if (localEntry) { + if (isNativeExecutable(localEntry)) { + execFileSync(localEntry, [...args], options); + return; + } + execFileSync(process.execPath, [localEntry, ...args], options); + return; + } + const npxEntry = resolveBundledNpmEntry("npx-cli.js"); + if (npxEntry) { + execFileSync(process.execPath, [npxEntry, binName, ...args], options); + return; + } + // Last resort. The arguments here are static build literals, never user input, + // so the missing escaping under `shell` is not an injection surface. + execFileSync(NPX_BIN, [binName, ...args], { + ...options, + shell: process.platform === "win32", + }); +} + const DIST_DIR = join(ROOT, "dist"); const METHOD_GUARD_REQUIRE = 'require("./http-method-guard.cjs").installHttpMethodGuard();\n'; @@ -205,7 +291,7 @@ if (existsSync(mitmSrc)) { writeFileSync(tmpTsconfigPath, JSON.stringify(mitmTsconfig, null, 2)); try { - execFileSync(NPX_BIN, ["tsc", "-p", "tsconfig.mitm.tmp.json"], { + runBuildTool("typescript", "tsc", ["-p", "tsconfig.mitm.tmp.json"], { cwd: ROOT, stdio: "inherit", }); @@ -235,10 +321,10 @@ if (existsSync(mcpSrcFile)) { console.log(" 🔨 Bundling MCP Server (TypeScript → JavaScript)..."); mkdirSync(mcpDestDir, { recursive: true }); try { - execFileSync( - NPX_BIN, + runBuildTool( + "esbuild", + "esbuild", [ - "esbuild", "open-sse/mcp-server/server.ts", "--bundle", "--platform=node", @@ -281,10 +367,10 @@ if (existsSync(llmWorkerSrc)) { console.log(" 🔨 Bundling LLMLingua ONNX worker (TypeScript → JavaScript)..."); mkdirSync(llmWorkerDestDir, { recursive: true }); try { - execFileSync( - NPX_BIN, + runBuildTool( + "esbuild", + "esbuild", [ - "esbuild", "open-sse/services/compression/engines/llmlingua/onnxWorker.ts", "--bundle", "--platform=node", @@ -309,10 +395,10 @@ const cliDestFile = join(ROOT, "bin", "omniroute.mjs"); if (existsSync(cliSrcFile)) { console.log(" 🔨 Bundling CLI Entrypoint (TypeScript → JavaScript)..."); try { - execFileSync( - NPX_BIN, + runBuildTool( + "esbuild", + "esbuild", [ - "esbuild", "bin/omniroute.ts", "--bundle", "--platform=node", @@ -349,13 +435,26 @@ if (existsSync(opencodePluginSrc) && existsSync(join(opencodePluginSrc, "package // needs the plugin's own devDependencies (typescript, @opencode-ai/plugin // types). Without this install a fresh CI publish fails at this step. if (!existsSync(join(opencodePluginSrc, "node_modules"))) { - const NPM_BIN = process.platform === "win32" ? "npm.cmd" : "npm"; - execFileSync(NPM_BIN, ["install", "--no-audit", "--no-fund"], { - cwd: opencodePluginSrc, - stdio: "inherit", - }); + const npmEntry = resolveBundledNpmEntry("npm-cli.js"); + if (npmEntry) { + execFileSync(process.execPath, [npmEntry, "install", "--no-audit", "--no-fund"], { + cwd: opencodePluginSrc, + stdio: "inherit", + }); + } else if (process.platform !== "win32") { + // No bundled npm entry found (non-standard Node layout). Plain `npm` is + // safe here — the .cmd-shim hazard #8858 guards against is Windows-only. + execFileSync("npm", ["install", "--no-audit", "--no-fund"], { + cwd: opencodePluginSrc, + stdio: "inherit", + }); + } else { + throw new Error( + "npm-cli.js not found next to the running Node binary; cannot install the plugin dependencies without falling back to a .cmd shim." + ); + } } - execFileSync(NPX_BIN, ["tsup"], { + runBuildTool("tsup", "tsup", [], { cwd: opencodePluginSrc, stdio: "inherit", env: { ...process.env, NODE_ENV: "production" }, diff --git a/scripts/build/resolveNpmEntry.ts b/scripts/build/resolveNpmEntry.ts new file mode 100644 index 0000000000..b19bcb1fb2 --- /dev/null +++ b/scripts/build/resolveNpmEntry.ts @@ -0,0 +1,40 @@ +import { existsSync } from "fs"; +import { dirname, join } from "path"; + +/** Injectable seams for {@link resolveBundledNpmEntry} (all default to the real ones). */ +export interface ResolveNpmEntryDeps { + execPath?: string; + /** `process.env.npm_execpath` — set by npm itself when running under `npm run`. */ + npmExecPath?: string; + exists?: (p: string) => boolean; +} + +/** + * Locate `npm-cli.js` / `npx-cli.js` so build steps can run npm/npx through + * `process.execPath` directly and never touch a `.cmd` shim (#8858), covering + * BOTH install layouts: + * - Windows: `\node_modules\npm\bin\` (npm beside the binary) + * - POSIX: `/../lib/node_modules/npm/bin/` (node under `/bin`, + * the shape of GitHub hosted runners, nvm and system installs) + * When the script itself runs under `npm run`, npm exports `npm_execpath` pointing at + * its own npm-cli.js — the most reliable source, tried first (npx-cli.js is its sibling). + */ +export function resolveBundledNpmEntry( + name: "npm-cli.js" | "npx-cli.js", + deps: ResolveNpmEntryDeps = {} +): string | null { + const execPath = deps.execPath ?? process.execPath; + const exists = deps.exists ?? existsSync; + const npmExecPath = deps.npmExecPath ?? process.env.npm_execpath; + + const binDir = dirname(execPath); + const candidates: string[] = []; + if (npmExecPath) candidates.push(join(dirname(npmExecPath), name)); + candidates.push(join(binDir, "node_modules", "npm", "bin", name)); + candidates.push(join(binDir, "..", "lib", "node_modules", "npm", "bin", name)); + + for (const candidate of candidates) { + if (exists(candidate)) return candidate; + } + return null; +} diff --git a/scripts/build/runtime-env.mjs b/scripts/build/runtime-env.mjs index ea91bf9190..d8dbe45765 100644 --- a/scripts/build/runtime-env.mjs +++ b/scripts/build/runtime-env.mjs @@ -86,6 +86,20 @@ export function buildNodeHeapArgs(env = process.env, memoryLimit) { return envHasExplicitHeapFlag(env) ? [] : [`${MAX_OLD_SPACE_FLAG}=${memoryLimit}`]; } +/** + * Build the complete argument list for spawning the Node.js server runtime. + * Prefer IPv4 DNS results before starting the application so undici does not + * stall on hosts whose IPv6 route silently drops outbound connections. + * + * @param {NodeJS.ProcessEnv | Record} [env] + * @param {number} memoryLimit — calibrated V8 heap ceiling (MB) + * @param {string} serverPath — standalone server entrypoint + * @returns {string[]} + */ +export function buildNodeRuntimeArgs(env = process.env, memoryLimit, serverPath) { + return ["--dns-result-order=ipv4first", ...buildNodeHeapArgs(env, memoryLimit), serverPath]; +} + /** * @param {NodeJS.ProcessEnv | Record} [fromEnv] * Defaults to process.env. Pass bootstrap `merged` so project `.env` PORT applies before spawn. @@ -107,6 +121,7 @@ export function withRuntimePortEnv(env, runtimePorts) { PORT: String(dashboardPort), DASHBOARD_PORT: String(dashboardPort), API_PORT: String(apiPort), + HOSTNAME: env.OMNIROUTE_HOSTNAME || "0.0.0.0", }; } diff --git a/scripts/check/check-db-rules.mjs b/scripts/check/check-db-rules.mjs index cc348d69f5..2c65c2f6dd 100644 --- a/scripts/check/check-db-rules.mjs +++ b/scripts/check/check-db-rules.mjs @@ -63,6 +63,7 @@ export const INTENTIONALLY_INTERNAL = new Set([ "optimizationSettings", // db-internal: imported by db/core.ts for SQLite PRAGMA application helpers that require the live adapter "pluginMetrics", // DEAD? (production): write path não foi conectado ainda (documentado no cabeçalho do módulo); testado por tests/unit/plugins-metrics.test.ts "prompts", // DEAD? (production): zero callers de produção encontrados; domínio domain/prompts.ts é independente; testado por tests/integration/proxy-pipeline.test.ts + "probeUtils", // db-internal: importado so por db/core.ts (retryProbeIfTransient no caminho da corruption-probe, #9541); testado por tests/unit/probe-9541-repro.test.ts "providerNodeSelect", // db-internal: importado só por db/providers.ts (selectProviderNodeForConnection — lógica pura de seleção de provider node split do providers.ts, #4421) "providerStats", // intentionally-internal: src/app/api/provider-stats/route.ts "proxyLatency", // intentionally-internal: imported directly by src/lib/db/proxies.ts (anti-barrel, #6798) diff --git a/scripts/check/check-docs-counts-sync.mjs b/scripts/check/check-docs-counts-sync.mjs index c529ea47c5..c0e4cf83f6 100644 --- a/scripts/check/check-docs-counts-sync.mjs +++ b/scripts/check/check-docs-counts-sync.mjs @@ -259,7 +259,7 @@ export function buildChecks() { actual: readProviderTotal(), docKey: "providers", strict: true, - files: ["README.md", "CLAUDE.md"], + files: ["README.md", "AGENTS.md"], }, { label: "i18n locales count", @@ -317,9 +317,9 @@ export function buildChecks() { skipBefore: /(tools?|definitions?)\s*\(\s*$/i, skipAfter: /^\s*\(\d+ CLI/, }, - ["README.md", "CLAUDE.md", "docs/frameworks/MCP-SERVER.md"] + ["README.md", "AGENTS.md", "docs/frameworks/MCP-SERVER.md"] ), - claim(f.mcpScopes, "MCP scopes", { pattern: /(\d+) scopes/gi }, ["README.md", "CLAUDE.md"]), + claim(f.mcpScopes, "MCP scopes", { pattern: /(\d+) scopes/gi }, ["README.md", "AGENTS.md"]), claim(f.cliTotal, "CLI tools", { pattern: /(\d+) tools(?=\s*\(\d+ CLI)/gi }, ["README.md"]), ]; })(), diff --git a/scripts/check/check-open-sse-typecheck.mjs b/scripts/check/check-open-sse-typecheck.mjs new file mode 100644 index 0000000000..d18c588538 --- /dev/null +++ b/scripts/check/check-open-sse-typecheck.mjs @@ -0,0 +1,174 @@ +#!/usr/bin/env node +// scripts/check/check-open-sse-typecheck.mjs +// open-sse workspace typecheck gate (#8781). +// +// The open-sse workspace declares path aliases (e.g. `@/*` → `../src/*`) in its own +// tsconfig.json, but those aliases are not resolvable by Node's bare module resolution — +// they only work because Next.js/Turbopack bundles the entire tree. Additionally, +// package.json historically declared `main`/`exports` entries that do not exist on disk. +// +// This gate runs `tsc -p open-sse/tsconfig.json` and diffs the result against a frozen +// per-file/per-TS-code count baseline (config/quality/open-sse-typecheck-baseline.json), +// following this repo's stale-enforcement allowlist convention. A live count that EXCEEDS +// the baselined count for a given (file, TS code) pair is a regression and fails the gate; +// a live count that is lower is an improvement and does not fail (use --update to ratchet +// the baseline down). +// +// Run: +// node scripts/check/check-open-sse-typecheck.mjs +// node scripts/check/check-open-sse-typecheck.mjs --update # re-freeze baseline + +import { execFileSync } from "node:child_process"; +import fs from "node:fs"; +import path from "node:path"; +import { pathToFileURL } from "node:url"; + +const ROOT = process.cwd(); +const TSCONFIG = path.join(ROOT, "open-sse", "tsconfig.json"); +const BASELINE_PATH = path.join(ROOT, "config/quality/open-sse-typecheck-baseline.json"); +const UPDATE = process.argv.includes("--update"); + +// Matches tsc --pretty false output lines, e.g.: +// src/app/api/v1/chat/route.ts(12,7): error TS2304: Cannot find name 'bar'. +// open-sse/handlers/chatCore.ts(45,3): error TS7053: Element implicitly has an 'any'... +const TSC_ERROR_LINE = /^(.+?)\((\d+),(\d+)\): error (TS\d+):/; + +/** + * Parses raw `tsc --pretty false` stdout into a nested count map: + * { "": { "": } } + * + * Pure/exported for unit testing against synthetic tsc output — no child + * process involved here. + */ +export function parseTscOutput(raw) { + const counts = {}; + const lines = String(raw).split("\n"); + for (const line of lines) { + const match = TSC_ERROR_LINE.exec(line); + if (!match) continue; + const [, file, , , code] = match; + if (!counts[file]) counts[file] = {}; + counts[file][code] = (counts[file][code] || 0) + 1; + } + return counts; +} + +/** + * Compares live (file, TS code) error counts against a frozen baseline. + * Returns `{ regressions, improvements }`: + * - regressions: entries where live count > baselined count (or the pair is + * entirely new/unbaselined) — these fail the gate. + * - improvements: entries where live count < baselined count — informational, + * do not fail (use --update to ratchet the baseline down). + * + * Exported for unit testing. + */ +export function diffAgainstBaseline(live, baseline) { + const regressions = []; + const improvements = []; + + for (const [file, codes] of Object.entries(live)) { + for (const [code, liveCount] of Object.entries(codes)) { + const baselineCount = (baseline[file] && baseline[file][code]) || 0; + if (liveCount > baselineCount) { + regressions.push({ file, code, liveCount, baselineCount }); + } else if (liveCount < baselineCount) { + improvements.push({ file, code, liveCount, baselineCount }); + } + } + } + + for (const [file, codes] of Object.entries(baseline)) { + for (const [code, baselineCount] of Object.entries(codes)) { + const liveCount = (live[file] && live[file][code]) || 0; + if (liveCount === 0 && baselineCount > 0) { + improvements.push({ file, code, liveCount: 0, baselineCount }); + } + } + } + + return { regressions, improvements }; +} + +function runTsc() { + try { + const stdout = execFileSync( + process.platform === "win32" ? "npx.cmd" : "npx", + ["tsc", "--pretty", "false", "--noEmit", "-p", TSCONFIG], + { encoding: "utf8", maxBuffer: 64 * 1024 * 1024, cwd: ROOT } + ); + return stdout; + } catch (err) { + // tsc exits non-zero when there are type errors — stdout still has the report. + if (err.stdout) return String(err.stdout); + throw err; + } +} + +function loadBaseline() { + if (!fs.existsSync(BASELINE_PATH)) return {}; + return JSON.parse(fs.readFileSync(BASELINE_PATH, "utf8")); +} + +function writeBaseline(counts) { + fs.writeFileSync(BASELINE_PATH, JSON.stringify(counts, null, 2) + "\n"); +} + +function main() { + if (!fs.existsSync(TSCONFIG)) { + process.stderr.write(`[open-sse-typecheck] FAIL — tsconfig not found at ${TSCONFIG}\n`); + process.exit(2); + } + + console.log("[open-sse-typecheck] Running tsc scoped to open-sse/ workspace…"); + const stdout = runTsc(); + const live = parseTscOutput(stdout); + const baseline = loadBaseline(); + const { regressions, improvements } = diffAgainstBaseline(live, baseline); + + const liveErrorCount = Object.values(live).reduce( + (sum, codes) => sum + Object.values(codes).reduce((s, c) => s + c, 0), + 0 + ); + console.log(`openSseTypecheckErrors=${liveErrorCount}`); + + if (UPDATE) { + writeBaseline(live); + console.log(`[open-sse-typecheck] baseline rewritten (${liveErrorCount} errors frozen).`); + process.exit(0); + } + + if (improvements.length > 0) { + console.log( + `[open-sse-typecheck] ${improvements.length} baselined error(s) no longer present ` + + `— run 'node scripts/check/check-open-sse-typecheck.mjs --update' to ratchet the baseline down:\n` + + improvements + .map((i) => ` - ${i.file} ${i.code} (baseline ${i.baselineCount} -> live ${i.liveCount})`) + .join("\n") + ); + } + + if (regressions.length > 0) { + process.stderr.write( + `[open-sse-typecheck] FAIL — ${regressions.length} new/regressed TypeScript error(s) ` + + `under open-sse/ workspace not covered by the frozen baseline:\n` + + regressions + .map((r) => ` ✗ ${r.file} ${r.code} (baseline ${r.baselineCount}, live ${r.liveCount})`) + .join("\n") + + `\n\nIf this is a genuine new open-sse type error (e.g. an undeclared @/ alias),\n` + + `fix it in the source, not in the baseline.\n` + + `If it's pre-existing type looseness you're intentionally not fixing in this PR,\n` + + `do NOT widen the baseline for new regressions — that defeats the gate.\n` + ); + process.exit(1); + } + + console.log( + `[open-sse-typecheck] OK — ${liveErrorCount} pre-existing error(s), all within frozen baseline.` + ); + process.exit(0); +} + +if (import.meta.url === pathToFileURL(process.argv[1] || "").href) { + main(); +} diff --git a/scripts/check/check-rtl-ratchet.mjs b/scripts/check/check-rtl-ratchet.mjs new file mode 100644 index 0000000000..0a3f21ab54 --- /dev/null +++ b/scripts/check/check-rtl-ratchet.mjs @@ -0,0 +1,133 @@ +#!/usr/bin/env node +// scripts/check/check-rtl-ratchet.mjs +// RTL layout ratchet. Counts physical directional Tailwind classes in TSX. +// +// tests/unit/ui/rtl-logical-classes.test.tsx pins four high-impact components +// and says so: "#3541 (partial, core layout)". This measures the rest, so the +// remaining backlog cannot grow while it is worked through. +// +// Physical classes (ml/mr/pl/pr/left/right/text-left/border-l/rounded-l ...) do +// not mirror under dir=rtl. Tailwind v4 logical utilities (ms/me/ps/pe/start/ +// end/text-start/border-s/rounded-s) do. +// +// Output: rtlPhysicalClasses=N +// +// Advisory by default (exit 0). With --ratchet, reads +// metrics.rtlPhysicalClasses.value from config/quality/quality-baseline.json and +// exits 1 only when the measured count is HIGHER (direction: down). +// +// node scripts/check/check-rtl-ratchet.mjs +// node scripts/check/check-rtl-ratchet.mjs --list # show the worst files +// node scripts/check/check-rtl-ratchet.mjs --ratchet # blocking + +import fs from "node:fs"; +import path from "node:path"; +import { pathToFileURL } from "node:url"; + +const ROOT = process.cwd(); +const QUIET = process.argv.includes("--quiet"); +const LIST = process.argv.includes("--list"); +const RATCHET = process.argv.includes("--ratchet"); +const BASELINE_PATH = path.join(ROOT, "config/quality/quality-baseline.json"); +const SCAN_DIRS = ["src", "electron"]; +const SKIP = new Set(["node_modules", ".next", "dist", "build", "out", "coverage", ".git"]); + +// Physical utilities that govern placement and do not mirror under dir=rtl. +const PHYSICAL = + /(? 0) { + perFile.push({ file: path.relative(ROOT, file), count: n }); + total += n; + } + } + } + perFile.sort((a, b) => b.count - a.count); + return { total, perFile }; +} + +function main() { + const { total, perFile } = measure(); + console.log(`rtlPhysicalClasses=${total}`); + + if (LIST) { + for (const { file, count } of perFile.slice(0, 25)) { + console.log(` ${String(count).padStart(4)} ${file}`); + } + console.log(` ${perFile.length} file(s) affected`); + } + + if (!RATCHET) return 0; + + let baseline; + try { + const json = JSON.parse(fs.readFileSync(BASELINE_PATH, "utf-8")); + baseline = json?.metrics?.rtlPhysicalClasses?.value; + } catch (err) { + // A measurement failure must not block, only a measured regression. + if (!QUIET) console.log(`rtlPhysicalClasses=SKIP reason=baseline-unreadable (${err.message})`); + return 0; + } + if (typeof baseline !== "number") { + if (!QUIET) console.log("rtlPhysicalClasses=SKIP reason=baseline-absent"); + return 0; + } + if (total > baseline) { + console.error( + `RTL ratchet: ${total} physical directional classes, baseline ${baseline}. ` + + `Use logical utilities (ms/me/ps/pe/start/end/text-start) so the layout ` + + `mirrors under dir=rtl, or re-baseline with justification.`, + ); + return 1; + } + if (!QUIET) console.log(`rtlPhysicalClasses OK (${total} <= ${baseline})`); + return 0; +} + +// Only run when invoked directly, so countViolations can be unit tested. +if (import.meta.url === pathToFileURL(process.argv[1] ?? "").href) { + process.exit(main()); +} diff --git a/scripts/check/check-test-discovery.mjs b/scripts/check/check-test-discovery.mjs index e695ff252c..09ce751efe 100644 --- a/scripts/check/check-test-discovery.mjs +++ b/scripts/check/check-test-discovery.mjs @@ -107,7 +107,13 @@ export const COLLECTORS = [ glob: "open-sse/services/__tests__/antigravity-quota-family.test.ts", sources: ["vitest.mcp.config.ts"], }, + // #8890 landed this suite here without wiring a runner, so it had never run once. + { + glob: "open-sse/services/__tests__/fail-fast-concurrency-gate.test.ts", + sources: ["vitest.mcp.config.ts"], + }, { glob: "tests/unit/autoCombo/**/*.test.ts", sources: ["vitest.mcp.config.ts"] }, + { glob: "src/lib/memory/__tests__/generic-backend.test.ts", sources: ["vitest.mcp.config.ts"] }, { glob: "tests/unit/encryption.spec.ts", sources: ["vitest.mcp.config.ts"] }, { glob: "src/shared/components/**/*.test.tsx", sources: ["vitest.mcp.config.ts"] }, { glob: "src/shared/hooks/__tests__/**/*.test.tsx", sources: ["vitest.mcp.config.ts"] }, diff --git a/scripts/check/check-test-masking.mjs b/scripts/check/check-test-masking.mjs index 0f94b55d6a..9bb8832586 100644 --- a/scripts/check/check-test-masking.mjs +++ b/scripts/check/check-test-masking.mjs @@ -251,7 +251,7 @@ export function findReimplementedConditions(prodSources, testSource, testImports * (filtro D do git diff --diff-filter=MDR). * * `deletionAllowlist` (`_deletedWithReplacement` no test-masking-allowlist.json) - * isenta uma deleção de duas formas, cada uma com sua própria verificação: + * isenta uma deleção de três formas, cada uma com sua própria verificação: * 1. `replacement` (path string) — o substituto declarado existe no HEAD e é * ele próprio um arquivo de teste — o caso "reescrito em outro path sem * rename detectável" (conteúdo novo demais para o -M do git). @@ -259,12 +259,19 @@ export function findReimplementedConditions(prodSources, testSource, testImports * os arquivos de produção listados precisam estar ausentes no HEAD (sem * substituto porque não há mais código a testar). Usar apenas quando a * remoção do código-fonte está confirmada na mesma commit/PR. + * 3. `strayFromCommit` (hash) + `reason` (não-vazio) — o arquivo entrou no + * repositório POR ACIDENTE no commit declarado (ex.: um commit de docs + * que varreu artefatos de worktree de outra sessão, caso f4e93f339d) e a + * deleção devolve o arquivo ao seu fluxo dono (um PR/issue aberto). O + * gate verifica via git que o commit declarado é exatamente o que ADICIONOU + * o arquivo; o `reason` deve nomear o PR/issue dono para a revisão humana. * Qualquer entrada cuja condição declarada não se verifique continua flagada. */ export function evaluateDeletedFiles( deletedPaths, deletionAllowlist = {}, - fileExists = fs.existsSync + fileExists = fs.existsSync, + addedByCommit = lookupAddedByCommit ) { const flags = []; for (const f of deletedPaths) { @@ -285,6 +292,21 @@ export function evaluateDeletedFiles( ); continue; } + if (entry && typeof entry.strayFromCommit === "string" && entry.strayFromCommit.trim()) { + if (typeof entry.reason !== "string" || !entry.reason.trim()) { + flags.push( + `${f}: deleção allowlistada como stray mas sem \`reason\` — nomeie o PR/issue dono do arquivo` + ); + continue; + } + const actual = addedByCommit(f); + const declared = entry.strayFromCommit.trim(); + if (actual && (actual === declared || actual.startsWith(declared))) continue; + flags.push( + `${f}: deleção allowlistada como stray de ${declared} mas o commit que adicionou o arquivo é ${actual ?? "desconhecido"}` + ); + continue; + } flags.push( `${f}: arquivo de teste deletado — revisão humana obrigatória (mascaramento alto-sinal)` ); @@ -292,6 +314,26 @@ export function evaluateDeletedFiles( return flags; } +/** + * (subcheck 1, forma 3) Hash COMPLETO do commit que adicionou `path` (o add + * mais recente — cobre o caso deletado-e-readicionado). `null` quando o git + * não conhece o path. + */ +function lookupAddedByCommit(path) { + try { + const out = execFileSync("git", ["log", "--diff-filter=A", "--format=%H", "--", path], { + encoding: "utf8", + }); + const hashes = out + .split("\n") + .map((s) => s.trim()) + .filter(Boolean); + return hashes.length ? hashes[0] : null; + } catch { + return null; + } +} + /** * Parse `git diff --name-status -M --diff-filter=DR` output, separating TRUE * test-file deletions ("D\tpath") from RENAMES ("R\told\tnew"). diff --git a/scripts/ci/resolve-docker-publish-version.sh b/scripts/ci/resolve-docker-publish-version.sh new file mode 100644 index 0000000000..a9844e76a7 --- /dev/null +++ b/scripts/ci/resolve-docker-publish-version.sh @@ -0,0 +1,60 @@ +#!/usr/bin/env bash +# Resolve the Docker tag/channel for a docker-publish workflow event. +# +# Usage: +# resolve-docker-publish-version.sh EVENT_NAME REF_TYPE REF_NAME [INPUT_VERSION] [DEFAULT_BRANCH] +# +# Outputs exactly one safe tag string: +# - workflow_dispatch: requested version without a leading v +# - push tag: tag without a leading v +# - push main: main +# - push to the current default release/v* branch: next +# - release: release tag without a leading v +set -euo pipefail + +EVENT_NAME="${1:?event name required}" +REF_TYPE="${2:-}" +REF_NAME="${3:-}" +INPUT_VERSION="${4:-}" +DEFAULT_BRANCH="${5:-}" + +case "$EVENT_NAME" in + workflow_dispatch) + VERSION="${INPUT_VERSION#v}" + ;; + push) + if [ "$REF_TYPE" = "tag" ]; then + VERSION="${REF_NAME#v}" + else + case "$REF_NAME" in + main) + VERSION="main" + ;; + release/v*) + if [ -z "$DEFAULT_BRANCH" ] || [ "$REF_NAME" != "$DEFAULT_BRANCH" ]; then + echo "Refusing to publish next from non-default release branch: $REF_NAME" >&2 + exit 1 + fi + VERSION="next" + ;; + *) + echo "Unsupported Docker publish branch: $REF_NAME" >&2 + exit 1 + ;; + esac + fi + ;; + release) + VERSION="${REF_NAME#v}" + ;; + *) + VERSION="${REF_NAME#v}" + ;; +esac + +if ! printf '%s' "$VERSION" | grep -qE '^[A-Za-z0-9._-]+$'; then + echo "Refusing to use unsafe VERSION value: $VERSION" >&2 + exit 1 +fi + +printf '%s\n' "$VERSION" diff --git a/scripts/ci/should-promote-latest.sh b/scripts/ci/should-promote-latest.sh index 12704b7962..e118086c88 100755 --- a/scripts/ci/should-promote-latest.sh +++ b/scripts/ci/should-promote-latest.sh @@ -22,11 +22,13 @@ set -euo pipefail VERSION="${1:?version required}" -# A pre-release VERSION must never grab :latest (callers already short-circuit -# this, but stay safe as a standalone unit). -case "$VERSION" in - *-*) echo "false"; exit 0 ;; -esac +# Only a stable x.y.z release may ever grab :latest. Floating channels such as +# `main` and `next`, plus every pre-release identifier, fail closed here even if +# a caller forgets to short-circuit them first. +if ! printf '%s' "$VERSION" | grep -qE '^[0-9]+\.[0-9]+\.[0-9]+$'; then + echo "false" + exit 0 +fi # Build the stable candidate set: incoming tags (v-stripped, pre-releases # dropped) plus VERSION itself, then pick the numerically highest. diff --git a/scripts/dev/standalone-server-ws.mjs b/scripts/dev/standalone-server-ws.mjs index 439a9c5171..ee5f0a1bec 100644 --- a/scripts/dev/standalone-server-ws.mjs +++ b/scripts/dev/standalone-server-ws.mjs @@ -3,7 +3,7 @@ import net from "node:net"; import { randomUUID } from "node:crypto"; import { createResponsesWsProxy } from "./responses-ws-proxy.mjs"; import { ensurePeerStampToken, wrapRequestListenerWithPeerStamp } from "./peer-stamp.mjs"; -import { maybeHandleWebdav } from "./webdav-handler.mjs"; +import { maybeHandleWebdav, WEBDAV_PREFIX } from "./webdav-handler.mjs"; import methodGuard from "./http-method-guard.cjs"; import headResponseGuard from "./head-response-guard.cjs"; import { resolveTlsOptions, createServerListener } from "./tls-options.mjs"; @@ -122,14 +122,20 @@ function wrapUpgradeListener(server, listener) { * Returns true if the request was handled; the wrapped listener is never called. */ function wrapRequestListenerWithWebdav(listener) { - return async function webdavAwareRequestHandler(req, res) { - try { - const handled = await maybeHandleWebdav(req, res); - if (handled) return; - } catch { - // Never block a request on WebDAV errors — fall through to Next + return function webdavAwareRequestHandler(req, res) { + if (!(req.url || "").startsWith(WEBDAV_PREFIX)) { + return listener.call(this, req, res); } - return listener.call(this, req, res); + const self = this; + (async () => { + try { + const handled = await maybeHandleWebdav(req, res); + if (handled) return; + } catch { + // Never block a request on WebDAV errors — fall through to Next + } + return listener.call(self, req, res); + })(); }; } diff --git a/scripts/devin-bridge/build b/scripts/devin-bridge/build new file mode 100755 index 0000000000..abb309d453 --- /dev/null +++ b/scripts/devin-bridge/build @@ -0,0 +1,5 @@ +#!/usr/bin/env bash +set -euo pipefail +source "$(dirname "$0")/common" +bridge_prepare_sandbox +docker compose -f "$BRIDGE_COMPOSE" --profile offline build diff --git a/scripts/devin-bridge/clean b/scripts/devin-bridge/clean new file mode 100755 index 0000000000..1fc195aadb --- /dev/null +++ b/scripts/devin-bridge/clean @@ -0,0 +1,12 @@ +#!/usr/bin/env bash +set -euo pipefail +source "$(dirname "$0")/common" +if [[ "${1:-}" == "--all" ]]; then + docker compose -f "$BRIDGE_COMPOSE" --profile offline --profile live-devin down \ + --remove-orphans --volumes + printf 'Containers, networks, and bridge-owned named volumes were removed.\n' +else + docker compose -f "$BRIDGE_COMPOSE" --profile offline --profile live-devin down \ + --remove-orphans + printf 'Containers and networks stopped. Named auth/config volumes were preserved; use --all to remove them.\n' +fi diff --git a/scripts/devin-bridge/common b/scripts/devin-bridge/common new file mode 100755 index 0000000000..b39519dad5 --- /dev/null +++ b/scripts/devin-bridge/common @@ -0,0 +1,131 @@ +#!/usr/bin/env bash +set -euo pipefail +BRIDGE_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)" +BRIDGE_COMPOSE="$BRIDGE_ROOT/docker/devin-bridge/compose.yml" +BRIDGE_SANDBOX="$BRIDGE_ROOT/.sandbox" +BRIDGE_GUARD_AUDIT_ROOT="$BRIDGE_SANDBOX/guard-audit" +BRIDGE_CLAUDE_AUDIT="$BRIDGE_GUARD_AUDIT_ROOT/claude/egress.jsonl" +BRIDGE_DEVIN_AUDIT="$BRIDGE_GUARD_AUDIT_ROOT/devin/egress.jsonl" +BRIDGE_RUNTIME_POLICY="$BRIDGE_ROOT/scripts/devin-bridge/runtime-policy.mjs" +bridge_prepare_sandbox() { + mkdir -p "$BRIDGE_SANDBOX/home" "$BRIDGE_SANDBOX/test-data" \ + "$BRIDGE_SANDBOX/e2e-workspace" "$BRIDGE_SANDBOX/live-workspace" \ + "$BRIDGE_SANDBOX/evidence" "$BRIDGE_GUARD_AUDIT_ROOT/claude" \ + "$BRIDGE_GUARD_AUDIT_ROOT/devin" + chmod 0777 "$BRIDGE_SANDBOX/e2e-workspace" "$BRIDGE_SANDBOX/live-workspace" \ + "$BRIDGE_SANDBOX/evidence" + chmod 01777 "$BRIDGE_GUARD_AUDIT_ROOT/claude" "$BRIDGE_GUARD_AUDIT_ROOT/devin" +} +bridge_reset_guard_audit() { + local audit_path="$1" + local audit_dir + local temp_path + bridge_prepare_sandbox + audit_dir="$(dirname "$audit_path")" + temp_path="$(mktemp "$audit_dir/.egress.jsonl.XXXXXX")" + chmod 0666 "$temp_path" + mv -f "$temp_path" "$audit_path" +} +bridge_reset_claude_egress_audit() { + bridge_reset_guard_audit "$BRIDGE_CLAUDE_AUDIT" +} +bridge_reset_devin_egress_audit() { + bridge_reset_guard_audit "$BRIDGE_DEVIN_AUDIT" +} +bridge_reset_e2e_fixture() { + bridge_prepare_sandbox + cp -R "$BRIDGE_ROOT/tests/fixtures/devin-bridge/e2e-workspace/." \ + "$BRIDGE_SANDBOX/e2e-workspace/" + rm -f "$BRIDGE_SANDBOX/e2e-workspace/.e2e-hook.log" \ + "$BRIDGE_SANDBOX/evidence/claude-stream.jsonl" \ + "$BRIDGE_SANDBOX/evidence/mock-acp.jsonl" + bridge_reset_claude_egress_audit +} +bridge_reset_live_fixture() { + bridge_prepare_sandbox + cp -R "$BRIDGE_ROOT/tests/fixtures/devin-bridge/e2e-workspace/." \ + "$BRIDGE_SANDBOX/live-workspace/" + rm -f "$BRIDGE_SANDBOX/live-workspace/.e2e-hook.log" \ + "$BRIDGE_SANDBOX/evidence/live-analysis.jsonl" \ + "$BRIDGE_SANDBOX/evidence/live-fix.jsonl" \ + "$BRIDGE_SANDBOX/evidence/live-command.jsonl" \ + "$BRIDGE_SANDBOX/evidence/live-models.json" \ + "$BRIDGE_SANDBOX/evidence/egress.jsonl" + bridge_reset_claude_egress_audit + bridge_reset_devin_egress_audit +} +bridge_test_env() { + bridge_prepare_sandbox + env HOME="$BRIDGE_SANDBOX/home" DATA_DIR="$BRIDGE_SANDBOX/test-data" SQLITE_FILE="$BRIDGE_SANDBOX/test-data/storage.sqlite" DEVIN_AGENTIC_HOME="$BRIDGE_SANDBOX/home" "$@" +} + +bridge_run_devin() { + docker compose -f "$BRIDGE_COMPOSE" --profile live-devin run --rm --no-deps \ + omniroute-live sh -ceu ' + trusted_proxy=http://network-guard:8080 + test "${DEVIN_BRIDGE_PROXY_URL:-}" = "$trusted_proxy" + export HTTP_PROXY="$trusted_proxy" HTTPS_PROXY="$trusted_proxy" + unset ALL_PROXY NO_PROXY http_proxy https_proxy all_proxy no_proxy + exec devin "$@" + ' bridge-devin "$@" +} + +bridge_assert_devin_auth_status() { + local exit_status="$1" + local output="$2" + printf '%s' "$output" | node --input-type=module -e ' + import { pathToFileURL } from "node:url"; + import fs from "node:fs"; + const policy = await import(pathToFileURL(process.argv[1])); + const result = policy.validateDevinAuthStatus(process.argv[2], fs.readFileSync(0, "utf8")); + if (!result.ok) throw new Error(result.error); + ' "$BRIDGE_RUNTIME_POLICY" "$exit_status" +} + +bridge_check_devin_auth() { + local output + local exit_status + set +e + output="$(bridge_run_devin auth status 2>&1)" + exit_status=$? + set -e + bridge_assert_devin_auth_status "$exit_status" "$output" + printf 'PASS: Devin authentication confirmed\n' +} + +bridge_assert_zero_claude_egress() { + local audit_path="$1" + bridge_validate_guard_audit claude-zero "$audit_path" +} + +bridge_assert_claude_guard_denials() { + local audit_path="$1" + bridge_validate_guard_audit claude-denials "$audit_path" +} + +bridge_assert_devin_guard_audit() { + local audit_path="$1" + bridge_validate_guard_audit devin-allowed "$audit_path" +} + +bridge_validate_guard_audit() { + local kind="$1" + local audit_path="$2" + node --input-type=module -e ' + import { pathToFileURL } from "node:url"; + const policy = await import(pathToFileURL(process.argv[1])); + policy.validateAuditFile(process.argv[2], process.argv[3], process.argv[4]); + ' "$BRIDGE_RUNTIME_POLICY" "$kind" "$audit_path" "$(id -u)" +} + +bridge_export_guard_audit() { + local audit_path="$1" + local evidence_name="$2" + cp "$audit_path" "$BRIDGE_SANDBOX/evidence/$evidence_name" + chmod 0644 "$BRIDGE_SANDBOX/evidence/$evidence_name" +} + +bridge_cleanup_compose() { + docker compose -f "$BRIDGE_COMPOSE" --profile offline --profile live-devin \ + down --remove-orphans >/dev/null 2>&1 || true +} diff --git a/scripts/devin-bridge/launch b/scripts/devin-bridge/launch new file mode 100755 index 0000000000..de0515def8 --- /dev/null +++ b/scripts/devin-bridge/launch @@ -0,0 +1,28 @@ +#!/usr/bin/env bash +set -euo pipefail +source "$(dirname "$0")/common" +trap bridge_cleanup_compose EXIT +bridge_cleanup_compose +bridge_prepare_sandbox +"$(dirname "$0")/verify-anthropic-isolation" +bridge_reset_claude_egress_audit +bridge_reset_devin_egress_audit +docker compose -f "$BRIDGE_COMPOSE" --profile live-devin up -d --wait network-guard claude-egress-guard +bridge_check_devin_auth +bridge_run_devin models list --format json >"$BRIDGE_SANDBOX/evidence/live-models.json" +devin_model="$(node --import tsx/esm "$BRIDGE_ROOT/scripts/devin-bridge/select-live-model.mjs" \ + <"$BRIDGE_SANDBOX/evidence/live-models.json")" +export DEVIN_BRIDGE_MODEL="devin-cli-agentic/$devin_model" +export DEVIN_BRIDGE_SONNET_MODEL="${DEVIN_BRIDGE_SONNET_MODEL:-$DEVIN_BRIDGE_MODEL}" +export DEVIN_BRIDGE_OPUS_MODEL="${DEVIN_BRIDGE_OPUS_MODEL:-$DEVIN_BRIDGE_MODEL}" +export DEVIN_BRIDGE_HAIKU_MODEL="${DEVIN_BRIDGE_HAIKU_MODEL:-$DEVIN_BRIDGE_MODEL}" +export DEVIN_BRIDGE_SUBAGENT_MODEL="${DEVIN_BRIDGE_SUBAGENT_MODEL:-$DEVIN_BRIDGE_MODEL}" +docker compose -f "$BRIDGE_COMPOSE" --profile live-devin up -d --wait omniroute-live +docker compose -f "$BRIDGE_COMPOSE" --profile live-devin run --rm --no-deps \ + claude-live claude +bridge_cleanup_compose +bridge_assert_devin_guard_audit "$BRIDGE_DEVIN_AUDIT" +bridge_assert_zero_claude_egress "$BRIDGE_CLAUDE_AUDIT" +bridge_export_guard_audit "$BRIDGE_DEVIN_AUDIT" egress.jsonl +bridge_export_guard_audit "$BRIDGE_CLAUDE_AUDIT" claude-egress.jsonl +trap - EXIT diff --git a/scripts/devin-bridge/login-devin b/scripts/devin-bridge/login-devin new file mode 100755 index 0000000000..0489080784 --- /dev/null +++ b/scripts/devin-bridge/login-devin @@ -0,0 +1,13 @@ +#!/usr/bin/env bash +set -euo pipefail +source "$(dirname "$0")/common" +[[ "${ENABLE_LIVE_DEVIN_TESTS:-}" == 1 ]] || { echo 'Set ENABLE_LIVE_DEVIN_TESTS=1' >&2; exit 1; } +trap bridge_cleanup_compose EXIT +bridge_cleanup_compose +bridge_prepare_sandbox +bridge_reset_devin_egress_audit +docker compose -f "$BRIDGE_COMPOSE" --profile live-devin up -d --wait network-guard +bridge_run_devin auth login --force-manual-token-flow +bridge_cleanup_compose +trap - EXIT +exec env ENABLE_LIVE_DEVIN_TESTS=1 "$(dirname "$0")/test-live-devin" diff --git a/scripts/devin-bridge/runtime-policy.mjs b/scripts/devin-bridge/runtime-policy.mjs new file mode 100644 index 0000000000..73a287d32b --- /dev/null +++ b/scripts/devin-bridge/runtime-policy.mjs @@ -0,0 +1,111 @@ +import fs from "node:fs"; + +const ALLOWED_DEVIN_SUFFIXES = [".devin.ai", ".cognition.ai"]; +const ALLOWED_DEVIN_EXACT = ["server.codeium.com", "unleash.codeium.com"]; + +function normalizedHostname(value) { + return String(value || "") + .trim() + .toLowerCase() + .replace(/\.$/, ""); +} + +export function isAllowedDevinAuditHostname(hostname) { + const value = normalizedHostname(hostname); + return ( + ALLOWED_DEVIN_EXACT.includes(value) || + ALLOWED_DEVIN_SUFFIXES.some((suffix) => value === suffix.slice(1) || value.endsWith(suffix)) + ); +} + +export function validateDevinAuthStatus(exitStatus, output) { + if (Number(exitStatus) !== 0) return { ok: false, error: "auth status command failed" }; + const lines = String(output) + .split(/\r?\n/) + .map((line) => line.trim()); + if (!lines.some((line) => /^Logged in \(via Devin\)\.?$/.test(line))) { + return { ok: false, error: "auth status did not confirm login" }; + } + if (lines.some((line) => /failed to fetch from server/i.test(line))) { + return { ok: false, error: "auth status could not confirm server access" }; + } + return { ok: true }; +} + +export function parseAuditEntries(text) { + const lines = String(text) + .split(/\r?\n/) + .filter((line) => line.trim().length > 0); + return lines.map((line) => JSON.parse(line)); +} + +export function validateZeroClaudeEgress(text) { + if (String(text).length !== 0) { + return { ok: false, error: "Claude attempted external egress during the real run" }; + } + return { ok: true }; +} + +export function validateClaudeGuardDenials(text) { + const entries = parseAuditEntries(text); + if (!entries.length) return { ok: false, error: "Claude egress audit has no records" }; + if (entries.some((entry) => entry.decision !== "deny")) { + return { ok: false, error: "Claude egress audit contains a non-deny decision" }; + } + for (const hostname of ["api.anthropic.com", "claude.ai"]) { + if (!entries.some((entry) => entry.hostname === hostname && entry.decision === "deny")) { + return { ok: false, error: `Claude egress audit is missing deny for ${hostname}` }; + } + } + return { ok: true }; +} + +export function validateDevinGuardAudit(text) { + const entries = parseAuditEntries(text); + if (!entries.length) return { ok: false, error: "Devin egress audit has no records" }; + let sawAllowedDevinRequest = false; + for (const entry of entries) { + if (entry.decision === "deny") { + if (/anthropic|claude\.ai/i.test(normalizedHostname(entry.hostname))) { + return { ok: false, error: `forbidden Devin egress attempt: ${String(entry.hostname)}` }; + } + continue; + } + if (entry.decision !== "allow" || !isAllowedDevinAuditHostname(entry.hostname)) { + return { ok: false, error: `unexpected Devin egress record: ${String(entry.hostname)}` }; + } + sawAllowedDevinRequest = true; + } + return sawAllowedDevinRequest + ? { ok: true } + : { ok: false, error: "Devin egress audit has no approved request" }; +} + +export function validateAuditFileStat(stat, expectedUid) { + if (!stat || !stat.isFile() || stat.isSymbolicLink()) return "audit path is not a regular file"; + if (stat.nlink !== 1) return "audit file link count is not one"; + if (stat.uid !== Number(expectedUid)) return "audit file owner mismatch"; + if ((stat.mode & 0o777) !== 0o666) return "audit file mode mismatch"; + return null; +} + +export function readValidatedAuditFile(path, expectedUid) { + const stat = fs.lstatSync(path); + const statError = validateAuditFileStat(stat, expectedUid); + if (statError) throw new Error(statError); + return fs.readFileSync(path, "utf8"); +} + +export function validateAuditFile(kind, path, expectedUid) { + const text = readValidatedAuditFile(path, expectedUid); + const result = + kind === "claude-zero" + ? validateZeroClaudeEgress(text) + : kind === "claude-denials" + ? validateClaudeGuardDenials(text) + : kind === "devin-allowed" + ? validateDevinGuardAudit(text) + : { ok: false, error: `unknown audit validation kind: ${kind}` }; + if (!result.ok) throw new Error(result.error); + return text; +} diff --git a/scripts/devin-bridge/select-live-model.mjs b/scripts/devin-bridge/select-live-model.mjs new file mode 100644 index 0000000000..ebe38819d0 --- /dev/null +++ b/scripts/devin-bridge/select-live-model.mjs @@ -0,0 +1,101 @@ +#!/usr/bin/env node +import fs from "node:fs"; +import { pathToFileURL } from "node:url"; +import { DEVIN_MODEL_CATALOG } from "../../open-sse/config/providers/registry/devin/catalog.ts"; + +const candidateFields = new Set([ + "model_id", + "modelId", + "model_uid", + "modelUid", + "family_uid", + "familyUid", +]); + +function normalizeModelId(value) { + return value + .trim() + .toLowerCase() + .replace(/[^a-z0-9]+/g, "-") + .replace(/^-+|-+$/g, ""); +} + +function collect(value, candidates) { + if (Array.isArray(value)) { + value.forEach((item) => collect(item, candidates)); + return; + } + if (!value || typeof value !== "object") return; + for (const [key, nested] of Object.entries(value)) { + if ( + typeof nested === "string" && + candidateFields.has(key) && + /^[a-z0-9][a-z0-9._/-]*$/i.test(nested) + ) { + candidates.push(nested); + } + collect(nested, candidates); + } +} + +export function selectLiveModel( + document, + environment = process.env, + catalog = DEVIN_MODEL_CATALOG +) { + const candidates = []; + collect(document, candidates); + const unique = [...new Set(candidates)]; + const normalizedCatalog = new Map(); + for (const entry of catalog) { + const normalized = normalizeModelId(entry.id); + const existing = normalizedCatalog.get(normalized) || []; + existing.push(entry.id); + normalizedCatalog.set(normalized, existing); + } + for (const [normalized, ids] of normalizedCatalog) { + if (ids.length > 1) { + throw new Error( + `Ambiguous OmniRoute catalog normalization for ${normalized}: ${ids.join(", ")}` + ); + } + } + const catalogIds = new Set(catalog.map((entry) => entry.id)); + const available = [ + ...new Set( + unique + .map((candidate) => normalizeModelId(candidate)) + .filter((candidate) => normalizedCatalog.has(candidate)) + ), + ]; + + for (const [name, configured] of [ + ["DEVIN_BRIDGE_SONNET_MODEL", environment.DEVIN_BRIDGE_SONNET_MODEL], + ["DEVIN_BRIDGE_OPUS_MODEL", environment.DEVIN_BRIDGE_OPUS_MODEL], + ["DEVIN_BRIDGE_HAIKU_MODEL", environment.DEVIN_BRIDGE_HAIKU_MODEL], + ["DEVIN_BRIDGE_SUBAGENT_MODEL", environment.DEVIN_BRIDGE_SUBAGENT_MODEL], + ]) { + if (!configured) continue; + const prefix = "devin-cli-agentic/"; + const modelId = configured.startsWith(prefix) ? configured.slice(prefix.length) : ""; + if (!modelId || !catalogIds.has(modelId) || !available.includes(modelId)) { + throw new Error(`${name} is not a model returned by Devin and present in OmniRoute`); + } + } + + const selected = + available.find((candidate) => candidate === "swe-1-7-lightning") || + available.find((candidate) => candidate === "swe-1-7") || + available.find((candidate) => /swe|claude|gpt|gemini/i.test(candidate)) || + available[0]; + + if (!selected) { + throw new Error("Devin returned no model identifier present in OmniRoute's Devin catalog"); + } + return selected; +} + +if (process.argv[1] && pathToFileURL(process.argv[1]).href === import.meta.url) { + const document = JSON.parse(fs.readFileSync(0, "utf8")); + process.stdout.write(selectLiveModel(document)); +} diff --git a/scripts/devin-bridge/test-contract b/scripts/devin-bridge/test-contract new file mode 100755 index 0000000000..91e49448d5 --- /dev/null +++ b/scripts/devin-bridge/test-contract @@ -0,0 +1,24 @@ +#!/usr/bin/env bash +set -euo pipefail +source "$(dirname "$0")/common" +bridge_prepare_sandbox +rm -f "$BRIDGE_SANDBOX/evidence/mock-acp.jsonl" +"$(dirname "$0")/verify-anthropic-isolation" --static +docker compose -f "$BRIDGE_COMPOSE" --profile offline down --remove-orphans +docker compose -f "$BRIDGE_COMPOSE" --profile offline up --abort-on-container-exit \ + --exit-code-from contract contract +node -e ' + const fs = require("node:fs"); + const rows = fs.readFileSync(process.argv[1], "utf8").trim().split("\n").map(JSON.parse); + const repairRows = rows.filter((row) => row.scenario === "narrative-repair"); + if ( + rows.length !== 7 || + rows.some((row) => row.provider !== "devin-cli-agentic") || + repairRows.length !== 2 || + repairRows[0].stage !== "initial" || + repairRows[1].stage !== "repair" + ) { + throw new Error("wire contract observed a missing or non-Devin provider"); + } +' "$BRIDGE_SANDBOX/evidence/mock-acp.jsonl" +printf 'PASS: bridge wire contract suite completed without provider fallback\n' diff --git a/scripts/devin-bridge/test-e2e-mock b/scripts/devin-bridge/test-e2e-mock new file mode 100755 index 0000000000..43db057fca --- /dev/null +++ b/scripts/devin-bridge/test-e2e-mock @@ -0,0 +1,16 @@ +#!/usr/bin/env bash +set -euo pipefail +source "$(dirname "$0")/common" +trap bridge_cleanup_compose EXIT +bridge_cleanup_compose +bridge_reset_e2e_fixture +"$(dirname "$0")/verify-anthropic-isolation" --static +docker compose -f "$BRIDGE_COMPOSE" --profile offline up --abort-on-container-exit \ + --exit-code-from claude claude +grep -q '"action":"final"' "$BRIDGE_SANDBOX/evidence/mock-acp.jsonl" +grep -q 'BRIDGE_E2E_COMPLETE' "$BRIDGE_SANDBOX/evidence/claude-stream.jsonl" +bridge_cleanup_compose +bridge_assert_zero_claude_egress "$BRIDGE_CLAUDE_AUDIT" +bridge_export_guard_audit "$BRIDGE_CLAUDE_AUDIT" claude-egress.jsonl +trap - EXIT +printf 'PASS: real Claude Code completed the offline agentic fixture\n' diff --git a/scripts/devin-bridge/test-live-devin b/scripts/devin-bridge/test-live-devin new file mode 100755 index 0000000000..e0458eb1a0 --- /dev/null +++ b/scripts/devin-bridge/test-live-devin @@ -0,0 +1,37 @@ +#!/usr/bin/env bash +set -euo pipefail +source "$(dirname "$0")/common" +[[ "${ENABLE_LIVE_DEVIN_TESTS:-}" == 1 ]] || { echo 'Set ENABLE_LIVE_DEVIN_TESTS=1' >&2; exit 1; } +trap bridge_cleanup_compose EXIT +bridge_cleanup_compose +bridge_reset_live_fixture +"$(dirname "$0")/verify-anthropic-isolation" --static +docker compose -f "$BRIDGE_COMPOSE" --profile live-devin up -d --wait network-guard +bridge_check_devin_auth +models_file="$BRIDGE_SANDBOX/evidence/live-models.json" +if [[ -n "${DEVIN_BRIDGE_DISCOVERED_MODEL:-}" ]]; then + devin_model="$DEVIN_BRIDGE_DISCOVERED_MODEL" +else + for attempt in 1 2 3; do + if bridge_run_devin models list --format json >"$models_file"; then + break + fi + [[ "$attempt" == 3 ]] && exit 1 + sleep 1 + done + devin_model="$(node --import tsx/esm "$BRIDGE_ROOT/scripts/devin-bridge/select-live-model.mjs" \ + <"$models_file")" +fi +export DEVIN_BRIDGE_MODEL="devin-cli-agentic/$devin_model" +export DEVIN_BRIDGE_SONNET_MODEL="$DEVIN_BRIDGE_MODEL" +export DEVIN_BRIDGE_OPUS_MODEL="$DEVIN_BRIDGE_MODEL" +export DEVIN_BRIDGE_HAIKU_MODEL="$DEVIN_BRIDGE_MODEL" +export DEVIN_BRIDGE_SUBAGENT_MODEL="$DEVIN_BRIDGE_MODEL" +docker compose -f "$BRIDGE_COMPOSE" --profile live-devin up --abort-on-container-exit --exit-code-from claude-live claude-live +bridge_cleanup_compose +bridge_assert_devin_guard_audit "$BRIDGE_DEVIN_AUDIT" +bridge_assert_zero_claude_egress "$BRIDGE_CLAUDE_AUDIT" +bridge_export_guard_audit "$BRIDGE_DEVIN_AUDIT" egress.jsonl +bridge_export_guard_audit "$BRIDGE_CLAUDE_AUDIT" claude-egress.jsonl +trap - EXIT +printf 'PASS: live model %s was discovered and validated by three scenarios\n' "$devin_model" diff --git a/scripts/devin-bridge/test-unit b/scripts/devin-bridge/test-unit new file mode 100755 index 0000000000..c6f3a4518c --- /dev/null +++ b/scripts/devin-bridge/test-unit @@ -0,0 +1,9 @@ +#!/usr/bin/env bash +set -euo pipefail +source "$(dirname "$0")/common" +cd "$BRIDGE_ROOT" +bridge_test_env node --import tsx/esm --test \ + tests/unit/executor-devin-cli-agentic-core.test.ts \ + tests/unit/executor-devin-cli-agentic-acp.test.ts \ + tests/unit/devin-bridge-network-guard.test.ts \ + tests/unit/devin-bridge-live-runtime.test.ts diff --git a/scripts/devin-bridge/validate-claude-evidence.mjs b/scripts/devin-bridge/validate-claude-evidence.mjs new file mode 100644 index 0000000000..6a7c5fcf15 --- /dev/null +++ b/scripts/devin-bridge/validate-claude-evidence.mjs @@ -0,0 +1,125 @@ +#!/usr/bin/env node +import fs from "node:fs"; +import { pathToFileURL } from "node:url"; + +function contentBlocks(message) { + return Array.isArray(message?.message?.content) ? message.message.content : []; +} + +export function validateClaudeEvidenceText(text, options) { + const marker = String(options?.marker || "").trim(); + const requiredTools = Array.isArray(options?.requiredTools) ? options.requiredTools : []; + if (!marker) throw new Error("A final marker is required"); + + const toolUses = new Map(); + const successfulResults = new Set(); + const slashCommands = new Set(); + const skills = new Set(); + let finalResult = null; + + for (const [index, rawLine] of String(text).split(/\r?\n/).entries()) { + const line = rawLine.trim(); + if (!line) continue; + let event; + try { + event = JSON.parse(line); + } catch { + throw new Error(`Invalid Claude evidence JSON at line ${index + 1}`); + } + + if (event?.type === "system" && event?.subtype === "init") { + for (const command of Array.isArray(event.slash_commands) ? event.slash_commands : []) { + slashCommands.add(String(command)); + } + for (const skill of Array.isArray(event.skills) ? event.skills : []) { + skills.add(String(skill)); + } + } + + for (const block of contentBlocks(event)) { + if (block?.type === "tool_use" && typeof block.id === "string") { + toolUses.set(block.id, { name: String(block.name || ""), input: block.input || {} }); + } + if ( + block?.type === "tool_result" && + typeof block.tool_use_id === "string" && + block.is_error !== true + ) { + successfulResults.add(block.tool_use_id); + } + } + + if (event?.type === "result") finalResult = event; + } + + if (!finalResult || finalResult.subtype !== "success" || finalResult.is_error === true) { + throw new Error("Claude evidence has no successful terminal result"); + } + const resultText = String(finalResult.result || ""); + const incompleteResult = [ + /(?:^|\n)\s*(?:\*\*)?blocker(?:\*\*)?\s*:/im, + /\btask (?:is|remains) (?:not complete|incomplete)\b/i, + /(?:^|\n)\s*(?:[-*]\s*)?(?:\*\*)?next steps? needed(?:\*\*)?\s*:/im, + ].some((pattern) => pattern.test(resultText)); + if (incompleteResult) { + throw new Error("Claude terminal result explicitly reports incomplete work"); + } + if (options?.requiredSlashCommand && !slashCommands.has(options.requiredSlashCommand)) { + throw new Error(`Claude did not load required slash command: ${options.requiredSlashCommand}`); + } + if (options?.requiredSkill && !skills.has(options.requiredSkill)) { + throw new Error(`Claude did not load required skill: ${options.requiredSkill}`); + } + const markerIsStandalone = resultText.split(/\r?\n/).some((line) => line.trim() === marker); + + for (const requiredTool of requiredTools) { + if (![...toolUses.values()].some((tool) => tool.name === requiredTool)) { + throw new Error(`Claude did not request required client-owned tool: ${requiredTool}`); + } + } + + const npmTestSucceeded = [...toolUses.entries()].some( + ([id, tool]) => + tool.name === "Bash" && + /\bnpm\s+test\b/.test(String(tool.input?.command || "")) && + successfulResults.has(id) + ); + if (options?.requireSuccessfulNpmTest) { + if (!npmTestSucceeded) throw new Error("Claude evidence has no successful npm test tool turn"); + } + const markerIsCorroborated = + options?.requireSuccessfulNpmTest && npmTestSucceeded && resultText.includes(marker); + const explicitCompletionIsCorroborated = + options?.acceptExplicitCompletion === true && + npmTestSucceeded && + /\btask is complete\b/i.test(resultText); + if (!markerIsStandalone && !markerIsCorroborated && !explicitCompletionIsCorroborated) { + throw new Error(`Claude result has no standalone marker: ${marker}`); + } +} + +if (process.argv[1] && pathToFileURL(process.argv[1]).href === import.meta.url) { + const [ + evidencePath, + marker, + requiredTools = "", + requireNpmTest = "false", + requiredSlashCommand = "", + requiredSkill = "", + acceptExplicitCompletion = "false", + ] = process.argv.slice(2); + if (!evidencePath) + throw new Error("Usage: validate-claude-evidence.mjs FILE MARKER [TOOLS] [NPM_TEST]"); + validateClaudeEvidenceText(fs.readFileSync(evidencePath, "utf8"), { + marker, + requiredTools: requiredTools + .split(",") + .map((value) => value.trim()) + .filter(Boolean), + requireSuccessfulNpmTest: requireNpmTest === "true", + requiredSlashCommand: requiredSlashCommand || undefined, + requiredSkill: requiredSkill || undefined, + acceptExplicitCompletion: acceptExplicitCompletion === "true", + }); + process.stdout.write(`PASS: validated Claude evidence for ${marker}\n`); +} diff --git a/scripts/devin-bridge/verify-anthropic-isolation b/scripts/devin-bridge/verify-anthropic-isolation new file mode 100755 index 0000000000..f7169661ea --- /dev/null +++ b/scripts/devin-bridge/verify-anthropic-isolation @@ -0,0 +1,259 @@ +#!/usr/bin/env bash +set -euo pipefail +source "$(dirname "$0")/common" +fail() { printf 'FAIL: %s\n' "$1" >&2; exit 1; } +bridge_prepare_sandbox +compose_config=(docker compose -f "$BRIDGE_COMPOSE" --env-file /dev/null --profile offline --profile live-devin config) +config="$("${compose_config[@]}")" +config_json="$("${compose_config[@]}" --format json)" +for forbidden in "$HOME/.claude" "$HOME/.claude.json" "$HOME/.ssh" "/var/run/docker.sock"; do + [[ "$config" != *"$forbidden"* ]] || fail "forbidden host mount appears in compose: $forbidden" +done +grep -q 'user: 10001:10001' <<<"$config" || fail "runtime is not non-root" +grep -q 'read_only: true' <<<"$config" || fail "runtime root filesystem is not read-only" +grep -q 'internal: true' <<<"$config" || fail "internal network is missing" +grep -q 'CLAUDE_CONFIG_DIR: /home/bridge/.claude-devin-isolated' <<<"$config" || fail "isolated Claude config is missing" +node -e ' + const fs = require("node:fs"); + const config = JSON.parse(fs.readFileSync(0, "utf8")); + const liveNetworks = Object.keys(config.services["omniroute-live"].networks || {}).sort(); + if (JSON.stringify(liveNetworks) !== JSON.stringify(["bridge-internal", "devin-guard-internal"])) { + throw new Error(`live runtime network escape: ${liveNetworks.join(",")}`); + } + const guardNetworks = Object.keys(config.services["network-guard"].networks || {}).sort(); + if (JSON.stringify(guardNetworks) !== JSON.stringify(["devin-guard-internal", "guard-egress"])) { + throw new Error(`network guard topology mismatch: ${guardNetworks.join(",")}`); + } + const claudeGuard = config.services["claude-egress-guard"]; + if (JSON.stringify(Object.keys(claudeGuard.networks || {})) !== JSON.stringify(["bridge-internal"])) { + throw new Error("Claude egress guard must remain on the internal network only"); + } + if (config.services["network-guard"].environment.GUARD_POLICY !== "devin") { + throw new Error("Devin network guard policy mismatch"); + } + if (claudeGuard.environment.GUARD_POLICY !== "deny-all") { + throw new Error("Claude egress guard is not deny-all"); + } + for (const guardName of ["network-guard", "claude-egress-guard"]) { + const guard = config.services[guardName]; + const env = config.services[guardName].environment; + if (env.GUARD_ALLOW_SUFFIXES || env.GUARD_ALLOW_HOSTS) { + throw new Error(`${guardName} exposes mutable host allowlists`); + } + if (!guard.healthcheck?.test) throw new Error(`${guardName} has no healthcheck`); + const auditMount = (guard.volumes || []).find((mount) => mount.target === "/guard-audit"); + if (!auditMount || auditMount.type !== "bind" || !auditMount.source.includes("/.sandbox/guard-audit/")) { + throw new Error(`${guardName} does not use its guard-only audit bind`); + } + } + const runtimeNames = ["omniroute", "claude", "contract", "omniroute-live", "claude-live"]; + for (const serviceName of [...runtimeNames, "network-guard", "claude-egress-guard"]) { + const service = config.services[serviceName]; + if (String(service.user) !== "10001:10001" || !service.read_only) { + throw new Error(`${serviceName} is not non-root and read-only`); + } + } + for (const serviceName of runtimeNames) { + const service = config.services[serviceName]; + if ((service.volumes || []).some((mount) => mount.target === "/guard-audit")) { + throw new Error(`${serviceName} can mutate guard audit evidence`); + } + const namedVolumes = (service.volumes || []).filter((mount) => mount.type === "volume"); + const hasClaudeConfig = namedVolumes.some( + (mount) => mount.target === "/home/bridge/.claude-devin-isolated", + ); + const hasDevinAuth = namedVolumes.some( + (mount) => mount.target === "/home/bridge/.local/share/devin", + ); + const expectsClaudeConfig = serviceName === "claude" || serviceName === "claude-live"; + const expectsDevinAuth = serviceName === "omniroute-live"; + if (hasClaudeConfig !== expectsClaudeConfig) { + throw new Error(`${serviceName} Claude config volume ownership mismatch`); + } + if (hasDevinAuth !== expectsDevinAuth) { + throw new Error(`${serviceName} Devin auth volume ownership mismatch`); + } + for (const key of [ + "ANTHROPIC_MODEL", + "ANTHROPIC_DEFAULT_SONNET_MODEL", + "ANTHROPIC_DEFAULT_OPUS_MODEL", + "ANTHROPIC_DEFAULT_HAIKU_MODEL", + "CLAUDE_CODE_SUBAGENT_MODEL", + ]) { + if (!String(service.environment[key] || "").startsWith("devin-cli-agentic/")) { + throw new Error(`${serviceName} has a non-Devin model alias in ${key}`); + } + } + } + if (config.services["omniroute-live"].depends_on["network-guard"].condition !== "service_healthy") { + throw new Error("omniroute-live does not wait for a healthy Devin guard"); + } + for (const serviceName of ["claude", "claude-live"]) { + if (config.services[serviceName].depends_on["claude-egress-guard"].condition !== "service_healthy") { + throw new Error(`${serviceName} does not wait for a healthy Claude guard`); + } + } + const liveEnv = config.services["omniroute-live"].environment; + if (liveEnv.DEVIN_BRIDGE_PROXY_URL !== "http://network-guard:8080") { + throw new Error("trusted Devin bridge proxy is missing"); + } + for (const key of ["HTTP_PROXY", "HTTPS_PROXY", "ALL_PROXY", "NO_PROXY"]) { + if (liveEnv[key]) throw new Error(`omniroute-live must not inherit ${key}`); + } + for (const serviceName of runtimeNames.filter((name) => name !== "omniroute-live")) { + if (config.services[serviceName].environment.DEVIN_BRIDGE_PROXY_URL) { + throw new Error(`${serviceName} received the Devin bridge proxy setting`); + } + } + for (const serviceName of ["claude", "claude-live"]) { + const env = config.services[serviceName].environment; + if ( + env.NODE_USE_ENV_PROXY !== "1" || + env.HTTP_PROXY !== "http://claude-egress-guard:8080" || + env.HTTPS_PROXY !== "http://claude-egress-guard:8080" || + env.NO_PROXY !== "omniroute" + ) { + throw new Error(`${serviceName} does not use the deny-all Claude guard`); + } + if (env.HTTP_PROXY === "http://network-guard:8080") { + throw new Error(`${serviceName} received the Devin-capable guard`); + } + } +' <<<"$config_json" || fail "structured compose isolation checks failed" +node --input-type=module -e ' + import { pathToFileURL } from "node:url"; + const policy = await import(pathToFileURL(process.argv[1])); + const allowed = [ + "devin.ai", + "api.devin.ai", + "cognition.ai", + "api.cognition.ai", + "server.codeium.com", + "unleash.codeium.com", + ]; + const denied = [ + "evildevin.ai", + "codeium.com", + "api.codeium.com", + "o123.ingest.sentry.io", + "api.anthropic.com", + "claude.ai", + ]; + for (const hostname of allowed) { + if (!policy.isAllowedGuardHostname(hostname, "devin")) throw new Error(`denied ${hostname}`); + } + for (const hostname of denied) { + if (policy.isAllowedGuardHostname(hostname, "devin")) throw new Error(`allowed ${hostname}`); + } + if (policy.isAllowedGuardHostname("api.devin.ai", "deny-all")) { + throw new Error("deny-all guard allowed Devin traffic"); + } +' "$BRIDGE_ROOT/docker/devin-bridge/network-guard/policy.mjs" || fail "network guard policy checks failed" +bridge_test_env node --import tsx/esm --input-type=module -e ' + import { pathToFileURL } from "node:url"; + const { buildDevinChildEnv } = await import(pathToFileURL(process.argv[1])); + const home = process.env.DEVIN_AGENTIC_HOME; + const trusted = buildDevinChildEnv({}, { + DEVIN_AGENTIC_HOME: home, + DEVIN_BRIDGE_PROXY_URL: "http://network-guard:8080", + HTTP_PROXY: "http://user:password@host-proxy.example:3128", + HTTPS_PROXY: "http://user:password@host-proxy.example:3128", + ALL_PROXY: "socks5://host-proxy.example:1080", + }); + if ( + trusted.HTTP_PROXY !== "http://network-guard:8080" || + trusted.HTTPS_PROXY !== "http://network-guard:8080" || + trusted.ALL_PROXY + ) { + throw new Error("trusted child proxy derivation failed"); + } + const untrusted = buildDevinChildEnv({}, { + DEVIN_AGENTIC_HOME: home, + DEVIN_BRIDGE_PROXY_URL: "http://user:password@network-guard:8080", + HTTP_PROXY: "http://host-proxy.example:3128", + }); + if (untrusted.HTTP_PROXY || untrusted.HTTPS_PROXY) { + throw new Error("untrusted child proxy was inherited"); + } +' "$BRIDGE_ROOT/open-sse/executors/devin-cli-agentic.ts" || \ + fail "Devin child proxy boundary checks failed" +bridge_assert_devin_auth_status 0 $'Logged in (via Devin)\n' || fail "clean auth fixture was rejected" +if bridge_assert_devin_auth_status 0 $'Logged in (via Devin)\nFailed to fetch from server\n' 2>/dev/null; then + fail "server-fetch auth failure was accepted" +fi +if bridge_assert_devin_auth_status 0 $'Logged out\n' 2>/dev/null; then + fail "logged-out auth fixture was accepted" +fi +if bridge_assert_devin_auth_status 0 $'Not Logged in (via Devin)\n' 2>/dev/null; then + fail "misleading auth fixture was accepted" +fi +selected_model="$(printf '%s' '{"models":[{"family_uid":"swe-1.7"},{"modelUid":"swe-1.7-lightning"}]}' | \ + node --import tsx/esm "$BRIDGE_ROOT/scripts/devin-bridge/select-live-model.mjs")" +[[ "$selected_model" == swe-1-7-lightning ]] || fail "live model normalization or preference failed" +if printf '%s' '{"models":[{"family_uid":"unknown.9"}]}' | \ + node --import tsx/esm "$BRIDGE_ROOT/scripts/devin-bridge/select-live-model.mjs" >/dev/null 2>&1; then + fail "unknown normalized live model was accepted" +fi +grep -q 'bridge_run_devin auth login --force-manual-token-flow' \ + "$BRIDGE_ROOT/scripts/devin-bridge/login-devin" || fail "manual token login flow is missing" +if grep -Eqi 'read[[:space:]].*token|printf[[:space:]].*token|echo[[:space:]].*token' \ + "$BRIDGE_ROOT/scripts/devin-bridge/login-devin"; then + fail "login script could expose a token" +fi +grep -q 'bridge_check_devin_auth' "$BRIDGE_ROOT/scripts/devin-bridge/test-live-devin" || \ + fail "live test bypasses strict auth status" +grep -q 'bridge_check_devin_auth' "$BRIDGE_ROOT/scripts/devin-bridge/launch" || \ + fail "normal launch bypasses strict auth status" +grep -q 'up -d --wait network-guard claude-egress-guard' "$BRIDGE_ROOT/scripts/devin-bridge/launch" || \ + fail "normal launch does not start the audited Claude egress guard" +grep -qx '\.sandbox' "$BRIDGE_ROOT/.dockerignore" || fail ".sandbox is not excluded from builds" +if [[ "${1:-}" == --static ]]; then printf 'PASS: static bridge isolation checks passed\n'; exit 0; fi +trap bridge_cleanup_compose EXIT +bridge_cleanup_compose +bridge_reset_claude_egress_audit +docker compose -f "$BRIDGE_COMPOSE" --profile offline up -d --wait claude-egress-guard +docker compose -f "$BRIDGE_COMPOSE" --profile offline run --rm --no-deps claude bash -ceu ' + test "$(id -u)" = 10001 + test "$HOME" = /home/bridge + test "$CLAUDE_CONFIG_DIR" = /home/bridge/.claude-devin-isolated + test "$ANTHROPIC_BASE_URL" = http://omniroute:20128 + test "$ANTHROPIC_AUTH_TOKEN" = sk-local-devin-gateway + test -z "${ANTHROPIC_API_KEY:-}${CLAUDE_CODE_OAUTH_TOKEN:-}${AWS_ACCESS_KEY_ID:-}${AWS_SECRET_ACCESS_KEY:-}${GOOGLE_APPLICATION_CREDENTIALS:-}${AZURE_OPENAI_API_KEY:-}" + test ! -e /var/run/docker.sock + if touch /bridge-must-remain-read-only 2>/dev/null; then + echo "container root filesystem is writable" >&2; exit 1 + fi + for host in api.anthropic.com claude.ai; do + if node -e "require(\"net\").connect(443,process.argv[1]).on(\"connect\",()=>process.exit(0)).on(\"error\",()=>process.exit(1)).setTimeout(1500,()=>process.exit(1))" "$host"; then + echo "unexpected network access to $host" >&2; exit 1 + fi + done +' +docker compose -f "$BRIDGE_COMPOSE" --profile offline run --rm --no-deps claude \ + node --input-type=module -e ' + async function expectProxyDenial(request) { + try { + const response = await request; + if (response.status !== 403) { + throw new Error(`unexpected proxy response: ${response.status}`); + } + } catch (error) { + if (error instanceof Error && error.message.startsWith("unexpected proxy response:")) { + throw error; + } + } + } + await expectProxyDenial(fetch("https://api.anthropic.com", { + signal: AbortSignal.timeout(3000), + })); + await expectProxyDenial(fetch("https://claude.ai", { + signal: AbortSignal.timeout(3000), + })); +' +bridge_cleanup_compose +bridge_assert_claude_guard_denials "$BRIDGE_CLAUDE_AUDIT" || \ + fail "Claude proxy denial audit proof failed" +bridge_export_guard_audit "$BRIDGE_CLAUDE_AUDIT" claude-egress-verifier.jsonl +trap - EXIT +bridge_reset_claude_egress_audit +printf 'PASS: runtime bridge isolation checks passed\n' diff --git a/scripts/quality/validate-release-green.mjs b/scripts/quality/validate-release-green.mjs index e1adca9927..f9693aa92e 100644 --- a/scripts/quality/validate-release-green.mjs +++ b/scripts/quality/validate-release-green.mjs @@ -96,9 +96,7 @@ export function firstFailureLine(out) { .split("\n") .map((l) => l.trim()) .filter(Boolean); - const hit = lines.find((l) => - /✖|✗|not ok|AssertionError|error TS|FAIL|Error:|REGRESS/i.test(l) - ); + const hit = lines.find((l) => /✖|✗|not ok|AssertionError|error TS|FAIL|Error:|REGRESS/i.test(l)); return (hit || lines[lines.length - 1] || "failed").slice(0, 200); } @@ -570,10 +568,20 @@ async function main() { // release — that is why it is a HARD pre-flight gate. const slow = [ { + // Raised 45→100min 2026-08-05: a hermetic-env run on the loaded devbox + // (load 7-26) was still inside invocation 1 of 3 at 76min when killed; + // contention factor 2-3× was measured against idle windows, and no idle + // measurement exists yet. The pre-flight's REAL condition is exactly + // this contended one (unit runs in Promise.all with integration+vitest + // plus whatever else the devbox carries), and there 45min provably + // killed a healthy suite and fabricated a false base-red. The ceiling's + // purpose — turning a genuine hang (stuck SQLite handle = zero progress + // forever) into a visible failure — survives at 100min. + // TODO: measure on the idle .113 box and re-tighten to ~1.8× measured. id: "unit", - label: "Unit tests (full suite, CI concurrency — runs ~20-35min silently)", + label: "Unit tests (full suite, CI concurrency — ~30-50min idle, up to ~100min under load)", args: ["run", "test:unit:ci"], - timeout: 45 * 60 * 1000, + timeout: 100 * 60 * 1000, }, { id: "vitest", @@ -582,10 +590,16 @@ async function main() { timeout: 15 * 60 * 1000, }, { + // Measured 2026-08-05 on an idle 16-core box: 22m08s hermetic (935 tests, + // 112 files at --test-concurrency=1, i.e. strictly serial because ~16 of + // them bind a port or share a DB). The old "~3-10min" estimate was stale by + // ~3x and the 20min ceiling killed a healthy run. 40min keeps the ceiling's + // real purpose — turning a genuine hang (unreleased DB handle) into a + // visible failure — without punishing a long-but-healthy suite. id: "integration", - label: "Integration tests (~3-10min)", + label: "Integration tests (~20-25min)", args: ["run", "test:integration"], - timeout: 20 * 60 * 1000, + timeout: 40 * 60 * 1000, }, ]; if (WITH_BUILD) { diff --git a/scripts/query_all_provider_connections.cjs b/scripts/query_all_provider_connections.cjs new file mode 100644 index 0000000000..4479efec06 --- /dev/null +++ b/scripts/query_all_provider_connections.cjs @@ -0,0 +1,12 @@ +const Database = require('better-sqlite3'); +const path = require('path'); +const dbPath = path.resolve(process.env.USERPROFILE, '.omniroute', 'storage.sqlite'); +try { + const db = new Database(dbPath, { readonly: true }); + const rows = db.prepare(`SELECT id, provider, name, auth_type, is_active, last_error, test_status, updated_at FROM provider_connections ORDER BY updated_at DESC LIMIT 200`).all(); + console.log(JSON.stringify(rows, null, 2)); + db.close(); +} catch (err) { + console.error('ERROR', err && err.message); + process.exit(2); +} diff --git a/scripts/query_providers.cjs b/scripts/query_providers.cjs new file mode 100644 index 0000000000..cfad330655 --- /dev/null +++ b/scripts/query_providers.cjs @@ -0,0 +1,12 @@ +const Database = require('better-sqlite3'); +const path = require('path'); +const dbPath = path.resolve(process.env.USERPROFILE, '.omniroute', 'storage.sqlite'); +try { + const db = new Database(dbPath, { readonly: true }); + const rows = db.prepare(`SELECT id, provider, name, auth_type, is_active, api_key IS NOT NULL as has_api_key, access_token IS NOT NULL as has_access_token, refresh_token IS NOT NULL as has_refresh, last_error, test_status, provider_specific_data, updated_at FROM provider_connections WHERE provider LIKE '%anthropic%' OR provider='anthropic' OR provider LIKE '%claude%' OR provider='claude'`).all(); + console.log(JSON.stringify(rows, null, 2)); + db.close(); +} catch (err) { + console.error('ERROR', err && err.message); + process.exit(2); +} diff --git a/scripts/query_providers.js b/scripts/query_providers.js new file mode 100644 index 0000000000..993bf33487 --- /dev/null +++ b/scripts/query_providers.js @@ -0,0 +1,16 @@ +const Database = require("better-sqlite3"); +const path = require("path"); +const dbPath = path.resolve(process.env.USERPROFILE, ".omniroute", "storage.sqlite"); +try { + const db = new Database(dbPath, { readonly: true }); + const rows = db + .prepare( + `SELECT id, provider, name, auth_type, is_active, api_key IS NOT NULL as has_api_key, access_token IS NOT NULL as has_access_token, refresh_token IS NOT NULL as has_refresh, last_error, test_status, provider_specific_data, updated_at FROM provider_connections WHERE provider LIKE '%anthropic%' OR provider='anthropic' OR provider LIKE '%claude%' OR provider='claude'` + ) + .all(); + console.log(JSON.stringify(rows, null, 2)); + db.close(); +} catch (err) { + console.error("ERROR", err && err.message); + process.exit(2); +} diff --git a/scripts/raycast/extract-credentials.mjs b/scripts/raycast/extract-credentials.mjs new file mode 100644 index 0000000000..44d3866239 --- /dev/null +++ b/scripts/raycast/extract-credentials.mjs @@ -0,0 +1,100 @@ +#!/usr/bin/env node +/** + * @file extract-credentials.mjs + * @description Print Raycast Pro credentials from local macOS install (redacted preview). + * + * Usage: node scripts/raycast/extract-credentials.mjs + * + * @changes + * - [2026-07-27] [Composer] - CLI credential extractor for local Raycast + */ + +import { execFileSync } from "node:child_process"; +import { createHash } from "node:crypto"; +import { copyFileSync, existsSync, mkdtempSync, readFileSync, rmdirSync, unlinkSync } from "node:fs"; +import { homedir, tmpdir } from "node:os"; +import { join } from "node:path"; + +const RAYCAST_SALT = "yvkwWXzxPPBAqY2tmaKrB*DvYjjMaeEf"; +const RAYCAST_SUPPORT = join(homedir(), "Library", "Application Support", "com.raycast.macos"); +const RAYCAST_DB = join(RAYCAST_SUPPORT, "raycast-enc.sqlite"); + +function redact(s, keep = 8) { + if (!s || s.length <= keep * 2) return "***"; + return `${s.slice(0, keep)}…${s.slice(-4)}`; +} + +function readKeychain(account) { + return JSON.parse( + execFileSync("security", ["find-generic-password", "-s", "Raycast", "-a", account, "-w"], { + encoding: "utf-8", + }).trim() + ); +} + +function dbPassphrase() { + const keyHex = execFileSync( + "security", + ["find-generic-password", "-s", "Raycast", "-a", "database_key", "-w"], + { encoding: "utf-8" } + ).trim(); + return createHash("sha256") + .update(keyHex + RAYCAST_SALT) + .digest("hex"); +} + +function queryDb(sql) { + const tmpDir = mkdtempSync(join(tmpdir(), "raycast-extract-")); + const tmpDb = join(tmpDir, "db.sqlite"); + copyFileSync(RAYCAST_DB, tmpDb); + for (const ext of ["-wal", "-shm"]) { + const src = RAYCAST_DB + ext; + if (existsSync(src)) copyFileSync(src, tmpDb + ext); + } + const passphrase = dbPassphrase(); + const input = `PRAGMA key = '${passphrase}';\n.mode json\n${sql}`; + const out = execFileSync("sqlcipher", [tmpDb], { input, encoding: "utf-8" }); + for (const ext of ["", "-wal", "-shm"]) { + try { + unlinkSync(tmpDb + ext); + } catch {} + } + try { + rmdirSync(tmpDir); + } catch {} + const jsonStr = out.startsWith("ok\n") ? out.slice(3) : out; + return JSON.parse(jsonStr.trim() || "[]"); +} + +if (process.platform !== "darwin") { + console.error("macOS only"); + process.exit(1); +} + +const store = readKeychain("raycast-store_credentials"); +const token = store?.oauth?.access_token; +if (!token) { + console.error("No Raycast bearer token in Keychain — open Raycast and sign in"); + process.exit(1); +} + +const users = queryDb("SELECT analyticsId, email, username, hasProFeatures, hasBetterAI FROM user LIMIT 1;"); +const user = users[0] || {}; +const deviceId = + user.analyticsId || + JSON.parse(readFileSync(join(RAYCAST_SUPPORT, "posthog.distinctId"), "utf-8"))["posthog.distinctId"]; + +console.log(JSON.stringify({ + accessTokenPreview: redact(token), + accessToken: token, + deviceId, + aid: deviceId, + email: user.email || store?.user?.email, + username: user.username || store?.user?.username, + hasProFeatures: !!user.hasProFeatures, + hasBetterAI: !!user.hasBetterAI, + sources: { + bearer: "Keychain Raycast / raycast-store_credentials", + deviceId: "raycast-enc.sqlite user.analyticsId", + }, +}, null, 2)); diff --git a/scripts/raycast/usage-benchmark.mjs b/scripts/raycast/usage-benchmark.mjs new file mode 100644 index 0000000000..85c30232d6 --- /dev/null +++ b/scripts/raycast/usage-benchmark.mjs @@ -0,0 +1,165 @@ +#!/usr/bin/env node +/** + * @file usage-benchmark.mjs + * @description Battle-test Raycast Pro usage via OmniRoute local endpoint. + * + * Env (required): + * OMNIROUTE_URL default http://127.0.0.1:20128/v1 + * OMNIROUTE_API_KEY OmniRoute API key (if REQUIRE_API_KEY) + * + * Env (optional — direct Raycast probe without OmniRoute): + * RAYCAST_BEARER_TOKEN + * RAYCAST_DEVICE_ID + * RAYCAST_AID + * RAYCAST_SIG_SECRET + * + * Usage: + * node scripts/raycast/usage-benchmark.mjs --models 5 --rounds 3 + * node scripts/raycast/usage-benchmark.mjs --model openai-gpt-5-mini --rounds 10 + * + * @changes + * - [2026-07-27] [Composer] - Initial Raycast Pro usage benchmark script + */ + +import { createHmac, createHash } from "node:crypto"; + +const args = process.argv.slice(2); +function arg(name, fallback) { + const i = args.indexOf(`--${name}`); + return i >= 0 && args[i + 1] ? args[i + 1] : fallback; +} + +const rounds = Number(arg("rounds", "3")); +const model = arg("model", ""); +const modelCount = Number(arg("models", "5")); +const omnirouteUrl = (process.env.OMNIROUTE_URL || "http://127.0.0.1:20128/v1").replace(/\/$/, ""); +const apiKey = process.env.OMNIROUTE_API_KEY || ""; + +const RAYCAST_CHAT_URL = "https://backend.raycast.com/api/v1/ai/chat_completions"; +const RAYCAST_MODELS_URL = "https://backend.raycast.com/api/v1/ai/models"; +const SIG_SECRET = + process.env.RAYCAST_SIG_SECRET || + "6bc455473576ce2cd6f70426caff867aabbe3f7291c1a79681af5e8ce0ca1408"; + +function rot13rot5(input) { + return input.replace(/[A-Za-z0-9]/g, (char) => { + const code = char.charCodeAt(0); + if (code >= 65 && code <= 90) return String.fromCharCode(((code - 65 + 13) % 26) + 65); + if (code >= 97 && code <= 122) return String.fromCharCode(((code - 97 + 13) % 26) + 97); + return String.fromCharCode(((code - 48 + 5) % 10) + 48); + }); +} + +function signatureV2(timestamp, deviceId, payload, secret) { + const bodyHash = createHash("sha256").update(payload).digest("hex"); + const message = [timestamp, deviceId, bodyHash].map(rot13rot5).join("."); + return createHmac("sha256", secret).update(message).digest("hex"); +} + +function raycastJwt(aid, secret) { + const iat = Date.now() / 1000; + const header = Buffer.from(JSON.stringify({ typ: "JWT", alg: "HS256" })).toString("base64url"); + const payload = Buffer.from(JSON.stringify({ aid, exp: iat + 60, iat })).toString("base64url"); + const signature = createHmac("sha256", secret) + .update(`${header}.${payload}`) + .digest("base64url"); + return `${header}.${payload}.${signature}`; +} + +function raycastHeaders(payload) { + const bearerToken = process.env.RAYCAST_BEARER_TOKEN; + const deviceId = process.env.RAYCAST_DEVICE_ID; + const aid = process.env.RAYCAST_AID; + if (!bearerToken || !deviceId || !aid) { + throw new Error("Set RAYCAST_BEARER_TOKEN, RAYCAST_DEVICE_ID, RAYCAST_AID for direct probe"); + } + const timestamp = Math.floor(Date.now() / 1000).toString(); + return { + Accept: "application/json", + Authorization: `Bearer ${bearerToken}`, + "X-Raycast-Timestamp": timestamp, + "X-Raycast-DeviceId": deviceId, + "Content-Type": "application/json", + "X-Raycast-Signature-v2": signatureV2(timestamp, deviceId, payload, SIG_SECRET), + "X-Raycast-Signature": raycastJwt(aid, SIG_SECRET), + "X-Raycast-Experimental": "chatBranching, mcpHTTPServer", + "User-Agent": "Raycast/1.104.20 (macOS Version 26.5.1 (Build 25F80))", + }; +} + +async function fetchRaycastModels() { + const payload = "{}"; + const res = await fetch(RAYCAST_MODELS_URL, { method: "GET", headers: raycastHeaders(payload) }); + const text = await res.text(); + if (!res.ok) throw new Error(`models [${res.status}]: ${text.slice(0, 200)}`); + const data = JSON.parse(text); + return (data.models || []).map((m) => m.id); +} + +async function chatOmniroute(modelId, prompt) { + const headers = { "Content-Type": "application/json" }; + if (apiKey) headers.Authorization = `Bearer ${apiKey}`; + const started = Date.now(); + const res = await fetch(`${omnirouteUrl}/chat/completions`, { + method: "POST", + headers, + body: JSON.stringify({ + model: `raycast/${modelId}`, + messages: [{ role: "user", content: prompt }], + stream: false, + max_tokens: 32, + }), + }); + const ms = Date.now() - started; + const body = await res.text(); + return { ok: res.ok, status: res.status, ms, body: body.slice(0, 300) }; +} + +async function main() { + console.log(`OmniRoute: ${omnirouteUrl}`); + console.log(`Rounds per model: ${rounds}`); + + let models = []; + if (model) { + models = [model]; + } else if (process.env.RAYCAST_BEARER_TOKEN) { + models = (await fetchRaycastModels()).slice(0, modelCount); + console.log(`Direct Raycast model probe — testing ${models.length} models via OmniRoute`); + } else { + models = ["openai-gpt-5-mini"]; + console.log("No RAYCAST_* env — using default model openai-gpt-5-mini via OmniRoute combo id"); + } + + const results = []; + for (const modelId of models) { + let ok = 0; + let fail = 0; + const latencies = []; + for (let i = 0; i < rounds; i++) { + const prompt = `Raycast benchmark round ${i + 1} — reply with exactly: pong`; + try { + const r = await chatOmniroute(modelId, prompt); + latencies.push(r.ms); + if (r.ok) ok++; + else { + fail++; + console.error(` FAIL ${modelId} #${i + 1} [${r.status}]: ${r.body}`); + } + } catch (err) { + fail++; + console.error(` ERR ${modelId} #${i + 1}:`, err.message); + } + } + const avg = latencies.length ? Math.round(latencies.reduce((a, b) => a + b, 0) / latencies.length) : 0; + results.push({ modelId, ok, fail, avgMs: avg }); + console.log(`${modelId}: ${ok}/${rounds} ok, avg ${avg}ms`); + } + + console.log("\nSummary:"); + console.table(results); +} + +main().catch((err) => { + console.error(err); + process.exit(1); +}); diff --git a/skills/omni-version-manager/SKILL.md b/skills/omni-version-manager/SKILL.md index 85f21839c4..711a8f3e8e 100644 --- a/skills/omni-version-manager/SKILL.md +++ b/skills/omni-version-manager/SKILL.md @@ -116,6 +116,19 @@ curl -X POST https://localhost:20128/api/services/9router/auto-start \ -d '{}' ``` +### POST /api/services/9router/auto-restart-adopted + +Toggle 9Router auto-restart-when-adopted + +When enabled, an externally-adopted (not OmniRoute-spawned) 9Router process is restarted under OmniRoute's own supervisor on the next health-check cycle instead of being left as adopted-only. **LOCAL_ONLY** — loopback only. + +```bash +curl -X POST https://localhost:20128/api/services/9router/auto-restart-adopted \ + -H "Authorization: Bearer $OMNIROUTE_TOKEN" + -H "Content-Type: application/json" \ + -d '{}' +``` + ### POST /api/services/cliproxy/install Install CLIProxyAPI from npm @@ -205,6 +218,19 @@ curl -X POST https://localhost:20128/api/services/cliproxy/auto-start \ -d '{}' ``` +### POST /api/services/cliproxy/auto-restart-adopted + +Toggle CLIProxyAPI auto-restart-when-adopted + +When enabled, an externally-adopted (not OmniRoute-spawned) CLIProxyAPI process is restarted under OmniRoute's own supervisor on the next health-check cycle instead of being left as adopted-only. **LOCAL_ONLY** — loopback only. + +```bash +curl -X POST https://localhost:20128/api/services/cliproxy/auto-restart-adopted \ + -H "Authorization: Bearer $OMNIROUTE_TOKEN" + -H "Content-Type: application/json" \ + -d '{}' +``` + ### POST /api/services/mux/install Install Mux from npm @@ -294,6 +320,19 @@ curl -X POST https://localhost:20128/api/services/mux/auto-start \ -d '{}' ``` +### POST /api/services/mux/auto-restart-adopted + +Toggle Mux auto-restart-when-adopted + +When enabled, an externally-adopted (not OmniRoute-spawned) Mux process is restarted under OmniRoute's own supervisor on the next health-check cycle instead of being left as adopted-only. **LOCAL_ONLY** — loopback only. + +```bash +curl -X POST https://localhost:20128/api/services/mux/auto-restart-adopted \ + -H "Authorization: Bearer $OMNIROUTE_TOKEN" + -H "Content-Type: application/json" \ + -d '{}' +``` + ### POST /api/services/bifrost/install Install Bifrost @@ -383,6 +422,193 @@ curl -X POST https://localhost:20128/api/services/bifrost/auto-start \ -d '{}' ``` +### POST /api/services/bifrost/auto-restart-adopted + +Toggle Bifrost auto-restart-when-adopted + +When enabled, an externally-adopted (not OmniRoute-spawned) Bifrost process is restarted under OmniRoute's own supervisor on the next health-check cycle instead of being left as adopted-only. **LOCAL_ONLY** — loopback only. + +```bash +curl -X POST https://localhost:20128/api/services/bifrost/auto-restart-adopted \ + -H "Authorization: Bearer $OMNIROUTE_TOKEN" + -H "Content-Type: application/json" \ + -d '{}' +``` + +### POST /api/services/dario/install + +Install Dario from npm + +Installs the `@askalf/dario` npm package (Claude-account-pool proxy) under DATA_DIR/services/dario/. Uses execFile (no shell interpolation — hard rule #13). **LOCAL_ONLY** — loopback only. + +```bash +curl -X POST https://localhost:20128/api/services/dario/install \ + -H "Authorization: Bearer $OMNIROUTE_TOKEN" + -H "Content-Type: application/json" \ + -d '{}' +``` + +### POST /api/services/dario/start + +Start Dario + +Spawns the Dario process. Idempotent if already running. **LOCAL_ONLY** — loopback only. + +```bash +curl -X POST https://localhost:20128/api/services/dario/start \ + -H "Authorization: Bearer $OMNIROUTE_TOKEN" + -H "Content-Type: application/json" \ + -d '{}' +``` + +### POST /api/services/dario/stop + +Stop Dario + +Gracefully stops Dario. Idempotent — returns a stopped status even if no supervisor is currently tracking the process. **LOCAL_ONLY** — loopback only. + +```bash +curl -X POST https://localhost:20128/api/services/dario/stop \ + -H "Authorization: Bearer $OMNIROUTE_TOKEN" + -H "Content-Type: application/json" \ + -d '{}' +``` + +### POST /api/services/dario/restart + +Restart Dario + +Equivalent to stop() then start() under the operation lock. **LOCAL_ONLY** — loopback only. + +```bash +curl -X POST https://localhost:20128/api/services/dario/restart \ + -H "Authorization: Bearer $OMNIROUTE_TOKEN" + -H "Content-Type: application/json" \ + -d '{}' +``` + +### POST /api/services/dario/update + +Update Dario to a newer npm version + +Stops the service (if running), installs the newer npm version, then restarts it if it was running before the update. **LOCAL_ONLY** — loopback only. + +```bash +curl -X POST https://localhost:20128/api/services/dario/update \ + -H "Authorization: Bearer $OMNIROUTE_TOKEN" + -H "Content-Type: application/json" \ + -d '{}' +``` + +### GET /api/services/dario/status + +Get Dario status + +Returns combined live supervisor state and DB metadata, including the auto-start / auto-restart-adopted flags and whether an update is available. **LOCAL_ONLY** — loopback only. + +```bash +curl https://localhost:20128/api/services/dario/status \ + -H "Authorization: Bearer $OMNIROUTE_TOKEN" +``` + +### POST /api/services/dario/auto-start + +Toggle Dario auto-start + +When enabled, Dario starts automatically on the next OmniRoute boot. **LOCAL_ONLY** — loopback only. + +```bash +curl -X POST https://localhost:20128/api/services/dario/auto-start \ + -H "Authorization: Bearer $OMNIROUTE_TOKEN" + -H "Content-Type: application/json" \ + -d '{}' +``` + +### POST /api/services/dario/auto-restart-adopted + +Toggle Dario auto-restart-when-adopted + +When enabled, an externally-adopted (not OmniRoute-spawned) Dario process is restarted under OmniRoute's own supervisor on the next health-check cycle instead of being left as adopted-only. **LOCAL_ONLY** — loopback only. + +```bash +curl -X POST https://localhost:20128/api/services/dario/auto-restart-adopted \ + -H "Authorization: Bearer $OMNIROUTE_TOKEN" + -H "Content-Type: application/json" \ + -d '{}' +``` + +### POST /api/services/dario/admin/login-start + +Start a Dario account-pool login (device-code style) + +Forwards to the running Dario instance's `POST /admin/login/start` using the stored admin token. The operator opens the returned `authorize_url`, approves in their own Claude account, then posts the displayed code to `/admin/login-complete`. **LOCAL_ONLY** — loopback only. + +```bash +curl -X POST https://localhost:20128/api/services/dario/admin/login-start \ + -H "Authorization: Bearer $OMNIROUTE_TOKEN" + -H "Content-Type: application/json" \ + -d '{}' +``` + +### POST /api/services/dario/admin/login-complete + +Complete a Dario account-pool login + +Forwards to the running Dario instance's `POST /admin/login/complete`. On success the account becomes routable immediately (Dario hot-reloads its pool). **LOCAL_ONLY** — loopback only. + +```bash +curl -X POST https://localhost:20128/api/services/dario/admin/login-complete \ + -H "Authorization: Bearer $OMNIROUTE_TOKEN" + -H "Content-Type: application/json" \ + -d '{}' +``` + +### GET /api/services/dario/admin/accounts + +List Dario account-pool accounts + +Forwards to the running Dario instance's `GET /admin/accounts`. **LOCAL_ONLY** — loopback only. + +```bash +curl https://localhost:20128/api/services/dario/admin/accounts \ + -H "Authorization: Bearer $OMNIROUTE_TOKEN" +``` + +### DELETE /api/services/dario/admin/accounts + +Remove a Dario account-pool account + +Forwards to the running Dario instance's `DELETE /admin/accounts/`. The alias is taken from a `?alias=` query param or a `{ alias }` JSON body. **LOCAL_ONLY** — loopback only. + +```bash +curl -X DELETE https://localhost:20128/api/services/dario/admin/accounts \ + -H "Authorization: Bearer $OMNIROUTE_TOKEN" +``` + +### GET /api/services/dario/admin/import-from-omniroute + +List OmniRoute claude connections eligible for Dario import + +Returns eligible OmniRoute `claude` OAuth provider connections (metadata only — id/name/email/org tier, never tokens) so the UI can offer a picker when more than one exists. **LOCAL_ONLY** — loopback only. + +```bash +curl https://localhost:20128/api/services/dario/admin/import-from-omniroute \ + -H "Authorization: Bearer $OMNIROUTE_TOKEN" +``` + +### POST /api/services/dario/admin/import-from-omniroute + +Import an OmniRoute claude connection's OAuth tokens into Dario + +Writes the source connection's access/refresh token pair directly into Dario's own account-file store (`~/.dario/accounts/.json`), reusing the shared Claude Code OAuth client_id, then restarts the Dario supervisor so it picks up the new account. **LOCAL_ONLY** — loopback only. + +```bash +curl -X POST https://localhost:20128/api/services/dario/admin/import-from-omniroute \ + -H "Authorization: Bearer $OMNIROUTE_TOKEN" + -H "Content-Type: application/json" \ + -d '{}' +``` + ### GET /api/services/{name}/logs Stream service logs via SSE diff --git a/src/app/(dashboard)/dashboard/HomePageClient.tsx b/src/app/(dashboard)/dashboard/HomePageClient.tsx index 3b1e2a91da..b5b5883dfd 100644 --- a/src/app/(dashboard)/dashboard/HomePageClient.tsx +++ b/src/app/(dashboard)/dashboard/HomePageClient.tsx @@ -498,6 +498,12 @@ export default function HomePageClient({ machineId }: HomePageClientProps) { const canonicalProviderId = normalizeProviderId(rawProviderId); if (!canonicalProviderId || byProvider.has(canonicalProviderId)) return; + // Exclude providers with no active connections (or where all connections are deactivated) + const hasActiveConn = providerConnections.some( + (c) => normalizeProviderId(c.provider) === canonicalProviderId && c.isActive !== false + ); + if (!hasActiveConn) return; + const resolvedName = getProviderDisplayLabel(rawProviderId, providerNodes) || name || @@ -515,10 +521,11 @@ export default function HomePageClient({ machineId }: HomePageClientProps) { providerStats .filter((provider) => provider.total > 0) .forEach((provider) => addProvider(provider.id, provider.provider.name)); + providerConnections.forEach((conn) => addProvider(conn.provider)); Object.keys(providerMetrics).forEach((provider) => addProvider(provider)); return Array.from(byProvider.values()); - }, [providerStats, providerMetrics, providerNodes]); + }, [providerStats, providerMetrics, providerNodes, providerConnections]); const { lastProvider, errorProvider } = providerTopology; diff --git a/src/app/(dashboard)/dashboard/cli-code/components/CodexToolCard.tsx b/src/app/(dashboard)/dashboard/cli-code/components/CodexToolCard.tsx index ca775c8954..39141ea249 100644 --- a/src/app/(dashboard)/dashboard/cli-code/components/CodexToolCard.tsx +++ b/src/app/(dashboard)/dashboard/cli-code/components/CodexToolCard.tsx @@ -32,7 +32,7 @@ export default function CodexToolCard({ const [selectedModel, setSelectedModel] = useState("gpt-5.6-sol"); const [modelMappings, setModelMappings] = useState>({}); const [reasoningEffort, setReasoningEffort] = useState("xhigh"); - const [wireApi, setWireApi] = useState("chat"); + const [wireApi, setWireApi] = useState("responses"); const [modalOpen, setModalOpen] = useState(false); const [modalTarget, setModalTarget] = useState(null); // null = default model, string = mapping key const [modelAliases, setModelAliases] = useState({}); @@ -78,6 +78,10 @@ export default function CodexToolCard({ // Parse config content useEffect(() => { + if (codexStatus && !codexStatus.config) { + setWireApi("responses"); + } + if (codexStatus?.config) { const modelMatch = codexStatus.config.match(/^model\s*=\s*"([^"]+)"/im); if (modelMatch) setSelectedModel(modelMatch[1]); @@ -86,7 +90,7 @@ export default function CodexToolCard({ if (effortMatch) setReasoningEffort(effortMatch[1]); const wireMatch = codexStatus.config.match(/^wire_api\s*=\s*"([^"]+)"/im); - if (wireMatch) setWireApi(wireMatch[1]); + setWireApi(wireMatch?.[1] || "responses"); const newMappings: Record = {}; const migrationsBlock = codexStatus.config.split("[notice.model_migrations]")[1]; diff --git a/src/app/(dashboard)/dashboard/combos/page.tsx b/src/app/(dashboard)/dashboard/combos/page.tsx index 9433fb4ab8..f03c79687e 100644 --- a/src/app/(dashboard)/dashboard/combos/page.tsx +++ b/src/app/(dashboard)/dashboard/combos/page.tsx @@ -54,6 +54,7 @@ import { normalizeIntelligentRoutingFilter, normalizeIntelligentRoutingConfig, } from "@/lib/combos/intelligentRouting"; +import { getComboStepTarget } from "@/lib/combos/steps"; import { resolveServerErrorMessage } from "@/lib/api/serverErrorMessage"; import { useTranslations } from "next-intl"; @@ -570,6 +571,13 @@ function normalizeModelEntry(entry) { weight: entry.weight || 0, }; } + if (entry?.kind === "provider-wildcard") { + return { + ...entry, + model: getComboStepTarget(entry), + weight: entry.weight || 0, + }; + } return { ...entry, model: entry.model, @@ -580,6 +588,7 @@ function normalizeModelEntry(entry) { function getModelString(entry) { if (typeof entry === "string") return entry; if (entry?.kind === "combo-ref") return entry.comboName; + if (entry?.kind === "provider-wildcard") return getComboStepTarget(entry); return entry.model; } @@ -635,6 +644,37 @@ function formatComboEntryDisplay( return `Combo → ${normalizedEntry.comboName}`; } + if (normalizedEntry.kind === "provider-wildcard") { + const providerIdentifier = normalizedEntry.providerId; + const builderProvider = findBuilderProviderByIdentifier(builderProviders, providerIdentifier); + const providerNode = findProviderNodeByIdentifier(providerNodes, providerIdentifier); + const providerLabel = + builderProvider?.displayName || providerNode?.name || providerIdentifier || "provider"; + const patternLabel = normalizedEntry.modelPattern || "*"; + const wildcardLabel = `${providerLabel}/${patternLabel}`; + + if (!includeConnection) { + return wildcardLabel; + } + + const connectionId = normalizedEntry.connectionId || null; + const rawConnectionLabel = + (connectionId && + builderProvider?.connections?.find((connection) => connection.id === connectionId) + ?.label) || + normalizedEntry.label || + null; + const connectionLabel = rawConnectionLabel + ? pickDisplayValue([rawConnectionLabel], showFullEmails, rawConnectionLabel) + : null; + + if (connectionId) { + return `${wildcardLabel} · ${connectionLabel || `acct ${connectionId.slice(0, 8)}`}`; + } + + return `${wildcardLabel} · dynamic account`; + } + const parsed = parseQualifiedModel(normalizedEntry.model); if (!parsed) return normalizedEntry.model; @@ -3420,15 +3460,25 @@ function ComboFormModal({ isOpen, combo, onClose, onSave, activeProviders, combo
{entry.kind === "combo-ref" ? getI18nOrFallback(t, "builderComboRefStep", "Nested combo reference") - : entry.connectionId - ? getI18nOrFallback(t, "builderPinnedAccount", "Pinned account") - : entry.providerId - ? getI18nOrFallback( - t, - "builderDynamicAccountShort", - "Dynamic account" - ) - : getI18nOrFallback(t, "builderLegacyEntry", "Legacy model entry")} + : entry.kind === "provider-wildcard" + ? getI18nOrFallback( + t, + "builderProviderWildcard", + "All matching provider models" + ) + : entry.connectionId + ? getI18nOrFallback(t, "builderPinnedAccount", "Pinned account") + : entry.providerId + ? getI18nOrFallback( + t, + "builderDynamicAccountShort", + "Dynamic account" + ) + : getI18nOrFallback( + t, + "builderLegacyEntry", + "Legacy model entry" + )}
@@ -4542,19 +4592,25 @@ function ComboFormModal({ isOpen, combo, onClose, onSave, activeProviders, combo "builderComboRefStep", "Nested combo reference" ) - : entry.connectionId - ? getI18nOrFallback(t, "builderPinnedAccount", "Pinned account") - : entry.providerId - ? getI18nOrFallback( - t, - "builderDynamicAccountShort", - "Dynamic account" - ) - : getI18nOrFallback( - t, - "builderLegacyEntry", - "Legacy model entry" - )} + : entry.kind === "provider-wildcard" + ? getI18nOrFallback( + t, + "builderProviderWildcard", + "All matching provider models" + ) + : entry.connectionId + ? getI18nOrFallback(t, "builderPinnedAccount", "Pinned account") + : entry.providerId + ? getI18nOrFallback( + t, + "builderDynamicAccountShort", + "Dynamic account" + ) + : getI18nOrFallback( + t, + "builderLegacyEntry", + "Legacy model entry" + )} {strategy === "weighted" && entry.weight > 0 ? ` · ${entry.weight}%` : ""} diff --git a/src/app/(dashboard)/dashboard/providers/[id]/ProviderDetailPageClient.tsx b/src/app/(dashboard)/dashboard/providers/[id]/ProviderDetailPageClient.tsx index 0ac9bc3f76..42dcef1987 100644 --- a/src/app/(dashboard)/dashboard/providers/[id]/ProviderDetailPageClient.tsx +++ b/src/app/(dashboard)/dashboard/providers/[id]/ProviderDetailPageClient.tsx @@ -14,6 +14,7 @@ import { isAnthropicCompatibleProvider, isClaudeCodeCompatibleProvider, supportsApiKeyOnFreeProvider, + supportsDualAuthProvider, } from "@/shared/constants/providers"; import { getModelsByProviderId } from "@/shared/constants/models"; import { @@ -27,7 +28,8 @@ import { normalizeModelCatalogSource } from "@/shared/utils/modelCatalogSearch"; import { useCopyToClipboard } from "@/shared/hooks/useCopyToClipboard"; import useEmailPrivacyStore from "@/store/emailPrivacyStore"; import { useNotificationStore } from "@/store/notificationStore"; -import { resolveDashboardProviderInfo } from "../providerPageUtils"; +import { resolveDashboardProviderInfo, resolveProviderHeaderLink } from "../providerPageUtils"; +import { findDefaultReferral } from "@/lib/radar/referrals"; import { type ConnectionRowConnection } from "./components/ConnectionRow"; import { useProviderConnections } from "./hooks/useProviderConnections"; import { useProviderSettings } from "./hooks/useProviderSettings"; @@ -116,6 +118,8 @@ export default function ProviderDetailPageClient() { proxyConfig, connProxyMap, cpaProviderEnabled, + upstreamProxyMode, + upstreamProxyFallbackBackend, refreshingId, setPage, setHealthFilter, @@ -133,6 +137,7 @@ export default function ProviderDetailPageClient() { handleToggleClaudeExtraUsage, handleToggleCodexLimit, handleToggleCliproxyapiMode, + handleSetUpstreamProxyMode, handleToggleProxyEnabled, handleTogglePerKeyProxyEnabled, handleRetestConnection, @@ -210,6 +215,39 @@ export default function ProviderDetailPageClient() { openAiCompatibleName: t("openaiCompatibleName"), }, }); + + // D28 — Radar default referral link ("Pegue seus créditos grátis"). Fetched + // from the LOCAL /api/radar/referrals route only (never talks to the + // private feed server directly) — same client-fetch pattern the Radar + // dashboard page already uses for its own data. This keeps the providers + // page decoupled from @/lib/radar (DB-touching, Node-only): a 404 (flag + // off) or 401/network failure just leaves `referralUrl` null, and + // `resolveProviderHeaderLink` below then falls back to the static catalog + // website — byte-identical to before this feature existed. + const [referralUrl, setReferralUrl] = useState(null); + useEffect(() => { + let cancelled = false; + (async () => { + try { + const res = await fetch("/api/radar/referrals"); + if (!res.ok) return; + const data = await res.json(); + if (cancelled) return; + const fixed = Array.isArray(data?.fixed) ? data.fixed : []; + const match = findDefaultReferral(fixed, providerId); + setReferralUrl(match?.url ?? null); + } catch { + // Best-effort only — never blocks rendering of the provider page. + } + })(); + return () => { + cancelled = true; + }; + }, [providerId]); + const { website: providerHeaderWebsite, isReferralLink } = resolveProviderHeaderLink( + providerInfo?.website, + referralUrl + ); const providerSupportsOAuth = providerInfo?.toggleAuthType === "oauth" || providerInfo?.toggleAuthType === "free"; const subscriptionRisk = providerInfo?.subscriptionRisk === true; @@ -223,6 +261,7 @@ export default function ProviderDetailPageClient() { } = useConnectionGate({ providerId, subscriptionRisk }); const providerSupportsPat = supportsApiKeyOnFreeProvider(providerId); + const supportsDualAuth = supportsDualAuthProvider(providerId); const isOAuth = providerSupportsOAuth && !providerSupportsPat; const providerAlias = getProviderAlias(providerId); const isFreeNoAuth = @@ -460,12 +499,13 @@ export default function ProviderDetailPageClient() {
setShowTutorialModal(true)} t={t} + isReferralLink={isReferralLink} /> {providerId === "zed" && ( @@ -510,6 +550,7 @@ export default function ProviderDetailPageClient() { isCompatible={isCompatible} isCommandCode={isCommandCode} isOAuth={isOAuth} + supportsDualAuth={supportsDualAuth} providerSupportsPat={providerSupportsPat} connections={connections} batchTesting={batchTesting} @@ -556,6 +597,7 @@ export default function ProviderDetailPageClient() { isCompatible={isCompatible} isCommandCode={isCommandCode} providerId={providerId} + supportsDualAuth={supportsDualAuth} providerSupportsPat={providerSupportsPat} commandCodeAuthState={commandCodeAuthState} gateConnectionFlow={gateConnectionFlow} @@ -609,6 +651,9 @@ export default function ProviderDetailPageClient() { canAutoSync={!usesCuratedModelsOnly && compatibleSupportsModelImport} handleToggleConnectionAutoSync={handleToggleConnectionAutoSync} handleToggleCliproxyapiMode={handleToggleCliproxyapiMode} + handleSetUpstreamProxyMode={handleSetUpstreamProxyMode} + upstreamProxyMode={upstreamProxyMode} + upstreamProxyFallbackBackend={upstreamProxyFallbackBackend} handleToggleCodexLimit={handleToggleCodexLimit} handleToggleProxyEnabled={handleToggleProxyEnabled} handleTogglePerKeyProxyEnabled={handleTogglePerKeyProxyEnabled} diff --git a/src/app/(dashboard)/dashboard/providers/[id]/__tests__/passthroughModelRowDisplayName.test.tsx b/src/app/(dashboard)/dashboard/providers/[id]/__tests__/passthroughModelRowDisplayName.test.tsx new file mode 100644 index 0000000000..ab826a7239 --- /dev/null +++ b/src/app/(dashboard)/dashboard/providers/[id]/__tests__/passthroughModelRowDisplayName.test.tsx @@ -0,0 +1,75 @@ +// @vitest-environment jsdom +// +// Regression test: opaque model ids must still render a readable label. +// +// Gateways that expose preset-style model ids (32-char hex GUIDs) still return a +// friendly `name` in their /models payload, and CompatibleModelsSection already +// computes it as `displayName` (`model.name || model.id`). But the render used to +// destructure only { modelId, alias, isHidden, source, isFree } — dropping +// displayName — and PassthroughModelRow had no name fallback, so every such model +// showed the bare GUID plus "Click to set alias". +// +// This asserts the friendly name is rendered when there is no alias, that an alias +// still wins over it, and that a displayName equal to the id is NOT echoed (which +// would print the GUID twice). + +import React, { act } from "react"; +import { createRoot } from "react-dom/client"; +import { afterEach, beforeEach, describe, expect, it } from "vitest"; + +import PassthroughModelRow from "../components/PassthroughModelRow"; + +const GUID = "0123456789abcdef0123456789abcdef"; + +let container: HTMLDivElement; + +beforeEach(() => { + container = document.createElement("div"); + document.body.appendChild(container); +}); + +afterEach(() => { + container.remove(); +}); + +function renderRow(extra: Record) { + const root = createRoot(container); + act(() => { + root.render( + {}} + // The alias slot only renders when the row is alias-editable. + onSetAlias={() => {}} + t={(_key: string, _values?: Record) => ""} + effectiveModelNormalize={() => false} + effectiveModelPreserveDeveloper={() => false} + saveModelCompatFlags={() => {}} + getUpstreamHeadersRecord={() => ({})} + {...extra} + /> + ); + }); + return container.textContent || ""; +} + +describe("PassthroughModelRow — friendly name fallback", () => { + it("renders the upstream name when the model has no alias", () => { + const text = renderRow({ displayName: "Speech To Text (Fast)", alias: null }); + expect(text).toContain("Speech To Text (Fast)"); + }); + + it("prefers an explicit alias over the upstream name", () => { + const text = renderRow({ displayName: "Speech To Text (Fast)", alias: "whisper" }); + expect(text).toContain("whisper"); + expect(text).not.toContain("Speech To Text (Fast)"); + }); + + it("does not echo the id when displayName equals the model id", () => { + const text = renderRow({ displayName: GUID, alias: null }); + // The id is shown once as the model label; the alias slot must not repeat it. + expect(text.split(GUID).length - 1).toBe(1); + }); +}); diff --git a/src/app/(dashboard)/dashboard/providers/[id]/components/CompatibleModelsSection.tsx b/src/app/(dashboard)/dashboard/providers/[id]/components/CompatibleModelsSection.tsx index 7a8542265b..2a7e8d7bbe 100644 --- a/src/app/(dashboard)/dashboard/providers/[id]/components/CompatibleModelsSection.tsx +++ b/src/app/(dashboard)/dashboard/providers/[id]/components/CompatibleModelsSection.tsx @@ -67,7 +67,7 @@ export interface CompatibleModelsSectionProps { bulkTogglePending?: boolean; togglingModelId?: string | null; onTestModel?: (modelId: string, fullModel: string) => Promise; - modelTestStatus?: Record; + modelTestStatus?: Record; testingModelId?: string | null; onTestAll?: (targets: Array<{ modelId: string; fullModel: string }>) => Promise; testingAll?: boolean; @@ -429,7 +429,7 @@ export default function CompatibleModelsSection({ onAutoHideFailedChange={onAutoHideFailedChange} />
- {displayModels.map(({ modelId, alias, isHidden, source, isFree }) => { + {displayModels.map(({ modelId, alias, displayName, isHidden, source, isFree }) => { const fullModel = `${providerDisplayAlias}/${modelId}`; return ( void; + /** Provider-level upstream proxy routing mode (native/CLIProxyAPI/Dario/fallback). */ + upstreamProxyMode?: "native" | "cliproxyapi" | "dario" | "fallback"; + upstreamProxyFallbackBackend?: "cliproxyapi" | "dario"; + onSetUpstreamProxyMode?: ( + mode: "native" | "cliproxyapi" | "dario" | "fallback", + fallbackBackend?: "cliproxyapi" | "dario" + ) => void; onRetest: () => void; isRetesting?: boolean; onEdit: () => void; @@ -341,6 +348,9 @@ export default function ConnectionRow({ codexGlobalServiceMode, isCcCompatible, cliproxyapiEnabled, + upstreamProxyMode, + upstreamProxyFallbackBackend, + onSetUpstreamProxyMode, isFirst, isLast, isSelected, @@ -511,7 +521,11 @@ export default function ConnectionRow({ ? isClaudeExtraUsageBlockEnabled("claude", connection.providerSpecificData) : false; const codexPlanLabel = getCodexPlanLabel(!!isCodex, connection.providerSpecificData); - const cliproxyapiDeepMode = !!cliproxyapiEnabled; + // #dario: this control is now a full mode selector (native/CLIProxyAPI/ + // Dario/fallback), not a binary toggle — cliproxyapiEnabled/ + // onToggleCliproxyapiMode are kept on the props interface for any other + // consumer but are no longer read here. + const effectiveUpstreamProxyMode = upstreamProxyMode ?? "native"; const autoSyncEnabled = !!(connection.providerSpecificData as Record | undefined) ?.autoSync; @@ -673,21 +687,47 @@ export default function ConnectionRow({ )} - {isCcCompatible && ( + {/* #dario: upstream proxy routing selector. Gated on isClaude (the + real, built-in "claude" provider — the primary intended use + case for CLIProxyAPI/Dario failover) OR isCcCompatible (a + custom Claude-Code-protocol-compatible node). Previously this + only checked isCcCompatible, which never covered the built-in + Claude provider at all — the control was unreachable for the + one connection type it was actually built for. */} + {(isClaude || isCcCompatible) && ( <> | - - - help - {t("learnMore") || "Learn more"} - -
-
- - )} - - { - setShowFreeOnly(freeOnly); - setActiveCategory(freeOnly ? null : category); - }} - onDisplayModeChange={setProviderDisplayMode} - onNewProvider={() => router.push("/dashboard/providers/new")} - onImportFromFile={() => setShowImportFromFileModal(true)} - searchQuery={searchQuery} - setModelSearchQuery={setModelSearchQuery} - setSearchQuery={setSearchQuery} - showFreeOnly={showFreeOnly} - summaryStats={summaryStats} - t={t} - tc={tc} - testingMode={testingMode} - /> - - {/* Expiration Banner */} - {expirations?.summary && - (expirations.summary.expired > 0 || expirations.summary.expiringSoon > 0) && ( -
0 - ? "bg-red-500/10 border-red-500/20" - : "bg-amber-500/10 border-amber-500/20" - }`} - > - 0 ? "text-red-500" : "text-amber-500" - }`} - > - {expirations.summary.expired > 0 ? "error" : "warning"} - -
-

0 ? "text-red-500" : "text-amber-500"}`} - > - {expirations.summary.expired > 0 - ? t("expirationBannerExpired", { count: expirations.summary.expired }) - : t("expirationBannerExpiringSoon", { - count: expirations.summary.expiringSoon, - })} -

-

- {expirations.summary.expired > 0 - ? t("expirationBannerExpiredDesc") - : t("expirationBannerExpiringSoonDesc")} + +

+ {showFirstProviderHint && ( + +
+
+ dns +
+

+ {t("addFirstProvider") || "Add your first provider"} +

+

+ {t("addFirstProviderDesc") || + "Connect an AI provider to start routing requests through OmniRoute. You can use free providers, API keys, or OAuth accounts."}

+
+ + + help + {t("learnMore") || "Learn more"} + +
-
+ )} - {isCompactProviderDisplay ? ( - compactProviderEntries.length > 0 ? ( -
- {compactProviderEntries.map((entry) => ( - - handleToggleProvider(entry.providerId, entry.toggleAuthType, active) - } - /> - ))} -
+ { + setShowFreeOnly(freeOnly); + setActiveCategory(freeOnly ? null : category); + }} + onDisplayModeChange={setProviderDisplayMode} + onNewProvider={() => router.push("/dashboard/providers/new")} + onImportFromFile={() => setShowImportFromFileModal(true)} + searchQuery={searchQuery} + setModelSearchQuery={setModelSearchQuery} + setSearchQuery={setSearchQuery} + showFreeOnly={showFreeOnly} + summaryStats={summaryStats} + t={t} + tc={tc} + testingMode={testingMode} + /> + + {/* Expiration Banner */} + {expirations?.summary && + (expirations.summary.expired > 0 || expirations.summary.expiringSoon > 0) && ( +
0 + ? "bg-red-500/10 border-red-500/20" + : "bg-amber-500/10 border-amber-500/20" + }`} + > + 0 ? "text-red-500" : "text-amber-500" + }`} + > + {expirations.summary.expired > 0 ? "error" : "warning"} + +
+

0 ? "text-red-500" : "text-amber-500"}`} + > + {expirations.summary.expired > 0 + ? t("expirationBannerExpired", { count: expirations.summary.expired }) + : t("expirationBannerExpiringSoon", { + count: expirations.summary.expiringSoon, + })} +

+

+ {expirations.summary.expired > 0 + ? t("expirationBannerExpiredDesc") + : t("expirationBannerExpiringSoonDesc")} +

+
+
+ )} + + {isCompactProviderDisplay ? ( + compactProviderEntries.length > 0 ? ( +
+ {compactProviderEntries.map((entry) => ( + + handleToggleProvider(entry.providerId, entry.toggleAuthType, active) + } + /> + ))} +
+ ) : ( +
+ search_off + {providerText(t, "noProvidersMatch", "No providers match your search.")} +
+ ) ) : ( -
- search_off - {providerText(t, "noProvidersMatch", "No providers match your search.")} -
- ) - ) : ( - <> - {/* API Key Compatible Providers — dynamic (OpenAI/Anthropic compatible) */} - {showSection("compatible") && ( -
-
-

- {t("compatibleProviders")}{" "} - - -

-
- {(compatibleProviders.length > 0 || - anthropicCompatibleProviders.length > 0 || - ccCompatibleProviders.length > 0) && ( - - )} - {ccCompatibleProviderEnabled && ( - - )} - - -
-
-

{t("compatibleProvidersDesc")}

- {compatibleProviders.length === 0 && - anthropicCompatibleProviders.length === 0 && - ccCompatibleProviders.length === 0 ? ( -
- extension - {t("noCompatibleYet")} -
- ) : ( -
- {compatibleProviderEntries.map( - ({ providerId, provider, stats, displayAuthType, toggleAuthType }) => ( - - handleToggleProvider(providerId, toggleAuthType, active) - } - /> - ) - )} -
- )} -
- )} - - {/* OAuth Providers (including providers that expose free tiers via OAuth) */} - {showSection("oauth") && ( -
-
-

- {t("oauthProviders")}{" "} - - !IDE_PROVIDER_IDS.has(e.providerId)) - )} - /> -

-
- {oauthEnvRepairStatus?.available && oauthEnvRepairStatus.missingCount > 0 && ( - - )} - -
-
-

{t("oauthProvidersDesc")}

-
- {oauthProviderEntries - .filter((e) => !IDE_PROVIDER_IDS.has(e.providerId)) - .map(({ providerId, provider, stats, displayAuthType, toggleAuthType }) => ( - - handleToggleProvider(providerId, toggleAuthType, active) - } + className="size-2.5 rounded-full bg-orange-500" + title={t("compatibleLabel")} /> - ))} -
-
- )} - - {/* IDE Providers (Cursor, Zed, Trae) — editors with built-in AI subscription */} - {showSection("ide") && ( -
-
-

- {t("ideProviders") || "IDE Providers"}{" "} - - -

- -
-

- {t("ideProvidersDesc") || - "Editors with built-in AI subscription. Use the provider page to import credentials directly from the IDE's keychain."} -

- {ideProviderEntries.length === 0 ? ( -
- {t("noIdeProviders") || "No IDE providers match the current filters."} -
- ) : ( -
- {ideProviderEntries.map( - ({ providerId, provider, stats, displayAuthType, toggleAuthType }) => ( - - handleToggleProvider(providerId, toggleAuthType, active) - } - /> - ) - )} -
- )} -
- )} - - {/* Web / Cookie Providers */} - {showSection("web") && webCookieProviderEntries.length > 0 && ( -
-
-

- {t("webCookieProviders")}{" "} - - -

- -
-

{t("webCookieProvidersDesc")}

-
- {webCookieProviderEntries.map(({ providerId, provider, stats, toggleAuthType }) => ( - handleToggleProvider(providerId, toggleAuthType, active)} - /> - ))} -
-
- )} - - {/* Free Tier Providers */} - {showSection("free") && freeSectionEntries.length > 0 && ( -
-
-
-

- {t("freeTierProviders")} - - +

-

{t("freeAggregated")}

+
+ {(compatibleProviders.length > 0 || + anthropicCompatibleProviders.length > 0 || + ccCompatibleProviders.length > 0) && ( + + )} + {ccCompatibleProviderEnabled && ( + + )} + + +
- -
-
- {freeSectionEntries.map( - ({ providerId, provider, stats, displayAuthType, toggleAuthType }) => ( - - handleToggleProvider(providerId, toggleAuthType, active) - } - /> - ) - )} -
-
- )} - - {/* API Key Providers — fixed list */} - {showSection("apikey") && ( -
-
-

- {t("apiKeyProviders")}{" "} - - -

- -
-

{t("apiKeyProvidersDesc")}

- {llmProviderEntries.length > 0 && ( -
-

- {t("llmProviders")} -

+

{t("compatibleProvidersDesc")}

+ {compatibleProviders.length === 0 && + anthropicCompatibleProviders.length === 0 && + ccCompatibleProviders.length === 0 ? ( +
+ extension + {t("noCompatibleYet")} +
+ ) : (
- {llmProviderEntries.map( + {compatibleProviderEntries.map( ({ providerId, provider, stats, displayAuthType, toggleAuthType }) => ( -
- )} -
- )} - - {/* No Auth Providers */} - {showSection("noauth") && - !showFreeOnly && - (noAuthEntriesAll.length > 0 || blockedNoAuthEntries.length > 0) && ( - notify.error(msg)} - testingMode={testingMode} - onBatchTest={handleBatchTest} - onToggleProvider={handleToggleProvider} - /> + )} +
)} - {/* Upstream Proxy Providers */} - {showSection("proxy") && upstreamProxyEntries.length > 0 && ( -
-
-

- {t("upstreamProxyProviders")}{" "} - - -

- + )} + +
+
+

{t("oauthProvidersDesc")}

+
+ {oauthProviderEntries + .filter((e) => !IDE_PROVIDER_IDS.has(e.providerId)) + .map(({ providerId, provider, stats, displayAuthType, toggleAuthType }) => ( + + handleToggleProvider(providerId, toggleAuthType, active) + } + /> + ))} +
+
+ )} + + {/* IDE Providers (Cursor, Zed, Trae) — editors with built-in AI subscription */} + {showSection("ide") && ( +
+
+

+ {t("ideProviders") || "IDE Providers"}{" "} + + +

+ -
-

{t("upstreamProxyProvidersDesc")}

-
- {upstreamProxyEntries.map(({ providerId, provider, stats, toggleAuthType }) => ( - handleToggleProvider(providerId, toggleAuthType, active)} - /> - ))} -
-
- )} - - {/* Web Fetch Providers */} - {showSection("webfetch") && webFetchEntries.length > 0 && ( -
-
-

- {t("webFetchProvidersHeading")}{" "} - - -

-
-

{t("webFetchProvidersDesc")}

-
- {webFetchEntries.map( - ({ providerId, provider, stats, displayAuthType, toggleAuthType }) => ( - - handleToggleProvider(providerId, toggleAuthType, active) - } - /> - ) + + play_arrow + + {testingMode === "ide" ? t("testing") : t("testAll")} + +
+

+ {t("ideProvidersDesc") || + "Editors with built-in AI subscription. Use the provider page to import credentials directly from the IDE's keychain."} +

+ {ideProviderEntries.length === 0 ? ( +
+ {t("noIdeProviders") || "No IDE providers match the current filters."} +
+ ) : ( +
+ {ideProviderEntries.map( + ({ providerId, provider, stats, displayAuthType, toggleAuthType }) => ( + + handleToggleProvider(providerId, toggleAuthType, active) + } + /> + ) + )} +
)}
-
- )} + )} - {/* Aggregators Gateways */} - {showSection("apikey") && aggregatorProviderEntries.length > 0 && ( -
-
-

- {t("aggregatorsGateways")}{" "} - - -

-
-

{t("aggregatorsGatewaysDesc")}

-
- {aggregatorProviderEntries.map( - ({ providerId, provider, stats, displayAuthType, toggleAuthType }) => ( - - handleToggleProvider(providerId, toggleAuthType, active) - } + {/* Web / Cookie Providers */} + {showSection("web") && webCookieProviderEntries.length > 0 && ( +
+
+

+ {t("webCookieProviders")}{" "} + - ) - )} -

-
- )} - - {/* Enterprise & Cloud */} - {showSection("apikey") && enterpriseProviderEntries.length > 0 && ( -
-
-

- {t("enterpriseCloud")}{" "} - - -

-
-

{t("enterpriseCloudDesc")}

-
- {enterpriseProviderEntries.map( - ({ providerId, provider, stats, displayAuthType, toggleAuthType }) => ( - - handleToggleProvider(providerId, toggleAuthType, active) - } - /> - ) - )} -
-
- )} - - {/* Cloud Agent Providers */} - {showSection("cloud") && cloudAgentProviderEntries.length > 0 && ( -
-
-

- {t("cloudAgentProviders")}{" "} - - -

- + + play_arrow + + {testingMode === "web-cookie" ? t("testing") : t("testAll")} + +
+

{t("webCookieProvidersDesc")}

+
+ {webCookieProviderEntries.map( + ({ providerId, provider, stats, toggleAuthType }) => ( + + handleToggleProvider(providerId, toggleAuthType, active) + } + /> + ) + )} +
-

{t("cloudAgentProvidersDesc")}

-
- {cloudAgentProviderEntries.map( - ({ providerId, provider, stats, toggleAuthType }) => ( - - handleToggleProvider(providerId, toggleAuthType, active) - } - /> - ) - )} -
-
- )} + )} - {/* Local / Self-Hosted Providers */} - {showSection("local") && localProviderEntries.length > 0 && ( -
-
-

- {t("localProviders")}{" "} - - -

- + + play_arrow + + {testingMode === "free" ? t("testing") : t("testAll")} + +
+
+ {freeSectionEntries.map( + ({ providerId, provider, stats, displayAuthType, toggleAuthType }) => ( + + handleToggleProvider(providerId, toggleAuthType, active) + } + /> + ) + )} +
-

{t("localProvidersDesc")}

-
- {localProviderEntries.map(({ providerId, provider, stats, toggleAuthType }) => ( - handleToggleProvider(providerId, toggleAuthType, active)} - /> - ))} -
-
- )} + )} - {/* Search Providers */} - {showSection("search") && searchProviderEntries.length > 0 && ( -
-
-

- {t("searchProvidersHeading")}{" "} - - -

- -
-

{t("searchProvidersDesc")}

-
- {searchProviderEntries.map(({ providerId, provider, stats, toggleAuthType }) => ( - handleToggleProvider(providerId, toggleAuthType, active)} - /> - ))} -
-
- )} - - {/* Embeddings & Rerank */} - {showSection("apikey") && embeddingRerankProviderEntries.length > 0 && ( -
-
-

- {t("embeddingRerankProviders")}{" "} - - -

-
-

{t("embeddingRerankProvidersDesc")}

-
- {embeddingRerankProviderEntries.map( - ({ providerId, provider, stats, displayAuthType, toggleAuthType }) => ( - - handleToggleProvider(providerId, toggleAuthType, active) - } - /> - ) + + play_arrow + + {testingMode === "apikey" ? t("testing") : t("testAll")} + +
+

{t("apiKeyProvidersDesc")}

+ {llmProviderEntries.length > 0 && ( +
+

+ {t("llmProviders")} +

+
+ {llmProviderEntries.map( + ({ providerId, provider, stats, displayAuthType, toggleAuthType }) => ( + + handleToggleProvider(providerId, toggleAuthType, active) + } + /> + ) + )} +
+
)}
- - )} + )} - {/* Image Providers */} - {showSection("apikey") && imageProviderEntries.length > 0 && ( -
-
-

- {t("imageProviders")}{" "} - - -

-
-

{t("imageProvidersDesc")}

-
- {imageProviderEntries.map( - ({ providerId, provider, stats, displayAuthType, toggleAuthType }) => ( - - handleToggleProvider(providerId, toggleAuthType, active) - } + {/* No Auth Providers */} + {showSection("noauth") && + !showFreeOnly && + (noAuthEntriesAll.length > 0 || blockedNoAuthEntries.length > 0) && ( + notify.error(msg)} + testingMode={testingMode} + onBatchTest={handleBatchTest} + onToggleProvider={handleToggleProvider} + /> + )} + + {/* Upstream Proxy Providers */} + {showSection("proxy") && upstreamProxyEntries.length > 0 && ( +
+
+

+ {t("upstreamProxyProviders")}{" "} + - ) - )} -

-
- )} - - {/* Audio Only Providers */} - {showSection("audio") && audioProviderEntries.length > 0 && ( -
-
-

- {t("audioProvidersHeading")}{" "} - - -

- -
-

{t("audioProvidersDesc")}

-
- {audioProviderEntries.map(({ providerId, provider, stats, toggleAuthType }) => ( - handleToggleProvider(providerId, toggleAuthType, active)} - /> - ))} -
-
- )} - - {/* Video Generation */} - {showSection("apikey") && videoProviderEntries.length > 0 && ( -
-
-

- {t("videoProviders")}{" "} - - -

-
-

{t("videoProvidersDesc")}

-
- {videoProviderEntries.map( - ({ providerId, provider, stats, displayAuthType, toggleAuthType }) => ( + + play_arrow + + {testingMode === "upstream-proxy" ? t("testing") : t("testAll")} + +
+

{t("upstreamProxyProvidersDesc")}

+
+ {upstreamProxyEntries.map(({ providerId, provider, stats, toggleAuthType }) => ( handleToggleProvider(providerId, toggleAuthType, active) } /> - ) - )} + ))} +
-
- )} - - )} + )} + + {/* Web Fetch Providers */} + {showSection("webfetch") && webFetchEntries.length > 0 && ( +
+
+

+ {t("webFetchProvidersHeading")}{" "} + + +

+
+

{t("webFetchProvidersDesc")}

+
+ {webFetchEntries.map( + ({ providerId, provider, stats, displayAuthType, toggleAuthType }) => ( + + handleToggleProvider(providerId, toggleAuthType, active) + } + /> + ) + )} +
+
+ )} + + {/* Aggregators Gateways */} + {showSection("apikey") && aggregatorProviderEntries.length > 0 && ( +
+
+

+ {t("aggregatorsGateways")}{" "} + + +

+
+

{t("aggregatorsGatewaysDesc")}

+
+ {aggregatorProviderEntries.map( + ({ providerId, provider, stats, displayAuthType, toggleAuthType }) => ( + + handleToggleProvider(providerId, toggleAuthType, active) + } + /> + ) + )} +
+
+ )} + + {/* Enterprise & Cloud */} + {showSection("apikey") && enterpriseProviderEntries.length > 0 && ( +
+
+

+ {t("enterpriseCloud")}{" "} + + +

+
+

{t("enterpriseCloudDesc")}

+
+ {enterpriseProviderEntries.map( + ({ providerId, provider, stats, displayAuthType, toggleAuthType }) => ( + + handleToggleProvider(providerId, toggleAuthType, active) + } + /> + ) + )} +
+
+ )} + + {/* Cloud Agent Providers */} + {showSection("cloud") && cloudAgentProviderEntries.length > 0 && ( +
+
+

+ {t("cloudAgentProviders")}{" "} + + +

+ +
+

{t("cloudAgentProvidersDesc")}

+
+ {cloudAgentProviderEntries.map( + ({ providerId, provider, stats, toggleAuthType }) => ( + + handleToggleProvider(providerId, toggleAuthType, active) + } + /> + ) + )} +
+
+ )} + + {/* Local / Self-Hosted Providers */} + {showSection("local") && localProviderEntries.length > 0 && ( +
+
+

+ {t("localProviders")}{" "} + + +

+ +
+

{t("localProvidersDesc")}

+
+ {localProviderEntries.map(({ providerId, provider, stats, toggleAuthType }) => ( + + handleToggleProvider(providerId, toggleAuthType, active) + } + /> + ))} +
+
+ )} + + {/* Search Providers */} + {showSection("search") && searchProviderEntries.length > 0 && ( +
+
+

+ {t("searchProvidersHeading")}{" "} + + +

+ +
+

{t("searchProvidersDesc")}

+
+ {searchProviderEntries.map(({ providerId, provider, stats, toggleAuthType }) => ( + + handleToggleProvider(providerId, toggleAuthType, active) + } + /> + ))} +
+
+ )} + + {/* Embeddings & Rerank */} + {showSection("apikey") && embeddingRerankProviderEntries.length > 0 && ( +
+
+

+ {t("embeddingRerankProviders")}{" "} + + +

+
+

{t("embeddingRerankProvidersDesc")}

+
+ {embeddingRerankProviderEntries.map( + ({ providerId, provider, stats, displayAuthType, toggleAuthType }) => ( + + handleToggleProvider(providerId, toggleAuthType, active) + } + /> + ) + )} +
+
+ )} + + {/* Image Providers */} + {showSection("apikey") && imageProviderEntries.length > 0 && ( +
+
+

+ {t("imageProviders")}{" "} + + +

+
+

{t("imageProvidersDesc")}

+
+ {imageProviderEntries.map( + ({ providerId, provider, stats, displayAuthType, toggleAuthType }) => ( + + handleToggleProvider(providerId, toggleAuthType, active) + } + /> + ) + )} +
+
+ )} + + {/* Audio Only Providers */} + {showSection("audio") && audioProviderEntries.length > 0 && ( +
+
+

+ {t("audioProvidersHeading")}{" "} + + +

+ +
+

{t("audioProvidersDesc")}

+
+ {audioProviderEntries.map(({ providerId, provider, stats, toggleAuthType }) => ( + + handleToggleProvider(providerId, toggleAuthType, active) + } + /> + ))} +
+
+ )} + + {/* Video Generation */} + {showSection("apikey") && videoProviderEntries.length > 0 && ( +
+
+

+ {t("videoProviders")}{" "} + + +

+
+

{t("videoProvidersDesc")}

+
+ {videoProviderEntries.map( + ({ providerId, provider, stats, displayAuthType, toggleAuthType }) => ( + + handleToggleProvider(providerId, toggleAuthType, active) + } + /> + ) + )} +
+
+ )} + + )} - setShowAddCompatibleModal(false)} - onCreated={(node) => { - setProviderNodes((prev) => upsertProviderNodeById(prev, node)); - setShowAddCompatibleModal(false); - router.push(`/dashboard/providers/${node.id}`); - }} - /> - setShowAddAnthropicCompatibleModal(false)} - onCreated={(node) => { - setProviderNodes((prev) => upsertProviderNodeById(prev, node)); - setShowAddAnthropicCompatibleModal(false); - router.push(`/dashboard/providers/${node.id}`); - }} - /> - {ccCompatibleProviderEnabled && ( setShowAddCcCompatibleModal(false)} + isOpen={showAddCompatibleModal} + mode="openai" + onClose={() => setShowAddCompatibleModal(false)} onCreated={(node) => { setProviderNodes((prev) => upsertProviderNodeById(prev, node)); - setShowAddCcCompatibleModal(false); + setShowAddCompatibleModal(false); router.push(`/dashboard/providers/${node.id}`); }} /> - )} - setShowImportFromFileModal(false)} - onImported={async () => setConnections((await loadProviderPageData()).connections)} - /> - {/* Test Results Modal */} - {testResults && ( -
setTestResults(null)} - > -
+ setShowAddAnthropicCompatibleModal(false)} + onCreated={(node) => { + setProviderNodes((prev) => upsertProviderNodeById(prev, node)); + setShowAddAnthropicCompatibleModal(false); + router.push(`/dashboard/providers/${node.id}`); + }} + /> + {ccCompatibleProviderEnabled && ( + setShowAddCcCompatibleModal(false)} + onCreated={(node) => { + setProviderNodes((prev) => upsertProviderNodeById(prev, node)); + setShowAddCcCompatibleModal(false); + router.push(`/dashboard/providers/${node.id}`); + }} + /> + )} + setShowImportFromFileModal(false)} + onImported={async () => setConnections((await loadProviderPageData()).connections)} + /> + {/* Test Results Modal */} + {testResults && (
e.stopPropagation()} + className="fixed inset-0 z-50 flex items-start justify-center pt-[10vh]" + onClick={() => setTestResults(null)} > -
-

{t("testResults")}

- -
-
- +
+
e.stopPropagation()} + > +
+

{t("testResults")}

+ +
+
+ +
-
- )} -
+ )} +
+ ); } diff --git a/src/app/(dashboard)/dashboard/providers/providerPageUtils.ts b/src/app/(dashboard)/dashboard/providers/providerPageUtils.ts index 90c42a8482..1405ce875c 100644 --- a/src/app/(dashboard)/dashboard/providers/providerPageUtils.ts +++ b/src/app/(dashboard)/dashboard/providers/providerPageUtils.ts @@ -10,12 +10,16 @@ import { import { isClaudeCodeCompatibleProvider, supportsApiKeyOnFreeProvider, + supportsDualAuthProvider, } from "@/shared/constants/providers"; import { getModelsByProviderId } from "@/shared/constants/models"; import { providerHasServiceKind } from "@/lib/providers/serviceKindIndex"; import { compareTr, matchesAnyToken, matchesSearch } from "@/shared/utils/turkishText"; import { fetchWithTimeout } from "@/shared/utils/fetchTimeout"; -import type { ProviderDisplayMode } from "./providerPageStorage"; +import { + parseProviderDisplayModePreference, + type ProviderDisplayMode, +} from "./providerPageStorage"; import { getFeaturedProviderRank } from "./featuredProviders"; export interface ProviderStatsSnapshot { @@ -71,22 +75,117 @@ export function shouldShowFirstProviderHint( } export function syncSearchToUrl(searchQuery: string): void { + syncProviderFiltersToUrl({ searchQuery }); +} + +/** All dashboard summary-chip category keys that are valid in `?cat=`. */ +const PROVIDER_CATEGORY_URL_VALUES = new Set([ + "oauth", + "ide", + "free", + "no-auth", + "upstream-proxy", + "apikey", + "compatible", + "webcookie", + "search", + "webfetch", + "audio", + "local", + "cloudagent", +]); + +/** Media/service-kind chip keys that are valid in `?media=`. */ +const PROVIDER_SERVICE_KIND_URL_VALUES = new Set([ + "image", + "video", + "music", + "tts", + "stt", + "embedding", +]); + +export interface ProviderFilterUrlState { + searchQuery?: string; + modelSearchQuery?: string; + displayMode?: ProviderDisplayMode; + category?: string | null; + showFreeOnly?: boolean; + mediaKind?: string | null; +} + +/** + * Reflect the providers dashboard filters in the URL query string via + * history.replaceState so a filtered view can be bookmarked/shared: + * + * ?search= provider-name / id search (#8624) + * ?model= model-name search + * ?mode=all|configured|compact display mode (All / Configured / Compact) + * ?cat= active summary category (oauth, ide, free, no-auth, …) + * ?media= media/service-kind filter (image, video, music, …) + * + * "Free Tier" is encoded as `?cat=free` (showFreeOnly). Params carrying no + * filter are removed so the URL stays canonical and shareable. + */ +export function syncProviderFiltersToUrl(state: ProviderFilterUrlState): void { if (typeof window === "undefined") return; const url = new URL(window.location.href); - const currentSearch = url.searchParams.get("search") || ""; + const params = url.searchParams; + let changed = false; - if (searchQuery.trim()) { - if (currentSearch !== searchQuery) { - url.searchParams.set("search", searchQuery); - window.history.replaceState(window.history.state, "", url.toString()); - } - } else if (url.searchParams.has("search")) { - url.searchParams.delete("search"); + const setOrRemove = (key: string, value: string | null | undefined) => { + const next = value != null && value.length > 0 ? value : null; + const current = params.get(key); + if (next === current) return; + if (next === null) params.delete(key); + else params.set(key, next); + changed = true; + }; + + setOrRemove("search", state.searchQuery?.trim()); + setOrRemove("model", state.modelSearchQuery?.trim()); + setOrRemove("mode", state.displayMode && state.displayMode !== "all" ? state.displayMode : null); + setOrRemove("cat", state.showFreeOnly ? "free" : state.category || null); + setOrRemove("media", state.mediaKind || null); + + if (changed) { window.history.replaceState(window.history.state, "", url.toString()); } } +/** Parse the provider dashboard filters back out of URL query params. */ +export function readProviderFiltersFromUrl(params: URLSearchParams): ProviderFilterUrlState { + const state: ProviderFilterUrlState = {}; + + const search = params.get("search"); + if (search) state.searchQuery = search; + + const model = params.get("model"); + if (model) state.modelSearchQuery = model; + + const mode = parseProviderDisplayModePreference(params.get("mode")); + if (mode) state.displayMode = mode; + + const category = params.get("cat"); + if (category && PROVIDER_CATEGORY_URL_VALUES.has(category)) { + if (category === "free") { + state.showFreeOnly = true; + state.category = null; + } else { + state.showFreeOnly = false; + state.category = category; + } + } + + const media = params.get("media"); + if (media && PROVIDER_SERVICE_KIND_URL_VALUES.has(media)) { + state.mediaKind = media; + } + + return state; +} + export function shouldShowProviderSection( category: string, activeCategory: string | null, @@ -142,6 +241,7 @@ export function connectionMatchesProviderCard( if (cardAuthType === "free") return true; if ( supportsApiKeyOnFreeProvider(providerId) || + supportsDualAuthProvider(providerId) || OAUTH_CARD_API_KEY_CONNECTION_PROVIDER_IDS.has(providerId) ) { return conn.authType === "oauth" || conn.authType === "apikey" || conn.authType === "api_key"; @@ -413,6 +513,43 @@ export function buildCompactProviderEntries( return visibleEntries; } +/** + * Result of `resolveProviderHeaderLink` — decides whether the provider name + * link on the detail page header (`ProviderPageHeader`) points at the + * static catalog `website` or at a Radar referral link. + */ +export interface ProviderHeaderLink { + /** Effective URL for the header link, or `undefined` for no link at all. */ + website: string | undefined; + /** True when `website` came from a Radar default referral, not the static catalog. */ + isReferralLink: boolean; +} + +/** + * Pure decision function for the provider-name link (D28 — referral links). + * Deliberately DB-free and Radar-module-free: it takes the already-resolved + * referral URL (or `undefined`/`null` when none applies) as a plain string + * so this file — and the providers dashboard that depends on it — never has + * to import `@/lib/radar` (which pulls in `better-sqlite3`, Node-only) to + * render. The caller (`ProviderDetailPageClient`) is the one place allowed + * to fetch the referral, via the local `/api/radar/referrals` route — same + * pattern the Radar dashboard page already uses for its own data. + * + * With `RADAR_ENABLED` off, or no cache, or no default referral for the + * provider, `referralUrl` is `null`/`undefined` and this returns the exact + * same `website` the catalog already provided — byte-identical to today's + * behavior. + */ +export function resolveProviderHeaderLink( + staticWebsite: string | null | undefined, + referralUrl: string | null | undefined +): ProviderHeaderLink { + if (referralUrl) { + return { website: referralUrl, isReferralLink: true }; + } + return { website: staticWebsite ?? undefined, isReferralLink: false }; +} + export function resolveDashboardProviderInfo( providerId: string, options?: { @@ -452,6 +589,28 @@ export interface ProviderPageData { expirations: any | null; blockedProviders: string[] | null; settings: any | null; + /** OpenRouter-sourced popularity/identity enrichment, keyed by provider slug. Empty if the sync hasn't run yet or the fetch failed. */ + openRouterProviderStats: OpenRouterProviderStatsEntry[]; +} + +/** Mirrors ProviderPopularityEntry from src/lib/catalog/openrouterProviderStats.ts (kept local to avoid a server-only import from a client component). */ +export interface OpenRouterProviderStatsEntry { + slug: string; + displayName: string; + headquarters?: string; + statusPageUrl?: string | null; + byokEnabled?: boolean; + dataPolicy?: { + training?: boolean; + retainsPrompts?: boolean; + termsOfServiceURL?: string; + privacyPolicyURL?: string; + }; + iconUrl?: string; + modelCount: number; + totalTokens: number; + totalRequests: number; + popularityRank: number; } // Bound each first-paint request so a single stalled connection cannot freeze @@ -489,12 +648,14 @@ export async function loadProviderPageData( } }; - const [connectionsData, nodesData, expirationsData, settingsData] = await Promise.all([ - safeJson("/api/providers"), - safeJson("/api/provider-nodes"), - safeJson("/api/providers/expiration"), - safeJson("/api/settings", { cache: "no-store" }), - ]); + const [connectionsData, nodesData, expirationsData, settingsData, openRouterStatsData] = + await Promise.all([ + safeJson("/api/providers"), + safeJson("/api/provider-nodes"), + safeJson("/api/providers/expiration"), + safeJson("/api/settings", { cache: "no-store" }), + safeJson("/api/providers/openrouter-stats"), + ]); return { connections: Array.isArray(connectionsData?.connections) ? connectionsData.connections : [], @@ -505,5 +666,8 @@ export async function loadProviderPageData( ? settingsData.blockedProviders : null, settings: settingsData ?? null, + openRouterProviderStats: Array.isArray(openRouterStatsData?.data) + ? openRouterStatsData.data + : [], }; } diff --git a/src/app/(dashboard)/dashboard/providers/services/components/AutoRestartAdoptedToggle.tsx b/src/app/(dashboard)/dashboard/providers/services/components/AutoRestartAdoptedToggle.tsx new file mode 100644 index 0000000000..c2699dd7fb --- /dev/null +++ b/src/app/(dashboard)/dashboard/providers/services/components/AutoRestartAdoptedToggle.tsx @@ -0,0 +1,62 @@ +"use client"; + +/** + * Toggle for "auto-restart an adopted process." When a supervisor's + * probeBeforeSpawn finds a healthy instance already on its port, it adopts + * that process rather than spawning a new one — but an adopted process has + * no piped stdout/stderr (nothing was ever spawned to pipe from), so the + * Logs panel stays empty for its whole lifetime. Enabling this immediately + * kills an adopted process and spawns a fresh one this supervisor actually + * owns, trading one restart for working log capture. Off by default — + * killing a process the operator didn't ask to be killed should be opt-in. + * + * English literals used inline rather than i18n keys — mirrors the same + * choice in DarioAccountPanel.tsx (avoids a translation-drift gate for a + * single new control; see that file's header comment for the precedent). + */ + +import { useState } from "react"; +import { Card, Toggle } from "@/shared/components"; +import { useServiceStatus } from "../hooks/useServiceStatus"; + +interface AutoRestartAdoptedToggleProps { + name: string; +} + +export function AutoRestartAdoptedToggle({ name }: AutoRestartAdoptedToggleProps) { + const { data, mutate } = useServiceStatus(name); + const [pending, setPending] = useState(false); + + async function handleToggle(enabled: boolean) { + setPending(true); + try { + await fetch(`/api/services/${name}/auto-restart-adopted`, { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ enabled }), + }); + mutate(); + } finally { + setPending(false); + } + } + + return ( + +
+
+

Auto-restart adopted process

+

+ If this service is found already running (adopted instead of started fresh), kill and + restart it automatically so logs can be captured. Off by default. +

+
+ +
+
+ ); +} diff --git a/src/app/(dashboard)/dashboard/providers/services/components/DarioAccountPanel.tsx b/src/app/(dashboard)/dashboard/providers/services/components/DarioAccountPanel.tsx new file mode 100644 index 0000000000..ee6cd7bd88 --- /dev/null +++ b/src/app/(dashboard)/dashboard/providers/services/components/DarioAccountPanel.tsx @@ -0,0 +1,407 @@ +"use client"; + +/** + * Dario account panel — drives the headless Claude OAuth login flow against the + * server-side admin-proxy routes (/api/services/dario/admin/*). The real + * DARIO_ADMIN_TOKEN never reaches this component; the OmniRoute routes attach it. + * + * Flow: "Start Login" → render the returned Claude authorize_url as an external + * link + expiry countdown + a code input → "Complete Login" posts the pasted + * code → on success the account is routable immediately (Dario hot-reloads) and + * the account list refreshes. Each row has a "Remove" button. + * + * Also offers "Import from OmniRoute": lists any existing OmniRoute `claude` + * provider connection (OAuth-based) and imports its access+refresh token pair + * directly into Dario's account store, skipping the browser OAuth round trip + * entirely — valid because both tools authenticate against the same public + * Claude Code OAuth client. See + * /api/services/dario/admin/import-from-omniroute/route.ts for why this is + * safe (no re-implemented OAuth, just a decrypt()'d token handoff). + * + * Structurally mirrors the shared services components (Card/Button, text-xs + * muted copy). English literals are used inline rather than i18n keys to avoid + * a translation-drift gate for this one panel — matches how other service- + * specific panels keep their bespoke copy local. + */ + +import { useCallback, useEffect, useState } from "react"; +import { Card, Button } from "@/shared/components"; +import Tooltip from "@/shared/components/Tooltip"; + +interface DarioAccount { + alias: string; + scopes?: string[]; + expiresIn?: string; + expiresInMs?: number; + expiresAt?: number | string; + status?: string; + requestCount?: number; +} + +interface PendingLogin { + alias: string; + authorizeUrl: string; + expiresAt: string; +} + +interface OmniConnection { + id: string; + name: string; + email: string | null; + organizationType: string | null; + organizationRateLimitTier: string | null; +} + +function formatExpiry(acc: DarioAccount): string { + if (typeof acc.expiresInMs === "number") { + const mins = Math.max(0, Math.round(acc.expiresInMs / 60000)); + if (mins >= 60) return `expires in ~${Math.round(mins / 60)}h`; + return `expires in ~${mins}m`; + } + if (acc.expiresAt) { + const d = new Date(acc.expiresAt); + if (!Number.isNaN(d.getTime())) return `expires ${d.toLocaleString()}`; + } + return ""; +} + +export function DarioAccountPanel() { + const [accounts, setAccounts] = useState([]); + const [loading, setLoading] = useState(false); + const [error, setError] = useState(null); + + const [pending, setPending] = useState(null); + const [aliasInput, setAliasInput] = useState(""); + const [codeInput, setCodeInput] = useState(""); + const [busy, setBusy] = useState(null); + const [notice, setNotice] = useState(null); + + const [omniConnections, setOmniConnections] = useState([]); + const [omniLoading, setOmniLoading] = useState(false); + const [importBusyId, setImportBusyId] = useState(null); + + const refreshAccounts = useCallback(async () => { + setLoading(true); + setError(null); + try { + const res = await fetch("/api/services/dario/admin/accounts"); + const json = (await res.json().catch(() => null)) as { + accounts?: DarioAccount[]; + error?: string; + } | null; + if (!res.ok) { + throw new Error(json?.error || `HTTP ${res.status}`); + } + setAccounts(Array.isArray(json?.accounts) ? json!.accounts : []); + } catch (err) { + setError(err instanceof Error ? err.message : String(err)); + } finally { + setLoading(false); + } + }, []); + + const refreshOmniConnections = useCallback(async () => { + setOmniLoading(true); + try { + const res = await fetch("/api/services/dario/admin/import-from-omniroute"); + const json = (await res.json().catch(() => null)) as { + connections?: OmniConnection[]; + error?: string; + } | null; + if (res.ok) { + setOmniConnections(Array.isArray(json?.connections) ? json!.connections : []); + } + } catch { + /* non-fatal — import section just stays empty */ + } finally { + setOmniLoading(false); + } + }, []); + + useEffect(() => { + void refreshAccounts(); + void refreshOmniConnections(); + }, [refreshAccounts, refreshOmniConnections]); + + async function importFromOmniroute(connectionId: string) { + setImportBusyId(connectionId); + setError(null); + setNotice(null); + try { + const res = await fetch("/api/services/dario/admin/import-from-omniroute", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ connectionId }), + }); + const json = (await res.json().catch(() => null)) as { + alias?: string; + imported?: boolean; + error?: string; + } | null; + if (!res.ok || !json?.imported) { + throw new Error(json?.error || `HTTP ${res.status}`); + } + setNotice(`Imported as account "${json.alias}" — Dario restarted to pick it up.`); + await refreshAccounts(); + } catch (err) { + setError(err instanceof Error ? err.message : String(err)); + } finally { + setImportBusyId(null); + } + } + + async function startLogin() { + setBusy("start"); + setError(null); + setNotice(null); + try { + const res = await fetch("/api/services/dario/admin/login-start", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify(aliasInput.trim() ? { alias: aliasInput.trim() } : {}), + }); + const json = (await res.json().catch(() => null)) as { + alias?: string; + authorize_url?: string; + expires_at?: string; + error?: string; + } | null; + if (!res.ok || !json?.authorize_url || !json?.alias) { + throw new Error(json?.error || `HTTP ${res.status}`); + } + setPending({ + alias: json.alias, + authorizeUrl: json.authorize_url, + expiresAt: json.expires_at || "", + }); + setCodeInput(""); + } catch (err) { + setError(err instanceof Error ? err.message : String(err)); + } finally { + setBusy(null); + } + } + + async function completeLogin() { + if (!pending) return; + setBusy("complete"); + setError(null); + setNotice(null); + try { + const res = await fetch("/api/services/dario/admin/login-complete", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ alias: pending.alias, code: codeInput.trim() }), + }); + const json = (await res.json().catch(() => null)) as { + alias?: string; + status?: string; + error?: string; + } | null; + if (!res.ok) { + throw new Error(json?.error || `HTTP ${res.status}`); + } + setNotice(`Account "${json?.alias ?? pending.alias}" added.`); + setPending(null); + setCodeInput(""); + setAliasInput(""); + await refreshAccounts(); + } catch (err) { + setError(err instanceof Error ? err.message : String(err)); + } finally { + setBusy(null); + } + } + + async function removeAccount(alias: string) { + setError(null); + setNotice(null); + try { + const res = await fetch( + `/api/services/dario/admin/accounts?alias=${encodeURIComponent(alias)}`, + { + method: "DELETE", + } + ); + const json = (await res.json().catch(() => null)) as { + alias?: string; + removed?: boolean; + error?: string; + } | null; + if (!res.ok) { + throw new Error(json?.error || `HTTP ${res.status}`); + } + await refreshAccounts(); + } catch (err) { + setError(err instanceof Error ? err.message : String(err)); + } + } + + return ( + +
+
+

Claude accounts

+

+ Authenticate Dario with your Claude Pro/Max subscription. Traffic bills to your + subscription pool. At least one account is required before Dario can route requests + (until then /health reports degraded). +

+
+ + {/* Account list */} +
+ {loading && accounts.length === 0 ? ( +
+ ) : accounts.length === 0 ? ( +

No accounts configured yet.

+ ) : ( + accounts.map((acc) => ( +
+
+

{acc.alias}

+

+ {[ + formatExpiry(acc), + acc.status, + Array.isArray(acc.scopes) && acc.scopes.length + ? `${acc.scopes.length} scope(s)` + : "", + ] + .filter(Boolean) + .join(" · ")} +

+
+ +
+ )) + )} +
+ + {/* Import from OmniRoute */} +
+

Import from OmniRoute

+

+ Reuse an existing OmniRoute Claude connection's OAuth tokens instead of logging in + again — skips the browser approval step entirely. +

+ {omniLoading && omniConnections.length === 0 ? ( +
+ ) : omniConnections.length === 0 ? ( +
+

+ No eligible OmniRoute Claude connections found. +

+ + + +
+ ) : ( + omniConnections.map((c) => ( +
+
+

{c.name}

+

+ {[c.organizationType, c.organizationRateLimitTier].filter(Boolean).join(" · ")} +

+
+ +
+ )) + )} +
+ + {/* Login flow */} + {!pending ? ( +
+ setAliasInput(e.target.value)} + className="flex-1 min-w-[140px] bg-transparent text-xs border border-border rounded px-2 py-1.5 outline-none placeholder:text-text-muted" + /> + + +
+ ) : ( +
+

+ 1. Open this URL in your browser and approve access for account{" "} + {pending.alias}: +

+ + {pending.authorizeUrl} + + {pending.expiresAt && ( +

+ Pending login expires {new Date(pending.expiresAt).toLocaleTimeString()} +

+ )} +

2. Paste the code Anthropic displays:

+
+ setCodeInput(e.target.value)} + className="flex-1 min-w-[180px] bg-transparent text-xs border border-border rounded px-2 py-1.5 outline-none placeholder:text-text-muted font-mono" + /> + + +
+
+ )} + + {notice &&

{notice}

} + {error &&

{error}

} +
+ + ); +} diff --git a/src/app/(dashboard)/dashboard/providers/services/components/ServiceStatusCard.tsx b/src/app/(dashboard)/dashboard/providers/services/components/ServiceStatusCard.tsx index fbe85ccd81..c82a8f06d1 100644 --- a/src/app/(dashboard)/dashboard/providers/services/components/ServiceStatusCard.tsx +++ b/src/app/(dashboard)/dashboard/providers/services/components/ServiceStatusCard.tsx @@ -83,6 +83,19 @@ export function ServiceStatusCard({ name }: ServiceStatusCardProps) { )}
+ {/* Adopted-process note — English literal, not an i18n key; see + AutoRestartAdoptedToggle.tsx's header comment for why. */} + {data.adopted && ( +

+ info + + This process was adopted from an already-running instance, not started by this + supervisor — live log tailing isn't available until you restart it (Stop, then + Start), or turn on Auto-restart adopted process below. + +

+ )} + {data.lastError &&

{data.lastError}

} ); diff --git a/src/app/(dashboard)/dashboard/providers/services/hooks/useServiceStatus.ts b/src/app/(dashboard)/dashboard/providers/services/hooks/useServiceStatus.ts index cb392cc987..f83c6f0bed 100644 --- a/src/app/(dashboard)/dashboard/providers/services/hooks/useServiceStatus.ts +++ b/src/app/(dashboard)/dashboard/providers/services/hooks/useServiceStatus.ts @@ -16,6 +16,15 @@ export interface ServiceStatus { autoStart: boolean; apiKeyMasked?: string | null; providerExpose?: boolean; + /** + * True when the running process was adopted from an already-listening + * instance rather than spawned by this supervisor — it has no piped + * stdout/stderr, so the Logs panel stays empty until it's replaced by a + * real spawn (Stop then Start, or automatically via autoRestartAdopted). + */ + adopted: boolean; + /** When true, an adopted process is immediately killed and re-spawned. */ + autoRestartAdopted: boolean; } interface UseServiceStatusResult { diff --git a/src/app/(dashboard)/dashboard/providers/services/page.tsx b/src/app/(dashboard)/dashboard/providers/services/page.tsx index 3d58603477..f2a97128b4 100644 --- a/src/app/(dashboard)/dashboard/providers/services/page.tsx +++ b/src/app/(dashboard)/dashboard/providers/services/page.tsx @@ -7,14 +7,16 @@ import { CliproxyServiceTab } from "./tabs/CliproxyServiceTab"; import { NinerouterServiceTab } from "./tabs/NinerouterServiceTab"; import { MuxServiceTab } from "./tabs/MuxServiceTab"; import { BifrostServiceTab } from "./tabs/BifrostServiceTab"; +import { DarioServiceTab } from "./tabs/DarioServiceTab"; -type Tab = "cliproxy" | "9router" | "mux" | "bifrost"; +type Tab = "cliproxy" | "9router" | "mux" | "bifrost" | "dario"; const TABS: { id: Tab; label: string; icon: string }[] = [ { id: "cliproxy", label: "CLIProxyAPI", icon: "swap_horiz" }, { id: "9router", label: "9Router", icon: "route" }, { id: "mux", label: "Mux", icon: "hub" }, { id: "bifrost", label: "Bifrost", icon: "bolt" }, + { id: "dario", label: "Dario", icon: "shield_person" }, ]; export default function ServicesPage() { @@ -61,6 +63,7 @@ export default function ServicesPage() { {active === "9router" && } {active === "mux" && } {active === "bifrost" && } + {active === "dario" && }
); diff --git a/src/app/(dashboard)/dashboard/providers/services/tabs/BifrostServiceTab.tsx b/src/app/(dashboard)/dashboard/providers/services/tabs/BifrostServiceTab.tsx index 0d832a9f26..ff26e06a81 100644 --- a/src/app/(dashboard)/dashboard/providers/services/tabs/BifrostServiceTab.tsx +++ b/src/app/(dashboard)/dashboard/providers/services/tabs/BifrostServiceTab.tsx @@ -4,6 +4,7 @@ import { ServiceStatusCard } from "../components/ServiceStatusCard"; import { ServiceLifecycleButtons } from "../components/ServiceLifecycleButtons"; import { ServiceLogsPanel } from "../components/ServiceLogsPanel"; import { AutoStartToggle } from "../components/AutoStartToggle"; +import { AutoRestartAdoptedToggle } from "../components/AutoRestartAdoptedToggle"; const NAME = "bifrost"; @@ -13,6 +14,7 @@ export function BifrostServiceTab() { +
); diff --git a/src/app/(dashboard)/dashboard/providers/services/tabs/CliproxyServiceTab.tsx b/src/app/(dashboard)/dashboard/providers/services/tabs/CliproxyServiceTab.tsx index 4df6720418..0d26cb6e6d 100644 --- a/src/app/(dashboard)/dashboard/providers/services/tabs/CliproxyServiceTab.tsx +++ b/src/app/(dashboard)/dashboard/providers/services/tabs/CliproxyServiceTab.tsx @@ -5,6 +5,7 @@ import { ServiceLifecycleButtons } from "../components/ServiceLifecycleButtons"; import { ServiceLogsPanel } from "../components/ServiceLogsPanel"; import { CliproxyModelMappingEditor } from "../components/CliproxyModelMappingEditor"; import { AutoStartToggle } from "../components/AutoStartToggle"; +import { AutoRestartAdoptedToggle } from "../components/AutoRestartAdoptedToggle"; import { CliproxyConnectionPanel } from "../components/CliproxyConnectionPanel"; import { CliproxyProviderExposureCard } from "../components/CliproxyProviderExposureCard"; @@ -16,6 +17,7 @@ export function CliproxyServiceTab() { + diff --git a/src/app/(dashboard)/dashboard/providers/services/tabs/DarioServiceTab.tsx b/src/app/(dashboard)/dashboard/providers/services/tabs/DarioServiceTab.tsx new file mode 100644 index 0000000000..c2e91be215 --- /dev/null +++ b/src/app/(dashboard)/dashboard/providers/services/tabs/DarioServiceTab.tsx @@ -0,0 +1,23 @@ +"use client"; + +import { ServiceStatusCard } from "../components/ServiceStatusCard"; +import { ServiceLifecycleButtons } from "../components/ServiceLifecycleButtons"; +import { ServiceLogsPanel } from "../components/ServiceLogsPanel"; +import { AutoStartToggle } from "../components/AutoStartToggle"; +import { AutoRestartAdoptedToggle } from "../components/AutoRestartAdoptedToggle"; +import { DarioAccountPanel } from "../components/DarioAccountPanel"; + +const NAME = "dario"; + +export function DarioServiceTab() { + return ( +
+ + + + + + +
+ ); +} diff --git a/src/app/(dashboard)/dashboard/providers/services/tabs/MuxServiceTab.tsx b/src/app/(dashboard)/dashboard/providers/services/tabs/MuxServiceTab.tsx index 087bc9b3ff..8aa2cdc56d 100644 --- a/src/app/(dashboard)/dashboard/providers/services/tabs/MuxServiceTab.tsx +++ b/src/app/(dashboard)/dashboard/providers/services/tabs/MuxServiceTab.tsx @@ -4,6 +4,7 @@ import { ServiceStatusCard } from "../components/ServiceStatusCard"; import { ServiceLifecycleButtons } from "../components/ServiceLifecycleButtons"; import { ServiceLogsPanel } from "../components/ServiceLogsPanel"; import { AutoStartToggle } from "../components/AutoStartToggle"; +import { AutoRestartAdoptedToggle } from "../components/AutoRestartAdoptedToggle"; const NAME = "mux"; @@ -13,6 +14,7 @@ export function MuxServiceTab() { + ); diff --git a/src/app/(dashboard)/dashboard/providers/services/tabs/NinerouterServiceTab.tsx b/src/app/(dashboard)/dashboard/providers/services/tabs/NinerouterServiceTab.tsx index 3d5395fc3f..9fb1a2e785 100644 --- a/src/app/(dashboard)/dashboard/providers/services/tabs/NinerouterServiceTab.tsx +++ b/src/app/(dashboard)/dashboard/providers/services/tabs/NinerouterServiceTab.tsx @@ -7,6 +7,7 @@ import { NinerouterInstallWizard } from "../components/NinerouterInstallWizard"; import { NinerouterProviderExposureCard } from "../components/NinerouterProviderExposureCard"; import { NinerouterModelList } from "../components/NinerouterModelList"; import { AutoStartToggle } from "../components/AutoStartToggle"; +import { AutoRestartAdoptedToggle } from "../components/AutoRestartAdoptedToggle"; import { ApiKeyField } from "../components/ApiKeyField"; import { NinerouterEmbedFrame } from "../components/NinerouterEmbedFrame"; import { useServiceStatus } from "../hooks/useServiceStatus"; @@ -30,6 +31,7 @@ export function NinerouterServiceTab() { + diff --git a/src/app/(dashboard)/dashboard/radar/page.tsx b/src/app/(dashboard)/dashboard/radar/page.tsx new file mode 100644 index 0000000000..be0e20aa03 --- /dev/null +++ b/src/app/(dashboard)/dashboard/radar/page.tsx @@ -0,0 +1,725 @@ +"use client"; + +import { useState, useEffect, useCallback, useRef } from "react"; +import { useTranslations } from "next-intl"; +import { notFound } from "next/navigation"; +import Link from "next/link"; +import { Card } from "@/shared/components"; +import { shouldAutoSyncOnOpen } from "@/lib/radar/autoSync"; +import { isValidSupporterKeyFormat } from "@/lib/radar/supporterKey"; + +// --------------------------------------------------------------------------- +// Types +// --------------------------------------------------------------------------- + +interface RadarMeta { + version: string; + tier: string; + fetchedAt: string; +} + +interface RadarMergedEntry { + provider: string; + modelId: string; + displayName: string; + monthlyTokens: number; + creditTokens: number; + freeType: string; + poolKey: string | null; + tos: string; + trainsOnPrompts?: boolean; + enabled?: boolean; + origin: "baseline" | "radar" | "local"; + disabledBy?: "radar"; + // Extended feed fields (present when origin=radar) + contextWindow?: number | null; + capabilities?: { tools: boolean; vision: boolean; thinking: boolean }; + budget?: { kind: string; tokensPerMonth?: number; poolId?: string }; + limits?: { rpm: number | null; rpd: number | null; tpm: number | null; tpd: number | null }; + setup?: { keyUrl: string | null; steps: string[] } | null; +} + +type PageState = "flag_off" | "optin_pending" | "empty" | "populated"; + +/** D28 — referral links / free credits. Client-side mirror of RadarReferral. */ +interface RadarReferralItem { + provider: string; + url: string; + kind: "fixo" | "campanha"; + validUntil: string | null; + requiredAction: string | null; + isDefault: boolean; +} + +interface RadarReferralsState { + fixed: RadarReferralItem[]; + campaigns: RadarReferralItem[]; + tier: string | null; +} + +type RadarTabId = "catalog" | "referrals"; + +// --------------------------------------------------------------------------- +// Helpers +// --------------------------------------------------------------------------- + +/** Determine the page state from the fetch result. */ +export function resolveRadarPageState( + flagOn: boolean, + optedIn: boolean, + hasEntries: boolean, +): PageState { + if (!flagOn) return "flag_off"; + if (!optedIn) return "optin_pending"; + if (!hasEntries) return "empty"; + return "populated"; +} + +/** Relative time string (e.g., "3h ago", "2d ago"). */ +function relativeTime(isoDate: string): string { + const now = Date.now(); + const then = new Date(isoDate).getTime(); + const diffMs = now - then; + if (diffMs < 0) return "just now"; + const mins = Math.floor(diffMs / 60_000); + if (mins < 1) return "just now"; + if (mins < 60) return `${mins}m ago`; + const hours = Math.floor(mins / 60); + if (hours < 24) return `${hours}h ago`; + const days = Math.floor(hours / 24); + return `${days}d ago`; +} + +/** Format token count as human-readable. */ +function formatTokens(n: number): string { + if (n === 0) return "rate-only"; + if (n >= 1_000_000) return `${(n / 1_000_000).toFixed(1)}M`; + if (n >= 1_000) return `${(n / 1_000).toFixed(0)}K`; + return String(n); +} + +/** Budget display string. */ +function budgetLabel(entry: RadarMergedEntry): string { + if (entry.budget?.kind === "shared_pool") { + return `shared (${formatTokens(entry.budget.tokensPerMonth ?? entry.monthlyTokens)}/mo)`; + } + if (entry.budget?.kind === "rate_only" || entry.monthlyTokens === 0) return "rate-only"; + return `${formatTokens(entry.monthlyTokens)}/mo`; +} + +// --------------------------------------------------------------------------- +// Page Component +// --------------------------------------------------------------------------- + +export default function RadarPage() { + const t = useTranslations("radarPage"); + const [entries, setEntries] = useState([]); + const [meta, setMeta] = useState(null); + const [loading, setLoading] = useState(true); + const [error, setError] = useState(""); + const [optIn, setOptIn] = useState(null); + const [activating, setActivating] = useState(false); + const [syncing, setSyncing] = useState(false); + const [activeTab, setActiveTab] = useState("catalog"); + const [referrals, setReferrals] = useState({ + fixed: [], + campaigns: [], + tier: null, + }); + // F4/T7 — "get a supporter key" outbound links, relayed by + // GET /api/radar/settings (server-resolved, see src/lib/radar/links.ts). + // Never hardcoded here: this component must never embed an external URL + // literal (see tests/unit/radar-referrals-page-tab.test.ts). + const [contributorClaimUrl, setContributorClaimUrl] = useState(null); + const [supporterPlansUrl, setSupporterPlansUrl] = useState(null); + + // Paste-key activation — the primary path on the activation screen: paste + // an already-obtained supporter key (`omr_` + 40 hex) to activate opt-in + // AND the supporter tier in a single POST. `hasSupporterKey`/ + // `supporterKeyMasked` mirror GET /api/radar/settings so a key set out of + // band (e.g. a direct curl call before this UI existed) shows the masked + // form instead of an empty input — the raw key is never displayed. + const [keyInput, setKeyInput] = useState(""); + const [keySubmitting, setKeySubmitting] = useState(false); + const [hasSupporterKey, setHasSupporterKey] = useState(false); + const [supporterKeyMasked, setSupporterKeyMasked] = useState(null); + const [showKeyForm, setShowKeyForm] = useState(false); + + // Fetch catalog + const fetchCatalog = useCallback(async () => { + setLoading(true); + setError(""); + try { + const res = await fetch("/api/radar/catalog"); + if (res.status === 404) { + // Flag off — treat as not found + setOptIn(false); + setEntries([]); + setMeta(null); + setLoading(false); + return; + } + if (!res.ok) throw new Error(`HTTP ${res.status}`); + const data = await res.json(); + setEntries(data.entries || []); + setMeta(data.meta || null); + } catch (err) { + setError(err instanceof Error ? err.message : t("errorLoading")); + } finally { + setLoading(false); + } + }, [t]); + + // D28 — fetch the referral links section ("Pegue seus créditos grátis"). + // Best-effort: flag off => 404, no cache => empty shape; either way this + // never blocks rendering of the rest of the page. + const fetchReferrals = useCallback(async () => { + try { + const res = await fetch("/api/radar/referrals"); + if (!res.ok) return; + const data = await res.json(); + setReferrals({ + fixed: Array.isArray(data.fixed) ? data.fixed : [], + campaigns: Array.isArray(data.campaigns) ? data.campaigns : [], + tier: data.tier ?? null, + }); + } catch { + // Best-effort only. + } + }, []); + + // Fetch settings to determine opt-in state (GET /api/radar/settings — FIX 3: + // previously there was no settings GET, so an already-opted-in operator saw + // the activation screen on every reload). + const fetchSettings = useCallback(async () => { + try { + const settingsRes = await fetch("/api/radar/settings"); + if (settingsRes.status === 404) { + // Flag off + setOptIn(false); + return; + } + if (!settingsRes.ok) throw new Error(`HTTP ${settingsRes.status}`); + const settingsData = await settingsRes.json(); + setOptIn(settingsData.optIn === true); + setHasSupporterKey(settingsData.hasSupporterKey === true); + setSupporterKeyMasked( + typeof settingsData.supporterKeyMasked === "string" ? settingsData.supporterKeyMasked : null, + ); + // F4/T7 — best-effort: keep whatever we already had if the field is + // absent (older cached response shape), never fall back to a literal. + if (typeof settingsData.contributorClaimUrl === "string") { + setContributorClaimUrl(settingsData.contributorClaimUrl); + } + if (typeof settingsData.supporterPlansUrl === "string") { + setSupporterPlansUrl(settingsData.supporterPlansUrl); + } + + if (settingsData.optIn === true) { + // Already opted in — load the catalog now so the populated/empty + // state renders immediately instead of waiting for a manual sync. + await fetchCatalog(); + // D28 — load the referral links in parallel; best-effort, never + // blocks the catalog state above. + void fetchReferrals(); + } + } catch { + setOptIn(null); + } finally { + setLoading(false); + } + }, [fetchCatalog, fetchReferrals]); + + useEffect(() => { + fetchSettings(); + }, [fetchSettings]); + + // Sync (defined before handleActivate which depends on it) + const handleSync = useCallback(async () => { + setSyncing(true); + setError(""); + try { + const res = await fetch("/api/radar/sync", { method: "POST" }); + if (!res.ok) throw new Error(`HTTP ${res.status}`); + const data = await res.json(); + if (data.status === "updated" || data.status === "stale") { + await fetchCatalog(); + void fetchReferrals(); + } else if (data.status === "error" || data.status === "too_large") { + // "too_large" reuses the generic sync-failed copy — the feed exceeded the + // client-side size cap (10MB), which is operationally the same as any + // other sync failure from the operator's point of view. + setError(data.reason || t("syncFailed")); + } else if (data.status === "disabled") { + setError(t("flagDisabled")); + } else if (data.status === "opt_out") { + setOptIn(false); + } + } catch (err) { + setError(err instanceof Error ? err.message : t("syncFailed")); + } finally { + setSyncing(false); + } + }, [t, fetchCatalog, fetchReferrals]); + + // Auto-sync on open: when the operator is already opted in and the cached + // feed is stale (or absent), refresh it automatically once per mount so the + // page always shows current data without requiring the manual Sync button + // (spec: dados atualizados a cada abrir da página). The ref guards against + // re-firing when `meta` updates after the sync itself. + const autoSyncFiredRef = useRef(false); + useEffect(() => { + if (loading || syncing || optIn !== true || autoSyncFiredRef.current) return; + if (!shouldAutoSyncOnOpen(meta?.fetchedAt ?? null, Date.now())) return; + autoSyncFiredRef.current = true; + void handleSync(); + }, [loading, syncing, optIn, meta, handleSync]); + + // Activate opt-in + const handleActivate = useCallback(async () => { + setActivating(true); + try { + const res = await fetch("/api/radar/settings", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ optIn: true }), + }); + if (!res.ok) throw new Error(`HTTP ${res.status}`); + setOptIn(true); + // After activation, trigger a sync + await handleSync(); + } catch (err) { + setError(err instanceof Error ? err.message : t("activationFailed")); + } finally { + setActivating(false); + } + }, [t, handleSync]); + + // Activate with a pasted supporter key — the primary path on this screen. + // Submitting a key both sets it AND opts in, in a single POST (pasting a + // key unlocks the activation screen). Client-side format validation is a + // UX nicety only — the server (Zod) always revalidates. + const handleSubmitKey = useCallback(async () => { + setError(""); + const trimmed = keyInput.trim(); + if (!isValidSupporterKeyFormat(trimmed)) { + setError(t("keyInvalidFormatError")); + return; + } + setKeySubmitting(true); + try { + const res = await fetch("/api/radar/settings", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ optIn: true, supporterKey: trimmed }), + }); + if (!res.ok) throw new Error(`HTTP ${res.status}`); + const data = await res.json(); + setOptIn(true); + setHasSupporterKey(true); + setSupporterKeyMasked(typeof data.supporterKey === "string" ? data.supporterKey : null); + setKeyInput(""); + setShowKeyForm(false); + // After activation, trigger a sync so the live tier catalog loads. + await handleSync(); + } catch (err) { + setError(err instanceof Error ? err.message : t("activationFailed")); + } finally { + setKeySubmitting(false); + } + }, [keyInput, t, handleSync]); + + // Determine effective state + const flagOn = optIn !== false || entries.length > 0 || meta !== null; + const pageState = resolveRadarPageState( + optIn !== false, // if we got a 404, optIn=false => flag off + optIn === true, + entries.length > 0 && meta !== null, + ); + + // Flag off — render not-found + if (pageState === "flag_off" && !loading) { + notFound(); + } + + return ( +
+ {/* Header */} +
+
+

{t("title")}

+

{t("subtitle")}

+
+ {pageState === "populated" && ( + + )} +
+ + {/* Feed freshness header */} + {meta && ( +
+ + {t("feedVersion")}: {meta.version} + + + {t("feedTier")}:{" "} + + {meta.tier === "live" ? t("tierLive") : t("tierCommunity")} + + + + {t("feedFetched")}: {relativeTime(meta.fetchedAt)} + +
+ )} + + {error && ( +
{error}
+ )} + + {loading ? ( +
+
{t("loading")}
+
+ ) : ( + <> + {/* Opt-in pending */} + {pageState === "optin_pending" && ( + +
+
📡
+

{t("activateTitle")}

+

{t("activateDescription")}

+
+
+ + {t("privacyNoUpload")} +
+
+ + {t("privacyOnlySigned")} +
+
+ + {t("privacyLocalOnly")} +
+
+ + {/* Paste-key activation — primary path: pasting an already-obtained + supporter key both sets it AND opts in (unlocks this screen). + The raw key is NEVER displayed — once set, only the masked + form (supporterKeyMasked) is shown, with a "change key" escape + hatch to paste a new one. */} +
+

{t("keySectionTitle")}

+ {hasSupporterKey && !showKeyForm ? ( +
+ + {supporterKeyMasked} + + +
+ ) : ( +
+ setKeyInput(e.target.value)} + placeholder="omr_..." + aria-label={t("keySectionTitle")} + className="flex-1 px-3 py-2 text-sm font-mono rounded-lg border border-border bg-transparent focus:outline-none focus:ring-2 focus:ring-violet-500" + /> + +
+ )} +
+ +
+ + + + {/* F4/T7 — "get a supporter key" outbound links. Both open in a + new tab; neither one carries a price/value (D14 — the + only place pricing lives is the destination page). */} + {contributorClaimUrl && supporterPlansUrl && ( +
+

{t("claimSectionTitle")}

+ +

{t("contributorHint")}

+

{t("supporterHint")}

+
+ )} +
+ + )} + + {/* D28 — tab bar. Only shown once opted in (empty/populated) — the + activation gate above is a single full-screen step, not a tab. */} + {(pageState === "empty" || pageState === "populated") && ( +
+ + +
+ )} + + {/* Free credits tab (D28 — referral links) */} + {(pageState === "empty" || pageState === "populated") && activeTab === "referrals" && ( +
+

{t("freeCreditsSubtitle")}

+ + {referrals.fixed.length === 0 ? ( + +

{t("fixedLinksEmpty")}

+
+ ) : ( +
+ {referrals.fixed.map((referral) => ( + +
+ {referral.provider} + {referral.requiredAction && ( +

+ {t("requiredActionLabel")} {referral.requiredAction} +

+ )} + + {t("claimButton")} + open_in_new + +
+
+ ))} +
+ )} + +
+

{t("campaignsTitle")}

+ {referrals.campaigns.length === 0 ? ( + +

+ {referrals.tier === "community" + ? t("campaignsUpsellCommunity") + : t("campaignsEmpty")} +

+
+ ) : ( +
+ {referrals.campaigns.map((referral, idx) => ( + +
+ {referral.provider} + {referral.requiredAction && ( +

+ {t("requiredActionLabel")} {referral.requiredAction} +

+ )} + {referral.validUntil && ( +

+ {t("campaignsValidUntil", { + date: new Date(referral.validUntil).toLocaleDateString(), + })} +

+ )} + + {t("claimButton")} + open_in_new + +
+
+ ))} +
+ )} +
+
+ )} + + {/* Empty cache — opted in but no data yet */} + {pageState === "empty" && activeTab === "catalog" && ( + +
+

{t("emptyState")}

+ +
+
+ )} + + {/* Populated catalog table */} + {pageState === "populated" && activeTab === "catalog" && ( + +
+
InterfaceEndpoint / commandUse it for
🧰 MCP (stdio)omniroute --mcpPlug into Claude Desktop, Cursor, any MCP client
🌊 MCP (HTTP)/api/mcp/streamRemote MCP — 104 tools, 31 scopes, full audit trail
🌊 MCP (HTTP)/api/mcp/streamRemote MCP — 105 tools, 31 scopes, full audit trail
📡 MCP (SSE)/api/mcp/sseStreaming MCP transport
🤝 A2A/.well-known/agent.jsonAgent-to-agent, JSON-RPC 2.0 + SSE, 6 skills
🌐 REST API/v1/*OpenAI-compatible — chat, embeddings, images, audio, OCR
+ + + + + + + + + + + + {entries.map((entry) => ( + + + + + + + + + ))} + +
{t("colProvider")}{t("colModel")}{t("colQuota")}{t("colContext")}{t("colCapabilities")}{t("colTos")}
+
+ {entry.provider} + {entry.origin === "radar" && ( + + {t("newBadge")} + + )} + {entry.setup?.keyUrl && ( + + ⚙ + + )} +
+ {entry.enabled === false && entry.disabledBy === "radar" && ( +

{t("disabledByFeed")}

+ )} +
+ {entry.displayName} + {budgetLabel(entry)} + {entry.contextWindow + ? `${(entry.contextWindow / 1000).toFixed(0)}K` + : "—"} + +
+ {entry.capabilities?.tools && ( + + {t("capTools")} + + )} + {entry.capabilities?.vision && ( + + {t("capVision")} + + )} + {entry.capabilities?.thinking && ( + + {t("capThinking")} + + )} +
+
+ + {entry.tos} + +
+ + + )} + + )} + + ); +} diff --git a/src/app/(dashboard)/dashboard/radar/setup/page.tsx b/src/app/(dashboard)/dashboard/radar/setup/page.tsx new file mode 100644 index 0000000000..1bbbe6e65b --- /dev/null +++ b/src/app/(dashboard)/dashboard/radar/setup/page.tsx @@ -0,0 +1,284 @@ +"use client"; + +import { useState, useEffect, useCallback, useMemo } from "react"; +import { useTranslations } from "next-intl"; +import { useSearchParams } from "next/navigation"; +import Link from "next/link"; +import { Card } from "@/shared/components"; + +// --------------------------------------------------------------------------- +// Types +// --------------------------------------------------------------------------- + +/** + * Localized text: either a plain string or an {en, pt?} object. + * The renderer resolves the best locale with EN fallback (D25 compat). + */ +type LocalizedText = string | { en: string; pt?: string }; + +interface SetupInfo { + keyUrl: string | null; + steps: LocalizedText[]; +} + +interface ProviderSetupData { + provider: string; + setup: SetupInfo | null; + configured: boolean; +} + +// --------------------------------------------------------------------------- +// Helpers +// --------------------------------------------------------------------------- + +/** Resolve a LocalizedText to a display string. */ +function resolveText(text: LocalizedText, locale: string): string { + if (typeof text === "string") return text; + if (locale === "pt" && text.pt) return text.pt; + return text.en; +} + +// --------------------------------------------------------------------------- +// Component +// --------------------------------------------------------------------------- + +export default function RadarSetupPage() { + const t = useTranslations("radarSetupPage"); + const searchParams = useSearchParams(); + const provider = searchParams.get("provider"); + const locale = "en"; // Could be derived from next-intl locale later + + const [setupData, setSetupData] = useState(null); + const [loading, setLoading] = useState(true); + const [error, setError] = useState(""); + const [testing, setTesting] = useState(false); + const [testResult, setTestResult] = useState<{ ok: boolean; message: string } | null>(null); + + // Fetch catalog to find the provider's setup data + useEffect(() => { + if (!provider) { + setLoading(false); + return; + } + + async function load() { + try { + const res = await fetch("/api/radar/catalog"); + if (res.status === 404) { + setError(t("flagDisabled")); + setLoading(false); + return; + } + if (!res.ok) throw new Error(`HTTP ${res.status}`); + const data = await res.json(); + + // Find ALL entries for this provider and extract setup from the first one that has it + const providerEntries = data.entries.filter( + (e: { provider: string }) => e.provider === provider, + ); + + if (providerEntries.length === 0) { + setError(t("providerNotFound", { provider })); + setLoading(false); + return; + } + + // Find setup info from feed entries (they carry the setup field) + const entryWithSetup = providerEntries.find( + (e: { setup?: SetupInfo | null }) => e.setup && (e.setup.steps.length > 0 || e.setup.keyUrl), + ); + + // Check if provider is configured (has connections) + // We infer this from whether the provider exists in the catalog at all + // The actual connection check would need a separate API — for now we show + // the guide regardless + setSetupData({ + provider, + setup: entryWithSetup?.setup ?? null, + configured: false, // Will be enriched when connection-status API is available + }); + } catch (err) { + setError(err instanceof Error ? err.message : t("loadFailed")); + } finally { + setLoading(false); + } + } + + load(); + }, [provider, t]); + + // Test connection — uses the EXISTING connection-test endpoint + const handleTestConnection = useCallback(async () => { + if (!provider) return; + setTesting(true); + setTestResult(null); + try { + // The existing test endpoint is POST /api/providers/[id]/test + // We need the connection ID — for now we use the provider ID as a proxy. + // In a full implementation, the setup page would list connections for + // this provider and test each one. Here we test the first connection. + const res = await fetch(`/api/providers/${encodeURIComponent(provider)}/test`, { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({}), + }); + if (res.ok) { + setTestResult({ ok: true, message: t("testSuccess") }); + } else { + const data = await res.json().catch(() => null); + setTestResult({ + ok: false, + message: data?.error?.message || t("testFailed"), + }); + } + } catch { + setTestResult({ ok: false, message: t("testFailed") }); + } finally { + setTesting(false); + } + }, [provider, t]); + + if (!provider) { + return ( +
+

{t("title")}

+ +
{t("noProvider")}
+
+
+ ); + } + + return ( +
+ {/* Header */} +
+ + ← {t("backToCatalog")} + +
+
+

{t("setupTitle", { provider })}

+

{t("setupSubtitle")}

+
+ + {error && ( +
{error}
+ )} + + {loading ? ( +
+
{t("loading")}
+
+ ) : setupData ? ( + <> + {/* Configured indicator */} + {setupData.configured && ( + +
+ + {t("providerConfigured")} +
+
+ )} + + {/* Key URL */} + {setupData.setup?.keyUrl && ( + +
+

{t("getApiKey")}

+ + {setupData.setup.keyUrl} + +
+
+ )} + + {/* Steps */} + {setupData.setup && setupData.setup.steps.length > 0 && ( + +
+

{t("setupSteps")}

+
    + {setupData.setup.steps.map((step, idx) => ( +
  1. + + {idx + 1} + + + {resolveText(step, locale)} + +
  2. + ))} +
+
+
+ )} + + {/* No guide available */} + {(!setupData.setup || setupData.setup.steps.length === 0) && !setupData.setup?.keyUrl && ( + +
+

{t("noGuide")}

+ + {t("visitDocs")} + +
+
+ )} + + {/* Test connection */} + +
+

{t("testConnection")}

+

{t("testDescription")}

+
+ + {testResult && ( + + {testResult.message} + + )} +
+
+
+ + {/* Add connection link */} + +
+

{t("addConnection")}

+

{t("addConnectionDescription")}

+ + {t("addConnectionLink")} + +
+
+ + ) : null} +
+ ); +} diff --git a/src/app/(dashboard)/dashboard/settings/components/ModelCapabilityOverridesTab.tsx b/src/app/(dashboard)/dashboard/settings/components/ModelCapabilityOverridesTab.tsx index 04d182b6b5..a4d3c2cb14 100644 --- a/src/app/(dashboard)/dashboard/settings/components/ModelCapabilityOverridesTab.tsx +++ b/src/app/(dashboard)/dashboard/settings/components/ModelCapabilityOverridesTab.tsx @@ -5,7 +5,7 @@ import { useTranslations } from "next-intl"; import { Card, Button } from "@/shared/components"; import { matchesSearch } from "@/shared/utils/turkishText"; -type ModelOverrideKey = "max_token"; +type ModelOverrideKey = "context_length" | "max_input_tokens" | "max_output_tokens"; type StatusTone = "success" | "error" | "info"; type ModelOverrideTarget = { @@ -337,7 +337,7 @@ function ModelOverrideForm({ onSave: (target: string, key: ModelOverrideKey, value: number) => void; }) { const t = useTranslations("settings"); - const [key, setKey] = useState("max_token"); + const [key, setKey] = useState("context_length"); const [value, setValue] = useState(""); const numericValue = Number(value); const saveDisabled = !activeTarget || !Number.isInteger(numericValue) || numericValue <= 0; @@ -349,7 +349,9 @@ function ModelOverrideForm({ onChange={(event) => setKey(event.target.value as ModelOverrideKey)} className="sm:w-40 px-2 py-2 text-xs bg-bg-base border border-border rounded-md focus:outline-none focus:border-primary" > - + + + setForm((prev) => ({ ...prev, username: e.target.value }))} /> @@ -1024,6 +1027,9 @@ export default function ProxyRegistryManager({ type="password" className="w-full px-3 py-2 rounded bg-bg-subtle border border-border" value={form.password} + autoComplete="new-password" + data-1p-ignore="true" + data-lpignore="true" placeholder={editingId ? t("passwordPlaceholderEdit") : ""} onChange={(e) => setForm((prev) => ({ ...prev, password: e.target.value }))} /> diff --git a/src/app/(dashboard)/dashboard/settings/components/proxy/FreePoolTab.tsx b/src/app/(dashboard)/dashboard/settings/components/proxy/FreePoolTab.tsx index 946020b049..6ce533c45c 100644 --- a/src/app/(dashboard)/dashboard/settings/components/proxy/FreePoolTab.tsx +++ b/src/app/(dashboard)/dashboard/settings/components/proxy/FreePoolTab.tsx @@ -84,9 +84,10 @@ export default function FreePoolTab() { fetch("/api/settings/free-proxies/stats"), ]); if (proxiesRes.ok) { - const data = await proxiesRes.json(); - setProxies(data.items || []); - setTotal(data.total ?? 0); + const body = await proxiesRes.json(); + const payload = body?.data ?? body; + setProxies(payload.proxies ?? payload.items ?? []); + setTotal(payload.total ?? 0); } if (statsRes.ok) { const data = await statsRes.json(); diff --git a/src/app/(dashboard)/dashboard/tools/agent-bridge/AgentBridgePageClient.tsx b/src/app/(dashboard)/dashboard/tools/agent-bridge/AgentBridgePageClient.tsx index aae3f01cab..0a5c178a84 100644 --- a/src/app/(dashboard)/dashboard/tools/agent-bridge/AgentBridgePageClient.tsx +++ b/src/app/(dashboard)/dashboard/tools/agent-bridge/AgentBridgePageClient.tsx @@ -94,9 +94,7 @@ export default function AgentBridgePageClient({ const res = await fetch("/api/tools/agent-bridge/server", { method: "POST", headers: { "Content-Type": "application/json" }, - body: JSON.stringify( - sudoPassword ? { action, sudoPassword } : { action } - ), + body: JSON.stringify(sudoPassword ? { action, sudoPassword } : { action }), }); const payload = (await res.json().catch(() => ({}))) as { error?: { message?: string }; @@ -138,37 +136,43 @@ export default function AgentBridgePageClient({ // ── Upstream CA ─────────────────────────────────────────────────────────── - const handleUpstreamCaSave = useCallback(async (path: string) => { - setActionError(null); - try { - const res = await fetch("/api/tools/agent-bridge/upstream-ca", { - method: "POST", - headers: { "Content-Type": "application/json" }, - body: JSON.stringify({ path }), - }); - if (!res.ok) throw new Error(`HTTP ${res.status}`); - await refresh(); - } catch (err) { - setActionError(err instanceof Error ? err.message : t("unknownError")); - } - }, [refresh, t]); + const handleUpstreamCaSave = useCallback( + async (path: string) => { + setActionError(null); + try { + const res = await fetch("/api/tools/agent-bridge/upstream-ca", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ path }), + }); + if (!res.ok) throw new Error(`HTTP ${res.status}`); + await refresh(); + } catch (err) { + setActionError(err instanceof Error ? err.message : t("unknownError")); + } + }, + [refresh, t] + ); // ── Bypass list ─────────────────────────────────────────────────────────── - const handleBypassSave = useCallback(async (patterns: string[]) => { - setActionError(null); - try { - const res = await fetch("/api/tools/agent-bridge/bypass", { - method: "PUT", - headers: { "Content-Type": "application/json" }, - body: JSON.stringify({ patterns }), - }); - if (!res.ok) throw new Error(`HTTP ${res.status}`); - await refresh(); - } catch (err) { - setActionError(err instanceof Error ? err.message : t("unknownError")); - } - }, [refresh, t]); + const handleBypassSave = useCallback( + async (patterns: string[]) => { + setActionError(null); + try { + const res = await fetch("/api/tools/agent-bridge/bypass", { + method: "PUT", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ patterns }), + }); + if (!res.ok) throw new Error(`HTTP ${res.status}`); + await refresh(); + } catch (err) { + setActionError(err instanceof Error ? err.message : t("unknownError")); + } + }, + [refresh, t] + ); // ── DNS toggle ──────────────────────────────────────────────────────────── @@ -180,9 +184,7 @@ export default function AgentBridgePageClient({ const res = await fetch(`/api/tools/agent-bridge/agents/${agentId}/dns`, { method: "POST", headers: { "Content-Type": "application/json" }, - body: JSON.stringify( - password ? { enabled, sudoPassword: password } : { enabled } - ), + body: JSON.stringify(password ? { enabled, sudoPassword: password } : { enabled }), }); if (!res.ok) { const payload = (await res.json().catch(() => ({}))) as { @@ -311,6 +313,7 @@ export default function AgentBridgePageClient({ targets={targets} agentStates={data.agentStates} serverRunning={data.serverState.running} + serverState={data.serverState} mappingsMap={data.mappings} onDnsToggle={handleDnsToggle} onMappingsSave={handleMappingsSave} diff --git a/src/app/(dashboard)/dashboard/tools/agent-bridge/components/AgentCard.tsx b/src/app/(dashboard)/dashboard/tools/agent-bridge/components/AgentCard.tsx index 0d1bf052aa..fb5eab24c5 100644 --- a/src/app/(dashboard)/dashboard/tools/agent-bridge/components/AgentCard.tsx +++ b/src/app/(dashboard)/dashboard/tools/agent-bridge/components/AgentCard.tsx @@ -8,7 +8,7 @@ import { ModelMappingTable } from "./ModelMappingTable"; import { SetupWizard } from "./SetupWizard"; import { RiskNoticeModal } from "@/shared/components/RiskNoticeModal"; import type { MitmTargetView } from "@/mitm/types"; -import type { AgentStateEntry } from "../AgentBridgePageClient"; +import type { AgentStateEntry, AgentBridgeServerState } from "../AgentBridgePageClient"; import type { MappingRow } from "./ModelMappingTable"; const RISK_STORAGE_KEY_PREFIX = "omniroute-agentbridge-risk-dismissed-"; @@ -21,11 +21,11 @@ function hasAcceptedRisk(agentId: string): boolean { } } - interface AgentCardProps { target: MitmTargetView; agentState: AgentStateEntry | undefined; serverRunning: boolean; + serverState: AgentBridgeServerState; mappings: MappingRow[]; onDnsToggle: (agentId: string, enabled: boolean) => Promise; onMappingsSave: (agentId: string, mappings: MappingRow[]) => Promise; @@ -38,6 +38,7 @@ export function AgentCard({ target, agentState, serverRunning, + serverState, mappings, onDnsToggle, onMappingsSave, @@ -50,7 +51,9 @@ export function AgentCard({ const dnsEnabled = agentState?.dns_enabled ?? false; const setupCompleted = agentState?.setup_completed ?? false; - const certTrusted = agentState?.cert_trusted ?? false; + // Fix #8656 Issue A: Use server-level cert trust as fallback + // (one server cert applies to all agents; agentState.cert_trusted is never written to DB) + const certTrusted = agentState?.cert_trusted ?? serverState.certTrusted ?? false; const isInvestigating = target.viability === "investigating"; const getStatusBadge = () => { @@ -250,8 +253,11 @@ export function AgentCard({ target={target} agentState={agentState} serverRunning={serverRunning} + serverState={serverState} + currentMappings={mappings} onClose={() => setWizardOpen(false)} onDnsToggle={onDnsToggle} + onMappingsSave={onMappingsSave} /> )} diff --git a/src/app/(dashboard)/dashboard/tools/agent-bridge/components/AgentList.tsx b/src/app/(dashboard)/dashboard/tools/agent-bridge/components/AgentList.tsx index d2fca8c359..15fdafee40 100644 --- a/src/app/(dashboard)/dashboard/tools/agent-bridge/components/AgentList.tsx +++ b/src/app/(dashboard)/dashboard/tools/agent-bridge/components/AgentList.tsx @@ -4,13 +4,18 @@ import { useState } from "react"; import { useTranslations } from "next-intl"; import { AgentCard } from "./AgentCard"; import type { MitmTargetView } from "@/mitm/types"; -import type { AgentStateEntry, AgentMappingsMap } from "../AgentBridgePageClient"; +import type { + AgentStateEntry, + AgentMappingsMap, + AgentBridgeServerState, +} from "../AgentBridgePageClient"; import type { MappingRow } from "./ModelMappingTable"; interface AgentListProps { targets: MitmTargetView[]; agentStates: AgentStateEntry[]; serverRunning: boolean; + serverState: AgentBridgeServerState; mappingsMap: AgentMappingsMap; onDnsToggle: (agentId: string, enabled: boolean) => Promise; onMappingsSave: (agentId: string, mappings: MappingRow[]) => Promise; @@ -26,6 +31,7 @@ export function AgentList({ targets, agentStates, serverRunning, + serverState, mappingsMap, onDnsToggle, onMappingsSave, @@ -130,6 +136,7 @@ export function AgentList({ target={target} agentState={stateByAgent[target.id]} serverRunning={serverRunning} + serverState={serverState} mappings={mappingsMap[target.id] ?? []} onDnsToggle={onDnsToggle} onMappingsSave={onMappingsSave} diff --git a/src/app/(dashboard)/dashboard/tools/agent-bridge/components/ModelMappingTable.tsx b/src/app/(dashboard)/dashboard/tools/agent-bridge/components/ModelMappingTable.tsx index 7d2feaef94..d9d9759522 100644 --- a/src/app/(dashboard)/dashboard/tools/agent-bridge/components/ModelMappingTable.tsx +++ b/src/app/(dashboard)/dashboard/tools/agent-bridge/components/ModelMappingTable.tsx @@ -29,6 +29,18 @@ export function ModelMappingTable({ agentId, mappings, onSave }: ModelMappingTab setSelectorOpen(null); }; + const addMapping = () => { + setRows((prev) => [...prev, { source: "", target: "" }]); + }; + + const removeMapping = (index: number) => { + setRows((prev) => prev.filter((_, i) => i !== index)); + }; + + const updateSource = (index: number, source: string) => { + setRows((prev) => prev.map((r, i) => (i === index ? { ...r, source } : r))); + }; + const handleSave = async () => { setSaving(true); try { @@ -38,66 +50,102 @@ export function ModelMappingTable({ agentId, mappings, onSave }: ModelMappingTab } }; - if (rows.length === 0) { - return ( -

- {t("noMappings") || "No model mappings configured. Run setup wizard to auto-detect models."} -

- ); - } - return (
-
- - - - - - - - - {rows.map((row, i) => ( - - - - - ))} - -
- {t("sourceModel") || "Source model (agent native)"} - - {t("targetModel") || "Target model (OmniRoute)"} -
- {row.source} - - -
-
+ {rows.length === 0 ? ( +
+

+ {t("noMappingsDesc") || + "No model mappings configured yet. Add mappings to route agent requests through OmniRoute."} +

+ +
+ ) : ( + <> +
+ + + + + + + + + + {rows.map((row, i) => ( + + + + + + ))} + +
+ {t("sourceModel") || "Source model (agent native)"} + + {t("targetModel") || "Target model (OmniRoute)"} +
+ updateSource(i, e.target.value)} + placeholder="e.g., gpt-4" + className="w-full rounded border border-border/40 bg-card px-2 py-1 text-xs font-mono focus:outline-none focus:ring-2 focus:ring-primary/50" + /> + + + + +
+
-
- -
+
+ + +
+ + )} {selectorOpen !== null && ( void; onDnsToggle: (agentId: string, enabled: boolean) => Promise; + onMappingsSave: (agentId: string, mappings: { source: string; target: string }[]) => Promise; } type Step = "verify" | "dns" | "mappings"; +interface DetectedModelsResponse { + agentId: string; + detectedModels: string[]; + requestCount: number; +} + /** * 3-step setup wizard for a single agent. * Step 1: Verify server + cert @@ -25,13 +34,19 @@ export function SetupWizard({ target, agentState, serverRunning, + serverState, + currentMappings, onClose, onDnsToggle, + onMappingsSave, }: SetupWizardProps) { const t = useTranslations("agentBridge"); const tc = useTranslations("common"); const [step, setStep] = useState("verify"); const [enablingDns, setEnablingDns] = useState(false); + const [detectedModels, setDetectedModels] = useState([]); + const [loadingModels, setLoadingModels] = useState(false); + const [selectedModels, setSelectedModels] = useState>(new Set()); useEffect(() => { const handler = (e: KeyboardEvent) => { @@ -41,7 +56,26 @@ export function SetupWizard({ return () => document.removeEventListener("keydown", handler); }, [onClose]); - const certTrusted = agentState?.cert_trusted ?? false; + // Fetch detected models when we reach the mappings step + useEffect(() => { + if (step === "mappings") { + setLoadingModels(true); + fetch(`/api/tools/agent-bridge/agents/${target.id}/detected-models`) + .then((res) => res.json()) + .then((data: DetectedModelsResponse) => { + setDetectedModels(data.detectedModels || []); + }) + .catch(() => { + setDetectedModels([]); + }) + .finally(() => { + setLoadingModels(false); + }); + } + }, [step, target.id]); + + // Fix #8656 Issue A: Use server-level cert trust as fallback + const certTrusted = agentState?.cert_trusted ?? serverState.certTrusted ?? false; const dnsEnabled = agentState?.dns_enabled ?? false; const handleEnableDns = async () => { @@ -54,6 +88,44 @@ export function SetupWizard({ } }; + const toggleModelSelection = (model: string) => { + setSelectedModels((prev) => { + const next = new Set(prev); + if (next.has(model)) { + next.delete(model); + } else { + next.add(model); + } + return next; + }); + }; + + const handleAddSelectedModels = async () => { + if (selectedModels.size === 0) return; + + // Merge detected models with existing mappings instead of replacing + // Filter out models that already exist in current mappings + const existingSources = new Set(currentMappings.map((m) => m.source)); + const newMappings = Array.from(selectedModels) + .filter((source) => !existingSources.has(source)) // Only add new ones + .map((source) => ({ + source, + target: "", // Will be selected later in the main card + })); + + // Combine existing + new mappings + const allMappings = [...currentMappings, ...newMappings]; + + try { + await onMappingsSave(target.id, allMappings); + // Wait a bit for the parent to refresh state before closing + await new Promise((resolve) => setTimeout(resolve, 300)); + onClose(); + } catch { + // Error handling in parent component + } + }; + const steps: { id: Step; label: string }[] = [ { id: "verify", label: t("wizardStep1Label") }, { id: "dns", label: t("wizardStep2Label") }, @@ -192,7 +264,49 @@ export function SetupWizard({ check_circle

{t("wizardStep3Success")}

-

{t("wizardStep3Desc")}

+ + {loadingModels ? ( +
+ progress_activity + Detecting models from intercepted traffic... +
+ ) : detectedModels.length > 0 ? ( +
+

+ Found {detectedModels.length} model{detectedModels.length !== 1 ? "s" : ""} in intercepted traffic. Select the ones you want to add: +

+
+ {detectedModels.map((model) => ( + + ))} +
+ {selectedModels.size > 0 && ( +

+ {selectedModels.size} model{selectedModels.size !== 1 ? "s" : ""} selected. You'll map them to OmniRoute models in the next screen. +

+ )} +
+ ) : ( +
+

+ No models detected yet. Use {target.name} to make a request, then run this wizard again to auto-detect models from traffic. +

+

+ Or close this wizard and add mappings manually in the agent card. +

+
+ )} )} @@ -247,13 +361,25 @@ export function SetupWizard({ )} {step === "mappings" && ( - + <> + {detectedModels.length > 0 && selectedModels.size > 0 ? ( + + ) : ( + + )} + )} diff --git a/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/QuotaCardGrid.tsx b/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/QuotaCardGrid.tsx index ed524043c8..438e9f99c4 100644 --- a/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/QuotaCardGrid.tsx +++ b/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/QuotaCardGrid.tsx @@ -2,6 +2,9 @@ import type { ReactNode } from "react"; import QuotaCard from "./QuotaCard"; +import { PROVIDER_ORDER } from "./constants"; +import { compareProviderGroups } from "./utils"; +import { compareTr } from "@/shared/utils/turkishText"; interface Props { connections: any[]; @@ -47,50 +50,63 @@ export default function QuotaCardGrid({ }: Props) { if (connections.length === 0) return null; - // Group connections by provider, preserving the order from sortedConnections. + // Group connections by provider (preserving in-group order), then order the + // groups deterministically: PROVIDER_ORDER rank → label (locale-aware) → + // key. Without this the group order followed first-appearance in the + // status/reset-sorted list, so groups shuffled whenever quota refreshed. const groups = new Map(); for (const conn of connections) { const list = groups.get(conn.provider) ?? []; list.push(conn); groups.set(conn.provider, list); } + const orderedProviders = [...groups.keys()].sort((a, b) => + compareProviderGroups(a, b, { + providerOrder: PROVIDER_ORDER, + providerLabels, + compare: compareTr, + }) + ); return (
- {[...groups.entries()].map(([provider, conns]) => ( -
-

- {providerLabels[provider] || provider} - - ({conns.length} account{conns.length !== 1 ? "s" : ""}) - -

-
- {conns.map((conn) => ( - onRefresh(conn.id, conn.provider)} - onOpenCutoff={() => onOpenCutoff(conn)} - onOpenResetCredits={() => onOpenResetCredits?.(conn.id, conn.provider)} - onToggleActive={(nextActive) => onToggleActive(conn.id, nextActive)} - togglingActive={togglingActiveId === conn.id} - redeemingResetCredit={redeemingResetCreditId === conn.id} - loadingResetCredits={loadingResetCreditsId === conn.id} - quotaVisibility={quotaVisibility} - onHideQuota={onHideQuota ? (q) => onHideQuota(conn.provider, q) : undefined} - onShowQuota={onShowQuota ? (q) => onShowQuota(conn.provider, q) : undefined} - /> - ))} + {orderedProviders.map((provider) => { + const conns = groups.get(provider)!; + return ( +
+

+ {providerLabels[provider] || provider} + + ({conns.length} account{conns.length !== 1 ? "s" : ""}) + +

+
+ {conns.map((conn) => ( + onRefresh(conn.id, conn.provider)} + onOpenCutoff={() => onOpenCutoff(conn)} + onOpenResetCredits={() => onOpenResetCredits?.(conn.id, conn.provider)} + onToggleActive={(nextActive) => onToggleActive(conn.id, nextActive)} + togglingActive={togglingActiveId === conn.id} + redeemingResetCredit={redeemingResetCreditId === conn.id} + loadingResetCredits={loadingResetCreditsId === conn.id} + quotaVisibility={quotaVisibility} + onHideQuota={onHideQuota ? (q) => onHideQuota(conn.provider, q) : undefined} + onShowQuota={onShowQuota ? (q) => onShowQuota(conn.provider, q) : undefined} + /> + ))} +
-
- ))} + ); + })}
); } diff --git a/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/index.tsx b/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/index.tsx index e7c9dfed76..b70a126309 100644 --- a/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/index.tsx +++ b/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/index.tsx @@ -12,6 +12,7 @@ import { calculatePercentage, matchesProviderFilter, buildProviderOptions, + compareQuotaConnections, } from "./utils"; import Card from "@/shared/components/Card"; import { CardSkeleton } from "@/shared/components/Loading"; @@ -529,8 +530,12 @@ export default function ProviderLimits({ ); const sortedConnections = useMemo(() => { - return [...filteredConnections].sort( - (a, b) => (PROVIDER_ORDER[a.provider] || 99) - (PROVIDER_ORDER[b.provider] || 99) + return [...filteredConnections].sort((a, b) => + compareQuotaConnections(a, b, { + providerOrder: PROVIDER_ORDER, + providerLabels: PROVIDER_LABEL, + compare: compareTr, + }) ); }, [filteredConnections]); const visibleQuotaData = useVisibleQuotaData(sortedConnections, quotaData); @@ -650,9 +655,10 @@ export default function ProviderLimits({ return true; }); - // Inside each group we still want "critical first, then alert, then ok, - // then empty; tiebreak by soonest reset". Provider order between groups - // is enforced separately via PROVIDER_ORDER. + // Provider rank stays the outer sort key so each group keeps its fixed + // slot (mirrors dashboard/providers determinism); "critical first, then + // alert, then ok, then empty; tiebreak by soonest reset" only orders + // accounts inside their own provider group. const statusRank: Record = { critical: 0, alert: 1, @@ -660,14 +666,21 @@ export default function ProviderLimits({ empty: 3, all: 4, }; - return [...filtered].sort((a, b) => { - const sa = statusRank[statusByConnection[a.id] || "empty"]; - const sb = statusRank[statusByConnection[b.id] || "empty"]; - if (sa !== sb) return sa - sb; - const ra = getSoonestResetMs(visibleQuotaData[a.id]?.quotas); - const rb = getSoonestResetMs(visibleQuotaData[b.id]?.quotas); - return ra - rb; - }); + return [...filtered].sort((a, b) => + compareQuotaConnections(a, b, { + providerOrder: PROVIDER_ORDER, + providerLabels: PROVIDER_LABEL, + compare: compareTr, + accountCompare: (x, y) => { + const sx = statusRank[statusByConnection[x.id] || "empty"]; + const sy = statusRank[statusByConnection[y.id] || "empty"]; + if (sx !== sy) return sx - sy; + const rx = getSoonestResetMs(visibleQuotaData[x.id]?.quotas); + const ry = getSoonestResetMs(visibleQuotaData[y.id]?.quotas); + return rx - ry; + }, + }) + ); }, [ sortedConnections, tierByConnection, diff --git a/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/utils.tsx b/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/utils.tsx index 01750d89b0..66ecdbfa20 100644 --- a/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/utils.tsx +++ b/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/utils.tsx @@ -620,3 +620,110 @@ export function buildProviderOptions( } return Array.from(seen).sort(compare); } + +// --- Deterministic quota-card ordering ------------------------------------- +// Mirrors the dashboard/providers rule (`providerPageUtils.ts:: +// sortProviderEntriesByName`): every level of ordering must end in a stable, +// data-independent tiebreak so cards never re-flow between refreshes. +// +// Before this, `visibleConnections` globally sorted ALL connections by +// status then soonest reset, and QuotaCardGrid grouped by first-appearance — +// so each provider group's position was decided by whichever of its accounts +// happened to sort first (status/reset change every refresh → groups +// shuffled). Provider rank is now a sort key again, so a group's position is +// fixed by PROVIDER_ORDER and account status/reset only orders accounts +// inside their own group. + +export interface QuotaOrderConnection { + id?: unknown; + provider?: unknown; + name?: unknown; + email?: unknown; + displayName?: unknown; +} + +/** Label/name key: providers-page `getProviderSortLabel` — case-insensitive display name. */ +function quotaConnLabel(conn: QuotaOrderConnection): string { + const name = typeof conn.name === "string" ? conn.name : ""; + const provider = typeof conn.provider === "string" ? conn.provider : ""; + return (name || provider).toLowerCase(); +} + +/** Technical tiebreak key: providers-page `providerId.localeCompare(...)` — ASCII on purpose. */ +function quotaConnTiebreak(conn: QuotaOrderConnection): string { + const email = typeof conn.email === "string" ? conn.email : ""; + const id = typeof conn.id === "string" ? conn.id : String(conn.id ?? ""); + return email || id; +} + +function providerRank(provider: unknown, providerOrder: Record): number { + const key = typeof provider === "string" ? provider : ""; + return providerOrder[key] ?? 99; +} + +/** + * Order connections for the quota card grid. Levels (first non-zero wins): + * 1. `PROVIDER_ORDER` rank — keeps each provider group glued to its fixed slot. + * 2. Provider label (locale-aware, case-insensitive) — orders unranked providers. + * 3. Provider key ASCII — deterministic tiebreak between aliased/equal labels. + * 4. `accountCompare` (optional) — in-group intent (critical-first, soonest reset). + * 5. Account label, then email/id ASCII — so equal-status accounts never shuffle. + */ +export function compareQuotaConnections( + a: T, + b: T, + opts: { + providerOrder: Record; + providerLabels?: Record; + accountCompare?: (a: T, b: T) => number; + compare?: (a: string, b: string) => number; + } +): number { + const cmp = opts.compare ?? ((x: string, y: string) => x.localeCompare(y)); + const labels = opts.providerLabels ?? {}; + + const ra = providerRank(a.provider, opts.providerOrder); + const rb = providerRank(b.provider, opts.providerOrder); + if (ra !== rb) return ra - rb; + + const pa = typeof a.provider === "string" ? a.provider : ""; + const pb = typeof b.provider === "string" ? b.provider : ""; + const providerLabelCmp = cmp(labels[pa] ?? pa, labels[pb] ?? pb); + if (providerLabelCmp !== 0) return providerLabelCmp; + if (pa !== pb) return pa < pb ? -1 : 1; + + if (opts.accountCompare) { + const acc = opts.accountCompare(a, b); + if (acc !== 0) return acc; + } + + const accountLabelCmp = cmp(quotaConnLabel(a), quotaConnLabel(b)); + if (accountLabelCmp !== 0) return accountLabelCmp; + const ta = quotaConnTiebreak(a); + const tb = quotaConnTiebreak(b); + return ta < tb ? -1 : ta > tb ? 1 : 0; +} + +/** + * Order provider group keys for rendering. Same provider-level rule as + * `compareQuotaConnections` (rank → label → key), used by QuotaCardGrid to + * place group headers deterministically. + */ +export function compareProviderGroups( + a: string, + b: string, + opts: { + providerOrder: Record; + providerLabels?: Record; + compare?: (a: string, b: string) => number; + } +): number { + const cmp = opts.compare ?? ((x: string, y: string) => x.localeCompare(y)); + const labels = opts.providerLabels ?? {}; + const ra = providerRank(a, opts.providerOrder); + const rb = providerRank(b, opts.providerOrder); + if (ra !== rb) return ra - rb; + const labelCmp = cmp(labels[a] ?? a, labels[b] ?? b); + if (labelCmp !== 0) return labelCmp; + return a < b ? -1 : a > b ? 1 : 0; +} diff --git a/src/app/(dashboard)/dashboard/webhooks/WebhooksPageClient.tsx b/src/app/(dashboard)/dashboard/webhooks/WebhooksPageClient.tsx index 1753fe958a..125ea3b497 100644 --- a/src/app/(dashboard)/dashboard/webhooks/WebhooksPageClient.tsx +++ b/src/app/(dashboard)/dashboard/webhooks/WebhooksPageClient.tsx @@ -24,6 +24,7 @@ export function WebhooksPageClient() { const [testingId, setTestingId] = useState(null); const [feedback, setFeedback] = useState(null); const [wizardOpen, setWizardOpen] = useState(false); + const [editingWebhook, setEditingWebhook] = useState(null); const [deleteTarget, setDeleteTarget] = useState(null); const [deleting, setDeleting] = useState(false); @@ -101,6 +102,21 @@ export function WebhooksPageClient() { } }; + const handleAddWebhook = () => { + setEditingWebhook(null); + setWizardOpen(true); + }; + + const handleEditWebhook = (webhook: WebhookItem) => { + setEditingWebhook(webhook); + setWizardOpen(true); + }; + + const handleCloseWizard = () => { + setWizardOpen(false); + setEditingWebhook(null); + }; + const handleDelete = async () => { if (!deleteTarget) return; setDeleting(true); @@ -134,7 +150,7 @@ export function WebhooksPageClient() {
+ {showManualKeyInput && ( +
+ setManualApiKey(e.target.value)} + placeholder="Paste API key..." + className="rounded-md border border-black/10 bg-bg px-2 py-1 text-xs dark:border-white/10" + disabled={addingManualKey || !enabled} + /> + + +
+ )} + {!showManualKeyInput && onManualApiKeyAdd && ( + + )} @@ -541,12 +603,14 @@ export default function NoAuthAccountCard({ )}
+ {!autoAvailable && ( +

+ Install sqlcipher: brew install sqlcipher +

+ )} +
+ +
+

+ Local dev only. Uses your Raycast Pro subscription via reverse-engineered + API. Not official — may break on Raycast updates. +

+ +
+ + {showManual && ( + <> +
+ +